⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 cmd + k | ctrl + k
DELETE 语句

DELETE 语句从由表名标识的表中删除行。如果不存在 WHERE 子句,则表中所有记录都将被删除。如果提供了 WHERE 子句,则只删除 WHERE 子句结果为 true 的行。表达式为 false 或 NULL 的行将被保留。

示例

从数据库中删除符合条件 i = 2 的行

DELETE FROM tbl WHERE i = 2;

删除表 tbl 中的所有行

DELETE FROM tbl;

USING 子句

USING 子句允许根据其他表或子查询的内容进行删除。

RETURNING 子句

RETURNING 子句允许返回被删除的值。它使用与 SELECT 子句相同的语法,但不支持 DISTINCT 修饰符。

CREATE TABLE employees(name VARCHAR, age INTEGER);
INSERT INTO employees VALUES ('Kat', 32);
DELETE FROM employees RETURNING name, 2025 - age AS approx_birthyear;
名称 大致出生年份
Kat 1993

语法

TRUNCATE 语句

TRUNCATE 语句从表中删除所有行,它等同于不带 WHERE 子句的 DELETE FROM 语句。

TRUNCATE tbl;

回收内存和磁盘空间的限制

运行 DELETE 并不意味着空间被回收。通常,行只被标记为已删除。DuckDB 会在执行 CHECKPOINT 时回收空间。VACUUM 目前不回收空间。