PostgreSQL DELETE 语句


PostgreSQL DELETE 语句介绍

概述

在PostgreSQL中,DELETE语句用于从表中删除行。可以使用WHERE子句指定要删除哪些行。

语法

DELETE FROM table_name [WHERE condition];

或者:

DELETE FROM ONLY table_name [WHERE condition];
  • table_name是要从其中删除行的表的名称。
  • WHERE子句是可选的。如果没有指定WHERE子句,则删除表中的所有行。

示例

假设有一个名为student的表,包含以下数据:

id name age gender
1 Tom 20 male
2 Jack 21 male
3 Lily 20 female
4 Lucy 21 female
5 Mike 22 male

删除其中年龄为20岁的行:

DELETE FROM student WHERE age = 20;

删除所有行:

DELETE FROM student;

ONLY关键字

默认情况下,DELETE语句将删除指定表及其子表中的所有符合条件的行。通过在DELETE语句中添加ONLY关键字,可以仅删除指定表中符合条件的行。

对于student表,假设有一个子表class,可以使用以下方式删除student表中符合条件的行,而不会删除class表中的行:

DELETE FROM ONLY student WHERE age = 20;

删除返回的行数

可以使用DELETE语句的返回值来检查已删除的行数:

DELETE FROM student WHERE age = 20 RETURNING *;

返回值为删除的行。

限制

当删除具有FOREIGN KEY约束的行时,必须考虑参照integrity的问题。在这种情况下,应该首先删除相关行,然后才可以删除具有FOREIGN KEY约束的行。

总结

在PostgreSQL中,DELETE语句用于从表中删除行。可以使用WHERE子句指定要删除哪些行。默认情况下,DELETE语句将删除指定表及其子表中的所有符合条件的行,通过添加ONLY关键字,可以仅删除指定表中符合条件的行。可以使用DELETE语句的返回值来检查已删除的行数。