Sql umetanje upita. Transact-SQL - umetanje podataka

sql upit INSERT INTO ima smisla kada je kreirana tablica baze podataka. Odnosno, tablica postoji, ima ime, kreirane retke i stupce. tablicu kreira operator: , tablicu modificira operator .

sql upit INSERT INTO - sintaksa upita

sql upit INSERT INTO ima sljedeću sintaksu:

INSERT INTO table_name (u zagradama, ako je potrebno, umetnite popis stupaca u koje želite umetnuti podatke) VRIJEDNOSTI umetnuti podaci1, umetnuti podaci2, umetnuti podaci3.

Možete umetnuti opciju IGNORE između INSERT i INTRO. Nije potrebno. Potrebno za zaštitu primarnih ključeva prilikom uređivanja tablice. U suprotnom, ako dođe do dupliciranja primarnih ključeva tijekom uređivanja, tada će prilikom umetanja opcije IGNORE prvi redak s primarnim ključem ostati u tablici koja se uređuje. Ostali primarni ključevi će biti izbrisani. Prema zadanim postavkama izostavljamo ovu opciju.

Postoje izborne opcije LOW_PRIORITY i DELAYED. Oni određuju prioritete za dodavanje informacija u bazu podataka. Prvi navodi čekanje da se baza podataka oslobodi, drugi znači spremanje informacija u međuspremnik.

Redak u upitu: INSERT s frazom VRIJEDNOSTI omogućit će vam dodavanje jednog retka u tablicu baze podataka. Klauzula VALUES sadrži vrijednosti ovih podataka.

Podupiti se mogu specificirati umjesto izraza VRIJEDNOSTI. INSERT s podupitom dodaje retke koje vraća podupit u tablicu. Poslužitelj baze podataka obrađuje podupit i ubacuje sve vraćene retke u tablicu. Poslužitelj ne umeće retke osim ako ih podupit ne odabere.

  • subquery_1 - podupit koji server obrađuje na isti način kao i pogled
  • subquery_2 je podupit koji vraća retke umetnute u tablicu. Popis ovog podupita mora imati isti broj stupaca kao popis stupaca INSERT.

Podupiti se praktički ne koriste u MySQL bazi podataka.

Primjeri sql upita INSERT INTO u MySQL bazi podataka

Nove retke ubacujemo u MySQL bazu pomoću naredbe INSERT INTRO.

Prvi primjer.

Umetnite nove retke u tablicu table_name.

INSERT INTO table_name VALUES ('2','145','1','name');

To znači da želimo umetnuti vrijednosti 2,145,1,name u stupce tablice table_name. Budući da stupci nisu navedeni, vrijednosti se popunjavaju u svim stupcima tablice.

Primjer dva.

Umetnite informacije u potrebne (navedene) stupce tablice table_name.

INSERT INTO table_name (client_customer, client_subclient, client_mail) VALUES ('name1','subname1',' [e-mail zaštićen]′), ('ime2','podnaziv2',' [e-mail zaštićen]′), ('ime3','podnaziv3',(' [e-mail zaštićen]′);

Igor Serov posebno za mjesto "".

Naredba INSERT umeće nove zapise u tablicu. U ovom slučaju, vrijednosti stupca mogu biti doslovne konstante ili biti rezultat izvršavanja podupita. U prvom slučaju, posebna izjava INSERT se koristi za umetanje svakog retka; u drugom slučaju će biti umetnuto onoliko redaka koliko je vraćeno podupitom.

Sintaksa operatora je sljedeća:

    UMETNI U [ (,...) ]

    (VRIJEDNOSTI(,…))

  1. | (ZADANE VRIJEDNOSTI)

Kao što možete vidjeti iz prikazane sintakse, popis stupaca nije obavezan (uglaste zagrade u opisu sintakse to označavaju). Ako nedostaje, popis umetnutih vrijednosti mora biti potpun, odnosno navesti vrijednosti za sve stupce tablice. U ovom slučaju, redoslijed vrijednosti mora odgovarati redoslijedu navedenom naredbom CREATE TABLE za tablicu u koju su umetnuti retci. Osim toga, te vrijednosti moraju biti iste vrste podataka kao i stupci u koje su unesene. Kao primjer, razmislite o umetanju retka u tablicu proizvoda stvorenu sljedećom naredbom CREATE TABLE:

    CREATE TABLE proizvod

    maker char (1) NIJE NULL,

    model varchar(4) NOT NULL,

    tip varchar(7) NOT NULL

Pretpostavimo da želite dodati PC model 1157 proizvođača B u ovu tablicu. To možete učiniti sa sljedećom izjavom:

    UMETNI U PROIZVOD

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

Ako navedete popis stupaca, možete promijeniti njihov "prirodni" redoslijed:

    UMETNI U PROIZVOD (tip, 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

    maker 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 tom slučaju vrijednost koja nedostaje prilikom umetanja retka bit će zamijenjena zadanom vrijednošću - PC. Imajte na umu da ako stupcu nije dana zadana vrijednost u CREATE TABLE izrazu i navedeno je NOT NULL ograničenje da zabrani korištenje NULL u tom stupcu tablice, tada se pretpostavlja zadana vrijednost NULL.

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

    INSERT INTO Product_D

    VRIJEDNOSTI ("B", 1158, ZADANO) ;

Budući da svi stupci imaju zadane vrijednosti, za umetanje retka sa zadanim vrijednostima možete napisati:

    INSERT INTO Product_D

    VRIJEDNOSTI(ZADANO, ZADANO, ZADANO);

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

    INSERT INTO Product_D DEFAULT VALUES ;

Imajte na umu da se prilikom umetanja retka u tablicu provjeravaju sva ograničenja nametnuta ovoj tablici. Mogu postojati ograničenja primarni ključ ili jedinstveni indeks, ograničenja provjere kao što je CHECK, ograničenja referentnog integriteta. Ako se prekrši bilo koje ograničenje, umetanje retka bit će odbijeno. Razmotrimo sada slučaj korištenja podupita. Pretpostavimo da u tablicu Product_D trebamo umetnuti sve retke iz tablice Product koji se odnose na modele osobnih računala(vrsta = 'PC'). Budući da su vrijednosti koje su nam potrebne već u nekoj tablici, ručno generiranje umetnutih redaka je, prvo, neučinkovito i, drugo, može dopustiti pogreške pri unosu. Korištenje podupita rješava ove probleme:

Upotreba simbola “*” u podupitu je u ovom slučaju opravdana, jer je redoslijed stupaca isti za obje tablice. Da to nije slučaj, popis stupaca morao bi se primijeniti u naredbi INSERT, podupitu ili oboje, što bi odgovaralo redoslijedu stupaca:

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

U ovom slučaju, stupac tipa tablice Product_D bit će zamijenjen zadanom vrijednošću PC za sve umetnute retke.

Imajte na umu da će se pri korištenju podupita koji sadrži predikat umetnuti samo oni redovi za koje je vrijednost predikata TRUE (ne NEPOZNATO!). Drugim riječima, ako je stupac tipa u tablici proizvoda NULLable, a ta je vrijednost prisutna u određenom broju redaka, tada ti redovi ne bi bili umetnuti u tablicu Proizvod_D.

Umjetna tehnika korištenja podupita koji tvori red s klauzulom UNION ALL omogućuje vam da prevladate ograničenje umetanja jednog retka u naredbu INSERT kada koristite konstruktor retka u klauzuli VALUES. Dakle, ako trebamo umetnuti nekoliko redaka pomoću jedne naredbe INSERT, možemo napisati:

    INSERT INTO Product_D

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

    UNIJA SVE

    ODABERITE "C", 2190, "Laptop"

    UNIJA SVE

    SELECT "D" , 3219 , "Pisač" ;

Upotreba UNION ALL je poželjnija od UNION-a čak i ako je zajamčena odsutnost dupliciranih redaka, jer u ovom slučaju neće biti izvršena provjera za uklanjanje duplikata.

Treba napomenuti da je umetanje višestrukih torki pomoću konstruktora reda već implementirano Sustav za upravljanje relacijskom bazom podataka (DBMS), razvijen od strane Microsoft Corporation.Structured Query Language) je univerzalni računalni jezik koji se koristi za stvaranje, modificiranje i rukovanje podacima u relacijskim bazama podataka. SQL poslužitelj 2008. S obzirom na ovu mogućnost, posljednji upit može se prepisati kao:

    INSERT INTO Product_D VALUES

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

    ("C", 2190, "prijenosno računalo"),

Pozdrav svima! Ovaj članak govori o tome kako možete dodati podatke u tablicu u Microsoft SQL Serveru, ako ste već barem malo upoznati s T-SQL jezikom, onda ste vjerojatno shvatili da ćemo sada govoriti o naredbi INSERT, kao i o tome kako se njome mogu dodavati podaci u tablicu.

Počnimo, kao i obično, s malo teorije.

INSERT izjava u T-SQL

UMETNUTI je T-SQL instrukcija koja je dizajnirana za dodavanje podataka u tablicu, tj. stvaranje novih zapisa. Ova se uputa može koristiti i za dodavanje jednog retka u tablicu i za skupno umetanje podataka. Izjava INSERT zahtijeva dopuštenje za umetanje podataka ( UMETNUTI) u ciljnu tablicu.

Postoji nekoliko načina za korištenje naredbe INSERT na dijelu podataka koji treba umetnuti:

  • Ispis specifičnih vrijednosti za umetanje;
  • Određivanje skupa podataka kao SELECT upit;
  • Određivanje skupa podataka u obliku poziva procedure koja vraća tablične podatke.

Pojednostavljena sintaksa

INSERT [tablica] ( popis stupaca...) VRIJEDNOSTI ( popis vrijednosti, … ) Ili ODABERI zahtjev za uzorak Ili IZVRŠITI postupak

  • INSERT INTO je naredba za dodavanje podataka u tablicu;
  • Tablica je naziv ciljne tablice u koju želite umetnuti nove zapise;
  • Popis stupaca je popis naziva stupaca tablice u koje će se umetnuti podaci, odvojenih zarezima;
  • VALUES je konstruktor tabličnih vrijednosti pomoću kojeg zadajemo vrijednosti koje ćemo ubaciti u tablicu;
  • Popis vrijednosti su vrijednosti koje će biti umetnute, odvojene zarezima. Navedeni su redoslijedom kojim se stupci pojavljuju na popisu stupaca;
  • SELECT je upit za odabir podataka za umetanje u tablicu. Skup rezultata koji upit vraća mora odgovarati popisu stupaca;
  • EXECUTE je poziv procedure za dobivanje podataka za umetanje u tablicu. Skup rezultata koji pohranjena procedura vraća mora odgovarati popisu stupaca.

Ovako otprilike izgleda pojednostavljena sintaksa naredbe INSERT INTO; u većini slučajeva, ovako ćete dodati nove zapise u tablice.

Popis stupaca u koje ćete unositi podatke nije potrebno pisati, u tom slučaju će se njihov redoslijed odrediti na temelju stvarnog redoslijeda stupaca u tablici. Morate zapamtiti ovaj redoslijed kada navodite vrijednosti za umetanje ili pišete upit za odabir. Osobno preporučujem da ipak navedete popis stupaca u koje planirate dodati podatke.

Također morate zapamtiti da popis stupaca, odnosno popis vrijednosti, moraju sadržavati takozvane obavezne stupce; to su oni koji ne mogu sadržavati vrijednost NULL. Ako ih ne navedete, a stupac nema zadanu vrijednost, pojavit će se pogreška.

Također bih želio napomenuti da tip podataka vrijednosti koje ćete umetnuti mora odgovarati tipu podataka stupca u koji će ta vrijednost biti umetnuta ili barem podržavati implicitnu konverziju. Ali savjetujem vam da kontrolirate vrstu podataka ( format) vrijednosti, i na popisu vrijednosti i u upitu SELECT.

Dosta teorije, idemo na praksu.

Početni podaci

Kako bismo dodali podatke u tablicu, potrebna nam je sama tablica, pa je kreirajmo i pokušajmo joj dodati zapise.

Bilješka! Svi primjeri bit će pokrenuti u Microsoft SQL Server 2016 Express.

CREATE TABLE TestTable( IDENTITY(1,1) NOT NULL, (100) NOT NULL, NOT NULL)

Naša testna tablica sadržavat će popis proizvoda s cijenama.

Također, u primjerima ćemo koristiti proceduru koja vraća vrijednost tablice za dodavanje podataka u tablicu, pa kreirajmo i to.

CREATE PROCEDURE TestProcedure AS BEGIN SELECT ProductName, Price FROM TestTable END

Na primjer, vratit će podatke iz novostvorene tablice TestTable.

Bilješka!

Kao što razumijete, čitanje ovog materijala podrazumijeva posjedovanje određenog znanja o T-SQL jezik, pa ako vam nešto nije jasno, preporučujem da se upoznate sa sljedećim materijalima:

Primjer 1 – Dodavanje novog zapisa u tablicu pomoću konstruktora vrijednosti tablice

Prvo pokušajmo dodati jedan zapis i odmah pogledati rezultat, tj. Napišimo zahtjev za uzorak.

INSERT INTO TestTable(ProductName, Price) VALUES ("Computer", 100) GO SELECT * FROM TestTable

Vidite da smo nakon naziva tablice naveli nazive stupaca u koje ćemo dodati podatke, odvojene zarezima, zatim smo naveli ključna riječ VRIJEDNOSTI a u zagradi smo također, istim redoslijedom, odvojene zarezima, upisali vrijednosti koje želimo umetnuti.

Nakon naredbe INSERT, napisao sam naredbu SELECT i odvojio ih naredbom GO.

Sada zamislimo da trebamo dodati nekoliko redaka. Za to ćemo napisati sljedeći zahtjev.

INSERT INTO TestTable(ProductName, Price) VALUES ("Računalo", 100), ("Keyboard", 20), ("Monitor", 50) GO SELECT * FROM TestTable


Primjer 2 - Dodavanje novih redaka u tablicu pomoću SELECT upita

Vrlo često postoji potreba za dodavanjem puno podataka u tablicu, na primjer, na temelju upita za odabir, tj. ODABERI. Da bismo to učinili, umjesto VALUES, samo trebamo navesti zahtjev.

INSERT INTO TestTable(ProductName, Price) SELECT ProductName, Price FROM TestTable WHERE Id >


U ovom smo primjeru napisali SELECT upit koji vraća podatke iz tablice TestTable, ali ne sve, već samo one s ID-om većim od 2. I rezultat je umetnut u istu tablicu TestTable.

Kao primjer kako možete dodati zapise u tablicu bez navođenja popisa stupaca, napišimo još jedan upit za umetanje podataka koji će učiniti potpuno istu stvar kao i gornji upit, samo što neće navesti stupce za umetanje.

INSERT INTO TestTable SELECT ProductName, Price FROM TestTable WHERE Id > 2 GO SELECT * FROM TestTable


U ovom slučaju, sigurni smo da je u tablici TestTable prvi stupac ProductName, a drugi Price, pa si možemo priuštiti da to napišemo na taj način. No, opet, u praksi je bolje navesti popis stupaca.

Ako ste primijetili, u svim primjerima nisam naveo stupac Id, ali ga imamo, nije se dogodila nikakva greška, budući da ovaj stupac ima svojstvo IDENTITY, automatski generira identifikatore, tako da umetanje podataka u takav stupac jednostavno nije moguće.

Primjer 3 - Dodavanje novih zapisa u tablicu pomoću pohranjene procedure

Sada u tablicu ubacimo podatke koje će nam pohranjena procedura vratiti. Ovdje je značenje isto, umjesto VRIJEDNOSTI i umjesto zahtjeva označavamo poziv procedure. Ali kao što razumijete, redoslijed i broj stupaca koje vraća procedura mora strogo odgovarati popisu stupaca koji se umeću ( čak i ako popis stupaca nije naveden).

INSERT INTO TestTable(ProductName, Price) EXEC TestProcedure GO SELECT * FROM TestTable


Nadam se da vam je ovaj materijal pomogao razumjeti upute. UMETNI U, i to je sve što imam za sada!

U prethodnim smo odjeljcima pogledali posao dohvaćanja podataka iz unaprijed stvorenih tablica. Sada je vrijeme da shvatimo kako možemo stvarati/brisati tablice, dodavati nove zapise i brisati stare. Za ove namjene u SQL Postoje operateri kao što su: STVORITI- kreira tablicu, PROMIJENI- mijenja strukturu tablice, PAD- briše tablicu ili polje, UMETNUTI- dodaje podatke u tablicu. Počnimo se upoznavati s ovom skupinom operatera od operatera UMETNUTI.

1. Dodavanje cijelih linija

Kao što ime govori, operater UMETNUTI koristi se za umetanje (dodavanje) redaka u tablicu baze podataka. Dodavanje se može izvršiti na nekoliko načina:

  • - dodaj jedan puna linija
  • - dodati dio linije
  • - dodajte rezultate upita.

Dakle, da bismo dodali novi red u tablicu, moramo navesti naziv tablice, navesti nazive stupaca i navesti vrijednost za svaki stupac pomoću konstrukcije UMETNI U naziv_tablice (polje1, polje2 ...) VRIJEDNOSTI (vrijednost1, vrijednost2...). Pogledajmo primjer.

UMETNI U VRIJEDNOSTI prodavatelja (ID, adresa, grad, ime_prodavatelja, država).("6", "1st Street", "Los Angeles", "Harry Monroe", "SAD")

Također možete promijeniti redoslijed naziva stupaca, ali u isto vrijeme morate promijeniti redoslijed vrijednosti u parametru VRIJEDNOSTI.

2. Dodavanje dijela linija

U prethodnom primjeru, kada se koristi operator UMETNUTI eksplicitno smo označili nazive stupaca tablice. Koristeći ovu sintaksu, možemo preskočiti neke stupce. To znači da unosite vrijednosti za neke stupce, ali ih ne dajete za druge. Na primjer:

UMETNI U VRIJEDNOSTI prodavatelja (ID, grad, ime prodavatelja).("6", "Los Angeles", "Harry Monroe")

U ovom primjeru nismo naveli vrijednost za dva stupca Adresa I Zemlja. Neke stupce možete isključiti iz izjave UMETNI U, ako to dopušta definiciju tablice. U tom slučaju mora biti ispunjen jedan od uvjeta: ovaj stupac je definiran kao valjan NULL(odsutnost bilo koje vrijednosti) ili navedene zadane vrijednosti u definiciji tablice. To znači da će se koristiti zadana vrijednost ako nije navedena vrijednost. Ako vam nedostaje stupac iz tablice koja ne dopušta pojavljivanje vrijednosti u svojim recima NULL i nema definiranu zadanu vrijednost, DBMS će generirati poruku o pogrešci i red neće biti dodan.

3. Dodavanje odabranih podataka

U prethodnim smo primjerima unosili podatke u tablice, unoseći ih ručno u upit. Međutim, operater UMETNI U omogućuje automatizaciju ovog procesa ako želimo umetnuti podatke iz druge tablice. U tu svrhu u SQL-u postoji takva konstrukcija kao INSERT INTO ... SELECT .... Ovaj dizajn vam omogućuje da istovremeno odaberete podatke iz jedne tablice i umetnete ih u drugu. Pretpostavimo da imamo drugu tablicu Prodavači_EU s popisom prodavača naše robe u Europi i trebamo ih dodati u opću tablicu Prodavači. Struktura ovih tablica je ista (isti broj stupaca i ista imena), ali su podaci različiti. Da bismo to učinili, možemo napisati sljedeći upit:

INSERT INTO Prodavatelji (ID, adresa, grad, ime prodavatelja, država) SELECTID, adresa, grad, ime prodavatelja, država FROM Sellers_EU

Morate obratiti pozornost da se vrijednosti internih ključeva ne ponavljaju (polje ID), inače će doći do pogreške. Operater ODABERI može uključivati ​​i prijedloge GDJE za filtriranje podataka. Također treba napomenuti da DBMS ne obraća pažnju na nazive stupaca sadržanih u iskazu ODABERI, samo joj je bitan redoslijed kojim su poredani. Stoga, podaci u prvom navedenom stupcu koji je odabran zbog ODABERI, u svakom slučaju će se popuniti prvi stupac tablice Prodavači, navedeno nakon operatora UMETNI U, bez obzira na naziv polja.

4. Kopiranje podataka iz jedne tablice u drugu

Često pri radu s bazama podataka postoji potreba za stvaranjem kopija bilo koje tablice u svrhu sigurnosne kopije ili izmjene. Za izradu pune kopije tablice, SQL daje zasebnu izjavu ODABERI U. Na primjer, moramo stvoriti kopiju tablice Prodavači, morat ćete napisati zahtjev na sljedeći način:

SELECT * INTO Sellers_new FROM Sellers

Za razliku od prethodnog dizajna INSERT INTO ... SELECT ... Kada se podaci dodaju u postojeću tablicu, dizajn kopira podatke u novu tablicu. Također možete reći da prva konstrukcija uvozi podatke, a druga izvozi. Prilikom korištenja dizajna ODABIR ... U ... IZ ... Treba uzeti u obzir sljedeće:

  • - možete koristiti bilo koje rečenice u operatoru ODABERI, kao što je GRUPIRAJ PO I IMAJUĆI
  • - možete koristiti spajanje za dodavanje podataka iz više tablica
  • - podaci se mogu dodavati samo u jednu tablicu, bez obzira iz koliko tablica su preuzeti.

Što je INSERT INTO?

Glavni cilj sustava baza podataka je pohranjivanje podataka u tablice. Podatke obično dostavljaju aplikacijski programi koji se pokreću povrh baze podataka. U tu svrhu, SQL ima naredbu INSERT koja se koristi za pohranjivanje podataka u tablicu. The Naredba INSERT kreira novi red u tablici za pohranu podataka.

Osnovna sintaksa

Pogledajmo osnovnu sintaksu naredbe SQL INSERT prikazanu u nastavku.

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

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

Prilikom unosa vrijednosti podataka koje treba umetnuti u novu tablicu, treba uzeti u obzir sljedeće pri radu s različitim tipovima podataka.

  • String tipovi podataka- sve vrijednosti stringa trebaju biti u jednostrukim navodnicima.
  • Numerički tipovi podataka- sve numeričke vrijednosti treba dostaviti izravno bez zatvaranja u jednostruke ili dvostruke navodnike.
  • Datumski tipovi podataka- datumske vrijednosti staviti 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 spol Fizička adresa Poštanska adresa Kontakt broj E-mail 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 South Park P.O. Kutija 4563 0987786553

Lets" INSERT podatke jedan po jedan. Počet ćemo s Leonardom Hofstadterom. Broj kontakta tretirat ćemo kao numeričku vrstu podataka i nećemo ga staviti u jednostruke navodnike.

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ("Leonard Hofstadter","Male","Woodcrest",0845738767);

Izvršavanje gornje skripte ispušta 0 iz Leonardovog kontakt broja. To je zato što će se vrijednost tretirati kao numerička vrijednost, a nula (0) na početku se ispušta jer nije značajna.

Kako bi se izbjegli takvi problemi, vrijednost se mora staviti u jednostruke navodnike kao što je prikazano u nastavku -

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ("Sheldon Cooper","Muškarac","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.

Upit prikazan u nastavku pokazuje gornju točku.

INSERT INTO `members` (`contact_number`,`gender`,`full_names`,`physical_address`)VALUES ("0938867763","Muškarac","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 INSERT upitu.

Ubacimo sada zapis za Leslie koji ima datum rođenja. Vrijednost datuma treba biti u jednostrukim navodnicima u formatu "GGGG-MM-DD".

INSERT INTO `members` (`full_names`,`date_of_birth`,`gender`,`physical_address`,`contact_number`) VRIJEDNOSTI ("Leslie Winkle","1984-02-14","Muškarac","Woodcrest"," 0987636553");

Svi gornji upiti specificirali su stupce i preslikali ih na vrijednosti u izjavi za umetanje. Ako dostavljamo vrijednosti za SVE stupce u tablici, tada možemo izostaviti stupce iz upita za umetanje.

INSERT INTO `members` VALUES (9,"Howard Wolowitz","Male","1981-08-24","SouthPark","P.O. Box 4563", "0987786553", "lwolowitzemail.me");

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

članski_brojpuna_imenaspoldatum_rođenjafizička_adresapoštanska_adresakontakt_brojelektronička pošta
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 SouthParkP.O. Kutija 4563987786553 Ova e-mail adresa je zaštićena od spambota. Morate omogućiti JavaScript da biste ga vidjeli.

Primijetite da je broj za kontakt Leonarda Hofstadtera izbacio nulu (0) iz broja za kontakt. 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 prikazana u nastavku.

INSERT INTO table_1 SELECT * FROM table_2;

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

STVARAJ TABLICU `arhiva_kategorija` (`id_kategorije` int(11) AUTO_INKREMENT, `naziv_kategorije` varchar(150) ZADANO NULL, `napomene` varchar(500) ZADANO NULL, PRIMARNI KLJUČ (`id_kategorije`))

Izvršite gornju skriptu za izradu tablice.

Umetnimo sada sve retke iz tablice kategorija u tablicu arhive kategorija. Skripta prikazana u nastavku pomaže nam da to postignemo.

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

Izvršavanje 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 radila. Robusnija skripta je ona koja preslikava nazive stupaca u tablici za umetanje u one u tablici koja sadrži podatke.

Upit prikazan u nastavku pokazuje njegovu upotrebu.

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

Izvršavanje SELECT upita

ODABERITE * IZ `arhive_kategorija`

daje sljedeće rezultate prikazane u nastavku.

kategorija_idnaziv_kategorijeprimjedbe
1 KomedijaFilmovi s humorom
2 romantičnoLjubavne priče
3 EpPriča drevnih filmova
4 UžasNULL
5 Znanstvena fantastikaNULL
6 TrilerNULL
7 AkcijskiNULL
8 Romantična komedijaNULL
9 Crtani filmoviNULL
10 Crtani filmoviNULL

Sažetak

  • Naredba INSERT koristi se za dodavanje novih podataka u tablicu
  • Datum i vrijednosti niza trebaju biti u jednostrukim navodnicima.
  • Numeričke vrijednosti ne moraju biti u navodnicima.
  • Naredba INSERT također se može koristiti za umetanje podataka iz jedne tablice u drugu.