説明
このステートメントは、テーブル内の条件に一致する行(データ)を削除します。
権限要件
DELETE ステートメントを実行するには、現在のユーザーが DELETE のシステム権限を持っている必要があります。OceanBaseデータベースの権限の詳細については、Oracleモードの権限分類を参照してください。
構文
DELETE [hint_options] FROM table_factor
[WHERE where_expression]
[{RETURNING | RETURE } returning_exprs [ into_clause ]]
[LOG ERRORS [INTO] table_name REJECT LIMIT { integer | UNLIMITED }]
table_factor:
{table_name | table_subquery | '(' table_reference ')' }
returning_exprs:
projection_col_name [,projection_col_name ...]
into_clause:
[BULK COLLECT] INTO into_var_list
into_var_list:
{ USER_VARIABLE | ref_name } [, { USER_VARIABLE | ref_name }...]
パラメータの説明
| パラメータ | 説明 |
|---|---|
DELETE |
削除操作を実行するためのキーワード。 |
hint_options |
オプションのヒントオプションで、クエリの実行計画を最適化します。 |
| table_factor | 削除対象のテーブル名(ベーステーブル、更新可能なビュー、特殊サブクエリ)を指定します。
注意特殊サブクエリとは、更新可能なビューに対応するサブクエリのようなものであり、このようなサブクエリには複雑な演算子(例えば |
table_name |
データを削除するターゲットテーブル名。 |
table_subquery |
オプションのサブクエリで、削除するレコードのソースを指定します。 |
table_reference |
テーブルの参照であり、テーブル名または他の形式のテーブル式である可能性があります。 |
WHERE where_expression |
オプションの条件で、削除するレコードを指定します。 |
RETURNING |
オプションのキーワードで、削除操作後に指定された列値を返すことを示します。 |
RETURN |
RETURNING と同じで、別の書き方です。 |
returning_exprs |
返す列名のリストで、複数の列名を含むことができます。 |
into_clause |
返された値を変数に格納するためのオプションのステートメントです。 |
BULK COLLECT |
バッチ収集方式を使用して、返された結果を変数に格納するよう指示します。 |
into_var_list |
返された値を格納する変数リストであり、ユーザー定義の変数または参照名である可能性があります。 |
LOG ERRORS |
オプションのステートメントで、削除処理中にエラーを記録するよう指示します。 |
INTO |
エラーを記録するターゲットテーブル名を指定します。 |
REJECT LIMIT |
エラー発生時に許容される最大レコード数を指定します。整数または無制限にすることができます。 |
例
テーブル tbl1 を作成し、データを挿入します。
obclient> CREATE TABLE tbl1(col1 INT PRIMARY KEY, col2 INT);
Query OK, 0 rows affected
obclient> INSERT INTO tbl1 VALUES(1,1),(2,2),(3,3),(4,4);
Query OK, 4 rows affected
Records: 4 Duplicates: 0 Warnings: 0
obclient> SELECT * FROM tbl1;
+------+------+
| COL1 | COL2 |
+------+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
+------+------+
4 rows in set
単一テーブルの削除:
col1=2の行を削除します。ここで、col1列はテーブルtbl1内のPrimary Keyです。obclient>DELETE FROM tbl1 WHERE col1 = 2; Query OK, 1 row affected obclient>SELECT * FROM tbl1; +----+------+ | COL1 | COL2 | +----+------+ | 1 | 1 | | 3 | 3 | | 4 | 4 | +----+------+ 3 rows in set単一テーブルの削除:直接サブクエリを操作して削除操作を実行します。
obclient> DELETE FROM (SELECT * FROM tbl1); Query OK, 4 rows affected obclient> SELECT * FROM tbl1; Empty set単一テーブルの削除:
RETURNING句を含みます。obclient> DELETE FROM tbl1 RETURNING col1; +----+ | COL1 | +----+ | 1 | | 2 | | 3 | | 4 | +----+ 4 rows in set obclient>SELECT * FROM t1; Empty set