ホーム > 情報処理安全確保支援士試験 > 2022年 秋期
情報処理安全確保支援士試験 2022年 秋期 午前2 問21
表Rと表Sに対して、次のSQL文を実行した結果はどれか。


ア:
イ:
ウ:(正解)
エ:
解説
表Rと表Sに対して、次のSQL文を実行した結果はどれか【午前2 解説】
要点まとめ
- 結論:SQL文は表Rを基準にLEFT OUTER JOINを行い、Rの全行と一致するSの行を結合するため、ウの表が正解です。
- 根拠:LEFT OUTER JOINは左側の表の全行を保持し、右側の表に一致する行がなければNULLを補完するため、Rの全4行が結果に含まれます。
- 差がつくポイント:JOIN条件の理解とLEFT OUTER JOINの動作を正確に把握し、NULLの扱いと結合結果の行数・内容を見極めることが重要です。
正解の理由
このSQL文は「FROM R LEFT OUTER JOIN S ON R.X = S.X」となっており、表Rの全行を基準に、R.XとS.Xが一致する行を結合します。
- RのX列はA001, A002, A003, A005の4行。
- SのX列はA002, A003, A004の3行。
一致するのはA002とA003のみで、これらはSのZ列の値も結合されます。
一致しないA001とA005はSの列がNULLで補完されます。
したがって、結果は4行で、A001とA005のS列はNULL、A002とA003はSの値が表示される表となり、これは選択肢のウの表と一致します。
よくある誤解
- INNER JOINとLEFT OUTER JOINの違いを混同し、結合結果の行数を誤ることがあります。
- NULL値の扱いを誤解し、結合できない行が結果に含まれないと考える誤りが多いです。
解法ステップ
- SQL文のJOIN種類を確認し、LEFT OUTER JOINであることを理解する。
- 左側の表Rの全行が結果に含まれることを認識する。
- JOIN条件(R.X = S.X)で一致する行を探す。
- 一致する行はSの列も結合し、一致しない行はSの列がNULLになることを確認。
- 結果の行数と内容を選択肢の表と照合し、正しいものを選ぶ。
選択肢別の誤答解説
- ア:Rの一部行しか含まれておらず、LEFT OUTER JOINの特徴を満たしていません。
- イ:Sに存在しないA004の行がRの列にNULLで表示されており、LEFT OUTER JOINの基準がRであることに反します。
- ウ:Rの全行が含まれ、Sの一致する行は値が入り、一致しない行はNULLで補完されている正しい結果です。
- エ:A004の行がRの列にNULLで含まれており、LEFT OUTER JOINの基準がRであるため誤りです。
補足コラム
LEFT OUTER JOINはSQLの結合操作の中でもよく使われるもので、左側の表の全行を保持しつつ右側の表の一致する行を結合します。
一致しない右側の行は結果に含まれず、左側の行に対応する右側の列はNULLで埋められます。
この特性を理解することは、データベース設計やクエリ作成において非常に重要です。
一致しない右側の行は結果に含まれず、左側の行に対応する右側の列はNULLで埋められます。
この特性を理解することは、データベース設計やクエリ作成において非常に重要です。
FAQ
Q: LEFT OUTER JOINとINNER JOINの違いは何ですか?
A: INNER JOINは両表の条件に一致する行のみを返しますが、LEFT OUTER JOINは左表の全行を返し、一致しない右表の列はNULLで補完します。
A: INNER JOINは両表の条件に一致する行のみを返しますが、LEFT OUTER JOINは左表の全行を返し、一致しない右表の列はNULLで補完します。
Q: NULL値はどのように扱われますか?
A: JOIN条件に一致しない場合、右表の列はNULLで埋められます。NULLは「値が存在しない」ことを示します。
A: JOIN条件に一致しない場合、右表の列はNULLで埋められます。NULLは「値が存在しない」ことを示します。
関連キーワード: SQL, LEFT OUTER JOIN, JOIN条件, NULL値, データベース結合, テーブル結合, SQL実行結果