Valor NULL en PostgreSQL

El valor NULL representa datos desconocidos faltantes.

De forma predeterminada, las columnas de una tabla pueden almacenar valores NULL.

Este capítulo explica los operadores IS NULL e IS NOT NULL.

Sintaxis

La sintaxis básica de NULL al crear una tabla es la siguiente:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

Aquí, NOT NULL significa que el campo debe contener siempre un valor. Esto implica que, si no se agrega un valor al campo, no se puede insertar un nuevo registro ni actualizar un registro.

Un campo con valor NULL indica que puede dejarse vacío al crear el registro.

Al consultar datos, el valor NULL puede causar algunos problemas, porque al comparar un valor desconocido con cualquier otro valor, el resultado siempre es desconocido.

Además, no se puede comparar NULL con 0, ya que no son equivalentes.

Ejemplo

Ejemplo

Crear la tabla COMPANY (Descargar el archivo SQL de COMPANY), con el siguiente contenido de datos:

ejemplodb# 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)

A continuación, usamos la declaración UPDATE para establecer como NULL algunos campos que pueden ser nulos:

ejemplodb=# UPDATE COMPANY SET ADDRESS = NULL, SALARY = NULL where ID IN(6,7);
Ahora la tabla COMPANY se ve así:
ejemplodb=# 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

Ahora, usamos el operador IS NOT NULL para listar todos los registros cuyo valor SALARY (salario) no sea nulo:

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

El resultado obtenido es el siguiente:

 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 se utiliza para buscar campos cuyo valor sea NULL.

A continuación se muestra el uso del operador IS NULL, para listar los registros cuyo valor SALARY (salario) esté vacío:

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

El resultado obtenido es el siguiente:

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