SQL初めてのSQL

Day 3書きかえる・設計する — INSERT/UPDATE/DELETEと表の設計

INSERT・UPDATE・DELETE — データを書きかえる3つの動き

追加・更新・削除の3つの文を読めるようになり、WHEREの付け忘れがどれほど怖いかを体で覚える。

SELECTは「見る」、この3つは「変える」

これまで練習してきた SELECT は、データを「見る」だけの安全な文でした。何回実行しても表の中身は変わりません。今日登場する INSERT・UPDATE・DELETE は違います。表の中身を実際に書きかえます。だからこそ、読めて意味がわかることがとても大切です。

  • INSERT(インサート)= 新しい行を追加する。名簿に新しい人を書き足すイメージ。
  • UPDATE(アップデート)= すでにある行の値を更新する。名簿の住所を書きかえるイメージ。
  • DELETE(デリート)= 行を削除する。名簿から一行を消しゴムで消すイメージ。
SQL
-- users テーブルに新しい1行を追加する
INSERT INTO users (name, age)
VALUES ('田中', 20);
INSERT は「どの列に」「どんな値を」入れるかをセットで書く
SQL
-- id が 1 の人の年齢を 21 に書きかえる
UPDATE users
SET age = 21
WHERE id = 1;
UPDATE は SET で「何を」、WHERE で「どの行を」変えるかを指定する
SQL
-- id が 1 の人の行を削除する
DELETE FROM users
WHERE id = 1;
DELETE は WHERE で「どの行を」消すかを指定する

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 に書きかえます。プロほどこの確認をサボりません。

SQL
-- (1) まず対象を目で確認する
SELECT * FROM users WHERE id = 1;
-- (2) 確認できたら、同じ条件で消す
DELETE FROM users WHERE id = 1;
「SELECTで下見 → 同じWHEREで実行」を口ぐせにする

AIにはこう聞く

「このDELETE文を実行すると、どの行が消えますか? WHEREの条件を日本語で説明してください」と聞くと、実行する前に対象を確かめられます。危険な操作こそ、実行より先にAIに読んでもらうと安心です。

読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。

理解度チェック

答えられれば、面接で説明できる状態に一歩近づきます。

Q1

`UPDATE users SET age = 0;` を実行すると、どうなりますか?

Q2

新しい行を1件「追加」したいとき、使う文はどれですか?

Q3

DELETE文を実行する前に、なぜ先に同じ条件でSELECTを実行しておくと安全なのか、初心者に説明してください。

記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。