Instrukcja DELETE służy do usuwania rekordów (wierszy) z tabeli. Aby usunąć tylko część danych, konieczna jest klauzula WHERE, która zawęża zbiór wierszy do tych spełniających warunek.
Polecenie DELETE FROM naprawy WHERE czyNaprawione = TRUE; jest poprawne, ponieważ:
- używa wymaganej składni DELETE FROM nazwa_tabeli,
- zawiera warunek WHERE, więc nie usuwa całej tabeli,
- warunek odwołuje się do pola logicznego czyNaprawione i wybiera tylko rekordy oznaczone jako "prawda".
Dlaczego pozostałe polecenia są niepoprawne lub niebezpieczne:
- DELETE naprawy WHERE czyNaprawione = TRUE; – w standardowej składni SQL brakuje słowa FROM, więc zapytanie jest niepoprawne składniowo w typowych DBMS.
- DELETE FROM naprawy; – brak klauzuli WHERE oznacza usunięcie wszystkich rekordów z tabeli, co nie spełnia warunku zadania i jest częstym źródłem poważnych błędów w administracji bazą.
- DELETE klient FROM naprawy WHERE czyNaprawione = TRUE; – DELETE usuwa wiersze, a nie pojedynczą kolumnę. W SQL nie usuwa się "pola klient" z rekordów przez wskazanie nazwy kolumny w DELETE.
W praktyce przed wykonaniem DELETE warto:
- najpierw wykonać SELECT z tym samym warunkiem, aby sprawdzić, które rekordy zostaną usunięte,
- stosować transakcje (jeśli DBMS wspiera) i kopie zapasowe,
- pamiętać, że zapis wartości logicznych (TRUE/FALSE, 1/0) może zależeć od silnika bazy danych.