データベース

基本情報技術者試験SQL」の問題

テクノロジ系データベース難易度:normal
社員表と部署表を部署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

【基本情報技術者試験】SQLの問題 — 解答・解説|ukamiru 過去問