de:modul:m290_guko:learningunits:lu06:theorie:d_delete

Action unknown: linkbutton

LU06d - SQL-DML: Daten löschen (DELETE)

  • Ich kann mit DELETE gezielt einen oder mehrere Datensätze löschen.
  • Ich kann erklären, was passiert, wenn ich DELETE ohne WHERE ausführe.
  • Ich kann den Unterschied zwischen DELETE und TRUNCATE erklären.

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.


Guido Koch

  • de/modul/m290_guko/learningunits/lu06/theorie/d_delete.txt
  • Zuletzt geändert: 2026/09/21 00:23
  • von gkoch