ゼロから始めるプログラム言語サイトのトップへ

第16回 SQL編 第3話 WHEREさん、今日は帰らないでください

第16回。全3ページを続けて読めます。

学習レクチャー・2026年9月15日更新

第16回 SQL編 第3話
WHEREさん、今日は帰らないでください

在庫を書き換える

品物が届いた。

手袋の在庫が増えたので、表を直すことにする。

KAZU「idが1の手袋を、在庫8にして。」

UPDATE supplies
SET stock = 8
WHERE id = 1;

UPDATE supplies は「suppliesを更新する」。

SET stock = 8 は「在庫数を8にする」。

WHERE id = 1 は「idが1の行を対象にする」。

ここでの「8にする」は、「8増やす」とは違う。元が4なら、変更後は8。12にはならない。

KAZU「日本語だと、つい『8追加して』とか言っちゃいそうだね。」

SQL「そこは結果が変わるので、区別してください。」

学習レクチャー・2026年9月15日更新

第16回 SQL編 第3話
WHEREさん、今日は帰らないでください

WHEREで対象を絞る

そして、この回の最重要人物がWHEREさんだ。

もし最後の条件を書かなければ、この文はテーブル内の全行を更新対象にする。手袋だけ直したかったのに、ペーパーもゴミ袋も在庫8になる。

KAZU「みんな仲良く8?」

SQL「在庫管理では困ります。」

「エラーが出ない」ことと「意図どおり」は同じではない。文法が正しくても、頼み方が間違っていれば、間違った仕事が正確に実行される。

そのため、変更する前に同じ条件で対象を確認する習慣が役に立つ。

SELECT id, item, stock
FROM supplies
WHERE id = 1;

ここで手袋の行が出ることを確認してから、更新を考える。変更後の結果や、変更件数も確かめたい。

学習レクチャー・2026年9月15日更新

第16回 SQL編 第3話
WHEREさん、今日は帰らないでください

変更を守る仕組みと実習

また、データを追加する命令は INSERT、行を削除する命令は DELETE だ。削除も対象条件を間違えると影響が大きいので、練習には専用のデータを使おう。

実際のシステムでは、権限やバックアップ、変更履歴、必要に応じたトランザクションなども組み合わせる。トランザクションは、関連する変更をひとまとまりとして扱う仕組みだ。ただし「何でも後から戻せる魔法」ではなく、確定前かどうかなどの条件がある。

KAZU「便利になるほど、確認が大事になるね。」

SQL「速く直せる道具は、速く間違えることもできます。」

KAZU「WHEREさん、今日は残業お願いします。」

【ミニテスト】

SET stock = 8 の意味は?

A.在庫を8増やす
B.在庫を8にする
C.在庫8の商品だけ探す

答え:B。数を指定して置き換える処理。

【小さな実習】

コードを書く前に、「どの行を」「どの値に変えるか」を一文で書いてみよう。対象を言葉にできないときは、更新する前に条件を整理するところから始めよう。