IPA過去問ドリル

平成23年度 特別 データベーススペシャリスト試験 午前Ⅱ 問5

テクノロジ/データベース

“社員番号”と“氏名”を列としてもつ R 表と S 表に対して,差(R-S)を求める SQL 文はどれか。ここで,R 表と S 表の主キーは“社員番号”であり,“氏名”は“社員番号”に関数従属する。

出典:平成23年度 特別 データベーススペシャリスト試験 午前Ⅱ 問5

正解:ウ

解説

差(R-S)は,R表に存在してS表に存在しない行を求める演算です。相関副問合せでNOT EXISTSを用い,R表の各行についてS表に同じ社員番号の行が存在しないことを確認するSELECT文が,この差演算を正しく表現します。

選択肢ごとの解説

  • 誤り。R表とS表を単純に結合し社員番号が一致しない行を取り出す方法では,行の組合せが多数生成されてしまい,正しい差集合にはなりません。
  • 誤り。UNIONはR表とS表を単純に合わせた和集合を求める演算であり,R表にしかない行だけを取り出す差演算にはなりません。
  • 正しい。NOT EXISTSの相関副問合せにより,S表に同じ社員番号の行が存在しないR表の行だけを取り出すことができ,これは差(R-S)を表します。
  • 誤り。S表を基点にR表に社員番号が存在しない行を取り出しており,これは差(S-R)に相当し,求める差(R-S)とは逆になります。
データベーススペシャリストの過去問を演習モードで解く