SQLite NULL 値

SQLite のNULLは、欠損値を表すための項目です。テーブル内の NULL 値は、フィールドに空白として表示される値です。

NULL 値を持つフィールドは、値を持たないフィールドです。NULL 値はゼロ値やスペースを含むフィールドとは異なることを理解することが非常に重要です。

構文

テーブル作成時に使用するNULLの基本構文は次のとおりです:

SQLite> CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

ここでは、NOT NULL列が常に指定されたデータ型の明示的な値を受け付けることを示します。ここでは2つの列に NOT NULL を使用していません。つまり、これらの2つの列は NULL にできることを意味します。

NULL 値を持つフィールドは、レコード作成時に空のままにすることができます。

例

NULL 値はデータを選択する際に問題を引き起こします。未知の値を別の値と比較すると、結果は常に不明であり、最終結果に含まれないためです。次のようなテーブルがあると仮定します。COMPANY のレコードは次のとおりです。

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

UPDATE 文を使用して、NULL を許可するいくつかの値を NULL に設定してみましょう。次のようにします。

sqlite> UPDATE COMPANY SET ADDRESS = NULL, SALARY = NULL where ID IN(6,7);

現在、COMPANY テーブルのレコードは次のとおりです。

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22
7           James       24

次に、IS NOT NULL演算子の用法を見てみましょう。これは、SALARY が NULL でないすべてのレコードを一覧表示するために使用します。

sqlite> SELECT  ID, NAME, AGE, ADDRESS, SALARY
        FROM COMPANY
        WHERE SALARY IS NOT NULL;

上記の SQLite ステートメントは、次の結果を生成します。

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

以下はIS NULL演算子の用法です。SALARY が NULL であるすべてのレコードを一覧表示します。

sqlite> SELECT  ID, NAME, AGE, ADDRESS, SALARY
        FROM COMPANY
        WHERE SALARY IS NULL;

上記の SQLite ステートメントは、次の結果を生成します。

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22
7           James       24
その他の拡張