スポンサーリンク

【応用情報技術者試験】SQL副問い合わせを5分で理解!

「副問い合わせって何?」
応用情報技術者試験のSQL分野で超頻出ですが、

  • SELECTの中にSELECT?
  • どの順番で実行される?
  • EXISTSやINが分からない…

で混乱する人がかなり多いテーマです。

この記事では、

  • 副問い合わせとは?
  • 使い方
  • IN / EXISTS
  • 試験での頻出ポイント

を5分で理解できるように解説します!


まず結論

副問い合わせとは?

「SQLの中に書くSQL」

です!


イメージ

SELECT …
FROM …
WHERE ○○ = (
SELECT …
)


何のために使う?

「別の検索結果を使って検索したい」

時に使う!


学校で理解しよう

かなり分かりやすい👇


学生表

学生ID名前クラス
1田中A
2鈴木B
3佐藤A

「A組の学生だけ取得したい」

もちろん直接書ける👇

SELECT 名前
FROM 学生
WHERE クラス = ‘A’;


でも例えば

「田中と同じクラスの学生」

を取得したい場合は?


まず必要なのは?

「田中のクラス」


そこで副問い合わせ!

SELECT 名前
FROM 学生
WHERE クラス = (
SELECT クラス
FROM 学生
WHERE 名前 = ‘田中’
);


実行順序

超重要!


① 内側SQL実行

SELECT クラス
FROM 学生
WHERE 名前 = ‘田中’

A


② 外側SQL実行

WHERE クラス = ‘A’


結果

  • 田中
  • 佐藤

取得!


副問い合わせの種類

応用情報で超頻出!


① 単一行副問い合わせ

結果が1行。

WHERE 点数 > (
SELECT AVG(点数)
FROM 成績
)


平均点より高い学生取得!


② 複数行副問い合わせ

結果が複数行。


INを使う

SELECT 名前
FROM 学生
WHERE 学生ID IN (
SELECT 学生ID
FROM 成績
);


INとは?

「含まれているか」


EXISTS

超頻出!


EXISTSとは?

「存在するか」


SELECT 名前
FROM 学生 s
WHERE EXISTS (
SELECT *
FROM 成績 t
WHERE s.学生ID = t.学生ID
);


意味

「成績が存在する学生」

取得。


相関副問い合わせ

ここ難関!


特徴

外側SQLの値を内側で使う


WHERE s.学生ID = t.学生ID


外側のsを内側で参照!

これが:

相関副問い合わせ


副問い合わせを書く場所

場所用途
WHERE条件
FROM仮想表
SELECT計算結果

FROM句副問い合わせ

SELECT *
FROM (
SELECT …
) A


仮想テーブルを作るイメージ!


応用情報で超頻出

かなり狙われる👇

  • 副問い合わせ
  • IN
  • EXISTS
  • 相関副問い合わせ
  • AVG
  • 集約関数

よくあるひっかけ

「外側SQLから実行」

→ 違う!

通常は:

内側SQLから実行


1分で復習!

副問い合わせ

SQLの中のSQL


IN

含まれるか


EXISTS

存在するか


相関副問い合わせ

外側値を内側利用


練習問題

問題

副問い合わせの説明として最も適切なものはどれか。

SQL文の中で別のSQL文を実行する仕組み

表を削除するSQL

データ型を変更するSQL

索引を作成するSQL


解答

正解:ア

解説

副問い合わせは、SQL文の中に別のSQL文を記述し、その結果を利用する仕組みです。


まとめ

副問い合わせとは

「SQLの中のSQL」


超重要

  • IN
  • EXISTS
  • 相関副問い合わせ
  • 実行順序

まずは、

「先に内側SQL実行」

この流れを理解するとかなり分かりやすくなります!


知識に自信ができた方は、今度は自身のキャリアアップに向けて準備してみませんか?

未経験から、ITエンジニアへ。
「IT業界に興味はあるけれど、自分にできるか不安」「何から始めればいいのか分からない」そんな方のために、Tech GO は未経験からのIT転職を専門的にサポートします。求人を紹介するだけではなく、あなたの強みを整理し、応募準備から入社後の成…

まずは無料でキャリア相談

コメント