
SQLのDELETEとは?データを削除するDELETE文の基本的な使い方
DELETE文は、テーブルからデータを削除するときに使います。本記事では、DELETE文の基本的な使い方と、安全にデータ削除を行うための方法、最後にDELETE文の応用的な使い方について解説します。
1.DELETE文の基本的な使い方
まずはDELETE文の基本的な使い方についてです。
1-1.特定の条件を満たすデータを削除する
特定のデータだけを削除するときは、WHERE句を使って対象のレコードを指定します。
DELETE FROM [テーブル名] WHERE [条件];
DELETE文で使用するWHERE句の考え方は、SELECT文で使用するWHERE句の考え方と同じです。
(例) userテーブルの id が 5 のデータを削除する場合
DELETE FROM user WHERE id = 5;
1-2.全データを削除する
テーブルのデータを全て削除するときは、DELETE FROMの後にテーブル名を書くだけです。
DELETE FROM [テーブル名];
このコマンドを投げると、指定したテーブルの全てのデータを削除します。
(例) userテーブル内の全データを削除する場合
DELETE FROM user;
2.安全にデータ削除を行うために
ここまで見てきたようにDELETEはデータを削除するコマンドです。そのため、使用には細心の注意を払いましょう。ここでは、より安全にデータ削除を行うための方法について解説します。
・SELECTと組み合わせて使う
DELETEをかける前に、まずSELECTで取得した結果を確認しましょう。取得結果を確認後、問題がなければDELETEをかけるようにしましょう。
・確実性の高い条件をつける
削除対象のデータのみを削除するために、DELETEをかける際は極力条件を絞り込むとより安全にデータ削除が行えます。例えば、userテーブルのidが3、userNameが‘user03’のデータを削除したい場合、idかuserNameのどちらか一方のみでデータを絞り込むのではなく、idとuserNameどちらも使って条件を絞り込みましょう。
(例) userテーブルの idが3、userNameが‘user03’のデータを削除する場合
DELETE FROM user WHERE id = 3 AND username = ‘user03’;
また、例えばデータが1件しか削除されないことが確定している場合は、以下のようにLIMITを用いると、仮に条件ミスで全削除となってしまった場合でも、削除データ件数を1件に抑えることが出来ます。
(例) 削除対象データ(userテーブルの idが3、userNameが‘user03’のデータ)の件数が1件の場合
DELETE FROM user WHERE id = 3 AND username = ‘user03’ LIMIT 1;
3.DELETE文の応用的な使い方
これまではDELETE文の基本的な使い方、安全にデータ削除を行う方法について解説してきました。ここではDELETE文の応用的な使い方について見ていきましょう。
・where句にLIKE句を使う
SELECT文と同じようにDELETE文でもLIKE句を使用することができます。
(例) userテーブルの userName が 「user01」で始まるレコードのみを削除する場合
DELETE FROM user WHERE userName LIKE ‘user01%’;
・[補足] 全件削除する場合は TRUNCATE文 を使うことも検討する
データを全件削除する場合は、DELETE文ではなくTRUNCATE文を使うことも検討しましょう。DELETE文でデータを全削除するよりTRUNCATE文でデータを全削除する方がより速く削除処理が実行できます。削除対象のデータ件数が多くなってくると、処理速度の差も大きくなってきますので、件数が多いデータを全削除する場合はTRUNCATE文を使うことを検討してみてください。
ただし、本記事では細かい説明は省きますが、「DELETE文ではロールバックが出来るがTRUNCATE文 ではロールバックが出来ない」等といった違いもあるので、用途に応じて使い分ける必要があります。
4.まとめ
以上、DELETE文の使い方について解説しました。誤って大切なデータを削除してしまった。。。などとならないように注意して扱いましょう。安全にデータ削除を行うためにもまずは基本を押さえてから応用的な使い方もマスターしていきましょう。
コメント