テーブルにデータを挿入した後、DELETE ステートメントやその他のステートメントを使用して、テーブルのレコードを削除することができます。本記事では、関連するステートメントの使い方と例を紹介します。
データ削除の準備
テーブルデータを削除する前に、以下の点を確認してください:
データベースのMySQLテナントに接続していることを確認してください。データベースへの接続操作については、接続方法の概要を参照してください。
説明
現在ログインしているテナントが属するテナントモードは、
sysテナントでoceanbase.DBA_OB_TENANTSビューをクエリすることで確認できます。操作対象テーブルに対する
DELETE権限を保有していることを確認してください。TRUNCATE TABLEステートメントでテーブルデータを削除するには、そのテーブルに対するCREATE権限も必要です。現在のユーザー権限を確認する操作の詳細については、ユーザー権限の確認を参照してください。該当する権限を持っていない場合は、管理者に連絡し権限の付与を依頼してください。ユーザー権限に関する操作については、直接権限付与を参照してください。
DELETEステートメントによるデータの削除
通常、テーブルの一部またはすべてのデータを削除するには、DELETE ステートメントを使用します。
説明
DELETE ステートメントの他に、REPLACE INTO ステートメントでもデータを削除される場合があります。REPLACE INTO ステートメントに関する操作と例については、データの置換を参照してください。
シンプルな DELETE ステートメントの構文は次のとおりです:
DELETE FROM table_name [ WHERE condition ] ;
| パラメータ | 必須 | 説明 |
|---|---|---|
| table_name | はい | 削除対象のテーブルを指定します。 |
| [ WHERE condition ] | いいえ | 条件句は、削除対象のデータが満たす必要がある条件を指定します。条件句が指定されない場合、テーブル全体が削除されます。 |
一部データの削除
DELETE ステートメントに WHERE 条件を追加することで、条件に合致する一部データをテーブルから削除できます。
t_insert テーブルから value = 10004 に一致するすべての行レコードを削除します。例:
obclient [test]> DELETE FROM t_insert WHERE value = 10004;
Query OK, 1 row affected
すべてのデータの削除
テーブル内のデータ量が少ない場合、DELETE ステートメントを使用してすべての行を直接削除できます。
例:
t_insertテーブルからすべての行データを削除します。obclient [test]> DELETE FROM t_insert; Query OK, 3 row affectedテーブル内のデータレコードが100万件を超える場合、一度に削除を実行するとパフォーマンスに影響を与える恐れがあるため、テーブル内の情報に基づいて
WHERE条件を使用して、データを数回に分けて削除するか、直接 TRUNCATE TABLEステートメントを使用してテーブルデータを削除する ことを推奨します。t_insertテーブル内のvalue列のデータをフィルタリングし、複数のステートメントを個別に実行し、value < 10000、value < 20000、value < 30000のデータを数回に分けて削除します。obclient [test]> DELETE FROM t_insert WHERE value < 100000; obclient [test]> DELETE FROM t_insert WHERE value < 200000; obclient [test]> DELETE FROM t_insert WHERE value < 300000;
TRUNCATE TABLEステートメントによるテーブルデータの削除
TRUNCATE TABLE ステートメントは、指定されたテーブルを完全に削除しますが、テーブルの構造、つまりテーブルで定義されたパーティション情報は保持します。論理的には、このステートメントは、すべての行を削除する DELETE FROM ステートメントと同じです。
TRUNCATE TABLE ステートメントの構文は以下のとおりです:
TRUNCATE [TABLE] table_name;
TRUNCATE TABLE ステートメントを使用して、t_insert テーブル内のすべてのデータを削除します。例:
obclient [test]> TRUNCATE TABLE t_insert;
TRUNCATE TABLE ステートメントの使用方法と説明の詳細については、TRUNCATE TABLEを参照してください。