NULLは「未知」または「未定」と定義されるもので「ゼロ」や「空白」「?文字」とは区別される。
数値のゼロや文字の空白、空文字はそれぞれデータが「有る」状態だが、NULLはデータが「ない」という状態を表す。
列にNULLを許さない場合、表定義でNOT NULL制約を設定する。
NOT NULL制約が設定されたれるには必ず値が必要となる。
主キーは必ず値を必要とするので、主キーを定義すると自動的にNOT NULL制約が設定される。
NULLは値を持たないため、通常の演算子を使った条件式では検索することができない。
列の値がNULLかどうかを条件判定するには、IS NULL演算子、IS NOT NULL演算子を使用する。
例.select * from prod where price is null;
各集約関数ではNULLは無視されることがある。
例えば、count(*)ではNULLも数えられるが、avg関数を使った平均値算出のときには数えられない。
空文字はINSERT文で文字列型の列データに「”」(シングルクォートを2つ連続)で指定する。
空文字はNULLではないので、NOT NULL制約に違反しない。