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