【SQL初心者向け】DELETE文は「焼却炉」だ!ゴミ箱には戻らない完全抹殺の恐怖

データベース

DELETE文こわい

パソコンでファイルを削除すると、「ゴミ箱」に入ります。間違って消しても、「元に戻す」を押せば復活します。

まず、この優しい仕様に慣れきった現代人に注意喚起となります。

データベースの「DELETE(デリート)」文は、ゴミ箱ではありません。

「焼却炉」です。

実行した瞬間、データは跡形もなく消滅します。

神に祈ろうが画面を叩こうが、基本的に二度と戻ってきません。今日は、この取り扱い注意の「抹殺ボタン」について解説します。


基本構文:シンプルすぎて怖い

DELETE文の書き方は、拍子抜けするほど簡単です。「どこから(FROM)」「どの条件で(WHERE)」消すか。これだけです。

<strong>DELETE FROM テーブル名 WHERE 条件;</strong>Code language: HTML, XML (xml)

例えば、「users」テーブルから「田中」さんを削除する場合。

<strong>DELETE FROM users WHERE name = '田中';</strong>Code language: HTML, XML (xml)

これで完了です。確認画面も出ません。

「本当にいいですか?」なんて甘い言葉はかけてくれません。エンターキーを押した瞬間、田中さんはデジタルの世界から蒸発します。


悪夢再び:WHEREを忘れたら「虚無」

前回のUPDATE文の記事で、「WHEREを忘れると全員書き換わる」という話をしました。DELETE文でWHEREを忘れるとどうなるか。

ご想像の通りです。

<strong>-- 破滅の呪文
DELETE FROM users;</strong>Code language: HTML, XML (xml)

「usersテーブルから、削除せよ」
「条件は? ない? OK、全部だな!」

倉庫の中身が空っぽになります。

100万人の顧客データが一瞬で「無」に帰します。明日から会社に行けなくなるレベルの大事故です。

DELETE文を使うときは、UPDATE文同様に指差し確認が必要です。

必ず、先にSELECT文で対象を確認してから実行する癖をつけてください。


プロの常識:実は消さずに「隠している」

ここまで脅しておいてなんですが、実際の開発現場ではDELETE文をあまり使いません。

「えっ、データ消したいときはどうするの?」

「論理削除」というテクニックを使います。

これはデータを本当に消すのではなく、「削除済み」というラベルを貼って見えなくするだけの手法です。

テーブルに is_deleted やdel_flgといった、削除フラグという列を作っておきます。

削除ボタンが押されたら、その列を1(削除済み)に書き換える(UPDATEする)。

表示するときは「削除フラグが0のものだけ」を表示する(整数か?文字か?といった具体的な仕様は特に決まりはないので、プロジェクトに従うのがいいでしょう)

こうすれば画面上は消えたように見えますが、データベースの奥底にはデータが残っています。

「間違って消しちゃった!戻してくれとユーザーが泣きついてきても、削除フラグを0に戻すだけで復活できます。

  • 物理削除:DELETE文で本当に消します。焼却処分です。
  • 論理削除:UPDATE文で隠します。死んだふりをしています。

Webサービスの「退会」処理のほとんどは、この「死んだふり」です。

データは資産です。簡単には捨てないのが大人の知恵です。


まとめ:消すときは震えよう

  • DELETE FROM WHERE:条件を忘れると全消去。
  • 復元不可能:ゴミ箱はない。バックアップがなければまず即死。
  • 論理削除:本当は消さずに隠すのがプロのやり方。

DELETE文は、データベース操作の中でもかなり恐ろしめの命令です。

実務では、バックアップなどの手段でデータを復元するのももちろん不可能ではないですが、個人のパソコンでデータベースを復元するのとでは次元が違うほど大変です。

場合によっては、大勢の人が巻き込まれます。

そのキーを押すときは、指先が震えるくらいの緊張感を持って、「このレコードは本当に削除していいのか?」とご自身に問いかけてください。

コメント

タイトルとURLをコピーしました