基本情報技術者

問6

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

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

〔SQL文〕
    SELECT * FROM 商品 WHERE 仕入先 ID IN ('M002', 'M004')

  • ア 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'

選択肢

正解と解き方・学習ポイント(AI解説)

正解:
あなたの回答:未回答

仕入先ID IN ('M002','M004')は、仕入先IDがM002またはM004の行を取り出す条件です。同じ意味に書き換えると、仕入先ID='M002' OR 仕入先ID='M004'になります。ANDINTERSECTは同じ行が両方の条件を同時に満たす必要があり0件になりやすく、BETWEENは範囲条件になるため一致しません。

不正解

ANDは両方の条件を同時に満たす必要があります。仕入先IDが同時に'M002'かつ'M004'になることはないため、抽出結果は0行になります。よって誤りです。

不正解

INTERSECTは2つのSELECT結果の共通部分だけを返します。仕入先ID='M002'の行と仕入先ID='M004'の行が同じ行として共通になることはないため、抽出結果は0行になります。よって誤りです。

正解

ORはどちらか一方を満たせば抽出します。これはIN ('M002','M004')と同じ条件になるため、問題のSQL文と同じ結果になります。よって正解です。

不正解

BETWEENは範囲指定です。'M002'以上'M004'以下で判定されるため、文字列の並びによっては'M003'なども含まれる可能性があり、IN句と一致しません。よって誤りです。

Point

この問題は、IN句の意味を正しく読み取り、同じ抽出結果になる条件(OR)と、結果が変わる条件(AND、INTERSECT、BETWEEN)を区別できるかを確認する問題です。

解くために必要な知識

この問題を解くには、SQLのWHERE句における条件指定(IN、OR、ANDなど)の意味を理解している必要があります。

用語の整理

用語名 意味
SQL データベースを操作するための言語です。
SELECT文 表から行を抽出する命令です。
WHERE句 抽出する行の条件を指定する部分です。
IN 指定したリスト内の値のいずれかに一致するかを判定します。
OR 複数条件のうち、少なくとも1つが真なら真になります。

他の選択肢に出てくる用語

用語名 意味
AND 複数条件がすべて真のときだけ真になります。
INTERSECT 2つのSELECT結果の共通部分だけを返す集合演算子です。
BETWEEN 指定した下限以上、上限以下の範囲に入るかを判定します。

IN句とORの対応

対応関係

次は同じ意味です。

  • 仕入先ID IN ('M002', 'M004')

  • 仕入先ID = 'M002' OR 仕入先ID = 'M004'

一般形

  • 列 IN (A, B, C)

  • 列 = A OR 列 = B OR 列 = C

図表の読み取り方

1. 条件で使っている列を特定する

この問題では「仕入先ID」です。

2. 条件に一致する行がどれかを確認する

画像の表では、仕入先IDがM002の行とM004の行が抽出対象になります。

問題の解法手順

Gemini

問題の注目点は、IN句が「指定した値のいずれかに一致」を表すことです。

図表の読み取り

表の確認

画像の「商品」表には、少なくとも次の列があります。

  • 商品ID

  • 商品名称

  • 仕入先ID

  • 単価

条件に関係する列

SQL文の条件は「仕入先ID」列に対して指定されています。

解く手順

1. IN句の意味を言い換える

次のSQLは、仕入先IDがM002またはM004の行を抽出します。

WHERE 仕入先 ID IN ('M002', 'M004')

2. 同じ意味になる条件式を選ぶ

IN ('M002', 'M004') は次と同じ意味です。

仕入先ID = 'M002' OR 仕入先ID = 'M004'

3. 他の選択肢が一致しない理由を確認する

ANDは同時成立が必要、INTERSECTは共通部分、BETWEENは範囲指定になるため、IN句と一致しません。

選択肢ごとの解説

不正解

ANDは両方の条件を同時に満たす必要があります。仕入先IDが同時に'M002'かつ'M004'になることはないため、抽出結果は0行になります。よって誤りです。

不正解

INTERSECTは2つのSELECT結果の共通部分だけを返します。仕入先ID='M002'の行と仕入先ID='M004'の行が同じ行として共通になることはないため、抽出結果は0行になります。よって誤りです。

正解

ORはどちらか一方を満たせば抽出します。これはIN ('M002','M004')と同じ条件になるため、問題のSQL文と同じ結果になります。よって正解です。

不正解

BETWEENは範囲指定です。'M002'以上'M004'以下で判定されるため、文字列の並びによっては'M003'なども含まれる可能性があり、IN句と一致しません。よって誤りです。

まとめ

仕入先ID IN ('M002','M004')は、仕入先IDがM002またはM004の行を取り出す条件です。同じ意味に書き換えると、仕入先ID='M002' OR 仕入先ID='M004'になります。ANDINTERSECTは同じ行が両方の条件を同時に満たす必要があり0件になりやすく、BETWEENは範囲条件になるため一致しません。

順次、単語を追加予定です。もうしばらくお待ちください。