過去問解きまくり研究所 ホーム

平成22年度 秋期 情報セキュリティスペシャリスト試験 午前Ⅱ 問21

データベース

差集合に関する問題

和両立である表 R(ID,NAME),S(NO,NAMAE)がある。差集合 R-S を求める SELECT 文とするために,a に入れるべき適切な字句はどれか。ここで,下線部は主キーを表す。また,NAME と NAMAE は NULL 不可とする。

R(ID〔下線〕,NAME) / S(NO〔下線〕,NAMAE)

SELECT * FROM R WHERE [ a ]
    (SELECT * FROM S WHERE S.NO = R.ID AND S.NAMAE = R.NAME)
答えと解説を見る

✓ これが正解イNOT EXISTS

解説

S に同じ行が存在しない R の行を、NOT EXISTS で選びます。

差集合 R-S は、R の行のうち、S に同じ内容の行が無いものの集まりです。設問の副問合せは、外側で見ている R の1行ごとに、ID と NO、NAME と NAMAE がともに一致する S の行を探します。外側の行の値を使って内側の問合せを実行する、相関副問合せの形です。NOT EXISTS は、副問合せの結果が1行も無いときに真になります。そのため、S に同じ行を持たない R の行だけが残り、差集合が得られます。見分けの軸は、副問合せの結果が有るときと無いときのどちらで行を残すかです。

ほかの選択肢はなぜ違うのか

出典:平成22年度 秋期 情報セキュリティスペシャリスト試験 午前Ⅱ 問21

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)