1. čas: Brisanje redova pomoću DELETE (brisanje svih redova)


Uvod

U radu sa bazama podataka često se javlja potreba da se određeni podaci uklone iz tabele. Na primer:

  • proizvod se više ne prodaje

  • student je ispisan iz škole

  • pogrešno unet podatak treba obrisati

Za ove situacije koristi se SQL naredba DELETE, koja omogućava brisanje redova iz tabele.

Važno je razumeti:
DELETE briše podatke (redove), ali ne briše strukturu tabele.


Osnovna sintaksa DELETE naredbe

DELETE FROM naziv_tabele

Ova naredba briše sve redove iz tabele.



-- Tabela Proizvodi

-- Kreiranje tabele
CREATE TABLE Proizvodi
(
    ID INT PRIMARY KEY,
    Naziv VARCHAR(50),
    Cena DECIMAL(10,2)
)
-- Unos podataka
INSERT INTO Proizvodi VALUES (1,'Hleb',60)
INSERT INTO Proizvodi VALUES (2,'Mleko',120)
INSERT INTO Proizvodi VALUES (3,'Jogurt',110)
INSERT INTO Proizvodi VALUES (4,'Sir',500)
INSERT INTO Proizvodi VALUES (5,'Maslac',250)
INSERT INTO Proizvodi VALUES (6,'Pavlaka',150)

-- Tabela Zaposleni

-- Kreiranje
CREATE TABLE Zaposleni
(
    IDZaposlenog INT PRIMARY KEY,
    Ime VARCHAR(50),
    Plata INT
)
-- Unos podataka
INSERT INTO Zaposleni VALUES (1,'Marko',50000)
INSERT INTO Zaposleni VALUES (2,'Ana',52000)
INSERT INTO Zaposleni VALUES (3,'Ivan',48000)
INSERT INTO Zaposleni VALUES (4,'Jelena',47000)
INSERT INTO Zaposleni VALUES (5,'Nikola',60000)

-- Tabela Studenti

-- Kreiranje
CREATE TABLE Studenti
(
    IDStudenta INT PRIMARY KEY,
    Ime VARCHAR(50),
    Grad VARCHAR(50)
)
-- Unos podataka
INSERT INTO Studenti VALUES (1,'Nikola','Novi Sad')
INSERT INTO Studenti VALUES (2,'Jelena','Beograd')
INSERT INTO Studenti VALUES (3,'Marko','Novi Sad')
INSERT INTO Studenti VALUES (4,'Ana','Subotica')
INSERT INTO Studenti VALUES (5,'Petar','Novi Sad')

Primer tabele

Tabela Proizvodi:

ID Naziv Cena
1 Hleb 60
2 Mleko 120
3 Jogurt 110

Primer 1 – Brisanje svih redova

DELETE FROM Proizvodi

Nakon izvršavanja:

Tabela je prazna (nema redova), ali i dalje postoji.


Napomena:  DELETE bez WHERE uslova briše sve podatke u tabeli.


Razlika: DELETE vs TRUNCATE

Često se mešaju ove dve naredbe:

  • DELETE briše red po red (može imati WHERE)

  • TRUNCATE TABLE briše sve redove odjednom (brže, ali bez WHERE)

Primer:

TRUNCATE TABLE Proizvodi

Brisanje uz proveru

Dobra bi bilo da se prvo proveri šta će biti obrisano:

SELECT * FROM Proizvodi

Zadaci za vežbu

Zadatak 1:  Obrisati sve redove iz tabele Proizvodi.


Zadatak 2: Obrisati sve redove iz tabele Zaposleni.


Zadatak 3: Obrisati sve redove iz tabele Studenti.


 * --- 


Zaključak

DELETE omogućava brisanje podataka iz tabele.

Ako se ne koristi WHERE uslov, brišu se svi redovi, što može dovesti do gubitka podataka. Zato je u većini slučajeva potrebno koristiti uslovno brisanje, koje će biti obrađeno u sledećoj lekciji.


Čas 2 - Brisanje određenih redova ( uz WHERE uslov)


Uvod

U praksi retko želimo da obrišemo sve podatke. Obično želimo da uklonimo samo:

  • jedan red

  • nekoliko redova

  • redove koji ispunjavaju određeni uslov

Za to koristimo WHERE klauzulu.


Sintaksa

DELETE FROM naziv_tabele
WHERE uslov

WHERE određuje koji redovi će biti obrisani.


Primer tabele

Tabela Zaposleni:

ID Ime Plata
1 Marko 50000
2 Ana 52000
3 Ivan 48000
4 Jelena 47000

Primer 1 – Brisanje jednog reda

DELETE FROM Zaposleni
WHERE ID = 3

Briše se zaposleni Ivan.


Primer 2 – Brisanje više redova

DELETE FROM Zaposleni
WHERE Plata < 50000

Brišu se svi zaposleni sa platom manjom od 50000.


Primer 3 – Brisanje po tekstualnoj vrednosti

Tabela Studenti:

ID Ime Grad
1 Nikola Novi Sad
2 Jelena Beograd
3 Marko Novi Sad
DELETE FROM Studenti
WHERE Grad = 'Novi Sad'

Brišu se svi studenti iz Novog Sada.


Kombinovanje uslova

DELETE FROM Zaposleni
WHERE Plata < 50000 AND Ime = 'Ivan'

Bezbedan rad

Pre DELETE uvek proveriti ono što biste možda obrisali (nema "undo"!):

SELECT * FROM Zaposleni
WHERE Plata < 50000

Zadaci za vežbu

Tabela Proizvodi:

ID Naziv Cena
1 Hleb 60
2 Mleko 120
3 Jogurt 110
4 Sir 500

Zadatak 1: Obrisati proizvod Hleb.


Zadatak 2: Obrisati proizvod sa ID = 2.


Zadatak 3: Obrisati sve proizvode čija je cena veća od 200.


Zadatak 4: Obrisati sve proizvode čija je cena manja od 100.


 * --- 


Završni zadatak (ako stignemo)

Tabela Zaposleni:

ID Ime Plata
1 Marko 50000
2 Ana 52000
3 Ivan 48000
4 Jelena 47000

Napisati SQL naredbe za:

  1. brisanje zaposlenog Ivan

  2. brisanje zaposlenih sa platom manjom od 48000

  3. brisanje zaposlenog sa ID = 1


Zaključak

DELETE naredba je veoma moćna i potencijalno opasna, jer omogućava trajno brisanje podataka.

Zato je poželjno:

  • koristiti WHERE uslov

  • prethodno proveriti SELECT upit

  • pažljivo pisati uslove


Poslednja izmena: петак, 20. март 2026, 08:56