令和7年度 秋期 データベーススペシャリスト試験 午前II 問9
テクノロジデータベース
この問題は2025(R7)秋 データベーススペシャリスト 午前IIに出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。
本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。

図の説明テキスト
名簿1と名簿2の2つの表。
名簿1
| 名前 | 住所 | 性別 | 年齢 |
|---|---|---|---|
| 試験 太郎 | 東京 | 男 | 22 |
| 情報 花子 | 大阪 | 女 | 24 |
| 処理 一郎 | 京都 | 男 | 35 |
名簿2
| 名前 | 住所 | 性別 | 年齢 |
|---|---|---|---|
| 試験 太郎 | 東京 | 男 | 22 |
| 情報 花子 | 大阪 | 女 | 24 |
| 処理 一郎 | 京都 | 男 | 35 |

図の説明テキスト
〔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”表の対応する行が全て等しいことを確認するには、二つの表のデータの差異を調べる必要があります。
関係代数の集合演算を用いると、以下の手順で両者が等しいかを確認できます。
- 和集合(UNION): “名簿1”と“名簿2”のすべての行を合わせた結果(重複は排除される)。
- 積集合(INTERSECT): “名簿1”と“名簿2”の両方に共通して存在する行。
- 差集合(EXCEPT): 和集合から積集合を差し引きます。
もし“名簿1”と“名簿2”が完全に等しければ、和集合と積集合は同じ結果になります。そのため、(名簿1 UNION 名簿2) EXCEPT (名簿1 INTERSECT 名簿2) の結果が0件(空)であれば、両者は全く同じであると判定できます。したがって、字句の組み合わせとして UNION、EXCEPT、INTERSECT の順に適用する エ が正解となります。
各選択肢の解説
- ア: aに
EXCEPT、bにUNION ALL、cにINTERSECTを当てはめると、表の差と共通部分を単純に足し合わせる処理となり、等価性の確認にはなりません。 - イ: アと同様に、集合演算の組み合わせが等価性の判定条件を満たしません。
- ウ: aに
UNION ALL、bにINTERSECT、cにUNIONを当てはめると、単なる和集合などを求めるだけの処理になってしまい、両者の差を正確に抽出できません。 - エ: 正解。和集合から積集合を引く(差集合を求める)ことで、どちらか一方にしか存在しない行を抽出でき、表の完全な一致を確認できます。