Progate SQLコース3 復習
- サブクエリ
クエリの中に入れるクエリ、2つ以上のクエリを実行する際に実行するクエリを1つにまとめることが出来る
ex)ウィルよりも得点数が多い選手を取得する
SELECT name FROM players WHERE goals > ( SELECT goals FROM players WHERE name="ウィル" ) ;
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;