導入
すでに登録されている行の値を変えたいとき――引っ越しで都市が変わった、価格を改定したい――に使うのが UPDATE です。CRUD の Update にあたります。
説明
UPDATE テーブル SET 列 = 新しい値 で「どの列をどう変えるか」を指定し、WHERE で「どの行を変えるか」を指定します。
UPDATE users SET city = '横浜' WHERE id = 1;
これで id = 1 の会員の city だけが「横浜」に変わります。複数の列を同時に変えるときは、カンマで区切ります。
UPDATE users SET age = 29, city = '京都' WHERE id = 3;
いまの値をもとに計算して更新することもできます。たとえば「モニターの価格を10%引きにする」なら次のようになります。
UPDATE products SET price = price * 0.9 WHERE name = 'モニター';
⚠ WHERE の付け忘れに注意。 WHERE を書かないと、テーブルの全行が書き換わります。
flowchart TB
G["UPDATE users SET city='東京' WHERE id=1<br/>→ 1行だけ変わる(安全)"]
B["UPDATE users SET city='東京'<br/>(WHERE なし)→ 全員が東京に!(事故)"]
UPDATE users SET city = '東京'; は全員が東京になってしまいます。更新の前に、同じ WHERE で SELECT して「対象がその行だけか」を確かめる習慣が安全です。
やってみよう
初期表示の UPDATE を実行して佐藤さん(id=1)を横浜に変え、SELECT id, name, city FROM users; で反映を確認しましょう。壊しても「DBを初期状態に戻す」で元に戻せます。
演習
users テーブルで、高橋さん(id=3)の年齢(age)を 23 に更新してください。
ヒント1を見る
変える列は SET age = 23、対象の行は WHERE id = 3 で指定します。
ヒント2を見る
UPDATE users SET age = 23 WHERE id = 3;