NULLとは?ヌル
NULLとは、値が存在しない、あるいは値が不明であることを表す標識で、それ自体は値ではない。したがって NULL = NULL は真にならず、比較の結果は真でも偽でもない「不定」になるため、判定には IS NULL / IS NOT NULL を使う。この三値論理はAND・ORの結果や条件の絞り込みにも波及する。
最終更新:2026-10-06
この語が出る過去問を解く →背景
関係の表はすべての行が同じ列を持つので、退職日のようにまだ決まっていない項目にも何かを入れざるを得ない。0や空文字で代用すると「0円の取引」と「金額が未記入」が区別できなくなり、集計が静かに狂う。そこで値の集合の外側に「値が無い」という標識を1つ用意したのがNULLで、代償として比較が三値論理になった。試験で問われる集約関数・外部結合・NOT INの挙動は、すべてこの「値ではない」という一点から導かれる。
具体例
PostgreSQLで社員表に SELECT COUNT(*), COUNT(退職日), AVG(給与) を実行すると、COUNT(*) は全行を数えるのに対し COUNT(退職日) は退職日がNULLの在職者を数えず、AVG は給与がNULLの行を分子からも分母からも外す。
試験での引っ掛け
COUNT(*) 以外の集約関数はNULLの行を計算対象から除く。AVGは件数にも含めないので、NULLを0とみなした平均とは値が異なる。NOT IN の副問合せ結果にNULLが1つでも混ざると全体が不定になり結果が0件になる——NOT EXISTS に書き換えれば避けられる。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問8(IPA)
“社員”表から、部署コードごとの主任の人数と一般社員の人数を求めるSQL文とするために、aに入る字句はどれか。ここで、実線の下線は主キーを表す。 社員(社員コー…
正解:THEN 1 ELSE NULL
要点:COUNTがNULLを無視する性質で条件付き集計を行う
COUNT関数は引数がNULLの行を数えないという性質がある。これを利用し、条件に合う行だけ1を返し、合わない行はNULLを返すようにすれば、条件付きの件数を数えられる。ELSE 0にすると全行が計数対象になってしまう点に注意する。
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問9(IPA)
SQLが提供する3値論理において、Aに5、Bに4、CにNULLを代入したとき、次の論理式の評価結果はどれか。 (A > C) or (B > A) or (C …
正解:unknown(不定)
要点:NULLとの比較はunknown、false ORするとunknownのまま
NULLとの比較演算の結果はtrueでもfalseでもなくunknownになる。ここではCがNULLなので(A>C)と(C=A)はいずれもunknown、(B>A)は4>5でfalseとなる。ORはunknownとfalseの組合せではunknownになるため、式全体の評価結果はunknownである。
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問10(IPA)解説で登場
ある月の“月末商品在庫”表と“当月商品出荷実績”表を使って、ビュー“商品別出荷実績”を定義した。このビューにSQL文を実行した結果の値はどれか。 月末商品在庫:…
正解:400
要点:外部結合で生じたNULLはWHERE条件では選ばれない
ビューは左外部結合で作られているため、出荷実績のない商品は出荷実績数がNULLになる。WHERE句の条件はNULLに対してunknownとなり行が選ばれないので、対象は出荷実績数150の商品と300の商品の2件だけとなる。それぞれの月末在庫数100と300を合計して400になる。
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問11(IPA)
PCへのメモリカードの取付け状態を管理するデータモデルを作成した。1台のPCは、スロット番号によって識別されるメモリカードスロットを二つ備える。“取付け”表を定…
正解:PRIMARY KEY(PCID, スロット番号), UNIQUE(メモリカードID),
要点:取付け位置は複合主キー、カードの重複はUNIQUEで防ぐ
1台のPCは2つのスロットをもち、スロットごとに1枚のカードが取り付けられるため、PCIDとスロット番号の組が取付けを一意に識別する主キーになる。さらに1枚のメモリカードが同時に複数のスロットへ取り付けられることはないので、メモリカードIDに一意性制約が必要になる。
出典:平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問5(IPA)
“社員”表に対して、SQL文を実行して得られる結果はどれか。ここで、実線の下線は主キーを表し、表中の'NULL'は値が存在しないことを表す。 〔社員〕 社員コー…
正解:社員コード: S002, S004, S007
要点:NOT EXISTSの相関副問合せで「部下を持たない社員」を抽出
この副問合せは「自分の社員コードを上司として持つ社員が存在するか」を調べており、NOT EXISTSで否定しているので、誰の上司にもなっていない社員だけが選ばれる。表では上司欄に現れるコードが部下を持つ社員なので、そこに一度も現れない社員が結果になる。
出典・参考
高度試験 午前I(高度午前I 相当)のシラバスの3 技術要素 > 2. データベース設計 > (2) データベースの設計に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。