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

情報処理安全確保支援士 2025年 春期 午前221


問題文

“従業員”表に対して、SQL文を実行して得られる結果はどれか。ここで、実線の下線は主キーを表し、表中の NULL は値が存在しないことを表す。
情報処理安全確保支援士 2025年 春期 午前2 問21の問題画像情報処理安全確保支援士 2025年 春期 午前2 問21の選択肢の画像

選択肢

(正解)

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

要点まとめ

  • 結論:SQL文は「上司になっていない従業員コード」を抽出し、正解はウの「S002, S004, S007」です。
  • 根拠:サブクエリで「Xの従業員コードがYの上司か」を調べ、存在しなければ抽出するため、部下を持たない従業員が対象です。
  • 差がつくポイント:NOT EXISTSの意味と、上司列の値を正確に把握し、部下の有無を見極めることが重要です。

正解の理由

このSQL文は「従業員Xの従業員コードが、他の従業員Yの上司として存在しない」ことを条件にしています。つまり、部下を持たない従業員コードを抽出します。表を見ると、上司として名前が挙がっているのはS001、S003、S005、S006です。これらは部下がいるため除外されます。残るS002、S004、S007は誰の上司にもなっていません。したがって、正解はの「S002, S004, S007」です。

よくある誤解

「上司がNULLの従業員が抽出される」と誤解しがちですが、NULLは上司がいないことを示すだけで、部下の有無とは無関係です。
また、NOT EXISTSの条件を逆に理解し、上司のいる従業員を選ぶと間違えます。

解法ステップ

  1. SQL文の構造を理解する:外側のSELECTは従業員コードを選択。
  2. サブクエリの意味を把握:Xの従業員コードがYの上司として存在するかを調べる。
  3. NOT EXISTSは「存在しない」ことを意味し、部下がいない従業員を抽出。
  4. 表の「上司」列を確認し、どの従業員コードが上司として使われているかを特定。
  5. 上司として使われていない従業員コードをリストアップ。
  6. 選択肢の中から該当するグループを選ぶ。

選択肢別の誤答解説

  • ア:S001、S003、S005、S006は全員部下を持つため誤り。
  • イ:S001、S005は上司として部下がいるため誤り。
  • :S002、S004、S007は部下を持たない正解。
  • エ:S003、S006は部下がいるため誤り。

補足コラム

SQLの
NOT EXISTS
はサブクエリの結果が空の場合に真となり、存在しないことを判定します。部下を持たない従業員を抽出する際に有効な方法です。
NULL
は「値が存在しない」ことを示し、比較や存在判定の際は注意が必要です。主キーや外部キーの関係を理解すると、こうした階層構造のデータ抽出がスムーズになります。

FAQ

Q: NOT EXISTSとNOT INの違いは何ですか?
A: NOT EXISTSはサブクエリの行の存在をチェックし、NULLの影響を受けにくいのに対し、NOT INはNULLがあると結果が不確定になることがあります。
Q: NULLが上司の値の場合、どう扱えばよいですか?
A: NULLは「上司なし」を意味し、部下の有無とは別の概念です。NULLを条件に含める場合はIS NULLを使います。

関連キーワード: SQL, NOT EXISTS, サブクエリ、部下抽出、階層構造、NULL, 主キー、外部キー、データベース、従業員管理
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

情報処理安全確保支援士
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

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

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