追加・更新・削除

INPUT · スライド

行を消す

01 / 05

行ごといらなくなったら

こわれて捨てた道具の行は、もう台帳に置いておく意味がないよね。

行ごと消すのが DELETE。列の値を直す UPDATE とちがって行まるごとが対象だから、SET は書かないよ。

02 / 05

`DELETE FROM` の形

DELETE FROM 表名 WHERE 条件; の形。条件の書き方は SELECT のときとまったく同じだよ。

列を選ぶ場面がないので、DELETE のうしろに列名は書かない。ここが SELECT との見た目のちがいだよ。

DELETE FROM tools WHERE id = 4;SELECT * FROM tools ORDER BY id;

実行結果

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

03 / 05

条件に合う行はまとめて消える

WHERE に当たる行が2行あれば、2行とも消える。1行だけ消える保証はないよ。

id のように1行に決まる条件と、place のように何行にも当たる条件のちがいを意識しよう。

DELETE FROM tools  WHERE place = 'ロッカー';SELECT * FROM tools ORDER BY id;

実行結果

1 | なわとび | たな | ひもが古い | 12
2 | ボール | かご |  | 8
4 | タイマー | たな | でんちを交換 | 3
5 | コーン | そうこ |  | 15

04 / 05

`WHERE` を書かないと全部消える

WHERE を付けない DELETE は、表の中身を全部消す。実際に走らせるとこうなるよ。

表そのものは残るけれど、行が1つもないので確認の SELECT は何も返さない。

こわがらなくていい。確かめる手順を知っていればいいだけだよ。

DELETE FROM tools;SELECT * FROM tools ORDER BY id;

実行結果

(1行も返ってこない)

05 / 05

消す前に数えてみる

消す前に、同じ条件で SELECT して対象を見るのが安全なやり方。件数だけ知りたいなら COUNT(*) が早いよ。

2行と分かってから消せば、思ったより消えることはない。ここから書いてみよう。

SELECT COUNT(*) FROM tools  WHERE stock < 5;

実行結果

2