必ず受かる情報処理技術者試験

当サイトは、情報処理技術者試験に合格するためのWebサイトです。
ITパスポート試験,基本情報技術者,応用情報技術者,高度試験の過去問題と解答及び詳細な解説を掲載しています。
  1. トップページ
  2. データベーススペシャリスト
  3. 平成23年度特別問題一覧
  4. 平成23年度特別問題5-解答・解説-分析

平成23年度特別問題

問題5

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

SELECT R.社員番号,S.氏名 FROM R,S
      WHERE R.社員番号 <> S.社員番号
SELECT 社員番号,氏名 FROM R
      UNION SELECT 社員番号,氏名 FROM S
SELECT 社員番号,氏名 FROM R
      WHERE NOT EXISTS
      (SELECT 社員番号 FROM S
       WHERE R.社員番号 = S.社員番号)
SELECT 社員番号,氏名 FROM S
      WHERE S.社員番号 NOT IN
        (SELECT 社員番号 FROM R

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

SELECT R.社員番号,S.氏名 FROM R,S
      WHERE R.社員番号 <> S.社員番号
SELECT 社員番号,氏名 FROM R
      UNION SELECT 社員番号,氏名 FROM S
SELECT 社員番号,氏名 FROM R
      WHERE NOT EXISTS
      (SELECT 社員番号 FROM S
       WHERE R.社員番号 = S.社員番号)
SELECT 社員番号,氏名 FROM S
      WHERE S.社員番号 NOT IN
        (SELECT 社員番号 FROM R

解答:ウ

<解説>

差R-SはRに存在する行からSに存在する行を除外したものである。

よって、表「R」の列「社員番号」のデータが表「S」の列「社員番号」に存在しないレコードを検索(NOT EXISTS)するウが正解である。