見出し画像

MYSQL 副問合せのポイント(Mac)

MYSQLの演習や復習をしていて
入力に慣れていけば、特に問題ないけど
忘れた時に、意味不明になりそうなので、
副問合せを使う際のポイントをまとめてみました。
(副問合せに限らずかもw)

どんな表を出したいか書き出そう!

まずは、確認箇所別に書き出すと文を構成しやすいので、
下記に沿って、書き出してみよう!

1、表示させたい列名を確認

表示したい列名を書き出して、
別名にしたい場合は、さらに元の列名と別名を併せて
例:empno(社員番号)、sal(給与)

2、どの表から抽出したいのか確認

表示させたかった列はどの表から持ってくるのか書き出す
ここはシンプル
例:employees

3、表に対する抽出条件を確認

2で設定した表の中でも、「この部分だけ」とか「ここの数値がこれ以上の部分だけ」というように、条件を書き出そう
例:「sal」は「200,000以上」
  「job」は「MANAGERと一致」

個人的に抽出したい表の全てを一文にすると、
読めば読むほど「???」になるので
余計な部分を省略して分かりやすくするため、
単語が分かりやすくなるように過剰書きにして書き出すと
SELECT文で書き出しやすくなるので、
慣れていない方は、まず一旦箇条書きで書き出してみましょう!


SELECT文で書き出してみよう!

箇条書きで書き出せたら、早速文節ごとに入力してみよう!

1、表示させたい列名の入力

基本型: SELECT 列名1, 列名2, 列名3・・・・

ここの列名に別名に変えたい場合は
SELECT 列名1 AS '別名1', 列名2 AS '別名2', 列名3 AS '別名3'・・・

というふうに表示したい文だけ、入力していく。
列数が多いと複雑だけど
ここまでが一つのワンセットだと区切って
入力後確認しておこう!


2、抽出元の表を入力

基本型: FROM  表名


3、抽出元の表に対する条件の入力

基本型:WHERE 列名 演算子 値

【演算子】
『=』『<』『>』『<=』『>=』『!=(≠)』

基本的な抽出条件の設定は、上記の形だけど、
今回はさらに細かい条件設定のための副問合せを使用する場合は
基本型の値の部分から(SELECT文)にすればOK
なので

WHERE 列名 演算子 (SELECT 列名 FROM 表名 WHERE 列名 演算子 値)

という形になる。

注意点としては、もともと『値』の箇所が、
表から抽出する形になるので
必ず()括弧内の値が一つになるようにすること!!

なので、通常のSELECT文は、表示する列名が複数になるけど
副問合せの表示する列は必ず1つになる!
さらにいうと、

WHERE 列名 演算子 (SELECT 列名 ・・・)
の一番最初の列名とSELECTの後の列名は、
同じ種別(数字なのか、文字列なのか)になるので、
覚えておこう!
(種別が一致しないと演算できないので汗)

条件をさらに増やす場合は

WHERE 列名 演算子 (SELECT 列名 FROM 表名 WHERE 列名 演算子 値
 
※ここまでは同じ

NOT/AND/OR 列名 演算子 値 
NOT/AND/OR 列名 演算子 値・・・);

というふうに、条件に併せてNOT/AND/ORで結んで行って
最後に括弧と閉じて;(セミコロン)!

最後に文節を組み立てよう!

今まで入力したもの1・2・3を全て組み合わせて

SELECT 列名・・・ 
FROM 表
WHERE 列名 演算子・・・・;

で完成!!

ということで副問合せも分解して
文を構築していけば、大丈夫!

難しく感じたら、まずは分解してから
ブロックごとにして組み立ててみてください!


いいなと思ったら応援しよう!