Synopsis
DELETE FROM [ ONLY ] table [ WHERE condition ]
描述
DELETE 从指明的表里删除满足
WHERE 子句的行。
如果 WHERE 子句不存在,
效果是删除表中所有行。结果是一个有效的空表。
提示: TRUNCATE 是一个
PostgreSQL 扩展,
它提供一个更快的从表中删除所有行的机制。
缺省时 DELETE 将删除所声明的表和所有它的子表的记录。
如果你希望只更新提到的表,你应该使用 ONLY 子句。
要对表进行删除,你必须对它有 DELETE 权限,同样也必须有 SELECT 的权限,这样才能对符合
condition
的值进行读取操作。
参数
- table
一个现存表的名字(可以有模式修饰)。
- condition
一个返回 boolean 类型值的值表达式,它判断哪些行需要被删除。
输出
成功时,DELETE 命令返回形如
DELETE count
的标签。
count 是被删除的行数。
如果 count 为 0,没有行匹配
condition (这个不认为是错误)。
例子
删除所有电影(films)但不删除音乐(musicals):
DELETE FROM films WHERE kind <> 'Musical';
清空表 films:
DELETE FROM films;
SELECT * FROM films;