0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLにおける集計関数とグループ化

Posted at

プログラミングの勉強日記

2020年6月16日 Progate Lv.111
SQLⅢ

サブクエリ

 クエリの中に他のクエリを入れることができる。この他のクエリのことをサブクエリという。2つ以上のクエリお1つにまとめることができるので、より複雑なデータを取得するときに使われる。サブクエリは()(括弧)を囲むことで作ることができる。()内にセミコロンは不要(セミコロンはクエリの最後のみでいい)

サブクエリを使わない方法
-- 1.Makeの得点を取得する 
SELECT goals FROM players WHERE name="Make";
-- 2.取得した結果を自分で入力する
 SELECT name FROM players WHERE goals > 15;
サブクエリを使う方法
-- 2.サブクエリが実行されたあとに外側にあるクエリが実行される
SELECT name 
FROM players
-- 1.サブクエリでMakeの得点を取得している
WHERE goals > (
  SELECT goals
  FROM players
  WHERE name="Make"
);

AS

 カラム名などに別の名前を定義することができる。カラム名 AS "名前"でカラム名に定義する名前を指定する。

実行結果の表示のgoalを変更する
SELECT goals AS "Makeの得点" FROM players WHERE name="Make";

テーブルを紐づける

 テーブルを紐づけるには外部キーと主キーを使う。外部キーで他のテーブルにある主キーを指定することで、テーブル同士を紐づけることができる。
 メリット:データの管理がしやすい
SQL.png

JOIN

 複数のテーブルを1つに結合したいときに使う。ONで条件を指定して、テーブルAにテーブルBを結合する。結合したテーブルは1つのテーブルとしてデータを取得できる。外部キーがNULLのレコードは実行結果に表示されない。
 複数のテーブルをJOINすることも可能で、JOINを1つのクエリで複数回使える。ただし、その場合でもFROMは一度だけでよい。
 

JOINの使い方
SELECT *
FROM テーブルA
JOIN テーブルB
ON 結合条件(テーブル名.カラム名 = テーブル名.カラム名);
SQL2.png
-- 2. 結合された後にSELECTの実行
SELECT *
-- 1. テーブルを結合する
FROM players
JOIN countries
--county_id:外部キー countries.id:主キー
ON players.country_id=countries.id; 

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

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

SELECT players.name, countries.name
FROM players
JOIN countries
ON players.country_id=countries.id
WHERE players.name="タクヤ";

LEFT JOIN

 FROMで指定したテーブルのコードを全て取得する。外部キーがNULLのコードもNULLのまま実行結果に表示される。

SELECT * 
FROM players
LEFT JOIN teams  --もととなるテーブルのレコードを全て取得。
ON players.team_id=team.id;

全体実行順序

 SQLは取得するテーブルを形成してから検索をするので、FROMやJOINが先に来る。
SQL3.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?