\ プログラミング学習奮闘記録 /

Progate学習メモ SQL③【より高度なデータ分析】

目次

2つのクエリを使う:サブクエリ

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

【書き方例】

prayerテーブルで、アシタカの得点より高い点数の選手を検索する

SELECT name

FROM players

WHERE goals > (  ・・・ 

 SELECT name

 FROM players

 WHERE name = “アシタカ” ・・・ 

);

  1. ( )内でアシタカの得点数を算出
  2. アシタカの点数より高い点数の選手を検索

【サブクエリのポイント】

  • ( )内にセミコロン;は不要
  • サブクエリが実行された後、クエリが実行される

データを読みやすくする AS

【ASの使い方】

SELECT goals AS “アシタカの得点数”

FROM players

WHERE name = “アシタカ”;

  • カラム名 AS “名前”」で、カラム名に定義する名前を指定する
  • リスト

テーブルを紐づける

テーブル同士を一緒に使うためには、外部キーが設定されたカラムと主キーが設定されたカラムを用意する。

テーブルを紐づけることで管理しやすくなる。

テーブルの結合 JOIN

JOINは複数のテーブルを1つに結合したいときに使う

結合したテーブルは1つのテーブルとしてデータを取得できる

【書き方】

SELECT*

FROM テーブルA

JOIN テーブルB

ON テーブルA.カラム名= テーブルB.カラム名;

【書き方例】

playersテーブルのcountry_idとcountriesテーブルのidを紐づけて結合する

SELECT *

FROM players

JOIN countrys

ON players.cocuntry_id = countrys.id;

  • 実行順序は、まずJOINが実行され、その後SELECTが実行される
  • 外部キーがNULLのレコードは、実行結果に表示されない

複数テーブルでのカラム指定

複数のテーブルに同じカラム名が存在するときは、「テーブル名.カラム名」で指定する

【書き方例】

SELECT players.name, countrys.name

FROM players

JOIN countrys

ON players.country_id = country.id;

  • WHERE内でも使える

↓ここまで習ったこと全体の実行順序

テーブルの指定FROM
結合JOIN、ON
取得条件WHERE
グループ化GROUP BY
関数SUM、AVG、COUNT、MIN、MAX
HAVINGHAVING
検索SELECT、DISTINCT
順序ORDER BY
LIMITLIMIT

NULLの場合の取得 LEFT JOIN

LEFT JOINを使うことで、FROMで指定したテーブルのレコードを全て取得する。

外部キーがNULLのレコードもNULLのまま実行結果に表示される

3つ以上のテーブル結合

JOINは1つのクエリで、複数回使用可能。

JOINを複数回使用しても、FROMは1度だけ書けば大丈夫なので注意。

【書き方例】

SELECT *

FROM players

JOIN countries

ON players.country_id = country.id

LEFT JOIN teams

ON players.previous_team_id = teams.id ;

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次