PostgreSQL 删除数据
概述
DELETE 语句用于从表中删除行。本章介绍如何删除特定行以及使用条件筛选要删除的数据。
基本删除
sql
-- 删除单行
DELETE FROM users WHERE id = 1;
-- 删除多行
DELETE FROM users WHERE status = 'inactive' AND last_login < '2022-01-01';返回删除结果
sql
DELETE FROM users WHERE id = 1
RETURNING id, name, deleted_at;使用USING删除
sql
-- 使用另一个表进行关联删除
DELETE FROM orders USING users
WHERE orders.user_id = users.id
AND users.status = 'banned';清空表
sql
-- 删除所有行,比DELETE更快
TRUNCATE TABLE logs;
TRUNCATE TABLE logs RESTART IDENTITY;
TRUNCATE TABLE logs CASCADE;小结
DELETE 操作要点:
- 使用 WHERE 条件指定要删除的行
- 使用 RETURNING 子句获取被删除的值
- 使用 TRUNCATE 可快速清空整张表