PostgreSQL
上一頁   下一頁

DELETE

名稱

DELETE ─ 從表中刪除行

DELETE FROM table [ WHERE condition ]
  

輸入

table
現存的表名。
condition
這是一個 SQL 選擇查詢,它返回被選取的行。

請參考 SELECT 語句獲取關於 WHERE 子句的更多資訊。

輸出

DELETE count
如果行被成功的刪除返回此資訊。count 是要被刪除的行數。

如果 count 為 0,沒有行被刪除。

描述

DELETE 從指明的表裡刪除滿足 WHERE condition (條件)的行。

如果 condition (WHERE 子句)不存在,效果是刪除表中所有行。結果是一個有效的空表。

小技巧:TRUNCATE 是一個 Postgres 擴展,它提供一個更快的從表中刪除所有行的機制。

要對表進行修改,你必須有寫權限,同樣也必須有讀表的權限,這樣才能對符合 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 裡交互式游標是唯讀的。


上一頁 首頁 下一頁
DECLARE 開頭 DROP AGGREGATE