Buscar..
Introducción
NULL
en SQL, así como la programación en general, significa literalmente "nada". En SQL, es más fácil de entender como "la ausencia de cualquier valor".
Es importante distinguirlo de valores aparentemente vacíos, como la cadena vacía ''
o el número 0
, ninguno de los cuales es NULL
.
También es importante tener cuidado de no incluir NULL
entre comillas, como 'NULL'
, que se permite en las columnas que aceptan texto, pero no es NULL
y puede causar errores y conjuntos de datos incorrectos.
Filtrado para NULL en consultas
La sintaxis para el filtrado de NULL
(es decir, la ausencia de un valor) en los bloques WHERE
es ligeramente diferente al filtrado de valores específicos.
SELECT * FROM Employees WHERE ManagerId IS NULL ;
SELECT * FROM Employees WHERE ManagerId IS NOT NULL ;
Tenga en cuenta que dado que NULL
no es igual a nada, ni siquiera a sí mismo, usar operadores de igualdad = NULL
o <> NULL
(o != NULL
) siempre producirá el valor de verdad de UNKNOWN
que será rechazado por WHERE
.
WHERE
filtra todas las filas en las que la condición es FALSE
o UKNOWN
y mantiene solo las filas en las que la condición es TRUE
.
Columnas anulables en tablas
Al crear tablas, es posible declarar una columna como anulable o no anulable.
CREATE TABLE MyTable
(
MyCol1 INT NOT NULL, -- non-nullable
MyCol2 INT NULL -- nullable
) ;
De forma predeterminada, todas las columnas (excepto aquellas en la restricción de clave principal) son anulables a menos que nosotros configuremos explícitamente la restricción NOT NULL
.
Intentar asignar NULL
a una columna no anulable resultará en un error.
INSERT INTO MyTable (MyCol1, MyCol2) VALUES (1, NULL) ; -- works fine
INSERT INTO MyTable (MyCol1, MyCol2) VALUES (NULL, 2) ;
-- cannot insert
-- the value NULL into column 'MyCol1', table 'MyTable';
-- column does not allow nulls. INSERT fails.
Actualizando campos a NULL
Establecer un campo en NULL
funciona exactamente igual que con cualquier otro valor:
UPDATE Employees
SET ManagerId = NULL
WHERE Id = 4
Insertando filas con campos NULOS
Por ejemplo, insertar un empleado sin número de teléfono ni administrador en la tabla de ejemplo de Empleados :
INSERT INTO Employees
(Id, FName, LName, PhoneNumber, ManagerId, DepartmentId, Salary, HireDate)
VALUES
(5, 'Jane', 'Doe', NULL, NULL, 2, 800, '2016-07-22') ;