UPDATEはSQLの中でも特に恐ろしい呪文
データベースに入れたデータは、永遠にそのままではありません。
引っ越せば住所が変わるし、誕生日が来れば年齢が変わります。
そんな時、データを修正するために使うのが「UPDATE(アップデート)」文です。
「なんだ、ただの上書き保存か(*´ω`*)」
そう思って本番環境で油断した瞬間、あなたのエンジニア人生は終わるかもしれません。
UPDATE文は、SQLの中でも恐ろしい「大量破壊兵器」になり得るからです。
今日は、震える指を抑えながら、安全にデータを書き換える方法を伝授します。
基本構文:セットで覚える「UPDATE SET WHERE」
UPDATE文を書くときは、以下の3つの単語をリズムよく唱えてください。
- UPDATE (このテーブルを更新するぞ)
- SET (この列を、この値に変えろ)
- WHERE (この条件の人だけな!)
UPDATE テーブル名 SET 列名 = 新しい値 WHERE 条件;
この3つはセットです。
特に最後の WHERE 。これが命綱です。
具体例:田中さんの年齢を修正する
では、「users」テーブルにいる「田中」さんが誕生日を迎えて、26歳になったとします。
年齢データを 25 から 26 に書き換えます。
UPDATE users SET age = 26 WHERE name = '田中';Code language: JavaScript (javascript)
これで完了です。
データベースの管理人は、「usersテーブルだな。名前が田中のやつを探して…いた! こいつのageを26に上書き!」という処理を一瞬で行います。
複数の列を同時に変えることもできます。カンマ , で区切るだけです。
-- 年齢と住所を同時に変更
UPDATE users SET age = 26, address = '東京' WHERE name = '田中';Code language: JavaScript (javascript)
※少し脱線しますが、「これだとすべての田中さんが26歳に更新されちゃう😨」と気付いたあなた。すばらしいです。
悪夢:WHEREを忘れた世界線
さて、ここからがホラー映画の時間です。
もし、先ほどの命令から WHERE を書き忘れたらどうなるか。
-- WHERE条件のない、絶対に実行してはいけないコード
UPDATE users SET age = 26;
管理人はこう解釈します。
「usersテーブルだな。条件指定なしか…ということは『全員』だな! よし、全員の年齢を26歳に上書き!」
実行した瞬間、完了です。
100万人の会員がいれば、100万人全員が26歳になります。
赤ちゃんも、お年寄りも、全員26歳です。
元のデータ?消えました。基本的には戻せません。
これが「UPDATE文の事故」です。
たった一行のミスで、サービスを停止させ、損害賠償問題に発展する。
SQLにおいて、省略は美徳ではありません。破滅への近道です。
防御策:いきなり撃たず、まず確認するべし
この悲劇を防ぐために、プロのエンジニアが必ずやっている儀式があります。
内容は単純で、「UPDATEの前に、SELECTで確認する」というものです。
いきなり更新命令を投げてはいけません。
まず、WHERE 以下の条件が正しいか、検索して確かめるのです。
1. まず検索する
SELECT * FROM users WHERE name = '田中';Code language: JavaScript (javascript)
「よし、田中さん1人だけが表示されたな。条件は合っている」
2. その後に更新する
UPDATE users SET age = 26 WHERE name = '田中';Code language: JavaScript (javascript)
この一手間を惜しむ人間は、いつか痛い目に遭います。
指差し確認です。「対象は田中、ヨシ!」と声に出してからエンターキーを押してください。
まとめ:更新ボタンは核のスイッチ
- UPDATE SET WHERE:この3つは三位一体です。切り離さないこと。
- WHERE忘れは死と思うこと:全データが同じ値になる。
- 事前のSELECT:標的確認を怠らない。
データの追加(INSERT)は、間違えても消せば済みます。
しかし、更新(UPDATE)による上書きは、元に戻せません。
UPDATE文を実行するときは、核ミサイルの発射ボタンを押すような気持ちで臨んでください。
その緊張感が、あなたのデータを守ります。


コメント