あしあと

明日の自分への情報発信

SQLの学習(2日目)

今日もSQLとWeb技術の学習

 

サブクエリ

SQLではクエリの中にクエリを入れることができ、これをサブクエリという。

複雑なデータを取得するときに用いる。サブクエリを使うときは()で囲うが、セミコロンは不要。

f:id:keropp1234:20200114175550p:plain

 

 

サブクエリを含むクエリを扱う場合、サブクエリのデータを取得してからメインの方のクエリが実行される。

f:id:keropp1234:20200114175733p:plain

 

カラム名を指定できるAS

ASを使うことでカラム名の指定ができるようになる。下の画像ではgoalsだったものがウィルの得点数となっており、何のデータがわかりやすくなっている。

f:id:keropp1234:20200114180329p:plain

 

テーブル同士の紐付け

テーブルを紐づけるには外部キーと主キーを使う。外部キーと主キーを一致させることでそのデータ同士が紐づけられる。

f:id:keropp1234:20200114181329p:plain

 

紐付けすることで一つのテーブルでは複数箇所直さなければいけないことも、複数テーブルを紐付けすることで1箇所直せば他にも反映されるようにできる。

f:id:keropp1234:20200114201851p:plain

 

JOIN〜テーブルの結合〜

複数のテーブルを結合したい場合はJOINを使う。JOINで繋げたいテーブルを選択し、ONで条件を指定することで結合することができる。結合したテーブルは一つのテーブルとして扱うことができる。

 

f:id:keropp1234:20200114202731p:plain

 

結合条件は、「ON テーブル名.カラム名 = テーブル名.カラム名で指定する。画像のようにJOINが含まれたクエリではまずJOINが実行され、そのごSELECTが実行される。

なおSELECTの「*」は全対象という意味。

f:id:keropp1234:20200114202736p:plain

 

複数のテーブルに同じ名前のカラムがある場合、「テーブル名.カラム名」とすることでテーブル名を指定することで任意のカラムを取得できる。

f:id:keropp1234:20200114203432p:plain

 

WHEREでも同じような指定ができる。

f:id:keropp1234:20200114203618p:plain

 

以下クエリの実行順序。クエリは取得するテーブルを形成してから実行するので、FROM ON,JOINを先に実行する。

f:id:keropp1234:20200114203646p:plain

 

NULLを含んだ結合テーブルの実行結果。

なお外部キーがNULLのレコードは実行結果に含まれないため、表示されない。

f:id:keropp1234:20200114205552p:plain

 

NULLを含んだ実行の表示

LEFT JOINを使えばNULLを含んだ表示が可能になる。

すると外部キーがNULLのレコードも表示される。

f:id:keropp1234:20200114210228p:plain

 

3つ以上のテーブルの結合

JOINは一つのクエリで複数回使用できる。ただしFROMは一つでいいので注意すること。まぁFROMに結合していくので何度も使うのもおかしな話だが。

f:id:keropp1234:20200114210623p:plain