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.

  • ๐Ÿงฉ Definiciรณn bรกsica: NULL es un marcador de posiciรณn para datos que no existen. No es un tipo de dato ni el nรบmero cero.
  • โž— Comportamiento aritmรฉtico: Cualquier expresiรณn aritmรฉtica que incluya NULL devuelve NULL, por lo que 69 + NULL se evalรบa como NULL en lugar de como 69.
  • ๐Ÿ“Š Impacto agregado: COUNT(column) y otras funciones de agregaciรณn omiten las filas NULL, mientras que COUNT(*) sigue contando todas las filas de la tabla.
  • ๐Ÿšซ Restricciรณn NOT NULL: Declarar una columna como NOT NULL rechaza cualquier inserciรณn que omita un valor, lo que protege los campos obligatorios, como los identificadores.
  • ๐Ÿ” Filtrado correcto: IS NULL e IS NOT NULL son las รบnicas pruebas fiables, porque el operador de igualdad nunca coincide con un valor NULL.
  • ๐Ÿ‡ง๐Ÿ‡ท Lรณgica trivalente: Las comparaciones con NULL devuelven UNKNOWN, por lo que SELECT NULL = NULL produce NULL en lugar de TRUE.

MySQL ES NULO y NO ES NULO

En SQL, NULL es tanto un valor como una palabra clave. Analicemos primero el valor NULL.

MySQL ES NULO Y NO ES NULO

ยฟ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.

Nulo como valor

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 email
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 12345rm@tstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter MaleNULL 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.

Valores NO NULOS

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 email
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.

Preguntas Frecuentes

Cero es un nรบmero y una cadena vacรญa es texto, por lo que ambos coinciden en las pruebas de igualdad. NULL significa que no se proporcionรณ ningรบn valor, por lo que solo responde a IS NULL e IS NOT NULL.

IFNULL(columna, 'N/A') devuelve el sustituto cuando la columna es NULL. COALESCE(a, b, c) devuelve el primer argumento que no es NULL. Ambos son รบtiles dentro de MySQL funciones e informes

No. MySQL Aplica NOT NULL automรกticamente a cada columna de clave primaria, ya que una clave que identifica una fila no puede estar ausente. Un รญndice UNIQUE es diferente y sรญ permite mรบltiples valores NULL.

Por lo general, sรญ. Los asistentes de IA dentro de herramientas como MySQL Banco de trabajo convertir โ€œmiembros sin nรบmero de telรฉfonoโ€ en una clรกusula WHERE column IS NULL. RevRevisa el filtro, porque una prueba de igualdad con NULL no devuelve nada silenciosamente.

A menudo, sรญ. Las herramientas de revisiรณn de IA seรฑalan fallos como comparaciones = NULL, una SELECT que promedia una columna que contiene NULL, y NOT IN listas que contienen NULL. El juicio final corresponde a la persona que conoce los datos.

Resumir este post con: