追加・更新・削除

INPUT · スライド

値を書きかえる

01 / 05

値だけ直したい

道具の数がへった、置き場が変わった。そのたびに行を消して入れなおすのは大げさだよね。

もうある行の値を書きかえるのが UPDATE。直したい列だけをねらって変えられるよ。

02 / 05

`UPDATE` の形

3つの部分に分かれているよ。

  • UPDATE tools … どの表か
  • SET stock = 5 … どの列をどの値にするか
  • WHERE id = 2 … どの行か

SET は「セットする」、つまり値を入れなおすという意味だよ。

UPDATE tools SET stock = 5  WHERE id = 2;SELECT * FROM tools ORDER BY id;

実行結果

1 | なわとび | たな | ひもが古い | 12
2 | ボール | かご |  | 5
3 | ゼッケン | ロッカー |  | 20
4 | タイマー | たな | でんちを交換 | 3
5 | コーン | そうこ |  | 15
6 | ふえ | ロッカー | よく使う | 4

03 / 05

いくつもの列を一度に

SET のうしろはカンマで区切れる。1文で何列でも直せるよ。

右がわに書けるのは値だけじゃない。

  • SET memo = NULL … 値を空にもどす
  • SET stock = stock + 5 … いまの値をもとに計算する
UPDATE tools  SET place = 'そうこ', stock = 10  WHERE id = 1;SELECT * FROM tools ORDER BY id;

実行結果

1 | なわとび | そうこ | ひもが古い | 10
2 | ボール | かご |  | 8
3 | ゼッケン | ロッカー |  | 20
4 | タイマー | たな | でんちを交換 | 3
5 | コーン | そうこ |  | 15
6 | ふえ | ロッカー | よく使う | 4

04 / 05

`WHERE` を忘れると全部変わる

ここがこの章でいちばん大事なところ。WHERE を書かないと、表の全部の行が同じ値に書きかわるよ。

エラーは出ない。静かに全行が変わるから気づきにくいんだ。

UPDATE tools SET place = 'そうこ';SELECT * FROM tools ORDER BY id;

実行結果

1 | なわとび | そうこ | ひもが古い | 12
2 | ボール | そうこ |  | 8
3 | ゼッケン | そうこ |  | 20
4 | タイマー | そうこ | でんちを交換 | 3
5 | コーン | そうこ |  | 15
6 | ふえ | そうこ | よく使う | 4

05 / 05

先に `SELECT` でねらいを確かめる

安全なやり方は決まっている。同じ WHERESELECT して対象を見てから書きかえることだよ。

2行返ってきたなら、書きかわるのもその2行。思ったより多かったら条件を直せばいい。ここから書いてみよう。

SELECT id, name, place FROM tools  WHERE place = 'ロッカー';

実行結果

3 | ゼッケン | ロッカー
6 | ふえ | ロッカー