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その他の拡張