はじめに

今回は初心者向けの記事となります。
業務でSQLを使用してデータを削除できるようになることは必要不可欠です。しっかり削除する対象のデータを指定しないと、大変なことになりますので、この記事を参考にいただければと思います。

データを削除するSQLは大きくわけて3種類あります。DELETE・TRUNCATE・DROPです。それらの違いについて説明します。
ここでは例として、データ削除する対象のテーブルを「test」テーブルとします。
※Oracleで実行する際のSQLとなりますので、他のDBの場合は少し異なるかもしれません。

DELETE文

テーブル内のデータを削除します。構文は以下となります。

DELETE FROM test WHERE ~ ;

WHERE句以降に条件を指定すれば、その条件にマッチしたデータのみを削除することができます。
もし、WHERE句がなくても実行できますが、その場合は指定したテーブル内の全データを削除してしまいますのでお気をつけください。

また、トランザクションを設定していればロールバック(=削除前の状態に戻す)することも可能ですので、誤って削除した場合でも復旧しやすいです。

TRUNCATE文

こちらもテーブル内のデータを削除しますが、テーブルを一旦削除した後、同じテーブルを再作成(データは空)します。
構文は以下です。

TRUNCATE TABLE test;

こちらはテーブル自体を一度削除してしまうので、WHERE句の指定ができません。ただ、DELETE文よりは高速に実行できます。

また、DELETE文と違い、ロールバックすることができないので、十分に注意して実行する必要があります。

DROP文

テーブル自体を完全に削除します。跡形も残りません。構文は以下です。

DROP TABLE test;

こちらもWHEREなど条件指定ができません。また、ロールバックもできませんので、気を付けて実行しましょう。

まとめ

簡単に書けてしまうSQL文でしたが、プロジェクトなどで大事なデータを削除してしまわないように細心の注意が必要です。
重要なテーブルに対して削除を実行する際は、DBやテーブルのバックアップを取ったり、他のメンバとのダブルチェックなどをしてSQLを実行しましょう。
では良いSQLライフを。