MySQLのDELETE文とは?データを安全に削除するための完全ガイド

こんにちは。ゆうせいです。

今回は、MySQLの中でも特に慎重に扱う必要があるDELETE文について解説していきます。
名前の通り、「データを削除する」ための命令なのですが、使い方を間違えると大変なことに…!

とはいえ、ポイントをしっかり押さえれば怖くありません。
では、一緒に学んでいきましょう!


DELETE文ってなに?

データベースの「消しゴム」係

DELETE文は、テーブル内のデータの一部または全部を削除する命令です。
たとえば、「退職した社員の情報を削除する」といった場面で使います。

ただし!DELETE文は「消して終わり」で、元に戻せません
まるで消しゴムでノートを消したあとに「しまった!」となっても書き直せないのと同じです。


DELETE文の基本構文

DELETE FROM テーブル名
WHERE 条件;

これはとてもシンプルです。

  • 「このテーブルの中から」
  • 「この条件に当てはまる行を削除しなさい」

という命令になります。


DELETE文の使用例

例1:特定の社員を削除

DELETE FROM employees
WHERE id = 7;

この例では、「IDが7の社員のデータだけを削除する」という意味になります。

例2:部署ごとの削除

DELETE FROM employees
WHERE department = '契約社員';

これは「契約社員という部署に属するすべての社員を削除」します。


WHERE句を忘れると大惨事!

すべてのデータが消えます!

DELETE FROM employees;

この命令は非常に危険です!
テーブル内のすべての行が削除されてしまいます。

意図的にやることもありますが、そうでない場合は取り返しがつきません。


データの削除=テーブルそのものを消すことではない

ここでよくある誤解を解いておきます。

用語意味
DELETE文テーブル内の「中身」を消す
DROP文テーブルそのものを削除する(構造も含む)

つまり、DELETEは「データの中身だけ」、DROPは「テーブル全体ごと」消す命令です。


DELETE文の応用:JOINと一緒に使う

複数のテーブルを使って条件を絞り込む場合、JOINと組み合わせることも可能です。

例:他テーブルに一致するものを削除

DELETE e
FROM employees e
JOIN departments d ON e.department_id = d.id
WHERE d.name = 'アルバイト';

この例では、「アルバイトの部署にいる社員を削除する」という操作になります。


DELETEとTRUNCATEの違いは?

比較項目DELETETRUNCATE
WHERE句使える使えない(すべて削除)
ログ残る(細かく)残らない(高速)
AUTO_INCREMENTそのまま初期化される
用途条件付き削除テーブル全体の初期化

TRUNCATEは「リセットボタン」のようなイメージ。DELETEよりも軽い処理ですが、細かい制御はできません。


削除前に必ず確認!安全なDELETE文の書き方

SELECTで対象を確認する

SELECT * FROM employees WHERE id = 7;

まずこのように、削除対象を確認してからDELETE文を実行するようにしましょう。

LIMITで削除件数を絞る(MySQL限定)

DELETE FROM employees
WHERE department = '研修中'
LIMIT 3;

削除件数を制限して、安全にテストできます。


DELETE文のメリット・デメリット

項目内容
メリット不要なデータを効率よく消せる
メリット条件付きで削除できて柔軟
デメリット誤って実行すると元に戻せない
デメリットWHERE句のミスで大惨事になることも

特に開発環境と本番環境を間違えて実行すると…冷や汗モノです。


今後の学習の道しるべ

DELETE文を理解したあとは、次のステップに進みましょう:

  • トランザクション(BEGIN, COMMIT, ROLLBACK)
    → 間違えても取り消せる仕組み
  • 外部キー制約とON DELETE CASCADE
    → 関連するデータも自動で削除
  • DELETE vs TRUNCATE vs DROPの使い分け

さらに実務で安全に使うには、「ロールバック可能な状態」でDELETEするのが鉄則です。

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。