令和7年度 春期 情報処理安全確保支援士試験 午前II 問21
テクノロジデータベース
この問題は2025(R7)春 情報処理安全確保支援士 午前IIに出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。
本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。
“従業員”表に対して,SQL文を実行して得られる結果はどれか。ここで,実線の下線は主キーを表し,表中のNULLは値が存在しないことを表す。
〔SQL文〕
SELECT 従業員コード FROM 従業員 X
WHERE NOT EXISTS
(SELECT * FROM 従業員 Y WHERE X.従業員コード = Y.上司)

図の説明テキスト
「従業員」というキャプションがついた表。
| 従業員コード | 上司 | 従業員名 |
|---|---|---|
| S001 | NULL | A |
| S002 | S001 | B |
| S003 | S001 | C |
| S004 | S003 | D |
| S005 | NULL | E |
| S006 | S005 | F |
| S007 | S006 | G |
| ※従業員コードの列名には下線(主キー)が引かれている。 |
解答・解説を読む
正解: 選択肢ウ
正解の根拠
このSQL文は、相関サブクエリを使用し、NOT EXISTSを用いて条件に一致しないレコードを抽出しています。
- 外側のクエリ(
SELECT 従業員コード FROM 従業員 X)で、従業員表(X)の各行を1行ずつ評価します。 - 内側のクエリ(
SELECT * FROM 従業員 Y WHERE X.従業員コード = Y.上司)では、従業員表(Y)の中から「上司の従業員コードが、現在評価している従業員Xの従業員コードと一致する」レコードを検索します。つまり、従業員Xを上司に持つ従業員(Xの部下)を探しています。 NOT EXISTSは、内側のクエリの検索結果が存在しない(0件である)場合に真(TRUE)となります。
したがって、このSQL文全体としては「部下が存在しない従業員」の 従業員コード を抽出することになります。
各選択肢の解説
本問題では表の具体例が省略されていますが、SQL文の論理から以下のように判断できます。
- 正解(ウ):条件を満たす「誰の上司でもない従業員(部下のいない従業員)」のみが正しく抽出された結果です。
- その他の選択肢(ア、イ、エ):他の従業員の上司として登録されている従業員コードが含まれているか、あるいは部下のいない従業員が結果から漏れているため、SQL文の抽出ロジックと一致せず誤りです。



