Oracleデータベース歴18年の株信です。
SQLの基本 今回はDELETE文についてです。
DELETE文 とは
テーブルのレコードを削除するコマンドです。
構文
DELETE FROM [テーブル名] WHERE [カラム条件]
例: DELETE FROM t_test WHERE col1 = ‘A’;
使い方
全レコード削除
COL1 | COL2 | COL3 | COL4 |
A | 1 | 1 | 1 |
B | 1 | 1 | 1 |
B | 1 | 1 | 1 |
B | 1 | 1 | 1 |
DELETE FROM t_test ; -- t_test はテーブル名です。
実行すると以下のようにすべての行が削除されます。
COL1 | COL2 | COL3 | COL4 |
全レコード削除(高速)
TRUNCATE TABLE [テーブル名] で実行すると、同じように全レコード削除されます。
ただし注意点としてこのコマンドを自動確定してしまうので慎重に行った方がよいでしょう。
TRUNCATE TABLE t_test;
指定レコード削除
例えば、t_test というテーブルが以下のような構成
カラム COL1、COL2、COL3、COL4 だった場合
COL1 | COL2 | COL3 | COL4 |
A | 1 | 1 | 1 |
B | 1 | 1 | 1 |
B | 1 | 1 | 1 |
B | 1 | 1 | 1 |
DELETE FROM t_test WHERE COL1 = 'A';
とすると、以下のような結果になります。
COL1=’A’だった行が削除されているのがわかると思います。
COL1 | COL2 | COL3 | COL4 |
B | 1 | 1 | 1 |
B | 1 | 1 | 1 |
B | 1 | 1 | 1 |
注意事項
NULLを条件にする場合
COL1 | COL2 | COL3 | COL4 |
B | 1 | 1 | 1 |
B | 1 | 1 | 1 |
B | 1 | 1 | 1 |
NULL | 2 | 2 | 2 |
DELETE FROM t_test WHERE COL1 IS NULL;
実行すると以下のようにNULLの行が削除されています。
COL1 | COL2 | COL3 | COL4 |
B | 1 | 1 | 1 |
B | 1 | 1 | 1 |
B | 1 | 1 | 1 |
NULL以外を条件にする場合
COL1 | COL2 | COL3 | COL4 |
B | 1 | 1 | 1 |
B | 1 | 1 | 1 |
B | 1 | 1 | 1 |
NULL | 2 | 2 | 2 |
DELETE FROM t_test WHERE COL1 IS NOT NULL;
実行すると以下のようにNULL以外の行が削除されています。
COL1 | COL2 | COL3 | COL4 |
NULL | 2 | 2 | 2 |