CHAPTER 5 · 4 LESSONS · 49 問

追加・更新・削除

読むだけでなく、行を足す・書き換える・消す。アプリからデータを動かす操作。

ここまでの章でやってきたのは、すべて読む操作だった。何度実行してもデータは変わらないし、書きまちがえても結果が出ないだけで済む。

この章は違うよ。データを書きかえる操作を扱う。行を足す、中身を書きかえる、行を消す。アプリでいうと、投稿する・編集する・削除するにあたる部分だ。読むだけのアプリはほとんど無いので、ここまで来てようやくアプリが作れるようになる。

覚える操作は3つ。

  • 追加 — 表に新しい行を足す。どのカラムに何を入れるかを指定する
  • 更新 — すでにある行の中身を書きかえる
  • 削除 — 行を取り除く

書き方自体は難しくない。難しいのは取り返しがつかないという点のほうだよ。

読む操作で条件を書きまちがえても、変な結果が出るだけだった。更新と削除で条件を書きまちがえると、データが本当に壊れる。条件を書き忘れれば、表の全行が同じ値に書きかわるか、全行が消える。実際の現場でも起きる事故で、しかも「元に戻す」は用意されていない。

だから、身につけてほしい習慣がひとつある。書きかえる前に、同じ条件で読んでみることだよ。

  • まず読む操作で、その条件に合う行を表示する
  • 出てきた行が、まさに書きかえたい行だけかを目で確かめる
  • 確かめてから、条件はそのままに書きかえる操作へ変える

ひと手間だけれど、この順にやるだけで事故はほとんど防げる。プロもやっていることだよ。

追加のときに気をつけたいのが、カラムの順番と値の順番をそろえることだよ。どのカラムに入れるかを省略して書くこともできるけれど、表の定義が変わったときに静かに壊れる。少し長くなっても、カラム名を書いておくほうが安全だ。

更新でよくやってしまうのが、すべてのカラムを書きかえようとすることだ。変えたいのが1つのカラムだけなら、そのカラムだけを指定すればいい。他のカラムはそのまま残る。全部書き直そうとすると、書き忘れたカラムが空になってしまうよ。

もうひとつ、まとめて書きかえられるという点も覚えておこう。条件に合う行が100件あれば、1回の命令で100件すべてが書きかわる。便利であると同時に、まちがえたときの被害も100件ぶんになるということだよ。

この章では、データを消さないという選択肢にも触れる。削除したように見せて、実は「消したという印」を立てるだけにしておく。そうすれば後から戻せるし、履歴も残る。実際のアプリでは、本当に行を消すことのほうが少なかったりするよ。

追加のときは、同じデータを二重に入れないことにも気を配りたい。送信ボタンが二度押されただけで同じ行が2つできる、というのはよくある不具合だよ。重複を許さない印を列につけておけば、データベース側で止めてくれる。

「まとめて実行して、途中で失敗したら全部なかったことにする」という仕組みもデータベースには備わっている。口座からお金を引いて別の口座に足す、といった片方だけ成功しては困る処理のためのものだよ。名前だけでも覚えておくと、いつか必要になったときに調べられる。

実務では、書きかえる前に元のデータを取っておくのも当たり前の作法だよ。大量の行を一度に書きかえるときは、まず対象の行を別の場所に控えておく。そうすれば、まちがえても戻せる。この教材の中ではいくら壊しても大丈夫だけれど、本物のデータを相手にするときは思い出してほしい。

読む・集める・つなぐ・書きかえる。ここまでそろえば、SQL でできることはひととおり手に入ったことになる。あとは自分のアプリにつないで、実際にデータを動かしてみる番だよ。

この章のレッスン

データを書きかえる

  1. 49行を足すINSERT INTO で新しい行を足そう。書き込んだあとは SELECT で確かめるのが基本だよ。 問題へ
  2. 50値を書きかえるUPDATE で行の値を直そう。どの行に効かせるかを WHERE で決めるのがいちばん大事だよ。 問題へ
  3. 51行を消すDELETE で行を消そう。WHERE を書かないと全行消えることを、実際の結果で確かめるよ。 問題へ
  4. 52追加・更新・削除 総合演習章のまとめ。基礎問題はなく、練習10問で書き込みとこれまでの読み方を組み合わせるよ。 問題へ

これがこのコースの最後の章。