English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

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 表( ,

w3codeboxdb# 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로 설정하는 방법입니다:

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

이제 COMPANY 테이블은 다음과 같습니다:

w3codeboxdb=# 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(급여) 값이 NULL이 아닌 기록을 나열합니다:

w3codeboxdb=# 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(급여) 값이 NULL인 기록을 나열합니다:

w3codeboxdb=#  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)