SkillStack
テクノロジ系21 / 25問

情報処理安全確保支援士試験 令和7年度 春期 午前II 問21

"従業員"表に対して、SQL文を実行して得られる結果はどれか。ここで、実線の下線は主キーを表し、表中のNULLは値が存在しないことを表す。

〔SQL文〕  SELECT 従業員コード FROM 従業員 X    WHERE NOT EXISTS     (SELECT * FROM 従業員 Y WHERE X.従業員コード = Y.上司)

情報処理安全確保支援士試験 令和7年度 春期 午前II 問21の図表

選択肢を押すと答え合わせができます。

正解と解説を見る

【正解】ウ

この副問合せは、外側の表の従業員Xについて、「Xの従業員コードを上司欄に持つ従業員Yがいるか」を調べています。NOT EXISTSは、条件に合う行が一つも存在しない場合に真となるので、抽出されるのは部下を一人も持たない従業員です。

具体的に追うと、S001にはS002とS003が、S003にはS004が、S005にはS006が、S006にはS007が部下として存在するため、これらは除外されます。一方、S002、S004、S007を上司欄に持つ行は存在しません。したがって、結果はS002、S004、S007となり、ウが正解です。

アのS001、S003、S005、S006は誤りです。これはNOT EXISTSではなく、EXISTSを指定した場合に得られる、直属の部下を一人以上持つ従業員です。

イのS001、S005は誤りです。これは上司欄がNULLである最上位の従業員であり、「WHERE 上司 IS NULL」などで抽出する結果です。

エのS003、S006は誤りです。これは自分にも上司がいて、かつ自分も部下を持つ中間階層の従業員です。

【ポイント】 相関副問合せでは、外側の行ごとに内側の問合せを評価します。 EXISTSは該当行の存在、NOT EXISTSは該当行が一つもないことを判定し、SELECT句の値そのものは参照しません。

出典:令和7年度 春期 情報処理安全確保支援士試験 午前II 問21
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。

この回の25問を、アプリで通しで解く

  • 本番と同じ問題数・制限時間で通し演習(模試モード)
  • 間違えた問題は自動で「復習すべき問題」に回る
  • 解説で分からない点はAIに質問できる
SkillStackで無料で始める