ホーム > データベーススペシャリスト試験 > 2020年
データベーススペシャリスト試験 2020年 午前2 問07
表Rと表Sに対しSQL文を実行して結果を得るときaに入れる字句はどれか。結果のNULLは値が存在しないことを表す。

ア:COALESCE(正解)
イ:DISTINCT
ウ:NULLIF
エ:UNIQUE
解説
SQLのNULL処理関数問題【午前2 解説】
要点まとめ
- 結論:空欄に入るのはCOALESCEで、NULLを別の値で置き換え結合キーを一つにまとめるためです。
- 根拠:FULL JOINで両表のIDが片方にしかない場合、NULLが発生し、COALESCEで非NULL値を優先的に取得します。
- 差がつくポイント:NULLの扱いと結合結果のID列の統一理解が重要で、他の関数との違いを正確に把握しましょう。
正解の理由
FULL JOINは両方の表に存在する行は結合し、片方にしかない行はNULLを含む行として結果に現れます。
ID列はR.IDとS.IDのどちらか一方がNULLになる場合があるため、ID列を一つにまとめるにはCOALESCE関数を使い、NULLでない方のIDを取得します。
これにより、結果のID列はNULLを含まず、両表のIDを統合した正しい値が表示されます。
ID列はR.IDとS.IDのどちらか一方がNULLになる場合があるため、ID列を一つにまとめるにはCOALESCE関数を使い、NULLでない方のIDを取得します。
これにより、結果のID列はNULLを含まず、両表のIDを統合した正しい値が表示されます。
よくある誤解
DISTINCTやUNIQUEは重複排除のためのキーワードであり、NULLの置換や結合キーの統合には使えません。
NULLIFは2つの値が等しい場合にNULLを返す関数で、今回の目的とは逆の動作です。
NULLIFは2つの値が等しい場合にNULLを返す関数で、今回の目的とは逆の動作です。
解法ステップ
- FULL JOINの結果にNULLが含まれる理由を理解する。
- 結合キー(ID列)が両表で異なる場合、NULLが発生することを確認。
- NULLを非NULL値で置き換え、IDを一つにまとめる関数を考える。
- COALESCE関数が複数の引数から最初の非NULL値を返すことを思い出す。
- SQL文にCOALESCE(R.ID, S.ID)を入れて結果を確認する。
選択肢別の誤答解説
- ア: COALESCE
正解。NULLでない最初の値を返し、IDを統合できる。 - イ: DISTINCT
重複排除のためのキーワードであり、NULL処理や値の置換には使えない。 - ウ: NULLIF
2つの値が等しい場合にNULLを返す関数で、NULLを非NULLに置き換える目的とは逆。 - エ: UNIQUE
制約やインデックスの指定に使うキーワードで、関数ではなく今回の用途に不適切。
補足コラム
COALESCE関数はSQL標準で広く使われ、複数の引数の中から最初に非NULLの値を返します。
NULL処理はSQLの結合や集計で非常に重要で、適切に使うことでデータの欠損を補い、正確な結果を得られます。
FULL JOINは左右両方の表の全行を保持し、片方にしかない行はNULLを含むため、COALESCEとの組み合わせがよく用いられます。
NULL処理はSQLの結合や集計で非常に重要で、適切に使うことでデータの欠損を補い、正確な結果を得られます。
FULL JOINは左右両方の表の全行を保持し、片方にしかない行はNULLを含むため、COALESCEとの組み合わせがよく用いられます。
FAQ
Q: COALESCEとNULLIFの違いは何ですか?
A: COALESCEは複数の値から最初の非NULL値を返し、NULLIFは2つの値が等しい場合にNULLを返します。用途が異なります。
A: COALESCEは複数の値から最初の非NULL値を返し、NULLIFは2つの値が等しい場合にNULLを返します。用途が異なります。
Q: FULL JOINでNULLが発生するのはなぜですか?
A: FULL JOINは両表の全行を結合し、片方にしか存在しない行はもう片方の列がNULLになるためです。
A: FULL JOINは両表の全行を結合し、片方にしか存在しない行はもう片方の列がNULLになるためです。
関連キーワード: COALESCE, FULL JOIN, NULL処理, SQL関数, 結合キー, NULL置換