DELETE
Daten ändern
Wozu dient DELETE?
Mit DELETE entfernst du Zeilen aus einer Tabelle. Mit WHERE bestimmst du, welche Zeilen gelöscht werden. Die Tabellenstruktur (Spalten) bleibt erhalten – nur die Daten verschwinden.
Syntax
DELETE FROM tabelle WHERE bedingung;
Beispiel
Einen bestimmten Kunden löschen:
DELETE FROM Kunden WHERE KundenID = 3;
Alle Kunden ohne Umsatz löschen:
DELETE FROM Kunden WHERE Umsatz IS NULL;
WARNUNG: WHERE nicht vergessen!
Genau wie bei UPDATE gilt: Ohne WHERE löscht DELETE alle Zeilen der Tabelle.
-- ACHTUNG: löscht den GESAMTEN Inhalt der Tabelle! DELETE FROM Kunden;
Prüfe vorher immer mit einem SELECT und demselben WHERE, welche Zeilen betroffen sind. Bei wichtigen Daten innerhalb einer Transaktion arbeiten, damit ROLLBACK möglich ist.
DELETE vs. TRUNCATE
| DELETE | TRUNCATE | |
|---|---|---|
| Zeilen wählbar? | ja, per WHERE | nein, immer alle |
| Geschwindigkeit | langsamer (Zeile für Zeile) | sehr schnell |
| Rückgängig (Transaktion)? | meist ja | oft nicht / eingeschränkt |
| Auto-Increment-Zähler | bleibt | wird i. d. R. zurückgesetzt |
TRUNCATE TABLE Kunden; leert die Tabelle blitzschnell, lässt aber keine Bedingung zu.
Stolperfalle
Fremdschlüssel können ein DELETE blockieren: Wenn zu einem Kunden noch Bestellungen existieren, verweigert die Datenbank das Löschen (oder löscht abhängige Zeilen mit, falls ON DELETE CASCADE definiert ist). Lösche dann zuerst die abhängigen Datensätze.