戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

データベーススペシャリスト 2021年 午前206


問題文

“商品”表と“当月商品仕入合計”表に対してSQL文を実行した結果はどれか。
データベーススペシャリスト 2021年 午前2 問06の問題画像データベーススペシャリスト 2021年 午前2 問06の選択肢の画像

選択肢

(正解)

“商品”表と“当月商品仕入合計”表に対してSQL文を実行した結果はどれか。【午前2 解説】

正解の理由

SQL文は
(SELECT 仕入先コード FROM 商品)  
EXCEPT  
(SELECT 仕入先コード FROM 当月商品仕入合計)
です。
これは「商品表にある仕入先コードのうち、当月商品仕入合計表に存在しないもの」を抽出します。
商品表の仕入先コードはK01, K02, K03, K04、当月商品仕入合計表はK01, K03, K05です。
共通するのはK01K03なので、差集合はK02K04となり、重複なしで表示されるため選択肢エが正解です。

解法ステップ

  1. 商品表から仕入先コードを抽出する(K01, K02, K03, K04)。
  2. 当月商品仕入合計表から仕入先コードを抽出する(K01, K03, K05)。
  3. 左の集合から右の集合にあるコードを除外する。
  4. 重複を排除し、残ったコードを結果として返す。
  5. 結果はK02K04の2つだけになる。

選択肢別の誤答解説

  • ア:K01K03が含まれているが、これは両方の表に存在するため差集合には含まれません。
  • イ:K01K03のみで、これは共通部分であり差集合ではありません。
  • ウ:K02K04が重複しているが、EXCEPTは重複を排除するため誤りです。
  • エ:K02K04が1回ずつ表示されており、正しい差集合を表しています。

よくある誤解

EXCEPTは単純に差を取るだけでなく、結果の重複を排除するため、重複した値が複数回表示されることはありません。

補足コラム

SQLのEXCEPTは集合演算の一つで、左側のクエリ結果から右側のクエリ結果を差し引きます。
UNIONINTERSECTと同様に重複を排除するため、結果セットは常にユニークな値になります。
また、EXCEPT ALLをサポートするDBMSでは重複を考慮した差集合も可能ですが、標準SQLではEXCEPTが一般的です。

FAQ

Q: EXCEPTNOT INの違いは何ですか?
A: EXCEPTは2つの結果セットの差集合を返し、重複を排除します。NOT INは特定の値を除外する条件式で、重複の扱いは異なります。
Q: EXCEPTはすべてのDBMSで使えますか?
A: 多くのDBMSでサポートされていますが、MySQLなど一部ではサポートされていないため、代替としてLEFT JOINNOT EXISTSを使うことがあります。

関連キーワード: SQL, EXCEPT, 差集合、重複排除、集合演算、仕入先コード、データベースクエリ
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

データベーススペシャリスト
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について