DELETE
指定された条件に基づいてテーブルからデータ行を削除します。テーブルはパーティション化されている場合とされていない場合があります。
重複キーテーブル、集計テーブル、およびユニークキーテーブルでは、指定されたパーティションからデータを削除できます。v2.3から、主キーテーブルは完全な DELETE...WHERE セマンティクスをサポートし、主キー、任意のカラム、またはサブクエリの結果に基づいてデータ行を削除できます。v3.0から、StarRocks は DELETE...WHERE セマンティクスをマルチテーブルジョインや共通テーブル式 (CTE) で強化しています。データベース内の他のテーブルと主キーテーブルをジョインする必要がある場合、USING 句や CTE でこれらの他のテーブルを参照できます。
使用上の注意
- DELETE を実行したいテーブルとデータベースに対する権限を持っている必要があります。
- 頻繁な DELETE 操作は推奨されません。必要な場合は、ピーク時以外に実行してください。
- DELETE 操作はテーブル内のデータのみを削除します。テーブル自体は残ります。テーブルを削除するには、DROP TABLE を実行してください。
- 誤操作でテーブル全体のデータが削除されるのを防ぐため、DELETE ステートメントで WHERE 句を指定する必要があります。
- 削除された行はすぐにはクリーンアップされません。それらは「削除済み」とマークされ、セグメントに一時的に保存されます。物理的には、データバージョンのマージ (コンパクション) が完了した後にのみ行が削除されます。
- この操作は、このテーブルを参照するマテリアライズドビューのデータも削除します。
重複キーテーブル、集計テーブル、およびユニークキーテーブル
構文
DELETE FROM [<db_name>.]<table_name> [PARTITION <partition_name>]
WHERE
column_name1 op { value | value_list } [ AND column_name2 op { value | value_list } ...]
パラメータ
| パラメータ | 必須 | 説明 |
|---|---|---|
db_name | いいえ | 対象テーブルが属するデータベース。このパラメータが指定されていない場合、デフォルトで現在のデータベースが使用されます。 |
table_name | はい | データを削除したいテーブル。 |
partition_name | いいえ | データを削除したいパーティション。 |
column_name | はい | DELETE 条件として使用したいカラム。1つ以上のカラムを指定できます。 |
op | はい | DELETE 条件で使用される演算子。サポートされている演算子は =, >, <, >=, <=, !=, IN, および NOT IN です。 |
制限と使用上の注意
-
重複キーテーブルでは、任意のカラム を DELETE 条件として使用できます。集計テーブルおよびユニークキーテーブルでは、キー カラム のみが DELETE 条件として使用できます。
-
指定する条件は AND 関係でなければなりません。OR 関係で条件を指定したい場合は、別々の DELETE ステートメントで条件を指定する必要があります。
-
重複キーテーブル、集計テーブル、およびユニークキーテーブルでは、DELETE ステートメントでサブクエリの結果を条件として使用することはサポートされていません。