OracleにおけるDELETE文の基本的な使い方です。
基本的なDELETE文
全件削除するDELETE文
DELETE文はその名の通り、テーブルのデータの削除を行います。基本的なDELETEの構文は以下です。
DELETE FROM テーブル名;
はい、これだけです。ただし、上記のDELETE文をそのまま実行すると、テーブルの全てのデータを削除することになります。トランザクション中の場合、コミットせずにロールバックすればデータは元に戻ります。
条件を指定して削除するDELETE文
全件削除したくない、特定の条件に一致するレコードだけ削除したい場合は、WHERE句で条件を指定します。
DELETE FROM テーブル名 WHERE 列名 = 条件;
上記の様にWHERE句で条件を指定すれば、条件が一致するレコードのみ削除します。特定列がNULLの場合は次の様に記述します。
DELETE FROM テーブル名 WHERE 列名 IS NULL;
同様に、NULL以外の条件の場合は次の様に記述します。
DELETE FROM テーブル名 WHERE 列名 IS NOT NULL;
基本的に上記の構文を押さえていれば、DELETE文を使えると言っても良いでしょう。尚、複数条件を指定することも可能です。AND条件だけでなく、OR条件も使えます。
DELETE FROM テーブル名 WHERE 列名1 = 条件1 AND 列名2 = 条件2 OR 列名3 = 条件3 …;
使用例
では、実際にDELETE文を使用してみましょう。次の画像のテーブルがあるとします。
このテーブルから学部コード27のデータを削除します。学部コード27のデータがどれくらいあるかと言うと、以下のSELECT文で確認してみます。
SELECT '全件',COUNT(*) FROM TM03_学科 UNION SELECT '学部コード27',COUNT(*) FROM TM03_学科 WHERE 学部コード = '27';
TM03_学科テーブルには18件のレコードが存在しており、そのうち、学部コード27のデータは11件存在します。DELETE実行後、同じSQLを実行して、学部コード27のデータが0件であればOKです。では実際に削除するSQLを書いてみます。
DELETE FROM TM03_学科 WHERE 学部コード = '27';
で、これを実行します。
フィードバック文で11行削除されているみたいですね。では、実行前に確認したSQLで学部コード27のデータが何件あるか確認してみます。
0件ですね。実行前の全レコードが18件あり、学部コード27のデータが11件でしたので、11件削除されて、全レコードの残りが7件になっています。
関連記事
.