基本情報技術者試験 過去問解説
SQLとは?基本情報技術者試験 令和7年度 科目A 問6を解説
基本情報技術者試験 令和7年度 科目A 問6は、SQLに関する理解を問う問題です。検索から入っても、問題文、選択肢、正解、解説、各選択肢がなぜ違うかをこのページだけで確認できます。
問題文
"商品"表に対する SQL 文と同じ結果が得られる SELECT 文はどれか。 【商品表】(商品 ID, 商品名称, 仕入先 ID, 単価) [SQL 文] SELECT * FROM 商品 WHERE 仕入先 ID IN ('M002', 'M004')
この問題の出題ポイント
- SQLの定義だけでなく、問題文中の条件がどの選択肢に当てはまるかを確認する。
- データベース分野では、用語の目的・主体・責任範囲の違いが選択肢で問われやすい。
- 関連タグ: SQL。
選択肢
- アSELECT * FROM 商品 WHERE 仕入先ID = 'M002' AND 仕入先ID = 'M004'
- イSELECT * FROM 商品 WHERE 仕入先ID = 'M002' INTERSECT SELECT * FROM 商品 WHERE 仕入先ID = 'M004'
- ウSELECT * FROM 商品 WHERE 仕入先ID = 'M002' OR 仕入先ID = 'M004'正解
- エSELECT * FROM 商品 WHERE 仕入先ID BETWEEN 'M002' AND 'M004'
正解
ウ: SELECT * FROM 商品 WHERE 仕入先ID = 'M002' OR 仕入先ID = 'M004'
解説
IN 演算子はカッコ内に列挙した値のいずれかに一致する行を選ぶため、OR で個別の等価条件を結ぶ書き方と論理的に等価です。元のSQLは「仕入先ID が 'M002' か 'M004' のどちらか」を意味するので、これを OR で展開した選択肢ウが同じ結果を返します。
なぜ他の選択肢が違うのか
ア
AND で結ぶと「同じ列が同時に 'M002' かつ 'M004'」となり、1行で2つの値を同時に持つことは不可能なため結果は常に空集合になります。
イ
INTERSECT は両方の結果に共通する行のみを返しますが、仕入先ID が同時に2値を持つ行は存在しないため結果は空集合となります。
ウ(正解)
IN ('M002','M004') を OR に展開した形であり、両者は意味も結果も完全に一致するため正解です。
エ
BETWEEN 'M002' AND 'M004' は文字列の辞書順で 'M003' なども含めてしまうため、IN による厳密な2値指定とは結果が異なります。
解き方の整理
SQLの問題では、選択肢のキーワードだけで判断せず、問題文が示す条件と正解選択肢の説明が一致しているかを見ます。誤答選択肢は、似た用語を混ぜる、主体を入れ替える、目的や範囲を広げすぎる、という形で作られることが多いため、選択肢別解説まで確認しておくと復習効率が上がります。
関連問題
前後の問題
令和7年度 科目A の関連する問題
復習を続ける
間違えた問題、苦手タグ、模試履歴を保存して復習する導線を用意しています。広告なしPro、弱点分析、復習リマインダーは段階的に提供予定です。