Stavek INSERT uporabljamo za dodajanje novih zapisov v tabelo. Z njim lahko vstavimo eno vrstico, več vrstic hkrati ali pa podatke prenesemo iz druge tabele.
Pri vstavljanju podatkov moramo paziti, da se vrednosti ujemajo s stolpci v tabeli. To pomeni, da mora biti število vrednosti pravilno, podatkovni tipi pa morajo ustrezati podatkom, ki jih želimo shraniti.
Pomni: Stavek INSERT doda nov zapis v tabelo. Obstoječih zapisov ne spreminja, ampak v tabelo vstavi novo vrstico.
Pri stavku INSERT je priporočljivo izrecno navesti stolpce, v katere vstavljamo podatke. Tako je ukaz preglednejši in manj odvisen od vrstnega reda stolpcev v tabeli.
Vsebina strani
Osnovna pravila
Stavek INSERT je namenjen dodajanju novih vrstic. Pri tem moramo vedeti, v katero tabelo vstavljamo podatke in katere vrednosti želimo zapisati.
INSERT INTOdoloča tabelo, v katero vstavljamo podatke.VALUESdoloča vrednosti, ki jih želimo vstaviti.- Besedilne vrednosti zapišemo med enojne narekovaje, na primer
'Slovenija'. - Številske vrednosti običajno zapišemo brez narekovajev.
- Če navedemo seznam stolpcev, morajo biti vrednosti zapisane v istem vrstnem redu.
- Če stolpec uporablja
AUTO_INCREMENT, njegove vrednosti običajno ne vnašamo ročno.
Pozor: Pri stavku INSERT se mora število navedenih stolpcev ujemati s številom navedenih vrednosti. Vrednosti morajo biti zapisane v enakem vrstnem redu kot stolpci.
Osnovna sintaksa stavka INSERT
Najpreprostejša oblika stavka INSERT je:
INSERT INTO ime_tabele
VALUES (vrednost_1, vrednost_2, ..., vrednost_n);
Pri tej obliki moramo vnesti vrednosti za vse stolpce tabele in to v pravilnem vrstnem redu. Tak zapis je lahko manj pregleden, ker ni takoj razvidno, katera vrednost pripada kateremu stolpcu.
Primer:
INSERT INTO drzave
VALUES (207, 'Slovenija', 'SLO', 100, 700, 0);
Beseda INTO pri stavku INSERT ni vedno nujna, vendar jo običajno pišemo, ker je ukaz tako bolj pregleden in lažje berljiv.
Vnos samo izbranih stolpcev
Pogosto ne želimo vstaviti vrednosti za vse stolpce. Takrat je bolje, da seznam stolpcev napišemo izrecno:
INSERT INTO ime_tabele (stolpec_1, stolpec_2, ..., stolpec_n)
VALUES (vrednost_1, vrednost_2, ..., vrednost_n);
Primer:
INSERT INTO drzave (st, drzava)
VALUES (208, 'Hrvaška');
Preostali stolpci morajo v takem primeru dovoljevati vrednost NULL ali pa imeti določeno privzeto vrednost.
Pomni: Izrecno navajanje stolpcev je priporočljivo, ker je ukaz bolj razumljiv. Poleg tega se poizvedba ne pokvari tako hitro, če se pozneje spremeni vrstni red stolpcev v tabeli.
Vnos več vrstic hkrati
Z ukazom INSERT lahko vnesemo tudi več vrstic naenkrat. To je uporabno, kadar želimo dodati več sorodnih zapisov.
INSERT INTO ime_tabele (stolpec_1, stolpec_2, ..., stolpec_n)
VALUES (vrednost_1A, vrednost_2A, ..., vrednost_nA),
(vrednost_1B, vrednost_2B, ..., vrednost_nB),
...,
(vrednost_1M, vrednost_2M, ..., vrednost_nM);
Primer:
INSERT INTO drzave (st, drzava)
VALUES (209, 'Avstrija'),
(210, 'Italija');
Tak način je običajno preglednejši in učinkovitejši kot več zaporednih ločenih ukazov INSERT, kadar vstavljamo več zapisov z enako zgradbo.
Privzete vrednosti
Če ima tabela za nekatere stolpce določene privzete vrednosti, lahko za te stolpce vrednosti izpustimo. Podatkovna baza nato uporabi privzete vrednosti ali vrednost NULL, če je ta dovoljena.
V nekaterih primerih lahko uporabimo tudi prazno obliko:
INSERT INTO ime_tabele ()
VALUES ();
Primer:
INSERT INTO drzave ()
VALUES ();
Tak ukaz vstavi vrstico s privzetimi vrednostmi oziroma z vrednostmi NULL, kjer je to dovoljeno. Če obvezni stolpci nimajo privzetih vrednosti, se ukaz ne more pravilno izvesti.
Pozor: Prazna oblika stavka INSERT je smiselna samo, če tabela omogoča privzete vrednosti za vse potrebne stolpce. Pri obveznih stolpcih brez privzete vrednosti bo prišlo do napake.
Povezava stavkov INSERT in SELECT
Zelo uporabna je tudi povezava med stavkoma INSERT in SELECT. Tako lahko podatke iz ene tabele prenesemo v drugo.
INSERT INTO ime_tabele
SELECT ...;
ali
INSERT INTO ime_tabele (stolpec_1, stolpec_2, ..., stolpec_n)
SELECT ...;
Prvo obliko uporabimo, kadar vstavljamo vse stolpce. Drugo obliko uporabimo, kadar želimo vstaviti samo določene stolpce ali kadar želimo imeti poizvedbo bolj pregledno.
Primer:
INSERT INTO arhiv_drzav (st, drzava)
SELECT st, drzava
FROM drzave;
V tem primeru se iz tabele drzave preberejo stolpci st in drzava, nato pa se podatki vstavijo v tabelo arhiv_drzav.
Primerjava oblik stavka INSERT
Stavek INSERT lahko zapišemo na več načinov. Izbira oblike je odvisna od tega, ali vstavljamo vse stolpce, samo izbrane stolpce, več vrstic ali podatke iz druge tabele.
| Oblika | Namen | Primer |
|---|---|---|
INSERT INTO ... VALUES |
Vstavljanje ene vrstice z vrednostmi za vse stolpce. | INSERT INTO drzave VALUES (...); |
INSERT INTO ... (stolpci) VALUES |
Vstavljanje vrednosti samo v izbrane stolpce. | INSERT INTO drzave (st, drzava) VALUES (...); |
več vrednosti v VALUES |
Vstavljanje več vrstic z enim ukazom. | VALUES (...), (...); |
INSERT INTO ... SELECT |
Prenos podatkov iz ene tabele v drugo. | INSERT INTO arhiv_drzav SELECT ...; |
Priporočila
- Pri vstavljanju podatkov praviloma navedi seznam stolpcev.
- Besedilne vrednosti zapisuj med enojne narekovaje.
- Pri stolpcu z
AUTO_INCREMENTvrednosti običajno ne vnašaj ročno. - Pred vstavljanjem preveri, kateri stolpci so označeni z
NOT NULL. - Za več sorodnih zapisov uporabi en ukaz
INSERTz več vrsticami vrednosti. - Za prenos podatkov med tabelami uporabi povezavo
INSERT INTO ... SELECT. - Pri pomembnih podatkih pred večjim vnosom preveri zgradbo tabele.
Pogoste napake
- Število vrednosti se ne ujema s številom stolpcev.
- Vrednosti niso zapisane v enakem vrstnem redu kot stolpci.
- Besedilne vrednosti niso zapisane med enojnimi narekovaji.
- V stolpec z obvezno vrednostjo se ne vstavi nobena vrednost.
- Vrednost ne ustreza podatkovnemu tipu stolpca.
- Ročno vnašanje vrednosti v stolpec, ki uporablja
AUTO_INCREMENT. - Pri prenosu podatkov z
INSERT INTO ... SELECTse stolpci obeh delov ne ujemajo.
Pri stavku INSERT moramo paziti, da se število stolpcev ujema s številom podanih vrednosti. Prav tako morajo biti vrednosti zapisane v pravilnem vrstnem redu ali pa moramo jasno navesti seznam stolpcev.