NULLの扱いと三値論理とは?なるのあつかいとさんちろんり
NULLの扱いと三値論理とは、値が入っていないことを表すNULLは、0や空文字とは別の標識である。値が分からない以上、比較の結果も真偽を決められないため、SQLは真・偽・不明(UNKNOWN)の三値で条件を評価する。WHERE句が返すのはTRUEの行だけなので、UNKNOWNになった行は結果から落ちる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
業務データには、まだ決まっていない退職日や、そもそも該当しない配偶者名のように、値を置けない欄が必ず生じる。ここに0や空文字を入れると、集計や比較で本物の0や空文字と区別できなくなる。「値が無い」を独立した標識として持つ代わりに、比較が真偽へ落ちないという副作用を三値論理で引き受けた——この取引の結果が、SQLの数々の落とし穴になっている。
具体例
退職日がNULLの在職者を残したくて「退職日 <> '2025-03-31'」と書くと、NULL行はUNKNOWNとなって結果から消える。意図どおりにするには「退職日 IS NULL OR 退職日 <> '2025-03-31'」と書くか、COALESCEで既定値へ置き換えてから比較する。
試験での引っ掛け
NULL = NULL は真ではなく不定で、比較演算子では決して真にならないためIS NULLを使う。NOT INの副問合せ結果にNULLが1つでも混ざると全体が不定になり0件になる罠がある。集約関数はCOUNT(*)を除きNULLを無視するのでCOUNT(列)は全行数と一致せず、AVGの分母も減る。NULLどうしは=で等しくならないのにGROUP BYでは同じグループにまとめられる点も狙われる。
関連用語
出た過去問
出典:平成29年度 春期 応用情報技術者試験 午前 問28(IPA)
“部品”表のメーカコード列に対し,B+木インデックスを作成した。これによって,“部品”表の検索の性能改善が最も期待できる操作はどれか。ここで,部品及びメーカのデ…
正解:メーカコードの値が4001以上,4003以下の部品を検索する。
要点:B+木インデックスは範囲検索で最も効果を発揮する
B+木インデックスは値が大小順に並び、葉ノードが順につながっているため、ある範囲に含まれる値をまとめて取り出す範囲検索で効果が大きい。値の種類が多く均一に分散していれば、絞り込まれる行数も少なくて済む。
出典:平成30年度 秋期 応用情報技術者試験 午前 問29(IPA)
“部品”表のメーカコード列に対し,B+木インデックスを作成した。これによって,“部品”表の検索の性能改善が最も期待できる操作はどれか。ここで,部品及びメーカのデ…
正解:メーカコードの値が4001以上,4003以下の部品を検索する。
要点:B+木インデックスは絞り込みの効く範囲・等値検索で効果が大きい。
B+木インデックスは葉ノードがキー順に連結されているため、ある範囲に収まる値を探す検索や、特定の値に等しい行を探す検索で効率がよい。値の種類が多く均一に分散している状況で、限られた範囲だけを取り出す検索は、絞り込みが強く働くのでインデックスの効果が大きい。一方、否定条件のように表の大部分が該当する検索では、表全体を読むほうが速く、インデックスは活かせない。
出典・参考
公式シラバスの3 技術要素 > 2. データベース設計 > (2) データベースの設計に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。