Zum Inhalt springen

DELETE-Anweisung

Die DELETE-Anweisung entfernt Zeilen aus der durch den Tabellennamen identifizierten Tabelle. Ohne WHERE-Klausel werden alle Datensätze der Tabelle gelöscht. Ist eine WHERE-Klausel angegeben, werden nur die Zeilen gelöscht, für die die WHERE-Klausel wahr ergibt. Zeilen, für die der Ausdruck falsch oder NULL ist, bleiben erhalten.

Beispiele

Die Zeilen entfernen, die der Bedingung i = 2 entsprechen:

DELETE FROM tbl WHERE i = 2;

Alle Zeilen der Tabelle tbl löschen:

DELETE FROM tbl;

USING-Klausel

Die USING-Klausel erlaubt das Löschen anhand des Inhalts anderer Tabellen oder Unterabfragen.

RETURNING-Klausel

Die RETURNING-Klausel erlaubt die Rückgabe der gelöschten Werte. Sie verwendet dieselbe Syntax wie die SELECT-Klausel, mit der Ausnahme, dass der Modifikator DISTINCT nicht unterstützt wird.

CREATE TABLE employees (name VARCHAR, age INTEGER);
INSERT INTO employees VALUES ('Kat', 32);
DELETE FROM employees RETURNING name, 2025 - age AS approx_birthyear;
name approx_birthyear
Kat 1993

Syntax

Die TRUNCATE-Anweisung

Die TRUNCATE-Anweisung entfernt alle Zeilen aus einer Tabelle und wirkt als Alias für DELETE FROM ohne WHERE-Klausel:

TRUNCATE tbl;

Einschränkungen beim Freigeben von Speicher und Festplattenplatz

Ein ausgeführtes DELETE bedeutet nicht, dass Platz freigegeben wird. Im Allgemeinen werden Zeilen nur als gelöscht markiert. DuckDB gibt Platz frei, wenn ein CHECKPOINT ausgeführt wird. VACUUM gibt derzeit keinen Platz frei.