基本情報技術者試験「SQL」の問題
社員表と部署表を部署IDで結合する。社員表のうち部署IDが未設定(NULL)の社員も含め、社員を漏れなく結果に残したい。用いる結合はどれか。
ア両表で一致する行だけを返す内部結合(INNER JOIN)
イ左外部結合(LEFT OUTER JOIN)
ウ全組合せを生成する交差結合(CROSS JOIN)
エ和集合を取る合併演算(UNION)
正解
イ.左外部結合(LEFT OUTER JOIN)
社員表を左表に置いた左外部結合は、結合相手の部署が存在しない社員も左表側を保持し部署側をNULLで補う。社員を漏れなく残すという要件を満たすため正しい。
?選択肢ごとの解説
ア ×内部結合は両表で結合条件が一致する行だけを返すため、部署が未設定の社員は結果から脱落してしまう。
イ ○社員表を左表に置いた左外部結合は、結合相手の部署が存在しない社員も左表側を保持し部署側をNULLで補う。社員を漏れなく残すという要件を満たすため正しい。
ウ ×交差結合は両表の全行の組合せを作る直積であり、結合条件で対応づける本問の目的とは異なる。
エ ×合併(UNION)は2つの問合せ結果を縦に連結する集合演算であり、表を横に結合する操作ではない。
✎くわしく
結合は対応関係で表を横につなぐ。内部結合は一致行のみ、外部結合は基準表の非一致行も保持する。LEFTは左表、RIGHTは右表、FULLは両表を基準に残す。『どちらの表を漏らさないか』で外部結合の種類を選ぶ。
✓本番での押さえどころ
試験のコツ
『一致のみ=内部結合』『基準表を全部残す=外部結合(LEFT/RIGHT/FULL)』で判定する。残したい側を基準表に置く。
覚え方
LEFT OUTERは『左を全部、右は来れば付ける』。左の社員は全員残る、と方向で覚える。
よくある誤り
内部結合と外部結合の違いを意識せず、非一致行が消えることに気づかない誤りが多い。基準表側を必ず残すのが外部結合。
データベースの他の問題
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0053