説明
このステートメントは、テーブル内の条件に一致する行(データ)を削除するために使用します。
権限要件
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