DELETE FROM [ ONLY ] table [ WHERE condition ]
DELETE は指定したテーブルから WHERE 句を満たす行を削除します。
condition (WHERE 句) がない場合、指定したテーブルの全ての行を削除することになります。その結果は存在するものの、中身が空のテーブルになります。
Tip: PostgreSQL の拡張である TRUNCATE は、より高速に、テーブルから全ての行を削除する機構を提供します。
デフォルトで、DELETE は指定されたテーブル及びそのサブテーブルのすべてのタプルを削除します。指定されたテーブルのみを更新したい場合はONLY句を使用して下さい。
テーブルを変更するためには書き込み権限が必要です。 あわせて、condition で読み込まれる値を持つテーブルへの読み込み権限も必要になります。
テーブル films から musical 以外を全て削除するには、以下のようにします。
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)