令和4年度 秋期 午前Ⅱ 問9
データ操作
UNIONに関する問題
SQL 文 1 と SQL 文 2 を実行した結果が同一になるために,表 R が満たすべき必要十分な条件はどれか。
〔SQL 文 1〕 SELECT * FROM R UNION SELECT * FROM R 〔SQL 文 2〕 SELECT * FROM R
- ア値に NULL をもつ行は存在しない。
- イ行数が 0 である。
- ウ重複する行は存在しない。
- エ列数が 1 である。
答えと解説を見る
✓ これが正解ウ重複する行は存在しない。
解説
UNION は重複行を除くので、R に重複行が無いことが必要十分です。
UNION は、二つの問合せ結果を合わせたうえで重複する行を除きます。SQL 文1は表 R とそれ自身の UNION なので、結果は R から重複行を除いたものになります。SQL 文2は R をそのまま返すので、R に重複行があればその分だけ行数が多く、無ければ二つの結果は同じです。したがって、結果が同一になるための必要十分な条件は、R に重複する行が存在しないことです。条件が必要十分かどうかは、それが成り立てば必ず同じになり、成り立たなければ必ず違うかの両方を確かめます。UNION を使うと重複行が一つにまとまる、という一点が鍵です。
ほかの選択肢はなぜ違うのか
- ア値に NULL をもつ行は存在しない。:NULL を含む行があっても、UNION の重複判定では NULL どうしも同じ値として扱われるので、重複行が無ければ R はそのまま返ります。NULL の有無は結果の一致を左右せず、この条件は必要でも十分でもありません。
- イ行数が 0 である。:行数が0なら両方とも空になるので結果は同じですが、行があっても重複が無ければやはり同じになります。0行であることは十分ではあっても必要ではないので、必要十分な条件とはいえません。
- エ列数が 1 である。:列数が1であっても、同じ値の行が二つあれば SQL 文1では一つにまとめられ、結果が異なります。列数は重複の有無と関係が無く、結果の一致を決める条件ではありません。
出典:令和4年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問9
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)