Der Befehl DELETE entfernt Datensätze aus einer Tabelle.
DELETE FROM tabellenname WHERE bedingung;
Ohne WHERE wird die ganze Tabelle geleert.
DELETE FROM tabellenname;
Die Struktur der Tabelle bleibt bestehen, aber alle Zeilen sind weg.
Wie beim UPDATE gilt: Prüfen Sie vor dem Löschen mit einem SELECT und demselben WHERE, welche Zeilen betroffen wären. Details dazu finden Sie in LU06c beim Dry-Run.
//Screencast: DELETE FROM mit WHERE //
Ausgangstabelle:
| film_id | title | director | released_year | star1 |
|---|---|---|---|---|
| 1 | Lost in Translation | Sofia Coppola | 2003 | Scarlett Johansson |
| 2 | Inception | C. Nolan | 2010 | Leonardo DiCaprio |
| 3 | Arrival (Extended Cut) | Denis Villeneuve | 2016 | Amy Adams |
SELECT * FROM favourite_film WHERE film_id = 1; DELETE FROM favourite_film WHERE film_id = 1;
| film_id | title | director | released_year | star1 |
|---|---|---|---|---|
| 2 | Inception | C. Nolan | 2010 | Leonardo DiCaprio |
| 3 | Arrival (Extended Cut) | Denis Villeneuve | 2016 | Amy Adams |
DELETE FROM favourite_film WHERE film_id = 2 OR film_id = 3;
TRUNCATE entfernt ebenfalls alle Zeilen einer Tabelle – schneller als DELETE, und mit einem wichtigen Zusatzeffekt: Es setzt den AUTO_INCREMENT-Zähler zurück.
TRUNCATE TABLE tabellenname;
TRUNCATE kennt kein WHERE – es ist immer alles oder nichts. Verwenden Sie es nur, wenn Sie wirklich die komplette Tabelle zurücksetzen wollen, z.B. um mit leeren Testdaten neu zu beginnen.