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. Следовательно, это означает, что эти столбцы могут быть NULL.
Поле со значением NULL — это поле, которое было оставлено пустым при создании записи.
пример
Значение NULL может вызвать проблемы при выборе данных, поскольку при сравнении неизвестного значения с любым другим значением результат всегда неизвестен и не включается в окончательные результаты. Рассмотрим следующую таблицу, КОМПАНИЯ, имеющая следующие записи —
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)
Далее, давайте посмотрим на использование оператора IS NOT NULL для вывода списка всех записей, где SALARY не равен 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)
Ниже приводится использование оператора IS NULL, который перечислит все записи, где SALARY равен NULL.
testdb=# SELECT ID, NAME, AGE, ADDRESS, SALARY FROM COMPANY WHERE SALARY IS NULL;
Приведенный выше оператор PostgreSQL даст следующий результат: