Skip to content

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 可快速清空整张表