基本情報技術者試験 過去問解説
SQLとは?基本情報技術者試験 平成26年度 春期 午前 問28を解説
基本情報技術者試験 平成26年度 春期 午前 問28は、SQLに関する理解を問う問題です。検索から入っても、問題文、選択肢、正解、解説、各選択肢がなぜ違うかをこのページだけで確認できます。
問題文
"商品"表,"在庫"表に対する次の SQL 文の結果と同じ結果が得られる SQL 文はどれか。ここで,下線部は主キーを表す。 SELECT 商品番号 FROM 商品 WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫) 商品(商品番号, 商品名, 単価) 在庫(倉庫番号, 商品番号, 在庫数)

この問題の出題ポイント
- SQLの定義だけでなく、問題文中の条件がどの選択肢に当てはまるかを確認する。
- 関連タグ: SQL、ビジネスモデル、メモリ、関係モデル。
選択肢
- アSELECT 商品番号 FROM 在庫 WHERE EXISTS (SELECT 商品番号 FROM 商品)
- イSELECT 商品番号 FROM 在庫 WHERE NOT EXISTS (SELECT 商品番号 FROM 商品)
- ウSELECT 商品番号 FROM 商品 WHERE EXISTS (SELECT 商品番号 FROM 在庫 WHERE 商品.商品番号 = 在庫.商品番号)
- エSELECT 商品番号 FROM 商品 WHERE NOT EXISTS (SELECT 商品番号 FROM 在庫 WHERE 商品.商品番号 = 在庫.商品番号)正解
正解
エ: SELECT 商品番号 FROM 商品 WHERE NOT EXISTS (SELECT 商品番号 FROM 在庫 WHERE 商品.商品番号 = 在庫.商品番号)
解説
元のSQLは「在庫に存在しない商品番号」を商品表から取り出すクエリです。これは『商品.商品番号に対応する在庫行が存在しない』ことを NOT EXISTS で相関副問合せで表すのと等価です。
なぜ他の選択肢が違うのか
ア
FROM が在庫表で、商品表との対応もとっておらず元クエリと結果が一致しません。
イ
FROM が在庫表である時点で元クエリの対象集合と異なります。
ウ
EXISTS では在庫に対応行がある商品(=元クエリと逆)が抽出されます。
エ(正解)
商品表をFROMに置き、相関条件で在庫に対応行が「無い」ものを NOT EXISTS で取り出しており、元クエリと等価です。
解き方の整理
SQLの問題では、選択肢のキーワードだけで判断せず、問題文が示す条件と正解選択肢の説明が一致しているかを見ます。誤答選択肢は、似た用語を混ぜる、主体を入れ替える、目的や範囲を広げすぎる、という形で作られることが多いため、選択肢別解説まで確認しておくと復習効率が上がります。
関連問題
前後の問題
平成26年度 春期 午前 の関連する問題
復習を続ける
間違えた問題、苦手タグ、模試履歴を保存して復習する導線を用意しています。広告なしPro、弱点分析、復習リマインダーは段階的に提供予定です。