NOT NULL制約とは?のっとぬるせいやく
NOT NULL制約とは、列にNULLを格納することを禁じる制約。NULLは値ではなく「不明」を表す印なので、比較すると真でも偽でもない不定になり、条件からも集計からも黙って外れる。この不定を投入の時点で締め出すのがこの制約で、主キーを構成する列には実体保全性の要請から暗黙に課される。
最終更新:2026-10-06
データベースSPを最短で暗記・合格する →背景
SQLの比較は真・偽・不定の三値論理で動くため、NULLを許した列は問合せを書くたびにIS NULLの扱いを考えなければならない。集計から静かに落ちる、外部結合の結果と区別が付かない、といった不具合はテストで見つけにくい。列の意味として値が必ず存在すると言えるなら、宣言でそう明示して考える対象を減らすほうが安全になる。論理設計でどの列に課すかを判断させる形で問われる。
具体例
受注表の受注日をNULL許容のままにすると、期間指定の月次集計から日付未入力の行が黙って除外される。既存表へ後付けするときは、PostgreSQLは全行を検査するため排他ロックがかかり、MySQLでも表の作り直しが走る。先に既定値でNULL行を埋め、それから制約を足す順にする。
試験での引っ掛け
空文字列や0はNULLではないので、この制約があっても未入力を意味する空文字は入り得る。値が存在することは保証しても、意味のある値であることは保証しない。またOracleでは単一列の索引にNULLの行が載らないため、この制約が無い列のIS NULL検索では索引が使われない。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。