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

データベーススペシャリスト 2018年 午前205


問題文

“社員”表に対して、SQL文を実行して得られる結果はどれか。ここで、実線の下線は主キーを表し、表中の‘NULL’は値が存在しないことを表す。
データベーススペシャリスト 2018年 午前2 問05の問題画像データベーススペシャリスト 2018年 午前2 問05の選択肢の画像

選択肢

(正解)

社員表に対するSQL文の結果はどれか【午前2 解説】

要点まとめ

  • 結論:SQL文は「上司として誰も指定されていない社員コード」を抽出し、正解はウの社員コード一覧です。
  • 根拠:
    NOT EXISTS
    句は「該当社員コードが他の社員の上司欄に存在しない」ことを条件にしているため、部下を持たない社員を選びます。
  • 差がつくポイント:
    NOT EXISTS
    の意味と副問い合わせの結合条件を正確に理解し、上司と社員コードの関係を正しく把握することが重要です。

正解の理由

このSQL文は、社員テーブルの各社員コード(X)について、同じテーブルの上司欄(Y)にその社員コードが存在しない場合に抽出します。つまり、他の社員の「上司」欄に自分の社員コードがない社員、すなわち部下を持たない社員を選びます。表を見ると、社員コードS002、S004、S007は誰の上司にもなっていません。したがって、正解はです。

よくある誤解

「上司がNULLの社員を選ぶ」と誤解しがちですが、実際は「誰の上司にもなっていない社員」を選ぶ条件です。NULLは関係ありません。

解法ステップ

  1. SQL文の
    NOT EXISTS
    の意味を理解する(副問い合わせの結果が存在しない場合)。
  2. 副問い合わせの条件
    X.社員コード = Y.上司
    を確認し、社員コードが上司欄にあるかを調べる。
  3. 表の「上司」列を見て、どの社員コードが上司として使われているかを特定する。
  4. 上司として使われていない社員コードを抽出する。
  5. 選択肢と照合し、該当する社員コードのリストを選ぶ。

選択肢別の誤答解説

  • ア:S001、S003、S005、S006は上司として使われている社員コードが含まれており誤り。
  • イ:S001、S005は上司として使われているため誤り。
  • :S002、S004、S007は誰の上司にもなっていないため正解。
  • エ:S003、S006は上司として使われているため誤り。

補足コラム

NOT EXISTS
は副問い合わせの結果が空の場合に真となるため、存在しない条件を表現するのに便利です。今回のように自己結合的に同じテーブルを2回参照し、特定の関係性を調べるケースはよく出題されます。SQLの副問い合わせと結合の違いも理解しておくと応用が効きます。

FAQ

Q:
NOT EXISTS
NOT IN
の違いは何ですか?
A:
NOT EXISTS
は副問い合わせの行の存在をチェックし、NULLの影響を受けにくいのに対し、
NOT IN
はNULLがあると結果が不定になることがあります。
Q: NULLはこのSQL文の結果に影響しますか?
A: いいえ。NULLは「値が存在しない」ことを示しますが、このSQL文の条件は「社員コードが上司欄に存在しない」ことなので、NULLは無関係です。

関連キーワード: SQL, NOT EXISTS, 副問い合わせ、自己結合、上司部下関係、主キー、NULL値、データベースクエリ
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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