MySQL ES NULO Y NO ES NULO con ejemplos
โก Resumen inteligente
MySQL IS NULL e IS NOT NULL son palabras clave de comparaciรณn que comprueban si una columna contiene un valor faltante. NULL indica datos ausentes, se comporta de manera diferente a cero o una cadena vacรญa, y requiere operadores especรญficos para un filtrado fiable.

En SQL, NULL es tanto un valor como una palabra clave. Analicemos primero el valor NULL.
ยฟQuรฉ es NULL en MySQL?
En lenguaje sencillo, NULL es un marcador de posiciรณn para datos que no existen.Al realizar operaciones de inserciรณn en tablas, habrรก ocasiones en las que algunos valores de campo no estarรกn disponibles.
Para cumplir con los requisitos de los verdaderos sistemas de gestiรณn de bases de datos relacionales, MySQL Utiliza NULL como marcador de posiciรณn para los valores que no se han enviado. La siguiente captura de pantalla muestra cรณmo se ven los valores NULL en una tabla de base de datos.
Observa que las celdas vacรญas estรกn marcadas como NULL, no como texto en blanco ni como cero. Antes de continuar, veamos algunos conceptos bรกsicos sobre NULL.
- NULL no es un tipo de datos โ esto significa que no se reconoce como โintโ, โdateโ o cualquier otro tipo de datos definido.
- Operaciones aritmeticas que implica NULL devolver NULL, por ejemplo, 69 + NULL = NULL.
- La mayorรญa de las Funciones agregadas ignorar las filas que contienen valores NULL. La รบnica excepciรณn es COUNT(*), que cuenta todas las filas independientemente de si son NULL.
Cรณmo las funciones de agregaciรณn tratan los valores NULL
Esta regla modifica las respuestas que devuelven las consultas de informes, asรญ que vamos a demostrarlo. Empecemos con el contenido actual de la tabla de miembros.
SELECT * FROM `members`;
Al ejecutar el script anterior obtenemos los siguientes resultados.
| membership_ number | full_ names | gender | date_of_ birth | physical_ address | postal_ address | contact_ number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
| 5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
| 8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me |
La columna de nรบmero de contacto resaltada contiene nueve filas en total, pero dos de ellas son nulas. Contemos todos los miembros que han actualizado su nรบmero de contacto.
SELECT COUNT(contact_number) FROM `members`;
Al ejecutar la consulta anterior obtenemos los siguientes resultados.
| COUNT(contact_number) |
|---|
| 7 |
Nota: La respuesta es 7 y no 9, porque no se incluyeron los dos valores NULL. Si se aplicara COUNT(*) a la misma tabla, el resultado serรญa 9, ya que COUNT(*) cuenta filas en lugar de valores.
Valores NO NULOS
Una soluciรณn mรกs segura consiste en impedir que se introduzcan valores NULL en las columnas obligatorias. Esa es la funciรณn de la restricciรณn NOT NULL.
ยฟQuรฉ es el NO? Operaยฟcolina?
El operador lรณgico NOT se utiliza para comprobar condiciones booleanas y devuelve verdadero si la condiciรณn es falsa. El operador NOT devuelve falso si la condiciรณn que se estรก comprobando es verdadera.
| Estado del producto | OperaResultado del motor |
|---|---|
| Cierto | Falso |
| Falso | Cierto |
ยฟPor quรฉ usar NOT NULL?
Habrรก ocasiones en las que debamos realizar cรกlculos sobre un conjunto de resultados de una consulta y devolver los valores. Realizar cualquier operaciรณn aritmรฉtica en una columna que contiene un valor NULL devuelve un resultado NULL. Para evitar estas situaciones, podemos usar la clรกusula NOT NULL para limitar los resultados sobre los que se procesan nuestros datos.
Creaciรณn de una tabla con una columna que no admite valores nulos.
Supongamos que queremos crear una tabla con ciertos campos que siempre deben contener valores al insertar nuevas filas. Podemos usar la clรกusula NOT NULL en un campo especรญfico al crear la tabla.
El ejemplo que se muestra a continuaciรณn crea una nueva tabla que contiene datos de los empleados. Siempre se debe proporcionar el nรบmero de empleado.
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Intentemos ahora insertar un nuevo registro sin especificar el nรบmero de empleado y veamos quรฉ sucede.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Ejecutando el script anterior en MySQL Banco de trabajo Se produce el siguiente error porque se omitiรณ la columna obligatoria.
Palabras clave IS NULL y IS NOT NULL
La restricciรณn bloquea los nuevos valores NULL. Para trabajar con valores NULL que ya existen, se utiliza NULL como palabra clave. La sintaxis es la siguiente.
column_name IS NULL column_name IS NOT NULL
AQUร
- "ES NULO" es la palabra clave que realiza la comparaciรณn booleana. Devuelve verdadero si el valor proporcionado es NULL y falso si el valor proporcionado no es NULL.
- โNO ES NULOโ es la palabra clave que realiza la comparaciรณn opuesta. Devuelve verdadero si el valor proporcionado no es NULL y falso si el valor proporcionado es NULL.
Veamos un ejemplo prรกctico que utiliza la palabra clave IS NOT NULL para eliminar todas las filas que contienen valores NULL en una columna.
Continuando con la tabla de miembros anterior, supongamos que necesitamos los detalles de los miembros cuyo nรบmero de contacto no es nulo. Podemos ejecutar una consulta como esta.
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Al ejecutar la consulta anterior, se devuelven รบnicamente los siete registros donde aparece el nรบmero de contacto, lo que coincide con el resultado de COUNT de la secciรณn anterior.
Ahora supongamos que queremos lo contrario: los registros de miembros donde falta el nรบmero de contacto. Podemos usar la siguiente consulta.
SELECT * FROM `members` WHERE contact_number IS NULL;
Al ejecutar la consulta anterior se obtienen los dos registros de miembros cuyo nรบmero de contacto es NULL.
| membership_ number | full_names | gender | date_of_birth | physical_address | postal_address | contact_ number | |
|---|---|---|---|---|---|---|---|
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Advertencia: Una condiciรณn como WHERE contact_number = NULL devuelve un conjunto de resultados vacรญo, aunque existan valores NULL. El operador de igualdad nunca puede coincidir con NULL, por lo que IS NULL es la รบnica prueba correcta.
Comparaciรณn de valores nulos con lรณgica trivalente
Lรณgica de tres valores โ realizar operaciones booleanas en condiciones que involucran NULL puede devolver โDesconocidoโ, โVerdaderoโ o โFalsoโ.
Utilizando la palabra clave โIS NULLโ al hacer operaciones de comparaciรณn involucrando NULL devoluciones su verdadero or false. El uso de los otros operadores de comparaciรณn devuelve โDesconocidoโ (NULO)La tabla que aparece a continuaciรณn compara cada expresiรณn una al lado de la otra.
| expresiรณn | Resultado | Significado |
|---|---|---|
| SELECCIONAR 5 = 5; | 1 | VERDADERO |
| SELECCIONAR NULO = NULO; | NULL | DESCONOCIDO |
| SELECCIONAR 5 > 5; | 0 | FALSO |
| SELECCIONAR NULO > NULO; | NULL | DESCONOCIDO |
| SELECCIONAR 5 ES NULO; | 0 | FALSO |
| SELECCIONAR NULO ES NULO; | 1 | VERDADERO |
Compara el nรบmero cinco consigo mismo y luego repite la operaciรณn con NULL.
SELECT 5 =5; SELECT NULL = NULL;
| 5 =5 | NULL = NULL |
|---|---|
| 1 | NULL |
El primer resultado es 1 (VERDADERO). El segundo es NULO, porque MySQL No se puede afirmar que un valor desconocido sea igual a otro valor desconocido. Ahora utilice la palabra clave IS NULL en los mismos valores.
SELECT 5 IS NULL; SELECT NULL IS NULL;
| 5 IS NULL | NULL IS NULL |
|---|---|
| 0 | 1 |
En este caso, las respuestas son definitivas: 0 (FALSO) y 1 (VERDADERO). Solo las palabras clave IS NULL e IS NOT NULL devuelven una respuesta definitiva cuando se trata de NULL.


