Progate SQLコース3 復習

  • サブクエリ
    クエリの中に入れるクエリ、2つ以上のクエリを実行する際に実行するクエリを1つにまとめることが出来る
    ex)ウィルよりも得点数が多い選手を取得する
SELECT name
FROM players
WHERE goals > (
  SELECT goals
  FROM players
  WHERE name="ウィル"
)
;
  • AS
    取得したカラム名を別名に変更する
    ex)取得したデータのカラム名をnameから"身長180cm以上の選手"に変更する
SELECT name AS "身長180cm以上の選手"
FROM players
WHERE height >= 180;
  • テーブルを紐付ける
    紐づける元のテーブルに外部キー、紐づける先のテーブルに主キーを設定する

  • JOIN
    複数のテーブルを1つに結合する
    ex)playersテーブルのcountry_idとcountriesテーブルのidを結合する

SELECT *
FROM players
JOIN countries
ON players.country_id=countries.id;

データの取得はテーブルの結合後に実行される 結合するテーブルに同名のカラムがあった場合は、テーブル名.カラム名で指定する

SELECT players.name, countries.name
FROM players
JOIN countries  
ON players.country_id=countries.id;

また外部キーがNULLの場合、実行結果に反映されない

  • LEFT JOIN
    FROMで指定したテーブルのレコードがNULLでも実行結果に表示される
SELECT *
FROM players
LEFT JOIN teams
ON players.previous_team_id=teams.id;
  • 複数テーブルの結合
    テーブル毎に結合方法と結合するカラム名を指定する  
SELECT *
FROM players
JOIN countries
ON players.country_id=countries.id
LEFT JOIN teams
ON players.previous_team_id=teams.id;