社畜ゲートウェイ

京成・京急を中心に取り上げる阪急ファンのブログです。日本一遅い速報を届けます。

MENU

【スポンサーリンク】

【Oracle】DELETE文の基本的な使い方

【スポンサーリンク】

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文を使用してみましょう。次の画像のテーブルがあるとします。

f:id:neko_britannia:20200811214014j:plain

このテーブルから学部コード27のデータを削除します。学部コード27のデータがどれくらいあるかと言うと、以下のSELECT文で確認してみます。

SELECT '全件',COUNT(*) FROM TM03_学科
UNION
SELECT '学部コード27',COUNT(*) FROM TM03_学科
WHERE 学部コード = '27';

f:id:neko_britannia:20200811214413j:plain

TM03_学科テーブルには18件のレコードが存在しており、そのうち、学部コード27のデータは11件存在します。DELETE実行後、同じSQLを実行して、学部コード27のデータが0件であればOKです。では実際に削除するSQLを書いてみます。

DELETE FROM TM03_学科
WHERE 学部コード = '27';

で、これを実行します。

f:id:neko_britannia:20200811214839j:plain

フィードバック文で11行削除されているみたいですね。では、実行前に確認したSQLで学部コード27のデータが何件あるか確認してみます。

f:id:neko_britannia:20200811215006j:plain

0件ですね。実行前の全レコードが18件あり、学部コード27のデータが11件でしたので、11件削除されて、全レコードの残りが7件になっています。

 

関連記事

www.stellacreate.com

www.stellacreate.com