SQLの学習(2日目)
今日もSQLとWeb技術の学習
サブクエリ
SQLではクエリの中にクエリを入れることができ、これをサブクエリという。
複雑なデータを取得するときに用いる。サブクエリを使うときは()で囲うが、セミコロンは不要。
サブクエリを含むクエリを扱う場合、サブクエリのデータを取得してからメインの方のクエリが実行される。
カラム名を指定できるAS
ASを使うことでカラム名の指定ができるようになる。下の画像ではgoalsだったものがウィルの得点数となっており、何のデータがわかりやすくなっている。
テーブル同士の紐付け
テーブルを紐づけるには外部キーと主キーを使う。外部キーと主キーを一致させることでそのデータ同士が紐づけられる。
紐付けすることで一つのテーブルでは複数箇所直さなければいけないことも、複数テーブルを紐付けすることで1箇所直せば他にも反映されるようにできる。
JOIN〜テーブルの結合〜
複数のテーブルを結合したい場合はJOINを使う。JOINで繋げたいテーブルを選択し、ONで条件を指定することで結合することができる。結合したテーブルは一つのテーブルとして扱うことができる。
結合条件は、「ON テーブル名.カラム名 = テーブル名.カラム名」で指定する。画像のようにJOINが含まれたクエリではまずJOINが実行され、そのごSELECTが実行される。
なおSELECTの「*」は全対象という意味。
複数のテーブルに同じ名前のカラムがある場合、「テーブル名.カラム名」とすることでテーブル名を指定することで任意のカラムを取得できる。
WHEREでも同じような指定ができる。
以下クエリの実行順序。クエリは取得するテーブルを形成してから実行するので、FROM ON,JOINを先に実行する。
NULLを含んだ結合テーブルの実行結果。
なお外部キーがNULLのレコードは実行結果に含まれないため、表示されない。
NULLを含んだ実行の表示
LEFT JOINを使えばNULLを含んだ表示が可能になる。
すると外部キーがNULLのレコードも表示される。
3つ以上のテーブルの結合
JOINは一つのクエリで複数回使用できる。ただしFROMは一つでいいので注意すること。まぁFROMに結合していくので何度も使うのもおかしな話だが。