Unos podataka u SQL-u (INSERT)
Osnovna operacija u radu sa bazom podataka, svakako mora biti unos podataka u tabelu. Upoznaćemo se najpre sa osnovnim oblikom upita koji služi za unos podataka, i to kad kažemo podatak, mislimo na ceo red tabele. Za ovo koristimo iskaz INSERT. Ovaj iskaz se u svom osnovnom obliku koristi na sledeći način:
INSERT INTO [tabela] ([lista polja]) VALUES ([lista vrednosti])
Redosled polja ne mora da se poklopi sa redosledom kako je kreirana tabela, s tim što redosled koji zadamo u zagradi, moramo da ispratimo sa odgovarajućim vrednostima.
Inače, čak ni ne moraju da se navedu sva polja iz tabele. Ona polja koja "trpe" vrednost null i ona koja automatski dobijaju vrednost (npr. polja koja se sama uvećavaju) ne moraju da se navedu.
Postoji i skraćeni oblik, kada se ne navodi lista polja, već samo lista vrednosti, s tim što onda moramo navesti vrednosti obavezno za sva polja i to u pravilnom redosledu (onako kako je navedeno kada je tabela kreirana). Pri tom, za polja koja se automatski uvećavaju i koja ne bi trebala da se unose na ovaj način navodimo vrednost null.
INSERT INTO [tabela] VALUES ([lista vrednosti])
Naša preporuka je da koristite prvi način. Možda ima malo više da se piše, ali mnogo će vam značiti da izbegnete ili ispravite greške.
Različiti tipovi podataka imaju različite načine kako se navode. Brojeve navodimo kako smo navikli, sa vodećim minusom ili bez, s tim što se za decimale obavezno koristi tačka, a ne zarez. Separator za "hiljade" se ne navodi. Tekstualni podaci se navode pod apostrofima, s tim što ako se unutar teksta takođe nalazi apostrof, potrebno je ispred njega navesti obrnutu kosu crtu (backslash). Datumi se takođe navode pod apostrofima, s tim što moraju biti u formatu GGGG-MM-DD (četiri cifre za godinu, crtica, dve cifre za mesec, crtica, dve cifre za dan). Evo nekoliko primera:
'Jovan Petrović' | običan tekst |
'Chief O\'Brien' | apostrof unutar teksta |
'2015-08-16' | 16. avgust 2015. godine |
-567 | broj |
61991.34 | broj sa decimalama |
Vrednosti ne moraju da budu strogo konstante, to mogu biti i izrazi, kao i vrednost funkcije.
Primer
Hajde da vidimo kako bismo uneli neke podatke u tabelu knjige.
INSERT INTO knjige(sifra, naslov, stranice, zanr, pisac)
VALUES ('0001', 'Isijavanje', 390, 'HOR', 'P02')
Kao što vidimo, broj stranica knjige je numerički podatak i kao takav jedini nije pod apostrofima (ostali podaci su tekstualni). Takođe, primećujete da smo redosled polja koja smo naveli u zagradi (sifra, naslov, stranice...) morali da ispratimo i kad smo naveli vrednosti.
Inače, mogli smo da navedemo i polja drugačijim redosledom, samo ako ćemo da ga ispoštujemo sa redosledom vrednosti:
INSERT INTO knjige(naslov, zanr, sifra, stranice, pisac)
VALUES ('Boja magije', 'FAN', '0002', 270, 'P09')
Isto tako, mogli smo i da izbegnemo neka polja (ovo ne važi za primarni ključ, tj. šifru knjige).
INSERT INTO knjige(sifra, naslov, zanr)
VALUES ('0007', 'Veštice na putu', 'FAN')