PostgreSQL - Valores NULL
El PostgreSQL NULLes el término utilizado para representar un valor perdido. Un valor NULO en una tabla es un valor en un campo que parece estar en blanco.
Un campo con un valor NULL es un campo sin valor. Es muy importante comprender que un valor NULO es diferente de un valor cero o un campo que contiene espacios.
Sintaxis
La sintaxis básica del uso NULL al crear una tabla es el 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 NULLsignifica que la columna siempre debe aceptar un valor explícito del tipo de datos dado. Hay dos columnas en las que no usamos NOT NULL. Por lo tanto, esto significa que estas columnas podrían ser NULL.
Un campo con un valor NULL es uno que se ha dejado en blanco durante la creación del registro.
Ejemplo
El valor NULL puede causar problemas a la hora de seleccionar datos, porque al comparar un valor desconocido con cualquier otro valor, el resultado siempre es desconocido y no se incluye en los resultados finales. Considere la siguiente tabla, EMPRESA que tiene los siguientes registros:
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
Usemos la instrucción UPDATE para establecer algunos valores anulables como NULL de la siguiente manera:
testdb=# UPDATE COMPANY SET ADDRESS = NULL, SALARY = NULL where ID IN(6,7);
Ahora, la tabla EMPRESA debe tener los siguientes registros:
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)
A continuación, veamos el uso de IS NOT NULL operador para enumerar todos los registros donde SALARIO no es NULO -
testdb=# SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM COMPANY
WHERE SALARY IS NOT NULL;
La declaración de PostgreSQL dada anteriormente producirá el siguiente resultado:
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)
El siguiente es el uso de IS NULL operador que enumerará todos los registros donde SALARIO es NULO -
testdb=# SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM COMPANY
WHERE SALARY IS NULL;
La declaración de PostgreSQL dada anteriormente producirá el siguiente resultado:
id | name | age | address | salary
----+-------+-----+---------+--------
6 | Kim | 22 | |
7 | James | 24 | |
(2 rows)