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

PostgreSQL 基础教程

PostgreSQL 高级教程

PostgreSQL 接口

Valores NULL do PostgreSQL

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 文件 ),数据内容如下:

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 :

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

Agora, usamos o operador IS NOT NULL para listar todos os registros onde o valor de SALARY (salário) não é nulo:

w3codeboxdb=# SELECT ID, NAME, AGE, ADDRESS, SALARY FROM COMPANY WHERE SALARY IS NOT NULL;

Resultados obtidos:

 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 é usado para encontrar campos com valores NULL.

Aqui está o uso do operador IS NULL, listando os registros onde o valor de SALARY (salário) é nulo:

w3codeboxdb=# SELECT ID, NAME, AGE, ADDRESS, SALARY FROM COMPANY WHERE SALARY IS NULL;

Resultados obtidos:

id | name  | age | address | salary
----+-------+-----+---------+--------
  6 | Kim         |  22 |                                                                             |
  7 | James |  24 |                                                                             |
(2 rows)