Postgresql-null-values
提供:Dev Guides
PostgreSQL-NULL値
PostgreSQL NULL は、欠損値を表すために使用される用語です。 テーブルのNULL値は、空白のように見えるフィールドの値です。
NULL値を持つフィールドは、値のないフィールドです。 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 は、列が指定されたデータ型の明示的な値を常に受け入れることを意味します。 NOT NULLを使用しなかった2つの列があります。 したがって、これは、これらの列がNULLになる可能性があることを意味します。
NULL値を持つフィールドは、レコードの作成中に空白のままになっているフィールドです。
例
NULL値は、データを選択するときに問題を引き起こす可能性があります。未知の値を他の値と比較すると、結果は常に未知であり、最終結果に含まれないためです。 次の表、link:/postgresql/company.sql [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として設定します。
testdb=# UPDATE COMPANY SET ADDRESS = NULL, SALARY = NULL where ID IN(6,7);
さて、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)
次に、SALARYがNULLでないすべてのレコードをリストする IS NOT NULL 演算子の使用法を見てみましょう-
testdb=# SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM COMPANY
WHERE SALARY IS NOT NULL;
上記のPostgreSQLステートメントは、次の結果を生成します-
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)
以下は、SALARYがNULLであるすべてのレコードをリストダウンする IS NULL 演算子の使用法です-
testdb=# SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM COMPANY
WHERE SALARY IS NULL;
上記のPostgreSQLステートメントは、次の結果を生成します-
id | name | age | address | salary
----+-------+-----+---------+--------
6 | Kim | 22 | |
7 | James | 24 | |
(2 rows)