CHAPTER 5 · 4 LESSONS · 49 問
追加・更新・削除
読むだけでなく、行を足す・書き換える・消す。アプリからデータを動かす操作。
ここまでの章でやってきたのは、すべて読む操作だった。何度実行してもデータは変わらないし、書きまちがえても結果が出ないだけで済む。
この章は違うよ。データを書きかえる操作を扱う。行を足す、中身を書きかえる、行を消す。アプリでいうと、投稿する・編集する・削除するにあたる部分だ。読むだけのアプリはほとんど無いので、ここまで来てようやくアプリが作れるようになる。
覚える操作は3つ。
- 追加 — 表に新しい行を足す。どのカラムに何を入れるかを指定する
- 更新 — すでにある行の中身を書きかえる
- 削除 — 行を取り除く
書き方自体は難しくない。難しいのは取り返しがつかないという点のほうだよ。
読む操作で条件を書きまちがえても、変な結果が出るだけだった。更新と削除で条件を書きまちがえると、データが本当に壊れる。条件を書き忘れれば、表の全行が同じ値に書きかわるか、全行が消える。実際の現場でも起きる事故で、しかも「元に戻す」は用意されていない。
だから、身につけてほしい習慣がひとつある。書きかえる前に、同じ条件で読んでみることだよ。
- まず読む操作で、その条件に合う行を表示する
- 出てきた行が、まさに書きかえたい行だけかを目で確かめる
- 確かめてから、条件はそのままに書きかえる操作へ変える
ひと手間だけれど、この順にやるだけで事故はほとんど防げる。プロもやっていることだよ。
追加のときに気をつけたいのが、カラムの順番と値の順番をそろえることだよ。どのカラムに入れるかを省略して書くこともできるけれど、表の定義が変わったときに静かに壊れる。少し長くなっても、カラム名を書いておくほうが安全だ。
更新でよくやってしまうのが、すべてのカラムを書きかえようとすることだ。変えたいのが1つのカラムだけなら、そのカラムだけを指定すればいい。他のカラムはそのまま残る。全部書き直そうとすると、書き忘れたカラムが空になってしまうよ。
もうひとつ、まとめて書きかえられるという点も覚えておこう。条件に合う行が100件あれば、1回の命令で100件すべてが書きかわる。便利であると同時に、まちがえたときの被害も100件ぶんになるということだよ。
この章では、データを消さないという選択肢にも触れる。削除したように見せて、実は「消したという印」を立てるだけにしておく。そうすれば後から戻せるし、履歴も残る。実際のアプリでは、本当に行を消すことのほうが少なかったりするよ。
追加のときは、同じデータを二重に入れないことにも気を配りたい。送信ボタンが二度押されただけで同じ行が2つできる、というのはよくある不具合だよ。重複を許さない印を列につけておけば、データベース側で止めてくれる。
「まとめて実行して、途中で失敗したら全部なかったことにする」という仕組みもデータベースには備わっている。口座からお金を引いて別の口座に足す、といった片方だけ成功しては困る処理のためのものだよ。名前だけでも覚えておくと、いつか必要になったときに調べられる。
実務では、書きかえる前に元のデータを取っておくのも当たり前の作法だよ。大量の行を一度に書きかえるときは、まず対象の行を別の場所に控えておく。そうすれば、まちがえても戻せる。この教材の中ではいくら壊しても大丈夫だけれど、本物のデータを相手にするときは思い出してほしい。
読む・集める・つなぐ・書きかえる。ここまでそろえば、SQL でできることはひととおり手に入ったことになる。あとは自分のアプリにつないで、実際にデータを動かしてみる番だよ。