Day 3・書きかえる・設計する — INSERT/UPDATE/DELETEと表の設計
INSERT・UPDATE・DELETE — データを書きかえる3つの動き
追加・更新・削除の3つの文を読めるようになり、WHEREの付け忘れがどれほど怖いかを体で覚える。
SELECTは「見る」、この3つは「変える」
これまで練習してきた SELECT は、データを「見る」だけの安全な文でした。何回実行しても表の中身は変わりません。今日登場する INSERT・UPDATE・DELETE は違います。表の中身を実際に書きかえます。だからこそ、読めて意味がわかることがとても大切です。
- INSERT(インサート)= 新しい行を追加する。名簿に新しい人を書き足すイメージ。
- UPDATE(アップデート)= すでにある行の値を更新する。名簿の住所を書きかえるイメージ。
- DELETE(デリート)= 行を削除する。名簿から一行を消しゴムで消すイメージ。
-- users テーブルに新しい1行を追加する
INSERT INTO users (name, age)
VALUES ('田中', 20);-- id が 1 の人の年齢を 21 に書きかえる
UPDATE users
SET age = 21
WHERE id = 1;-- id が 1 の人の行を削除する
DELETE FROM users
WHERE id = 1;WHEREを付け忘れると全件が変わる・消える
UPDATE や DELETE で WHERE を書き忘れると、「どの行を」の指定が無いので、表の全部の行が対象になります。`DELETE FROM users;` は users の全員を一瞬で消します。`UPDATE users SET age = 0;` は全員の年齢を 0 にします。これは実務で本当に事故が起きる一番怖いミスです。
WHEREなし(全件が対象)
DELETE FROM users; と書くと、全員の行が消える。取り返しがつかない。
WHEREで対象を絞る
DELETE FROM users WHERE id = 1; なら、消えるのは id が 1 の1行だけ。
事故を防ぐ一番かんたんな習慣は、「消す前・変える前に、まず SELECT で対象を確認する」ことです。同じ WHERE 条件で SELECT を実行し、表示された行が本当に自分の変えたい行だけかを目で見てから、DELETE や UPDATE に書きかえます。プロほどこの確認をサボりません。
-- (1) まず対象を目で確認する
SELECT * FROM users WHERE id = 1;
-- (2) 確認できたら、同じ条件で消す
DELETE FROM users WHERE id = 1;AIにはこう聞く
「このDELETE文を実行すると、どの行が消えますか? WHEREの条件を日本語で説明してください」と聞くと、実行する前に対象を確かめられます。危険な操作こそ、実行より先にAIに読んでもらうと安心です。
読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
`UPDATE users SET age = 0;` を実行すると、どうなりますか?
新しい行を1件「追加」したいとき、使う文はどれですか?
DELETE文を実行する前に、なぜ先に同じ条件でSELECTを実行しておくと安全なのか、初心者に説明してください。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。