PostgreSQL NULL 値

NULL 値は欠落した未知のデータを表します。

デフォルトでは、テーブルの列は NULL 値を格納できます。

この章では IS NULL および IS NOT NULL 演算子について説明します。

構文

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

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

ここで、NOT NULL はフィールドが常に値を含むことを強制します。つまり、フィールドに値を追加しないと、新しいレコードを挿入したりレコードを更新したりできません。

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

データをクエリするとき、NULL 値はいくつかの問題を引き起こす可能性があります。未知の値を他の任意の値と比較すると、結果は常に未知になるためです。

また、NULL と 0 は等価ではないため、比較できません。

例

例

COMPANY テーブルを作成します(COMPANY SQL ファイルをダウンロード)、データ内容は次のとおりです:

サンプルdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

次に、UPDATE 文を使用して、NULL に設定できるいくつかのフィールドを NULL に設定します:

サンプルdb=# UPDATE COMPANY SET ADDRESS = NULL, SALARY = NULL where ID IN(6,7);
これで COMPANY テーブルは次のようになります:
サンプルdb=# select * from company;
 id | name  | age |         address     | salary 
----+-------+-----+---------------------+--------
  1 | Paul  |  32 | California          |  20000
  2 | Allen |  25 | Texas               |  15000
  3 | Teddy |  23 | Norway              |  20000
  4 | Mark  |  25 | Rich-Mond           |  65000
  5 | David |  27 | Texas               |  85000
  6 | Kim   |  22 |                     |       
  7 | James |  24 |                     |       
(7 rows)

IS NOT NULL

次に、IS NOT NULL 演算子を使用して、SALARY(給与)値が空でないすべてのレコードを一覧表示します:

サンプルdb=# SELECT  ID, NAME, AGE, ADDRESS, SALARY FROM COMPANY WHERE SALARY IS NOT NULL;

結果は次のとおりです:

 id | name  | age | address    | salary
----+-------+-----+------------+--------
  1 | Paul  |  32 | California |  20000
  2 | Allen |  25 | Texas      |  15000
  3 | Teddy |  23 | Norway     |  20000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
(5 rows)

IS NULL

IS NULL は NULL 値を持つフィールドを検索するために使用します。

以下は IS NULL 演算子の使用方法で、SALARY(給与)値が空のレコードを一覧表示します:

サンプルdb=#  SELECT  ID, NAME, AGE, ADDRESS, SALARY FROM COMPANY WHERE SALARY IS NULL;

結果は次のとおりです:

id | name  | age | address | salary
----+-------+-----+---------+--------
  6 | Kim   |  22 |         |
  7 | James |  24 |         |
(2 rows)
その他の拡張