データベーススペシャリスト試験 令和4年度 秋期 午前II 問9
SQL文1とSQL文2を実行した結果が同一になるために、表Rが満たすべき必要十分な条件はどれか。
〔SQL文1〕 SELECT * FROM R UNION SELECT * FROM R 〔SQL文2〕 SELECT * FROM R
選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】ウ
UNIONは二つの問合せ結果を和集合にし、その際に重複行を一つにまとめます。SQL文1は同じ表Rを二度指定しているため、結果としてRに含まれる各種類の行が一行ずつ返されます。一方、SQL文2にはDISTINCTがないので、Rに重複行があれば重複したまま返されます。したがって、両者の結果が同一になる必要十分条件は、表Rに重複する行が存在しないことであり、ウが正解です。
アのNULLをもつ行が存在しないという条件は誤りです。NULLの有無だけでは重複行の有無は決まりません。NULLがなくても同じ値の行が二つあれば結果は異なり、NULLがあっても行が重複していなければ結果は同一です。
イの行数が0であるという条件は誤りです。空表なら結果は同一になるので十分条件ではありますが、重複のない行が存在する場合も同一になるため、必要条件ではありません。
エの列数が1であるという条件は誤りです。列数にかかわらず、全列の値が同じ行が複数あればUNIONによって一行にまとめられます。
【ポイント】 UNIONは重複を除去し、UNION ALLは重複を残したまま結果を連結します。 SELECT DISTINCTも、SELECTの結果から重複行を除去するために使用します。
出典:令和4年度 秋期 データベーススペシャリスト試験 午前II 問9
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の25問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる