基本情報技術者試験 令和7年度(科目A) [問6] 過去問解説

スポンサーリンク

問題

問6

“商品”表に対する SQL 文と同じ結果が得られる SELECT 文はどれか。

  • 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’

[出典:基本情報技術者試験 令和7年度(科目A) 問6]

正解

正解は「」です。

解説

 この問題は、SQLの`WHERE`句における条件指定の方法を正しく理解しているかを問う問題です。

 まず、元のSQL文は `SELECT * FROM 商品 WHERE 仕入先 ID IN (‘M002’, ‘M004’)` です。この `IN` 句は、「仕入先 ID が ‘M002’ または ‘M004’ のいずれかに一致する行を抽出する」という意味です。

 それと同じ結果を得るには、`OR` 条件を使った `WHERE 仕入先 ID = ‘M002’ OR 仕入先 ID = ‘M004’` というSQL文が最も適しています。したがって正解は「ウ」です。

 日常的な例で言えば、「今日のランチはラーメンかカレーにする」という選択肢を考えると、`IN (‘ラーメン’, ‘カレー’)` は「ラーメンまたはカレー」と同義であり、これは `OR` を使っても同じ意味になることがわかります。 SQLでデータの抽出条件を指定する場合には、複数の候補があるときに `IN` を使うのが一般的ですが、`OR` を使っても同じ結果が得られることを理解することが重要です。

ア(仕入先 ID = ‘M002’ AND…):
 AND 条件は「両方同時に満たす」場合に該当します。1つの仕入先IDが同時に’M002’と’M004’になることはないため、結果は0件となり、意図した結果が得られません。
イ(INTERSECTを使用):
 INTERSECTは2つのSELECT文の共通部分(両方に共通する行)のみを返しますが、仕入先IDが’M002’の行と’M004’の行は異なるため、共通部分は存在せず結果は0件になります。
エ(BETWEEN ‘M002’ AND ‘M004’):
 BETWEENは範囲条件ですが、文字列の大小比較に依存します。’M002’から’M004’の間には’M003’も含まれ、意図しない仕入先IDが含まれるため、元のSQL文と一致しません。

スポンサーリンク

難易度

 この問題はSQLの基本的な条件指定の理解を問う内容であり、初心者にも比較的取り組みやすい問題です。ただし、INTERSECTやBETWEENなどやや紛らわしい選択肢が含まれているため、正確な意味を理解していないと迷いやすい点もあります。

用語補足

SQL:
データベースを操作するための言語です。特に`SELECT`文は、データの抽出に使われ、条件を指定することで必要な情報だけを取り出せます。

IN句:
複数の値のいずれかに一致するレコードを抽出するためのSQLの構文です。例:`WHERE 色 IN (‘赤’, ‘青’)`は、「色が赤または青」のレコードを抽出します。

OR条件:
複数の条件のうちどれか一つが成立すれば、その行を対象とする条件です。ANDとの違いを理解することが重要です。

解法のポイント

 SQLの`WHERE`句における条件指定の方法(IN、OR、AND、BETWEENなど)の使い方を理解しておくことが重要です。実際に小さなデータでSQL文を実行しながら学習することで、挙動が直感的に理解しやすくなります。



タイトルとURLをコピーしました