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 5 years have passed since last update.

ProgateでSQLを学習してみた(3)

Posted at

ProgateでSQLを学習してみた(3)

SQL学習の続き

・WHEREで条件設定する(レッスン1)
・比較演算子、LIKE、NOT、NULL・IS NOT NULL,AND・OR(レッスン1)
・ORDER BY、LIMITで加工(レッスン1)
・DISTINCT、四則演算(レッスン2)
・集計関数(SUM、AVG、COUNT,MAX・MIN)(レッスン2)
・グループ化(GROUP BY、HAVING) (レッスン2)

今回はここから↓
・サブクエリ(レッスン3)
・複数テーブルの使用(JOIN、LEFT JOIN)(レッスン3)

サブクエリ

いよいよ実務でよく使う部分に近づいてきました!

販売管理システムだと
・受注ヘッダー
・受注明細
・商品マスタ
さらには
・顧客マスタ etc...

テーブルだらけですよね~( ;∀;)

「サブクエリ」と「JOIN(結合)」は重要!と気を引き締めます('Д')

サブクエリで動的な「WHERE」条件を設定

SELECT 名前,得点
FROM 選手
WHERE 得点 > ←平均点よりも点数が高い選手を表示する
(SELECT AVG(得点) ←平均点を求める
  FROM 選手);

WHERE条件に指定するSELECT文は「()」で囲みます

実務では「固定の条件」を使うことはほぼ無いかな…
この条件文を書くことが出来れば、メンテナンスも少なくてすみます

複数テーブルの使用(JOIN、LEFT JOIN)

いよいよ複数テーブルの結合!
実務を意識すると、ここは確実に外せない!!

実際のデータベースでは「商品マスタ」や「顧客マスタ」が
必ず存在します
むしろ、この「マスタ」が無いとデータベースのメリットが半減します

テーブルを紐づけるために、外部キーと主キーを使います。
外部キーで他のテーブルにある主キーを指定することで、
テーブル同士を紐付けることができます。

「主キー」がマスタのID、「外部キー」が受注データなどの主でないカラム
こんな覚え方を私はしています('Д')

JOINで結合すると外部キーがNULLのデータは表示されない!

SELECT players.name AS "選手名",teams.name AS "前年所属していたチーム"
FROM players
JOIN teams
ON players.previous_team_id=teams.id;

上記SQLの結果だと「previous_team_id」の値がNULLの場合
結果に表示されなくなります

これは理解できてなかった!(;O;)
今まで「ダメダメなSQL文」を作成していた自分を呪います!
大丈夫だったのだろうか…?

LEFT JOINを使って外部キーがNULLの値も表示する

「外部キーがNULLだったって表示してほしい!」
もちろんです!あるあるです!

SELECT players.name AS "選手名", teams.name AS "前年所属していたチーム"
FROM players
LEFT JOIN teams ←移籍経験が無い選手はNULLが前のチーム_idに入っている
ON players.前のチーム_id=teams.id;

3つ以上のテーブルを結合させる

これも実務では多いと思います
ACCESSでクエリを作成する時はSQL文を意識しないでも処理できるけど
Webプログラミングをマスターしたい人はそうもいかないですね

SELECT *
FROM players
JOIN countries ←「JOIN」は複数回使用できる(1)
ON players.country_id=countries.id
LEFT JOIN teams ←「JOIN」は複数回使用できる(2
ON players.previous_team_id=teams.id;
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?