SQL DELETE

SQL DELETE



DEFINICJA

Polecenie DELETE służy do usuwania rekordów (wierszy) ze wskazanej tabeli. Po poleceniu DELETE określamy gdzie, w której tabeli, chcemy usunąć rekord. Po słówku WHERE definiujemy warunki, które konkretnie rekordy chcemy usunąć. Pamiętaj, z poleceniem DELETE trzeba się obchodzić bardzo starannie, trzeba bardzo jasno określić które rekordy chcemy usunąć, bo można nieodwracalnie usunąć potrzebne rekordy. Przed zastosowaniem polecenia DELETE, dobrą praktyką jest użycie zwykłego SELECT-a w połączeniu z warunkami w WHERE, w celu wizualizacji rekordów które chcesz skasować, wtedy masz pewność, że usuwasz prawidłowe dane.


SQL DELETE składnia

DELETE FROM
nazwa_tabeli
WHERE
warunki_filtrowania_rekordów

UWAGA: Jeżeli nie określisz warunków w części WHERE skasujesz wszystkie rekordy ze wskazanej tabeli!


Przykład zastosowania DELETE (baza AdventureWorks)

Usuń rekord z tabeli osób dotyczący Terri Duffy.

DELETE FROM
Person.Person
WHERE
BusinessEntityID = 2

INFO: Pamiętaj, żeby usunąć ten rekord który chcemy musimy dokładnie określić warunki. Jeżeli chcemy usunąć dokładnie jeden rekord musimy posłużyć się unikalnym polem w skali kolumny który zidentyfikuje ten właśnie rekord. W przypadku tabeli Person.Person w bazie AdventureWorks tym polem jest BusinessEntityID.

Dlaczego w warunku WHERE nie posłużyliśmy się imieniem i nazwiskiem?  Dlatego, że jeżeli mielibyśmy taki przypadek, że w bazie znalazłyby się dwie osoby o takim samym imieniu i nazwisko system usunąłby obie.


Przykład zastosowania DELETE (baza Northwind)

Usuń z zamówienie o identyfikatorze 10625 produkt o identyfikatorze 60.

DELETE FROM
OrderDetails
WHERE
OrderID = 10625 AND ProductID = 60

INFO: w warunku wskazaliśmy zestawienie dwóch warunków bo taka kombinacja gwarantuje nam już wskazanie jednego, interesującego nas, rekordu.