Računala Windows Internet

Transact-SQL - umetanje podataka. SQL upit INSERT INTO - ispunite bazu podataka sintaksom umetanja u SQL

Posljednje ažuriranje: 13.07.2017

Za dodavanje podataka koristi se naredba INSERT koja ima sljedeću formalnu sintaksu:

INSERT table_name [(popis_stupaca)] VRIJEDNOSTI (vrijednost1, vrijednost2, ... vrijednostN)

Prvo dolazi izraz INSERT INTO, zatim u zagradama možete odrediti popis stupaca odvojenih zarezima u koje želite dodati podatke, a na kraju, nakon riječi VRIJEDNOSTI, dodane vrijednosti za stupce su navedene u zagradama .

Na primjer, pretpostavimo da je sljedeća baza podataka prethodno stvorena:

STVORI BAZU PODATAKA productsdb; IDI KORISTI productsdb; CREATE TABLE Proizvodi (ID INT PRIMARNI KLJUČ IDENTITETA, Naziv proizvoda NVARCHAR (30) NOT NULL, Proizvođač NVARCHAR (20) NOT NULL, ProductCount INT DEFAULT 0, Cijena NOVAC NIJE NULL)

Dodajmo mu jedan redak pomoću naredbe INSERT:

UMETNI VRIJEDNOSTI proizvoda ("iPhone 7", "Apple", 5, 52000)

Nakon uspješnog izvršenja u SQL Server Management Studiju, u polju poruke bi se trebala pojaviti poruka "1 red(s) pogođeni":

Treba imati na umu da su vrijednosti za stupce u zagradama iza ključna riječ VRIJEDNOSTI se prosljeđuju redoslijedom kojim su deklarirane. Na primjer, u gornjoj izjavi CREATE TABLE možete vidjeti da je prvi stupac Id. Ali budući da je za njega postavljen atribut IDENTITY, vrijednost ovog stupca se automatski generira i može se izostaviti. Drugi stupac predstavlja Naziv proizvoda, tako da će prva vrijednost, niz "iPhone 7", biti proslijeđena tom određenom stupcu. Druga vrijednost je niz "Apple" koji će biti proslijeđen trećem stupcu, proizvođaču i tako dalje. Odnosno, vrijednosti se prosljeđuju u stupce na sljedeći način:

    Naziv proizvoda: "iPhone 7"

    Proizvođač: "Apple"

Također, prilikom unosa vrijednosti, možete odrediti neposredne stupce u koje će se dodavati vrijednosti:

UMETNI U proizvode (naziv proizvoda, cijena, proizvođač) VRIJEDNOSTI ("iPhone 6S", 41000, "Apple")

Ovdje je vrijednost navedena za samo tri stupca. A sada se vrijednosti prosljeđuju redoslijedom stupaca:

    Naziv proizvoda: "iPhone 6S"

    Proizvođač: "Apple"

Za nespecificirane stupce (u ovom slučaju ProductCount) bit će dodana zadana vrijednost ako je postavljen atribut DEFAULT ili NULL. Međutim, nespecificirani stupci moraju biti nullable ili DEFAULT.

Također možemo dodati nekoliko redaka odjednom:

UMETNI U VRIJEDNOSTI proizvoda ("iPhone 6", "Apple", 3, 36000), ("Galaxy S8", "Samsung", 2, 46000), ("Galaxy S8 Plus", "Samsung", 1, 56000)

U tom će se slučaju tablici dodati tri retka.

Također, prilikom dodavanja možemo odrediti da se zadana vrijednost za stupac koristi pomoću ključne riječi DEFAULT ili NULL:

UMETNI U proizvode (naziv proizvoda, proizvođač, broj proizvoda, cijena) VRIJEDNOSTI ("Mi6", "Xiaomi", ZADANO, 28000)

U ovom slučaju, za stupac ProductCount koristit će se zadana vrijednost (ako je postavljena, ako nije, onda NULL).

Ako svi stupci imaju zadani DEFAULT atribut ili su nullable, tada možete umetnuti zadane vrijednosti za sve stupce:

INSERT INTO Products ZADANE VRIJEDNOSTI

Ali ako uzmete tablicu Products, tada takva naredba neće uspjeti, budući da nekoliko polja nemaju atribut DEFAULT i, u isto vrijeme, ne dopuštaju NULL vrijednosti.

Ovaj izraz dodaje jedan ili više zapisa u tablicu (izvršava upit za dodavanje).

Sintaksa

Zahtjev za dodavanje više zapisa:

UMETNUTI U odredišni_objekt [(polje1[, polje2[, ...]])]
ODABERI [ izvor.]polje1[, polje2[, ...]
IZ izraz_tablice

Zahtjev za dodavanjem jednog zapisa:

UMETNUTI U odredišni_objekt [(polje1[, polje2[, ...]])]
VRIJEDNOSTI ( polje1[, polje2[, ...])

Naredba INSERT INTO sastoji se od sljedećih elemenata:

Dio

Opis

odredišni_objekt

Naziv tablice ili upita u koji se dodaju zapisi.

polje1, polje2

Nakon svađe odredišni_objekt- nazive polja u koja se dodaju podaci; nakon svađe izvor- nazive polja iz kojih se dohvaćaju podaci.

vanjska_baza podataka

Put do vanjske baze podataka. Za opis puta, pogledajte članak o IN klauzuli.

izvor

Naziv tablice ili upita iz kojeg se kopiraju zapisi.

izraz_tablice

Jedan ili više naziva tablica iz kojih se dohvaćaju zapisi. Ovaj argument može biti naziv pojedinačne tablice, rezultatski izraz konstruiran korištenjem INNER JOIN, LEFT JOIN ili RIGHT JOIN ili pohranjeni upit.

vrijednost1, vrijednost2

Vrijednosti koje treba dodati određenim poljima u novom zapisu. Svaka vrijednost se umeće u polje koje odgovara njenom položaju na popisu: vrijednost1 dodano polje1 novi unos, vrijednost2- v polje2 i tako dalje. Odvojite vrijednosti zarezom i stavite tekstualna polja u navodnike ("").

Opaske

S naredbom INSERT INTO možete dodati jedan zapis u tablicu koristeći gornju sintaksu. U ovom slučaju, nazivi i vrijednosti daju se za svako polje u zapisu. Morate navesti sva polja zapisa kojima dodjeljujete vrijednosti i odgovarajuće vrijednosti. Ako ne navedete vrijednost polja, bit će joj dodijeljena zadana vrijednost ili NULL. Zapisi se dodaju na kraj tablice.

Također možete koristiti INSERT INTO za dodavanje skupa zapisa iz druge tablice ili upita pomoću klauzule SELECT ... FROM, kao što je prikazano gore (pogledajte sintaksu za dodavanje više zapisa). U ovom slučaju, klauzula SELECT specificira polja koja će se dodati navedenom odredišni_objekt.

Izvor ili odredišni_objekt može biti tablica ili upit. Ako je upit naveden, Microsoft Access Database Engine dodaje zapise svim tablicama koje vraća.

Upotreba naredbe INSERT INTO nije obavezna. Ako je navedeno, mora prethoditi naredbi SELECT.

Ako odredišna tablica sadrži primarni ključ, provjerite jesu li vrijednosti dodane jednom ili više polja primarnog ključa jedinstvene i različite od NULL; u suprotnom neće biti dodani unosi.

Ako dodajete zapise u tablicu s poljem Brojač i želite ih prenumerirati, nemojte uključivati ​​polje Brojač u svoj upit. Uključite polje Brojač u svoj upit ako želite zadržati izvorne vrijednosti iz polja.

Možete dodati zapise u tablicu u drugoj bazi podataka pomoću IN klauzule.

Da biste stvorili tablicu, koristite izraz SELECT ... INTO da biste dobili upit za kreiranje tablice.

Prije nego što pokrenete upit za dodavanje, upotrijebite upit za odabir s istim kriterijima odabira kako biste odredili koji će se zapisi dodati na temelju dobivenih rezultata.

Upit za dodavanje kopira zapise iz jedne ili više tablica u drugu tablicu. Istodobno, tablice koje sadrže dodane zapise ostaju nepromijenjene.

Umjesto dodavanja zapisa iz druge tablice, možete odrediti vrijednost svakog polja u zasebnom novom zapisu pomoću klauzule VALUES. Ako je popis polja izostavljen, klauzula VALUES mora uključivati ​​odgovarajuće vrijednosti za svako polje u tablici; inače, operacija INSERT neće uspjeti. Koristite izraz INSERT INTO zajedno s klauzulom VALUES za svaki dodatni zapis koji želite stvoriti.

SQL izraz INSERT INTO i INSERT SELECT koriste se za umetanje novih redaka u tablicu. Postoje dva načina korištenja uputa:

  1. Samo vrijednosti: Prva metoda je za određivanje samo vrijednosti podataka koje treba umetnuti bez naziva stupaca.

Sintaksa:

INSERT INTO table_name VRIJEDNOSTI (vrijednost1, vrijednost2, vrijednost3, ...); table_name: naziv tablice. vrijednost1, vrijednost2, ..: vrijednosti prvog stupca, drugog stupca, ... za novi zapis

  1. Nazivi i vrijednosti stupaca: Druga metoda specificira nazive stupaca i vrijednosti redaka za umetanje:

Sintaksa:

INSERT INTO table_name (stupac1, stupac2, stupac3, ..) VRIJEDNOSTI (vrijednost1, vrijednost2, vrijednost3, ...); table_name: naziv tablice. stupac1: naziv prvog stupca, drugog stupca ... vrijednost1, vrijednost2, ..: vrijednosti prvog stupca, drugog stupca, ... za novi zapis

Zahtjevi:

Metoda 1 ( umetanje samo vrijednosti):

UMETNI U VRIJEDNOSTI učenika ("5", "HARSH", "WEST BENGAL", "8759770477", "19");

rezultat:

Nakon pomoću INSERT Tablica INTO SELECT Student će sada izgledati ovako:

ROLL_BR IME ADRESA TELEFON Dob
1 Radna memorija Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
5 OŠTRO ZAPADNI BENGAL 8759770477 19

Metoda 2 ( umetanje vrijednosti samo u određene stupce):

INSERT INTO Student (ROLL_NO, NAME, Age) VRIJEDNOSTI ("5", "PRATIK", "19");

rezultat:

Studentska tablica sada će izgledati ovako:

ROLL_BR IME ADRESA TELEFON Dob
1 Radna memorija Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
5 PRATIK null null 19

Imajte na umu da su stupci bez vrijednosti postavljeni na null.

Korištenje SELECT u izrazu INSERT INTO

Možete koristiti MySQL INSERT SELECT izraz da kopirate retke iz jedne tablice i umetnete ih u drugu.

Korištenje ovog operatora isto je kao korištenje INSERT INTO. Razlika je u tome što se izraz SELECT koristi za dohvaćanje podataka iz druge tablice. Ispod su različiti putevi pomoću INSERT INTO SELECT:

  • Umetnite sve stupce tablice: Možete kopirati sve podatke tablice i zalijepiti ih u drugu tablicu.

Sintaksa:

INSERT INTO first_table SELECT * FROM second_table; first_table: naziv prve tablice. second_table: naziv druge tablice.

Koristili smo izraz SELECT za kopiranje podataka iz jedne tablice i izraz INSERT INTO za umetanje u drugu.

  • Umetnite pojedinačne stupce tablice... Možete kopirati samo one stupce tablice koje želite zalijepiti u drugu tablicu.

Sintaksa:

INSERT INTO first_table (column_names1) SELECT column_names2 FROM second_table; first_table: naziv prve tablice. second_table: naziv druge tablice. column_names1: nazivi stupaca odvojeni zarezom (,) za tablicu 1.column_names2: nazivi stupaca odvojeni zarezom (,) za tablicu 2.

Koristili smo naredbu SELECT za kopiranje podataka samo iz odabranih stupaca druge tablice, a MySQL INSERT INTO SELECT izraz za umetanje u prvu tablicu.

  • Kopiranje određenih redaka iz tablice... Možete kopirati određene retke iz tablice za kasnije umetanje u drugu tablicu pomoću klauzule WHERE s naredbom SELECT. U tom slučaju morate upotrijebiti odgovarajući uvjet u WHERE.

Sintaksa:

Tablica 2: LateralStudent

ROLL_BR IME ADRESA TELEFON Dob
7 SOUVIK BUDALA 9876543210 18
8 NIRAJ NOIDA 9786543210 19
9 NEŠTO ROHTAK 9687543210 20

Zahtjevi:

Metoda 1 ( umetnite sve retke i stupce):

INSERT INTO Student SELECT * FROM LateralStudent;

rezultat:

Ovaj će upit umetnuti sve podatke iz tablice LateralStudent u tablicu Student. Nakon primjene SQL INSERT INTO SELECT, Studentska tablica će izgledati ovako:

ROLL_BR IME ADRESA TELEFON Dob
1 Radna memorija Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
7 SOUVIK BUDALA 9876543210 18
8 NIRAJ NOIDA 9786543210 19
9 NEŠTO ROHTAK 9687543210 20

Metoda 2 ( umetanje pojedinih stupaca):

INSERT INTO Student (ROLL_NO, NAME, Age) SELECT ROLL_NO, NAME, Age FROM LateralStudent;

rezultat:

Ovaj će upit umetnuti podatke iz stupaca ROLL_NO, NAME i Age tablice LateralStudent u tablicu Student. Za ostale stupce Studentske tablice, null... Nakon primjene SQL INSERT SELECT, tablica će izgledati ovako:

ROLL_BR IME ADRESA TELEFON Dob
1 Radna memorija Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
7 SOUVIK Null null 18
8 NIRAJ Null null 19
9 NEŠTO Null null 20
  • Odabir određenih redaka za umetanje:

rezultat:

Ovaj će upit odabrati samo prvi redak iz tablice LateralStudent za umetanje u tablicu Student. Nakon primjene INSERT SELECT, tablica će izgledati ovako.

Naredba INSERT umeće nove zapise u tablicu. U ovom slučaju, vrijednosti stupca mogu biti literalne konstante ili biti rezultat podupita. U prvom slučaju, za umetanje svakog retka koristi se zaseban izraz INSERT; u drugom slučaju, umetnut će se onoliko redaka koliko ih je vratio podupit.

Sintaksa za operator je sljedeća:

    UMETNUTI U [(, ...)]

    (VRIJEDNOSTI (, ...))

  1. | (ZADANE VRIJEDNOSTI)

Kao što možete vidjeti iz predstavljene sintakse, popis stupaca nije obavezan (ovo je ono što uglate zagrade(vidi opis sintakse). Ako ga nema, popis umetnutih vrijednosti mora biti potpun, odnosno navesti vrijednosti za sve stupce tablice. Međutim, redoslijed vrijednosti mora odgovarati redoslijedu navedenom u naredbi CREATE TABLE za tablicu u koju su umetnuti retki. Osim toga, ove vrijednosti moraju biti iste vrste podataka kao i stupci u koje su unesene. Kao primjer, razmislite o umetanju retka u tablicu proizvoda kreiranu sljedećim izrazom CREATE TABLE:

    CREATE TABLE proizvod

    maker char (1) NOT NULL,

    model varchar (4) NOT NULL,

    tip varchar (7) NOT NULL

Pretpostavimo da ovoj tablici želite dodati model PC 1157 proizvođača B. To se može učiniti pomoću sljedećeg operatera:

    UMETNI U PROIZVOD

    VRIJEDNOSTI ("B", 1157, "PC");

Ako navedete popis stupaca, možete promijeniti "prirodni" redoslijed njihovog sljedećeg:

    UMETNI U proizvod (vrsta, model, proizvođač)

    VRIJEDNOSTI ("PC", 1157, "B");

Čini se da je ovo potpuno nepotrebna značajka, koja samo čini dizajn glomaznijim. Međutim, pobjeđuje ako stupci imaju zadane vrijednosti. Razmotrite sljedeću strukturu tablice:

    CREATE TABLE proizvod_D

    proizvođač char (1) NULL,

    model varchar (4) NULL,

    tip varchar (7) NOT NULL DEFAULT "PC"

Imajte na umu da ovdje vrijednosti svih stupaca imaju zadane vrijednosti (prva dva su NULL, a posljednji stupac je tip - PC). Sada bismo mogli napisati:

    INSERT INTO Product_D (model, proizvođač)

    VRIJEDNOSTI (1157, "B");

U ovom slučaju, vrijednost koja nedostaje bit će zamijenjena zadanom vrijednošću PC prilikom umetanja retka. Imajte na umu da ako zadana vrijednost nije navedena za stupac u izrazu CREATE TABLE, a ograničenje NOT NULL nije navedeno da zabrani korištenje NULL u danom stupcu tablice, tada se pretpostavlja zadana vrijednost NULL.

Postavlja se pitanje: je li moguće ne navesti popis stupaca i, ipak, koristiti zadane vrijednosti? Odgovor je da. Da biste to učinili, umjesto eksplicitnog navođenja vrijednosti, koristite rezerviranu riječ DEFAULT:

    INSERT INTO Product_D

    VRIJEDNOSTI ("B", 1158, ZADANO);

Budući da svi stupci imaju zadane vrijednosti, moglo bi se napisati za umetanje retka sa zadanim vrijednostima:

    INSERT INTO Product_D

    VRIJEDNOSTI (DEFAULT, DEFAULT, DEFAULT);

Međutim, za ovaj slučaj postoji posebna konstrukcija DEFAULT VALUES (pogledajte sintaksu operatora), s kojom se gornji operator može prepisati kao

    INSERT INTO Product_D ZADANE VRIJEDNOSTI;

Imajte na umu da kada umetnete redak u tablicu, provjeravaju se sva ograničenja nametnuta ovoj tablici. To mogu biti ograničenja primarnog ključa ili jedinstvenog indeksa, ograničenja provjere kao što je CHECK i ograničenja referentnog integriteta. Ako se prekrši bilo koje ograničenje, umetanje retka bit će odbijeno. Razmotrimo sada slučaj upotrebe podupita. Pretpostavimo da u tablicu Product_D trebamo umetnuti sve retke iz tablice proizvoda koji se odnose na modele osobnih računala(tip = 'PC'). Budući da su vrijednosti koje su nam potrebne već u nekoj tablici, formiranje umetnutih redaka ručno, prvo je neučinkovito, a drugo, može napraviti pogreške u unosu. Korištenje podupita rješava ove probleme:

Upotreba simbola "*" u potupitu je u ovom slučaju opravdana, budući da je redoslijed stupaca isti za obje tablice. Ako to nije slučaj, morao bi se primijeniti popis stupaca, bilo u izrazu INSERT, u potupitu ili oboje, koji bi odgovarali redoslijedu stupaca:

Ovdje, kao i prije, možete odrediti ne sve stupce ako želite koristiti postojeće zadane vrijednosti, na primjer:

U ovom slučaju, zadana vrijednost PC za sve umetnute retke bit će zamijenjena u stupac tipa u tablici Product_D.

Imajte na umu da kada koristite podupit koji sadrži predikat, bit će umetnuti samo oni reci za koje je vrijednost predikata TRUE (ne NEPOZNATO!). Drugim riječima, ako je stupac tipa u tablici Product bio nullable, a ta vrijednost je bila prisutna u više redaka, tada ti reci ne bi bili umetnuti u tablicu Product_D.

Za prevladavanje ograničenja umetanja jednog retka u INSERT izraz kada se koristi konstruktor reda u klauzuli VALUES, može se koristiti umjetna tehnika korištenja podupita koji tvori red s klauzulom UNION ALL. Dakle, ako trebamo umetnuti više redaka koristeći jedan INSERT izraz, možemo napisati:

    INSERT INTO Product_D

    ODABIR "B" AS proizvođača, 1158 AS model, "PC" AS tip

    UNIJA SVI

    ODABIR "C", 2190, "Laptop"

    UNIJA SVI

    ODABIR "D", 3219, "Printer";

Korištenje UNION ALL je poželjnije od UNION čak i ako nema zajamčenih dupliciranih nizova, budući da se tada neće izvršiti provjera duplikata.

Treba napomenuti da je umetanje više tuplesa pomoću konstruktora nizova već implementirano Sustav upravljanja relacijskim bazama podataka (DBMS) koji je razvio Microsoft.Structured Query Language) je univerzalni računalni jezik koji se koristi za stvaranje, modificiranje i upravljanje podacima u relacijskim bazama podataka. SQL Server 2008. Uzimajući ovu priliku u obzir, posljednji upit može se prepisati kao:

    UMETNI U VRIJEDNOSTI proizvoda_D

    ("B", 1158, "PC"),

    ("C", 2190, "Laptop"),

Što je INSERT INTO?

Glavni cilj sustava baza podataka je pohranjivanje podataka u tablice. Podatke obično dostavljaju aplikacijski programi koji se izvode na vrhu baze podataka. U tom cilju, SQL ima naredbu INSERT koja se koristi za pohranjivanje podataka u tablicu. The Naredba INSERT stvara novi red u tablicu za pohranjivanje podataka.

Osnovna sintaksa

Pogledajmo osnovnu sintaksu naredbe SQL INSERT prikazanu u nastavku.

INSERT INTO `table_name` (stupac_1, stupac_2, ...) VRIJEDNOSTI (vrijednost_1, vrijednost_2, ...);

  • INSERT INTO `table_name` je naredba koja govori MySQL poslužitelju da doda novi red u tablicu pod nazivom `table_name`.
  • (stupac_1, stupac_2, ...) određuje stupce u kojima se treba ažurirati Novi red
  • VRIJEDNOSTI (vrijednost_1, vrijednost_2, ...) specificira vrijednosti koje treba dodati u novi red

Prilikom davanja vrijednosti podataka koje treba umetnuti u novu tablicu, prilikom rada s različitim vrstama podataka treba uzeti u obzir sljedeće.

  • Vrste podataka niza- sve vrijednosti niza treba staviti u jednostruke navodnike.
  • Numerički tipovi podataka- sve numeričke vrijednosti treba dostaviti izravno bez stavljanja u jednostruke ili dvostruke navodnike.
  • Tipovi podataka datuma- stavite vrijednosti datuma u jednostruke navodnike u formatu "GGGG-MM-DD".

Primjer:

Pretpostavimo da imamo sljedeći popis novih članova knjižnice koje je potrebno dodati u bazu podataka.

Puna imena Datum rođenja rodu Fizička adresa poštanska adresa Kontakt broj Email adresa
Leonard Hofstadter Muški Woodcrest 0845738767
Sheldon Cooper Muški Woodcrest 0976736763
Rajesh koothrappali Muški Fairview 0938867763
Leslie winkle 14/02/1984 Muški 0987636553
Howard Wolowitz 24/08/1981 Muški Južni park P.O. Kutija 4563 0987786553

Omogućuje "INSERT podatke jedan po jedan. Počet ćemo s Leonardom Hofstadterom. Broj kontakta tretirat ćemo kao numerički tip podataka i nećemo ga stavljati u jednostruke navodnike.

UMETNI U `članove` (` puna_imena`, `spol`,` fizička_adresa`, `broj_kontakta`) VRIJEDNOSTI (" Leonard Hofstadter "," Muški "," Woodcrest ", 0845738767);

Izvođenjem gornje skripte ispušta se 0 s Leonardovog kontaktnog broja. To je zato što će se vrijednost tretirati kao brojčana vrijednost, a nula (0) na početku se ispušta jer nije značajna.

Kako bi se izbjegli takvi problemi, vrijednost mora biti zatvorena u jednostrukim navodnicima kao što je prikazano u nastavku -

UMETNI U `članove` (` puna_imena`, `spol`,` fizička_adresa`, `broj_kontakta`) VRIJEDNOSTI (" Sheldon Cooper "," Muški "," Woodcrest "," 0976736763 ");

U gornjem slučaju, nula (0) neće biti ispuštena

Promjena redoslijeda stupaca nema utjecaja na upit INSERT sve dok su ispravne vrijednosti mapirane u ispravne stupce.

Dolje prikazan upit pokazuje gornju točku.

UMETNI U `članove` (` kontakt_broj`, `spol`,` puna_imena`, `fizička_adresa`) VRIJEDNOSTI (" 0938867763 "," Muški "," Rajesh Koothrappali "," Woodcrest ");

Gornji upiti preskočili su stupac datuma rođenja, prema zadanim postavkama MySQL će umetnuti NULL vrijednosti u stupce koji su preskočeni u upitu INSERT.

Ubacimo sad zapis za Leslie koji ima naveden datum rođenja. Vrijednost datuma treba biti stavljena u jednostruke navodnike u formatu "GGGG-MM-DD".

UMETNI U `članove` (` puna_imena`, `datum_rođenja`,` spol`, `fizička_adresa`,` kontakt_broj`) VRIJEDNOSTI ("Leslie Winkle", "1984-02-14", "Muško", "Woodcrest", " 0987636553 ");

Svi gornji upiti specificirali su stupce i mapirali ih na vrijednosti u naredbi za umetanje. Ako dajemo vrijednosti za SVE stupce u tablici, onda možemo izostaviti stupce iz upita za umetanje.

UMETNI U VRIJEDNOSTI `članova` (9," Howard Wolowitz "," Muški "," 1981-08-24 "," SouthPark "," P.O. Box 4563 "," 0987786553 "," lwolowitzemail.me ");

Koristimo sada naredbu SELECT za pregled svih redaka u tablici članova. SELECT * FROM` members`;

članski brojpuna_imenaroduDatum rođenjafizička adresapoštanska adresakontakt_brojemail
1 Janet JonesŽena21-07-1980 Prva ulica parcela br.4Privatna torba0759 253 542 Ova e-mail adresa je zaštićena od spambota. Morate omogućiti JavaScript da biste ga vidjeli.
2 Janet Smith JonesŽena23-06-1980 Melrose 123NULLNULLOva e-mail adresa je zaštićena od spambota. Morate omogućiti JavaScript da biste ga vidjeli.
3 Robert PhilMuški12-07-1989 3. ulica 34NULL12345 Ova e-mail adresa je zaštićena od spambota. Morate omogućiti JavaScript da biste ga vidjeli.
4 Gloria WilliamsŽena14-02-1984 2. ulica 23NULLNULLNULL
5 Leonard HofstadterMuškiNULLWoodcrestNULL845738767 NULL
6 Sheldon CooperMuškiNULLWoodcrestNULL976736763 NULL
7 Rajesh koothrappaliMuškiNULLWoodcrestNULL938867763 NULL
8 Leslie winkleMuški14-02-1984 WoodcrestNULL987636553 NULL
9 Howard WolowitzMuški24-08-1981 Južni parkP.O. Kutija 4563987786553 Ova e-mail adresa je zaštićena od spambota. Morate omogućiti JavaScript da biste ga vidjeli.

Primijetite da je kontakt broj Leonarda Hofstadtera ispustio nulu (0) iz kontakt broja. Ostali kontakt brojevi nisu ispustili nulu (0) na početku.

Umetanje u tablicu iz druge tablice

Naredba INSERT također se može koristiti za umetanje podataka u tablicu iz druge tablice. Osnovna sintaksa je kao što je prikazano u nastavku.

INSERT INTO table_1 SELECT * FROM table_2;

Pogledajmo sada praktičan primjer, napravit ćemo lažnu tablicu za kategorije filmova u svrhu demonstracije. Novu tablicu kategorija nazvat ćemo category_archive. Skripta prikazana u nastavku stvara tablicu.

CREATE TABLE `categories_archive` (` category_id` int (11) AUTO_INCREMENT, `category_name` varchar (150) DEFAULT NULL,` napomene` varchar (500) DEFAULT NULL, PRIMARY KEY (`category_id`))

Izvršite gornju skriptu da kreirate tablicu.

Ubacimo sada sve retke iz tablice kategorija u tablicu arhive kategorija. Skripta prikazana u nastavku pomaže nam u tome.

INSERT INTO `categories_archive` SELECT * FROM` category`;

Izvođenje gornje skripte umeće sve retke iz tablice kategorija u tablicu arhive kategorija. Imajte na umu da će strukture tablica morati biti iste da bi skripta funkcionirala. Robusnija skripta je ona koja mapira nazive stupaca u tablici za umetanje u one u tablici koja sadrži podatke.

Dolje prikazan upit pokazuje njegovu upotrebu.

INSERT INTO `categories_archive` (category_id, category_name, remarks) SELECT category_id, category_name, napomene FROM` category`;

Izvršavanje SELECT upita

SELECT * FROM `categories_archive`

daje sljedeće rezultate prikazane u nastavku.

kategorija_idime kategorijeopaske
1 KomedijaFilmovi sa humorom
2 RomantičnoLjubavne priče
3 EpStare priče
4 UžasNULL
5 Znanstvena fantastikaNULL
6 TrilerNULL
7 AkcijskiNULL
8 Romantična komedijaNULL
9 CrtićiNULL
10 CrtićiNULL

Sažetak

  • Naredba INSERT koristi se za dodavanje novih podataka u tablicu
  • Vrijednosti datuma i niza trebaju biti stavljene u jednostruke navodnike.
  • Brojčane vrijednosti ne moraju biti stavljene u navodnike.
  • Naredba INSERT također se može koristiti za umetanje podataka iz jedne tablice u drugu.