SQL brisanje podataka (DELETE)

Redovi tabele se mogu obrisati korišćenjem iskaza DELETE. Možemo obrisati sve ili samo neke redove u tabeli. Ovaj upit koristimo najčešće u obliku:

DELETE FROM tabela WHERE uslov

Na ovaj način će biti obrisani redovi tabele čiji podaci zadovoljavaju uslov zadat u WHERE klauzuli. Nemojte zaboraviti da zadate WHERE uslov, pošto će DELETE upit u sledećem obliku obrisati sve redove:

DELETE FROM tabela

Slično kao SELECT upit, i u DELETE iskazu se mogu zadati redosled brisanja klauzulom ORDER BY, kao i broj obrisanih podataka pomoću klauzule LIMIT.

DELETE FROM tabela WHERE uslov ORDER BY polje [DESC], polje... LIMIT [preskok,] broj

Primer

Kao primer ćemo iskoristiti tabelu komponente u kojoj se nalaze podaci potrebni za prodaju kompjuterske opreme. Recimo da je stanje stanje u tabeli je ovakvo:

id tip nabavna prodajna naziv
TS08 Tastatura 20 24 Genius USB Slim
MT22 Monitor 390 468 Samsung LED 23"
HD51 HDD 180 216 WD 4TB/64MB
MM04 Memorija 34 40.8 Kingston DDR3 4GB
MS28 Miš 15 18 Logitech USB Optic

DELETE upit možemo npr. zadati na sledeći način:


  DELETE FROM komponente
  WHERE id='HD51'

Pošto smo u uslovu zadali tačno određeni primerni ključ, "gađamo" samo jedan i to određeni red tabele. U tabeli smo ga obeležili crvenom bojom:

id tip nabavna prodajna naziv
TS08 Tastatura 20 24 Genius USB Slim
MT22 Monitor 390 468 Samsung LED 23"
HD51 HDD 180 216 WD 4TB/64MB
MM04 Memorija 34 40.8 Kingston DDR3 4GB
MS28 Miš 15 18 Logitech USB Optic

Sa druge strane, upit se može zadati tako da obuhvati više redova:


  DELETE FROM komponente
  WHERE (tip LIKE 'M%') AND (prodajna<50)

Ovde će biti obrisani svi redovi u kojima polje tip počinje slovom M i kod kojih je istovremeno prodajna cena manja od 50. Primećujete da "Tastatura" i "Monitor" nisu obuhvaćeni, prvi zbog početnog slova iako ima odgogvarajuću cenu, a drugi zbog cene iako ima odgovarajuće početno slovo.

id tip nabavna prodajna naziv
TS08 Tastatura 20 24 Genius USB Slim
MT22 Monitor 390 468 Samsung LED 23"
HD51 HDD 180 216 WD 4TB/64MB
MM04 Memorija 34 40.8 Kingston DDR3 4GB
MS28 Miš 15 18 Logitech USB Optic

Konačno da vidimo kako bismo primenili LIMIT i sortiranje na DELETE iskaz.


  DELETE FROM komponente
  ORDER BY nabavna DESC
  LIMIT 1

Ovo bi značilo da baza prvo sortira podatke po polju nabavna i to po opadajućem (DESC) redosledu. Onda se vrši brisanje. Pošto nismo naveli WHERE klauzulu, bili bi obrisani svi podaci - i tada ne bi imalo nikakvog smisla što smo ih sortirali. Međutim, tu je i klauzula LIMIT koja ograničava delovanje upita i to u ovom slučaju an samo jedan (prvi) red. To znači da ovim upitom u stvari brišemo red sa najvećom nabavnom cenom:

id tip nabavna prodajna naziv
TS08 Tastatura 20 24 Genius USB Slim
MT22 Monitor 390 468 Samsung LED 23"
HD51 HDD 180 216 WD 4TB/64MB
MM04 Memorija 34 40.8 Kingston DDR3 4GB
MS28 Miš 15 18 Logitech USB Optic
Svi elementi sajta Web'n'Study, osim onih za koje je navedeno da su u javnom vlasništvu, vlasništvo su autora i ne smeju se koristiti, u celosti ili delimično bez pismenog odobrenja autora. To uključuje tekstove, slike, ilustracije, animacije, prateći grafički materijal i programski kod.
Ovaj sajt koristi tehnologiju kolačića (cookies). Detaljnije o tome možete pročitati u tekstu o našoj politici privatnosti.