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语句的返回值来检查已删除的行数。