見出し画像

【プロゲート】SQL SQL IIIの学習内容まとめ

SQL III

1.playersテーブル

SQLを使いこなそう
・このレッスンでは、複数テーブルと新しいクエリの書き方を用いて、
これまでは取得できなかったデータを取得する
・より高度なデータ分析を行ってみよう!

このレッスンからの新しいテーブル
今回はサッカーチームの分析をする

playersテーブル
わんこの好きなサッカーチームの選手情報を保存したテーブルを用意した
・1年間の選手データが入っている
・まずは、学習コース1, 2の内容でplayersテーブルを分析してみよう

2.サブクエリ

2つのクエリを使ってみよう
2個もクエリを書かないとデータ取得ができなくて面倒
・では、このようなときに役立つサブクエリを教える
・サブクエリを使えば、このような場合にも1個のクエリでデータ取得ができるようになる

サブクエリとは
SQLでは、クエリの中に他のクエリを入れることができる
・この他のクエリをサブクエリと言う
・2つ以上のクエリを1つにまとめることができるので、より複雑なデータを取得する際に使われる
・「ウィルより得点数の多い選手名」を調べている

サブクエリの書き方
( )で囲むことで、サブクエリを使用できる
・サブクエリの書き方は基本的に通常のクエリと同じだが、()内にセミコロン(;)は不要
・セミコロン(;)はクエリの最後にだけ書く

サブクエリの実行順番
サブクエリを含むクエリの場合、サブクエリが実行された後、外側にあるクエリが実行される

3.AS

ASの使い方
ASを使うことでカラム名などに別名を定義することができる
・「カラム名 AS "名前"」で、カラム名に定義する名前を指定する

4.countriesテーブル

countriesテーブル
国ごとのデータも見てみる
・新しく国ごとのサッカーランキングが載っているテーブルを用意した

5.テーブルを紐づける

テーブルを紐づける(1)
選手のデータと国ごとのデータを一緒に使うことはできないか?
・出身国ごとに選手の特徴があるかを分析してみたい
・複数テーブルを一緒に使えるようにすることは可能
・playersテーブルとcountriesテーブルを一緒に使う準備をする

テーブルを紐づける(2)
テーブル同士を一緒に使うためには、外部キーが設定されたカラムと主キーが設定されたカラムを用意する
・もともとcountriesテーブルに主キー(id)はあったから、playersテーブルにだけ外部キー(country_id)を追加する
・同じ数字が入っているレコード同士が紐づいている

テーブルが紐づく仕組み
テーブルを紐づけるために、外部キーと主キーを使う
・外部キーで他のテーブルにある主キーを指定することで、テーブル同士を紐付けることができる

テーブルを紐づけるメリット
カラムを追加するのではなく、countriesテーブルに紐づけることは様々な利点がある
・その1つとして、データの管理のしやすさがある

6.JOIN(1)

テーブルの結合
もっと見やすくする方法はないか?
・実は、紐付いたテーブル同士はJOINを使うことで合体させることができる
・それをテーブルの結合と言うが、結合したテーブルは1つのテーブルと同じようにデータを取得することができる

JOINとは
JOINは複数のテーブルを1つに結合したいときに使う
・ONで条件を指定して、テーブルAにテーブルBを結合する
・結合したテーブルは1つのテーブルとしてデータを取得することができる

結合条件
結合条件は、「ON テーブル名.カラム名 = テーブル名.カラム名」で指定する
・playersテーブルのcountry_idとcountriesテーブルのidを紐づけて結合している

JOINの実行順序
JOINを含んだクエリでは、はじめにJOINが実行される
・その次に、結合されたテーブルに対してSELECTが実行される

7.JOIN(2)

JOINを活用したデータ取得
JOINしたテーブルをみるとnameというカラム名が2つある
・どっちかのテーブルのnameだけを取得したい時に指定できなくて困る
・複数テーブルでカラムを指定する方法はある

複数テーブルでのカラムの指定(1)
複数のテーブルに同じカラム名が存在するときは、「テーブル名.カラム名」で指定しなければならない
・例えば、図のようにnameカラムが複数のテーブルにあるときは、「それぞれのテーブル名.name」で指定する

複数テーブルでのカラムの指定(2)
「テーブル名.カラム名」を用いたカラム指定は、WHERE内でも使える
・複数テーブルを扱うときは、異なるテーブルで同じカラム名が存在する場合がある

全体実行順序の確認
GROUP BYなどを含んだ実行順序を確認する
・SQLは、取得するテーブルを形成してから検索を行うので、FROM・JOINが先に行われる

8.teamsテーブル

teamsテーブル(1)
データベースでは、テーブルは2つだけじゃなく複数個作れる
・チームの情報を保存したteamsテーブルを用意する
・playersテーブルには外部キーとしてprevious_team_idを追加する

teamsテーブル(2)
・前年も同じチームにいた選手の外部キー(previous_team_id)はNULL
・外部キーにNULLがあるときはJOINを使うことはできるか?
・JOINを使うことはできるが、NULLのレコードは飛ばされて実行結果には反映されない
・NULLのレコードが反映されないことを確かめる

NULLを含んだ場合の実行結果
JOINを使った結合は、FROMで指定したテーブルを基準に実行される
・ただし、外部キーがNULLのレコードは、実行結果に表示されない

9.LEFT JOIN

NULLの場合の取得
NULLのレコードも取得して見比べてみたい
・そんなときは、LEFT JOINを使う
・LEFT JOINを使うと、外部キーがNULLのレコードも実行結果に表示できる

LEFT JOINとは
LEFT JOINを使うことで、FROMで指定したテーブルのレコードを全て取得できる
・外部キーがNULLのレコードもNULLのまま実行結果に表示される

10.3つのテーブル結合

3つ以上のテーブル結合
例えば、3つのテーブルも同時に結合できるんか?
・JOINを複数回使うことで複数のテーブルを結合できる

複数テーブルのJOIN
JOINは1つのクエリで、複数回使用できる
・JOINを複数回使用しても、FROMは1度だけ書けば大丈夫なので注意

11.総合演習

総合演習
難しいと思うときこそ、何度も繰り返して勉強することが大事
・応用問題を用意した
・わからない問題があったら焦らずにスライドを見返す

この記事が気に入ったらサポートをしてみませんか?