メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

DELETE

テーブルから行を削除します。

注記

単一 SQL ステートメントの最大サイズは 16 MB です。

構文

Copy
DELETE [ FROM ] table_name [ {USING } table_name, ... ] [ WHERE condition ]

パラメーター

FROM

FROM キーワードは、USING 句が指定されている場合を除き、オプションです。ステートメント delete from event;delete event; は、EVENT テーブルからすべての行を削除する操作と同じです。

注記

テーブルからすべての行を削除するには、テーブルに対して TRUNCATE を実行します。TRUNCATE は DELETE よりもはるかに効率的であり、VACUUM および ANALYZE を必要としません。ただし、TRUNCATE では、その操作を実行するトランザクションがコミットされることに注意してください。

table_name

一時テーブルまたは永続的テーブルテーブルの所有者またはテーブルで DELETE 権限を持つユーザーのみが、テーブルから行を削除できます。

大きなテーブルで制限のない削除操作を実行するには、TRUNCATE コマンドを使用します。「TRUNCATE」を参照してください。

注記

テーブルから多数の行を削除した後:

  • ストレージ容量を再利用し、行を再ソートするため、テーブルにバキューム処理を実行します。

  • テーブルを分析して、クエリプランナーの統計情報を更新します。

USING table_name, ...

USING キーワードは、WHERE 句の条件で追加のテーブルを参照するときに、テーブルリストを導入するために使用されます。例えば、次のステートメントでは、EVENT テーブルと SALES テーブルに対する結合条件を満たす EVENT テーブルから、すべての行を削除します。FROM リストで、SALES テーブル名を明示的に指定する必要があります。

Copy
delete from event using sales where event.eventid=sales.eventid;

USING 句でターゲットテーブル名を繰り返すと、DELETE 操作が自己結合を実行します。USING 構文で同じクエリを書く代わりに、WHERE 句でサブクエリを使用することもできます。

WHERE 条件

削除対象を、条件を満たす行に制限するオプションの句。例えば、列に対する制限条件、結合条件、クエリ結果に基づく条件などがあります。クエリでは、DELETE コマンドのターゲットではないテーブルを参照できます。以下に例を示します。

Copy
delete from t1 where col1 in(select col2 from t2);
条件を指定しない場合、テーブルのすべての行が削除されます。

CATEGORY テーブルからすべての行を削除します。

Copy
delete from category;

CATEGORY テーブルから CATID 値が 0~9 の行を削除します。

Copy
delete from category where catid between 0 and 9;

LISTING テーブルから、SELLERID 値が SALES テーブルに存在しない行を削除します。

Copy
delete from listing where listing.sellerid not in(select sales.sellerid from sales);

次の 2 つのクエリはいずれも、EVENT テーブルへの結合と CATID に対する追加の制限に基づいて、CATEGORY テーブルから 1 行を削除します。

Copy
delete from category using event where event.catid=category.catid and category.catid=9;
Copy
delete from category where catid in (select category.catid from category, event where category.catid=event.catid and category.catid=9);

このページの内容: