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.