zhyiwww
用平实的笔,记录编程路上的点点滴滴………
posts - 536,comments - 394,trackbacks - 0

DELETE

Name

DELETE — 从表中删除行
DELETE FROM [ ONLY ] table [ WHERE condition ]
  

输入

table

一个现存表的名字

condition

这是一个 SQL 选择查询,它返回要被删除的行.

请参考 SELECT 语句获取关于 WHERE 子句的更多信息.

输出

DELETE count

如果行被成功的删除返回此信息. count 是要被删除的行数.

如果 count 为 0, 没有行被删除.

描述

DELETE 从指明的表里删除满足 WHERE condition (条件)的行.

如果 condition (WHERE 子句)不存在, 效果是删除表中所有行.结果是一个有效的空表.

小技巧: TRUNCATE 是一个 Postgres 扩展, 它提供一个更快的从表中删除所有行的机制。

缺省时DELETE将删除所声明的表和所有它的子表的记录. 如果你希望只更新提到的表,你应该使用OLNY子句.

要对表进行修改,你必须有写权限,同样也必须有读表的权限,这样才能对符合 condition(条件) 的值进行读取操作.

用法

删除所有电影(films)但不删除音乐(musicals):

DELETE FROM films WHERE kind <> 'Musical';
SELECT * FROM films;

 code  |           title           | did | date_prod  |  kind   | len
-------+---------------------------+-----+------------+---------+-------
 UA501 | West Side Story           | 105 | 1961-01-03 | Musical | 02:32
 TC901 | The King and I            | 109 | 1956-08-11 | Musical | 02:13
 WD101 | Bed Knobs and Broomsticks | 111 |            | Musical | 01:57
(3 rows)

清空表 films

DELETE FROM films;
SELECT * FROM films;

 code | title | did | date_prod | kind | len
------+-------+-----+-----------+------+-----
(0 rows)

兼容性

SQL92

SQL92 允许定位的 DELETE (删除)语句:

DELETE FROM table WHERE
    CURRENT OF cursor
这里 cursor 表示一个打开的游标. Postgres 里交互式游标是只读的.



|----------------------------------------------------------------------------------------|
                           版权声明  版权所有 @zhyiwww
            引用请注明来源 http://www.blogjava.net/zhyiwww   
|----------------------------------------------------------------------------------------|
posted on 2006-06-02 18:57 zhyiwww 阅读(240) 评论(0)  编辑  收藏 所属分类: database

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问