Transact-SQL - umetanje podataka. SQL upit INSERT INTO - popunjavanje baze podataka informacijama Demo verzija baze podataka

Pored naredbe SELECT o kojoj smo ranije govorili, jezik za manipulaciju podacima (DML) sadrži još tri izraza: INSERT, UPDATE i DELETE. Poput naredbe SELECT, ova tri izraza rade na tablicama ili pogledima. Ovaj članak govori o naredbi INSERT, a o druge dvije izjave govori se u sljedećem članku.

INSERT izjava umeće redove (ili delove redova) u tabelu. Postoje dva različita oblika ove instrukcije:

INSERT tab_name [(col_list)] DEFAULT VRIJEDNOSTI | VRIJEDNOSTI (( DEFAULT | NULL | izraz ) [ ,...n]) INSERT INTO ime_kartice | view_name [(col_list)] (select_statement | execute_statement) Sintaksne konvencije

Prvi oblik instrukcije omogućava vam da ubacite jedan red (ili njegov dio) u tabelu. A drugi oblik INSERT naredbe omogućava vam da u tabelu umetnete skup rezultata SELECT izraza ili pohranjene procedure koju izvršava naredba EXECUTE. Pohranjena procedura mora vratiti podatke koji će biti umetnuti u tablicu. Kada se koristi s naredbom INSERT, naredba SELECT može odabrati vrijednosti iz različite ili iste tablice u koju se podaci ubacuju, sve dok su tipovi podataka odgovarajućih stupaca kompatibilni.

Za oba oblika, tip podataka svake umetnute vrijednosti mora biti kompatibilan s tipom podataka odgovarajuće kolone tablice. Svi nizovi i privremeni podaci moraju biti stavljeni u navodnike; Numeričke vrijednosti ne moraju biti stavljene u navodnike.

Umetanje jednog reda

Za oba oblika INSERT izraza, eksplicitno navođenje liste stupaca nije obavezno. Ne navođenje kolona je isto kao i navođenje svih stupaca u tabeli.

DEFAULT VALUES parametar umeće podrazumevane vrednosti za sve kolone. Kolone sa tipom podataka TIMESTAMP ili svojstvom IDENTITY se podrazumevano ubacuju sa vrednostima koje sistem automatski generiše. Za stupce drugih tipova podataka, odgovarajuća zadana vrijednost koja nije nula je umetnuta ako je dostupna, ili NULL u suprotnom. Ako kolona ne dozvoljava null vrijednosti i nema definiranu zadanu vrijednost, INSERT izraz ne uspijeva i prikazuje se poruka.

Primjer ispod umeće redove u tablicu Employee u bazi podataka SampleDb, demonstrirajući upotrebu INSERT izraza za umetanje male količine podataka u bazu podataka:

USE SampleDb; UMETNI U VRIJEDNOSTI Zaposlenih (34990, "Andrej", "Batonov", "d1"); UMETNI U VRIJEDNOSTI Zaposlenih (38640, "Aleksej", "Vasin", "d3");

Postoje dva različita načina za umetanje vrijednosti u novi red. Naredba INSERT u primjeru ispod eksplicitno koristi ključnu riječ NULL i umeće vrijednost NULL u odgovarajući stupac:

USE SampleDb; UMETNI U VRIJEDNOSTI zaposlenih (34991, "Andrey", "Batonov", NULL);

Da biste umetnuli vrijednosti u neke (ali ne sve) kolone tabele, obično morate eksplicitno navesti te kolone. Neodređene kolone moraju ili dozvoliti NULL vrijednosti ili imati definiranu zadanu vrijednost.

USE SampleDb; INSERT INTO Employee(Id, FirstName, LastName) VALUES (34992, "Andrey", "Batonov");

Prethodna dva primjera su ekvivalentna. U tabeli Employee, jedina kolona koja dozvoljava NULL vrijednosti je kolona DepartmentNumber, a sve ostale kolone su onemogućene klauzulom NOT NULL u naredbi CREATE TABLE.

Redoslijed vrijednosti u VALUES ponuda INSERT izrazi se mogu razlikovati od redoslijeda navedenog u izrazu CREATE TABLE. U ovom slučaju, njihov redoslijed mora odgovarati redoslijedu kojim su odgovarajuće kolone navedene u listi kolona. Ispod je primjer umetanja podataka drugačijim redoslijedom od originala:

USE SampleDb; INSERT INTO Employee(Broj odjeljenja, Prezime, Id, Ime) VRIJEDNOSTI ("d1", "Batonov", 34993, "Andrej");

Umetanje više redova

Drugi oblik INSERT izraza umeće jedan ili više redova odabranih podupitom u tabelu. Primjer ispod pokazuje kako umetnuti redove u tablicu koristeći drugi oblik INSERT izraza. U ovom slučaju, izvršava se upit za odabir brojeva i imena odjela koji se nalaze u Moskvi, a rezultirajući skup rezultata se učitava u novu tablicu kreiranu ranije.

Nova tabela MoscowDepartment kreirana u gornjem primjeru ima iste kolone kao i postojeća tabela odjela, osim kolone Lokacija koja nedostaje. Potupit u INSERT izrazu odabire sve redove u tablici odjela za koje je vrijednost stupca Lokacija "Moskva", koji se zatim ubacuju u novu tablicu kreiranu na početku upita.

Primjer ispod pokazuje drugi način umetanja redova u tablicu koristeći drugi oblik INSERT izraza. U ovom slučaju, izvršava se upit za odabir kadrovskih brojeva, brojeva projekata i datuma početka projekta za sve zaposlenike na poziciji „Menadžer“ koji rade na projektu p2, a zatim se rezultujući skup rezultata učitava u novu tabelu kreiranu na početku upit:

USE SampleDb; CREATE TABLE ManagerTeam(EmpId INT NOT NULL, ProjectNumber CHAR (4) NOT NULL, EnterDate DATE); INSERT INTO ManagerTeam (EmpId, ProjectNumber, EnterDate) SELECT EmpId, ProjectNumber, EnterDate FROM Works_on WHERE Posao = "Menadžer";

Prije umetanja redova pomoću INSERT naredbe, tabele MoscowDepartment i ManagerTeam (u primjerima iznad) bile su prazne. Ako je tablica već postojala i sadržavala je redove s podacima, tada bi joj se dodavali novi redovi.

Šta je INSERT INTO?

Glavni cilj sistema baza podataka je pohranjivanje podataka u tabele. Podatke obično dostavljaju aplikativni programi koji se pokreću na vrhu baze podataka. U tom cilju, SQL ima naredbu INSERT koja se koristi za pohranjivanje podataka u tablicu. The Naredba INSERT kreira novi red u tabeli za pohranjivanje podataka.

Osnovna sintaksa

Pogledajmo osnovnu sintaksu naredbe SQL INSERT prikazanu ispod.

INSERT INTO `table_name`(kolona_1,kolona_2,...) VRIJEDNOSTI (vrijednost_1,vrijednost_2,...);

  • INSERT INTO `table_name` je naredba koja govori MySQL serveru da doda novi red u tablicu pod nazivom `table_name`.
  • (kolona_1,kolona_2,...) specificira kolone koje treba ažurirati u novom redu
  • VRIJEDNOSTI (vrijednost_1,vrijednost_2,...) specificira vrijednosti koje treba dodati u novi red

Prilikom dostavljanja vrijednosti podataka koje treba umetnuti u novu tablicu, treba uzeti u obzir sljedeće dok se bavite različitim tipovima podataka.

  • String tipovi podataka- sve vrijednosti niza treba staviti u jednostruke navodnike.
  • Numerički tipovi podataka- sve numeričke vrijednosti treba dostaviti direktno 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ću listu novih članova biblioteke koje treba dodati u bazu podataka.

Puna imena Datum rođenja spol Fizička adresa poštanska adresa Kontakt broj E-mail adresa
Leonard Hofstadter Muško Woodcrest 0845738767
Sheldon Cooper Muško Woodcrest 0976736763
Rajesh Koothrappali Muško Fairview 0938867763
Leslie Winkle 14/02/1984 Muško 0987636553
Howard Wolowitz 24/08/1981 Muško južni park P.O. Kutija 4563 0987786553

Dozvolite" INSERT podatke jedan po jedan. Počećemo sa Leonardom Hofstadterom. Broj kontakta ćemo tretirati kao numerički tip podataka i nećemo ga stavljati u jednostruke navodnike.

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

Izvođenje gornje skripte ispušta 0 sa 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 mora biti zatvorena u jednostrukim navodnicima kao što je prikazano ispod -

UMETNI U `članove` (`puna_imena`,`pol`,`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 kolona nema efekta na INSERT upit sve dok su ispravne vrijednosti mapirane u ispravne kolone.

Upit prikazan ispod pokazuje gornju tačku.

INSERT INTO `members` (`contact_number`,`gender`,`full_name`,`physical_address`)VRIJEDNOSTI ("0938867763","Muški","Rajesh Koothrappali","Woodcrest");

Gornji upiti su preskočili kolonu datuma rođenja, po defaultu će MySQL umetnuti NULL vrijednosti u stupce koji su preskočeni u INSERT upitu.

Hajde sada da ubacimo zapis za Leslie koji ima naveden datum rođenja. Vrijednost datuma treba staviti u jednostruke navodnike koristeći format "GGGG-MM-DD".

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

Svi gornji upiti specificiraju stupce i mapiraju ih na vrijednosti u naredbi insert. Ako dajemo vrijednosti za SVE kolone u tabeli, onda možemo izostaviti kolone 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 redova u tabeli članova. SELECT * FROM `članovi`;

membership_numberpuna_imenaspoldatum rođenjafizička adresapoštanska adresakontakt_brojemail
1 Janet JonesŽensko21-07-1980 Prva ulica parcela br. 4Privatna torba0759 253 542 Ova adresa el. pošte je zaštićena od spambotova. Trebate omogućiti JavaScript da biste ga vidjeli.
2 Janet Smith JonesŽensko23-06-1980 Melrose 123NULLNULLOva adresa el. pošte je zaštićena od spambotova. Trebate omogućiti JavaScript da biste ga vidjeli.
3 Robert PhilMuško12-07-1989 3. ulica 34NULL12345 Ova adresa el. pošte je zaštićena od spambotova. Trebate omogućiti JavaScript da biste ga vidjeli.
4 Gloria WilliamsŽensko14-02-1984 2. ulica 23NULLNULLNULL
5 Leonard HofstadterMuškoNULLWoodcrestNULL845738767 NULL
6 Sheldon CooperMuškoNULLWoodcrestNULL976736763 NULL
7 Rajesh KoothrappaliMuškoNULLWoodcrestNULL938867763 NULL
8 Leslie WinkleMuško14-02-1984 WoodcrestNULL987636553 NULL
9 Howard WolowitzMuško24-08-1981 Južni parkP.O. Kutija 4563987786553 Ova adresa el. pošte je zaštićena od spambotova. Trebate omogućiti JavaScript da biste ga vidjeli.

Obratite pažnju da je kontakt broj Leonarda Hofstadtera izbacio nulu (0) iz kontakt broja. Ostali kontakt brojevi nisu ispustili nulu (0) na početku.

Umetanje u tabelu iz druge tabele

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

INSERT INTO table_1 SELECT * FROM table_2;

Pogledajmo sada praktičan primjer, napravit ćemo lažnu tabelu za filmske kategorije u svrhu demonstracije. Novu tablicu kategorija nazvat ćemo category_archive. Skripta prikazana ispod kreira tabelu.

CREATE TABLE `categories_archive` (`category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `napomene` varchar(500) DEFAULT NULL, PRIMARNI KLJUČ (`category_id`)

Izvršite gornju skriptu da kreirate tabelu.

Hajde da sada ubacimo sve redove iz tabele kategorija u tabelu arhive kategorija. Skripta prikazana ispod nam pomaže da to postignemo.

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

Izvođenje gornje skripte umeće sve redove iz tabele kategorija u tabelu arhive kategorija. Imajte na umu da strukture tablice moraju 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.

Upit prikazan ispod pokazuje njegovu upotrebu.

INSERT INTO `categories_archive`(category_id,category_name,napomene) SELECT category_id,category_name,napomene IZ `categories`;

Izvršavanje SELECT upita

SELECT * FROM `categories_archive`

daje sljedeće rezultate prikazane u nastavku.

kategorija_idnaziv_kategorijeprimjedbe
1 KomedijaFilmovi sa humorom
2 RomantičnoLjubavne priče
3 EpskiPriča drevnih filmova
4 UžasNULL
5 Naučna fantastikaNULL
6 TrilerNULL
7 AkcijaNULL
8 Romantična komedijaNULL
9 Crtani filmoviNULL
10 Crtani filmoviNULL

Sažetak

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

Naredba INSERT umeće nove zapise u tabelu. U ovom slučaju, vrijednosti stupca mogu biti literalne konstante ili biti rezultat izvršavanja potupita. U prvom slučaju, poseban INSERT izraz se koristi za umetanje svakog reda; u drugom slučaju, onoliko redova će biti umetnuto koliko ih vrati podupit.

Sintaksa operatora je sljedeća:

    UMETNI U [ (,...) ]

    (VRIJEDNOSTI(,…))

  1. | (ZADANE VRIJEDNOSTI)

Kao što možete vidjeti iz predstavljene sintakse, lista kolona je opciona (uglaste zagrade u opisu sintakse to ukazuju). Ako nedostaje, lista umetnutih vrijednosti mora biti potpuna, odnosno navesti vrijednosti za sve stupce tabele. U ovom slučaju, redoslijed vrijednosti mora odgovarati redoslijedu navedenom u naredbi CREATE TABLE za tablicu u koju su umetnuti redovi. Osim toga, ove vrijednosti moraju biti istog tipa podataka kao i kolone u koje su unesene. Kao primjer, razmislite o umetanju reda u tablicu proizvoda kreiranu sljedećim CREATE TABLE izrazom:

    CREATE TABLE proizvod

    maker char (1) NOT NULL,

    model varchar(4) NOT NULL,

    tip varchar(7) NOT NULL

Pretpostavimo da želite da dodate PC model 1157 proizvođača B u ovu tabelu.

    INSERT INTO Product

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

Ako navedete listu kolona, ​​možete promijeniti njihov „prirodni“ redoslijed:

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

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

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

    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 kolona imaju zadane vrijednosti (prve dvije su NULL, a posljednja kolona je tip - PC). Sada bismo mogli napisati:

    INSERT INTO Product_D (model, proizvođač)

    VRIJEDNOSTI(1157, "B");

U ovom slučaju, vrijednost koja nedostaje prilikom umetanja reda bit će zamijenjena zadanom vrijednošću - PC. Imajte na umu da ako stupcu nije data zadana vrijednost u izrazu CREATE TABLE i ako je ograničenje NOT NULL specificirano da zabrani korištenje NULL u toj koloni tablice, tada se pretpostavlja zadana vrijednost NULL.

Postavlja se pitanje: da li je moguće ne specificirati listu kolona 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 , DEFAULT ) ;

Pošto sve kolone imaju zadane vrijednosti, da biste umetnuli red sa zadanim vrijednostima možete napisati:

    INSERT INTO Product_D

    VRIJEDNOSTI(DEFAULT, DEFAULT, DEFAULT);

Međutim, za ovaj slučaj postoji posebna konstrukcija DEFAULT VALUES (pogledajte sintaksu operatora), pomoću koje se gornji operator može prepisati u obliku

    INSERT INTO Product_D DEFAULT VRIJEDNOSTI ;

Imajte na umu da se prilikom umetanja reda u tabelu provjeravaju sva ograničenja nametnuta ovoj tablici. To mogu biti ograničenja primarnog ključa ili jedinstvenog indeksa, ograničenja CHECK ili ograničenja referentnog integriteta. Ako je bilo koje ograničenje prekršeno, umetanje reda će biti odbijeno. Razmotrimo sada slučaj upotrebe podupita. Pretpostavimo da treba da ubacimo u tabelu Product_D sve redove iz tabele proizvoda koji se odnose na modele personalnih računara (tip = 'PC'). Budući da se vrijednosti koje su nam potrebne već nalaze u nekoj tabeli, ručno generiranje umetnutih redova je, prvo, neučinkovito, a drugo, može dopustiti greške u unosu. Korištenje podupita rješava ove probleme:

Upotreba simbola “*” u potupitu je u ovom slučaju opravdana, jer je redoslijed kolona isti za obje tabele. Da to nije slučaj, lista kolona bi morala biti primijenjena u INSERT izrazu, podupitu ili u oba, što bi odgovaralo redoslijedu kolona:

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

U ovom slučaju, kolona tipa u tablici Product_D će biti zamijenjena zadanom vrijednošću PC za sve umetnute redove.

Imajte na umu da kada koristite potupit koji sadrži predikat, samo oni redovi za koje je vrijednost predikata TRUE (ne UNKNOWN!) će biti umetnuti. Drugim riječima, ako je stupac tipa u tablici Product bio NULLable i ta vrijednost je bila prisutna u više redova, onda ti redovi ne bi bili umetnuti u tablicu Product_D.

Umjetna tehnika korištenja potupita koji formira red s klauzulom UNION ALL omogućava vam da prevaziđete ograničenje umetanja jednog reda u INSERT izraz kada koristite konstruktor reda u klauzuli VALUES. Dakle, ako trebamo umetnuti nekoliko redova koristeći jednu INSERT naredbu, možemo napisati:

    INSERT INTO Product_D

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

    UNION ALL

    ODABERITE "C" , 2190 , "Laptop"

    UNION ALL

    SELECT "D" , 3219 , "Printer" ;

Korištenje UNION ALL je poželjnije od UNION čak i ako je zajamčeno odsustvo duplikata, jer u ovom slučaju neće biti izvršena provjera da bi se eliminirali duplikati.

Treba napomenuti da je umetanje više tuple-ova pomoću konstruktora reda već implementirano Sistem za upravljanje relacionim bazama podataka (DBMS), razvijen od strane Microsoft Corporation.Structured Query Language) je univerzalni kompjuterski jezik koji se koristi za kreiranje, modifikovanje i manipulaciju podacima u relacionim bazama podataka. SQL Server 2008. S obzirom na ovu mogućnost, posljednji upit se može prepisati kao:

    INSERT INTO Product_D VRIJEDNOSTI

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

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

Tim dodaje redove u tabelu ili prikaz glavne tabele.

Sintaksa naredbe Sql INSERT

Umetni sintaksu komande


Osnovne ključne riječi i parametri naredbe INSERT
  • shema- identifikator dozvole, obično odgovara imenu nekog korisnika
  • pogled na tabelu- naziv tabele u koju treba umetnuti redove; ako je naveden pogled, redovi se ubacuju u glavnu tabelu pogleda
  • podupit_1- potupit koji server obrađuje na isti način kao i pogled
  • kolona- tablicu ili kolonu pogleda u koju se unosi vrijednost iz fraze za svaki umetnuti red VRIJEDNOSTI ili podupit; ako je jedna od kolona tablice izostavljena sa ove liste, vrijednost stupca za umetnuti red je zadana vrijednost kolone definirana kada je tablica kreirana. Ako je lista kolona potpuno izostavljena, klauzula VRIJEDNOSTI ili upit mora odrediti vrijednosti za sve kolone u tabeli
  • VRIJEDNOSTI- definira niz vrijednosti koji će biti umetnuti u tablicu ili prikaz; značenje mora biti definisano u rečenici VRIJEDNOSTI za svaku kolonu na listi kolona
  • podupit_2- potupit koji vraća redove umetnute u tabelu; lista za odabir ovog potupita mora imati isti broj stupaca kao lista stupaca izraza

Izjava sa frazom VRIJEDNOSTI dodaje jedan red u tabelu. Ovaj red sadrži vrijednosti definirane frazom VRIJEDNOSTI.
Izjava sa podupit umjesto fraze VRIJEDNOSTI dodaje sve redove koje je vratio podupit u tabelu. Server obrađuje podupit i umeće svaki vraćeni red u tabelu. Ako potupit ne izabere nijedan red, server ne umeće nijedan red u tabelu.
Potupit može pristupiti bilo kojoj tabeli ili pogledu, uključujući ciljnu tabelu tvrdnji . Server dodeljuje vrednosti poljima u novim redovima na osnovu unutrašnje pozicije kolona u tabeli i redosleda vrednosti fraze VRIJEDNOSTI ili na listi za odabir upita. Ako bilo koja kolona nedostaje na listi kolona, ​​server im dodeljuje podrazumevane vrednosti definisane kada je tabela kreirana. Ako bilo koja od ovih kolona ima ograničenje NOT NULL tada server vraća grešku koja ukazuje da je ograničenje prekršeno i prekida naredbu INSERT.
Kada se izda INSERT izraz, omogućen je svaki INSERT okidač definiran u tablici.

UMETNI U Primjer 1

INSERT INTO dept VRIJEDNOSTI(50, "PROIZVODI", "SAN FRANCISCO");

INSERT INTO Kupci (grad, cname, cnum) VRIJEDNOSTI('London', 'Hoffman', 2001);

UMETNI U Primjer 2
Sljedeća komanda kopira podatke o zaposlenima kompanije čije provizije prelaze 25% prihoda u tabelu bonusa:

INSERT INTO bonus SELECT ename, job, sal, comm FROM emp WHERE comm > 0,25 * sal;

UMETNI U Primjer 3
Ako treba da ubacite NULL-vrijednost, morate je navesti kao normalnu vrijednost na sljedeći način:

INSERT INTO VRIJEDNOSTI prodavača (1001,'Peel',NULL,12);

UMETNI U Primjer 4
Naredba se može koristiti za preuzimanje vrijednosti iz jedne tablice i postavljanje u drugu pomoću upita. Da biste to učinili, dovoljno je zamijeniti rečenicu VRIJEDNOSTI na odgovarajući zahtjev:

INSERT INTO Londonstaff SELECT * FROM Salesspeople WHERE city = 'London';

MySQL INSERT

Da biste umetnuli nove redove u MySQL bazu podataka, koristite INSERT naredba, primjeri naredbi su dati u nastavku:
UMETNI U Primjer 1.
Umetanje novog reda u tablicu table_name.

INSERT INTO

UMETNI U Primjer 2.
Umetanje novog reda u tablicu table_name koji označava umetanje podataka u kolone koje su nam potrebne.

INSERT INTO table_name VALUES('1','165','0','name');

U bazi podataka MySQL Moguće je umetnuti više novih linija pomoću jedne naredbe.
UMETNI U Primjer 3.
Umetanje više redova u tablicu table_name.

INSERT INTO table_name (tbl_id, chislo, chislotwo, ime) VRIJEDNOSTI ('1′,'159′,'34','name1′), ('2′,'14','61','name2′), ('3 ′,'356′,'8′,'name3');

Posljednje ažuriranje: 13.07.2017

Za dodavanje podataka koristite naredbu INSERT, koja ima sljedeću formalnu sintaksu:

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

Prvo dolazi izraz INSERT INTO, zatim u zagradama možete navesti listu kolona odvojenih zarezima u koje treba dodati podatke, a na kraju, nakon riječi VRIJEDNOSTI, vrijednosti koje treba dodati za stupce su navedene u zagrade.

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

CREATE DATABASE productsdb; IDI KORISTI productsdb; CREATE TABLE Proizvodi (Id INT IDENTITET PRIMARY KEY, ProductName NVARCHAR(30) NOT NULL, Proizvođač NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL)

Dodajmo mu jedan red 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(ovi) pogođeni":

Vrijedi uzeti u obzir da se vrijednosti za stupce u zagradama nakon ključne riječi VALUES prosljeđuju redoslijedom kojim su deklarirane. Na primjer, u naredbi CREATE TABLE iznad, možete vidjeti da je prvi stupac Id. Ali pošto je za njega specificiran atribut IDENTITY, vrijednost ove kolone se automatski generira i može se izostaviti. Druga kolona predstavlja Naziv proizvoda, tako da će prva vrijednost, string "iPhone 7", biti proslijeđena toj koloni. Druga vrijednost - string "Apple" će biti proslijeđena trećoj koloni Manufacturer 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 specificirana za samo tri kolone. Štaviše, sada se vrijednosti prenose redoslijedom stupaca:

    Naziv proizvoda: "iPhone 6S"

    Proizvođač: "Apple"

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

Također možemo dodati nekoliko redova odjednom:

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

U ovom slučaju, tri reda će biti dodana u tabelu.

Također, prilikom dodavanja, možemo odrediti da kolona treba imati zadanu vrijednost koristeći DEFAULT ključnu riječ ili NULL vrijednost:

UMETNI U proizvode (Naziv proizvoda, Proizvođač, Broj proizvoda, Cijena) VRIJEDNOSTI ("Mi6", "Xiaomi", ZADANO, 28000)

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

Ako svi stupci imaju DEFAULT atribut koji specificira zadanu vrijednost ili su nullable, možete umetnuti zadane vrijednosti za sve stupce:

INSERT INTO Products ZADANE VRIJEDNOSTI

Ali ako uzmemo tablicu Products, onda takva komanda neće uspjeti s greškom, jer nekoliko polja nemaju atribut DEFAULT i istovremeno ne dozvoljavaju vrijednost NULL.

Dijeli