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の違いは?
比較項目 | DELETE | TRUNCATE |
---|---|---|
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年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。