CHAPTER 1 · 16 LESSONS · 195 問
取り出す・絞り込む
表から欲しい列を選び、条件に合う行だけを取り出す。データを読む力の土台。
アプリを閉じても、書いた内容が残っている。あたりまえに感じるけれど、これは誰かがどこかにデータを保存しているということだよ。その保存場所が データベース で、そこに話しかけるための言葉が SQL だ。
SQL には、これまで学んだプログラミング言語と大きく違うところがある。「どうやるか」ではなく「何がほしいか」を書くという点だよ。JavaScript なら「配列を先頭から順に見て、条件に合うものを別の配列に入れて…」と手順を書いた。SQL では「この条件に合う行がほしい」とだけ書く。取りに行く手順はデータベースが考えてくれる。
データの入れ物は テーブル、つまり表だ。方眼紙のような形をしていて、たての並びを カラム(列)、よこの並びを レコード(行) と呼ぶ。本のデータなら、カラムは「タイトル」「著者」「ページ数」、レコードは本1冊ぶん。どのレコードも同じカラムをそろえて持っている、というのが表の強みだよ。
この章で覚えるのは、大きく3つの操作だ。
- 選ぶ — 表のどのカラムを見たいか
- 絞る — どの条件に合うレコードだけを見たいか
- 並べる — どの順に見せてほしいか
この3つを組み合わせるだけで、「著者が○○の本を、ページ数の多い順に、タイトルだけ表示する」といった問いに答えられるようになる。書き方は英語の文に近くて、慣れると読み下せるようになるよ。
絞り込みの条件は、等しい・大きい・小さいといった比較のほか、「○○を含む」というあいまいな一致や、「AかつB」「AまたはB」の組み合わせもできる。ここは JavaScript の条件分岐と発想が同じなので、すんなり入るはずだ。
ひとつ気をつけたいのが、値が入っていない状態の扱いだよ。SQL では「まだ何も入っていない」ことを特別な値で表し、これは0でも空文字でもない。普通の比較では引っかからないので、専用の書き方が要る。ここは初学者が必ず一度はまるところだ。
この章は SQL のすべての土台になる。この先で出てくる集計もテーブルの結合も、「選んで、絞って、並べる」の上に乗っているだけだよ。ここを固めておこう。
書き方の作法もここで身につけておこう。SQL は大文字と小文字を区別しないけれど、命令の部分を大文字で書くのが慣習だよ。そうすると、命令とテーブル名・カラム名が目で区別できる。長いクエリになるほど効いてくるので、最初からその形で書く癖をつけておくといい。
行の終わりに ; を付けるのも忘れずに。「ここまでが1つの命令」という区切りの合図だよ。付け忘れると、データベースは「まだ続きがあるのかな」と待ってしまう。
もうひとつ、SQL には結果の順番が保証されないという性質がある。並べ替えを指定しなければ、どの順で返ってくるかは決まっていない。たまたま思ったとおりに並んで見えても、それはたまたまだ。順番が意味を持つなら、必ず並べ替えを書こう。
JavaScript を先に学んだ人は、取り出した結果もまた表であるという点を意識しておくといい。1件だけ取り出しても、返ってくるのは「1行の表」だ。この感覚があると、後の章で結果をさらに絞ったりつないだりする話がすんなり入ってくるよ。
なお、この教材の SQL はあなたのスマホの中で動いている。書いたクエリがどこかのサーバーに送られることはないので、思いきり試して大丈夫だよ。エラーもたくさん出していい。データベースは書きまちがえたクエリに対して、どこがおかしいかをちゃんと教えてくれる。その読み方に慣れるのも、この章でやっておきたいことのひとつだよ。
この章のレッスン
選ぶ・絞る・並べる