令和7年度 秋期 データベーススペシャリスト試験 午前II 問9

テクノロジデータベース

この問題は2025(R7)秋 データベーススペシャリスト 午前IIに出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。

本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。

“名簿1”表と“名簿2”表のそれぞれ対応する行が全て等しいかどうかを確認するSQL文のa, b, cに入れる適切な字句はどれか。

名簿1と名簿2の表
図の説明テキスト

名簿1と名簿2の2つの表。

名簿1

名前 住所 性別 年齢
試験 太郎 東京 22
情報 花子 大阪 24
処理 一郎 京都 35

名簿2

名前 住所 性別 年齢
試験 太郎 東京 22
情報 花子 大阪 24
処理 一郎 京都 35
SQL文
図の説明テキスト

〔SQL文〕
SELECT CASE WHEN COUNT(*) = 0 THEN '等しい' ELSE '異なる' END AS 結果
FROM ((SELECT * FROM 名簿1 a SELECT * FROM 名簿2)
b
(SELECT * FROM 名簿1 c SELECT * FROM 名簿2)
) COMPARE

解答・解説を読む

正解: 選択肢

正解の根拠

“名簿1”表と“名簿2”表の対応する行が全て等しいことを確認するには、二つの表のデータの差異を調べる必要があります。
関係代数の集合演算を用いると、以下の手順で両者が等しいかを確認できます。

  1. 和集合(UNION): “名簿1”と“名簿2”のすべての行を合わせた結果(重複は排除される)。
  2. 積集合(INTERSECT): “名簿1”と“名簿2”の両方に共通して存在する行。
  3. 差集合(EXCEPT): 和集合から積集合を差し引きます。

もし“名簿1”と“名簿2”が完全に等しければ、和集合と積集合は同じ結果になります。そのため、(名簿1 UNION 名簿2) EXCEPT (名簿1 INTERSECT 名簿2) の結果が0件(空)であれば、両者は全く同じであると判定できます。したがって、字句の組み合わせとして UNIONEXCEPTINTERSECT の順に適用する が正解となります。

各選択肢の解説

  • : aに EXCEPT、bに UNION ALL、cに INTERSECT を当てはめると、表の差と共通部分を単純に足し合わせる処理となり、等価性の確認にはなりません。
  • : アと同様に、集合演算の組み合わせが等価性の判定条件を満たしません。
  • : aに UNION ALL、bに INTERSECT、cに UNION を当てはめると、単なる和集合などを求めるだけの処理になってしまい、両者の差を正確に抽出できません。
  • : 正解。和集合から積集合を引く(差集合を求める)ことで、どちらか一方にしか存在しない行を抽出でき、表の完全な一致を確認できます。