表列内の NULL 値
各行において、意味のある値が一部の列にはない場合があります。 Db2 特別な値のインジケータであるヌル値を使用して、不明または欠落している値を表します。 NULL 値は、Db2 がデータが存在しないことを意味すると解釈する特殊値です。
特に指定がない場合、 Db2 では、どの列にもNULL値を含めることができます。 ユーザーは、列に対して値を入れずに、表に行を作成できます。
NOT NULL 文節を使用すると、列に NULL 値があることを許可しません。 主キーは NOT NULL として定義する必要があります。
例
例えば、DEPT 表の表定義は、いつ NULL 値を使用できるかを指定します。 NULL を使用できるのは、以下の例の場合は MGRNO 列に対してだけである点に注意してください。
CREATE TABLE DEPT
(DEPTNO CHAR(3) NOT NULL,
DEPTNAME VARCHAR(36) NOT NULL,
MGRNO CHAR(6) ,
ADMRDEPT CHAR(3) NOT NULL,
PRIMARY KEY (DEPTNO) )
IN MYDB.MYTS;特定の列にある不明値に対して NULL を許可するかどうかを決める前に、照会の結果に NULL がどのような影響を及ぼすかに注意する必要があります (以下を参照)。
- アプリケーション・プログラムでのヌル
- NULL を使用すると、SQL ステートメント内のどの条件 (特別な IS NULL 述部を除く) も満足させることができません。 Db2 null値を非null値とは異なる方法でソートします。 NULL 値は、他の値のようには扱われません。 例えば、 Db2 にNULL値が既知の値よりも大きいかどうかを尋ねた場合、答えは「不明」となります。 Db2 に、NULL値が同じ既知の値よりも小さいかどうかを尋ねた場合、答えは依然として「不明」となります。
特定の列に対して UNKNOWN の値が戻されることを許容しない場合、NULL の代わりにデフォルト値を定義することができます。 プログラマーは、デフォルト値を扱う方法には精通しています。
- 結合操作での NULL
- NULL は結合操作で特別な扱いが必要です。 NULL 値が含まれている可能性のある列に対して結合操作を行う場合、外部結合の使用を検討してください。