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

Valeur NULL 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)

Ensuite, nous utilisons l'instruction UPDATE pour mettre plusieurs champs pouvant être définis sur NULL à NULL :

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

Maintenant, la table COMPANY a cette apparence : :

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

Maintenant, nous utilisons l'opérateur IS NOT NULL pour lister tous les enregistrements où la valeur de SALARY (salaire) n'est pas NULL :

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

Résultat obtenu comme suit :

 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 est utilisé pour rechercher les champs avec des valeurs NULL.

Voici l'utilisation de l'opérateur IS NULL, il liste les enregistrements où la valeur de SALARY (salaire) est NULL :

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

Résultat obtenu comme suit :

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