SQL naredba INSERT

 

U realnim informacionim sistemima umetanje podataka predstavlja svakodnevnu aktivnost: unos novog učenika, dodavanje nove porudžbine, evidentiranje novog proizvoda i slično.

U SQL-u se za tu svrhu koristi naredba:

INSERT INTO

1. Osnovna sintaksa naredbe INSERT

Postoje dva osnovna oblika umetanja podataka.

Umetanje reda uz navođenje kolona
INSERT INTO NazivTabele (Kolona1, Kolona2, Kolona3)
VALUES (Vrednost1, Vrednost2, Vrednost3);

Ovo je preporučeni način, jer jasno definišemo u koje kolone unosimo podatke.


Umetanje reda bez navođenja kolona
INSERT INTO NazivTabele
VALUES (Vrednost1, Vrednost2, Vrednost3);

Ovaj oblik zahteva da unesemo vrednosti za sve kolone i to po istom redosledu kako su definisane u tabeli.  U praksi se ređe koristi, jer je rizičniji.


Kreiranje tabele Ucenik
CREATE TABLE Ucenik (
    UcenikID INT PRIMARY KEY,
    Ime VARCHAR(50),
    Prezime VARCHAR(50),
    Razred INT
);

Popunjavanje tabele Ucenik
INSERT INTO Ucenik VALUES (1, 'Marko', 'Markovic', 1);
INSERT INTO Ucenik VALUES (2, 'Jelena', 'Jovanovic', 2);
INSERT INTO Ucenik VALUES (3, 'Ana', 'Petrovic', 3);
INSERT INTO Ucenik VALUES (4, 'Nikola', 'Ilic', 4);
INSERT INTO Ucenik VALUES (5, 'Milica', 'Kovacevic', 4);

Kreiranje tabele Maturanti
CREATE TABLE Maturanti (
    UcenikID INT PRIMARY KEY,
    Ime VARCHAR(50),
    Prezime VARCHAR(50)
);

2. Primeri

Pretpostavimo da imamo tabelu: Ucenik u kojoj imamo UcenikID, Ime, Prezime i Razred

Primer 1 – umetanje jednog reda

INSERT INTO Ucenik (UcenikID, Ime, Prezime, Razred)
VALUES (10, 'Marko', 'Markovic', 3);

Nakon izvršavanja, tabela dobija jedan novi red.


Primer 2 – umetanje bez navođenja kolona

INSERT INTO Ucenik
VALUES (20, 'Jelena', 'Jovanovic', 2);

⚠ Ako promenimo redosled kolona u tabeli, ovaj upit može dati pogrešan rezultat.


Primer 3 - Umetanje više redova

U nekim sistemima moguće je umetanje više redova u jednom upitu:

INSERT INTO Ucenik (UcenikID, Ime, Prezime, Razred)
VALUES 
(30, 'Ana', 'Petrovic', 1),
(40, 'Nikola', 'Ilic', 4);

Ako sistem ne podržava ovu sintaksu, koristi se više INSERT naredbi.


3. Umetanje redova iz jedne tabele u drugu

Sintaksa:

INSERT INTO NovaTabela (Kolona1, Kolona2)
SELECT Kolona1, Kolona2
FROM PostojecaTabela
WHERE uslov;

Primer:  Pretpostavimo da postoji tabela:  Maturanti

Želimo da u nju prebacimo sve učenike 4. razreda.

INSERT INTO Maturanti (UcenikID, Ime, Prezime)
SELECT UcenikID, Ime, Prezime
FROM Ucenik
WHERE Razred = 4;

Ovaj upit  prvo pronalazi učenike 4. razreda, a zatim ih ubacuje u novu tabelu.

👉 Ovo je veoma česta praksa kod arhiviranja podataka.


4. Pravila kojih se treba pridržavati:

  1. Tipovi podataka moraju biti kompatibilni.

  2. Tekstualne vrednosti se pišu pod jednostrukim navodnicima.

  3. Numeričke vrednosti se pišu bez navodnika.

  4. Ako kolona ima ograničenje NOT NULL, mora dobiti vrednost.

  5. Ako postoji primarni ključ, vrednost mora biti jedinstvena.


6. Tipične greške

❌ Zaboravljen navodnik
❌ Pogrešan redosled kolona
❌ Unos duplog primarnog ključa
❌ Neusklađen broj kolona i vrednosti


7. Napomene

Prilikom umetanje sadržaja u tabelu treba uzeti u razmatranje i sledeće faktore:

  • Koje kolone treba popunjavati?

  • Da li su tipovi podataka odgovarajući?

  • Da li se unose vrednost za primarni ključ?

  • Da li bi ovaj unos narušio integritet baze?


8. Zadaci za vežbu

Zadatak 1:  U tabelu Ucenik uneti sledeći red:

UcenikID: 51
Ime: Stefan
Prezime: Simic
Razred: 2


Zadatak 2:  U tabelu Ucenik uneti tri nova učenika po sopstvenom izboru.


Zadatak 3:  Ako postoji tabela:  ArhivaUcenika (UcenikID, Ime, Prezime), prebaciti sve učenike 1. razreda iz tabele Ucenik u tabelu ArhivaUcenika.


Pitanje za razmišljanje:  Šta će se desiti ako pokušamo da unesemo učenika sa UcenikID = 1, a ta vrednost već postoji?

Rešenje 1
INSERT INTO Ucenik (UcenikID, Ime, Prezime, Razred)
VALUES (51, 'Stefan', 'Simic', 2);

Rešenje 2 (primer)
INSERT INTO Ucenik (UcenikID, Ime, Prezime, Razred)
VALUES (6, 'Milica', 'Kovacevic', 3);

INSERT INTO Ucenik (UcenikID, Ime, Prezime, Razred)
VALUES (7, 'Luka', 'Stojanovic', 1);

INSERT INTO Ucenik (UcenikID, Ime, Prezime, Razred)
VALUES (8, 'Teodora', 'Pavlovic', 4);

Rešenje 3
INSERT INTO ArhivaUcenika (UcenikID, Ime, Prezime)
SELECT UcenikID, Ime, Prezime
FROM Ucenik
WHERE Razred = 1;

Rešenje 4

Doći će do greške jer primarni ključ mora imati jedinstvenu vrednost. Sistem neće dozvoliti unos duplog identifikatora.

...

Last modified: Wednesday, 4 March 2026, 9:56 AM