En SQL, Null es tanto un valor como una palabra clave. Veamos primero el valor NULL -
Nulo como valor
En términos simples, NULL es simplemente un marcador de posición para datos que no existen. Al realizar operaciones de inserción en tablas, habrá momentos en los que algunos valores de campo no estarán disponibles.
Para cumplir con los requisitos de los verdaderos sistemas de administración de bases de datos relacionales, MySQL usa 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 la base de datos.
Veamos ahora algunos de los conceptos básicos de NULL antes de continuar con la discusión.
- NULL no es un tipo de datos ; esto significa que no se reconoce como "int", "date" o cualquier otro tipo de datos definido.
- Las operaciones aritméticas que involucran NULL siempre devuelven NULL, por ejemplo, 69 + NULL = NULL.
- Todas las funciones agregadas afectan solo a las filas que no tienen valores NULL .
Demostremos ahora cómo la función de conteo trata los valores nulos. Veamos el contenido actual de la tabla de miembros.
SELECT * FROM `members`;
La ejecución del script anterior nos da 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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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 |
Vamos a contar todos los miembros que han actualizado su contact_number
SELECT COUNT(contact_number) FROM `members`;
La ejecución de la consulta anterior nos da los siguientes resultados.
COUNT(contact_number) |
---|
7 |
Nota: los valores que son NULL no se han incluido
¿Lo que no es?
El operador lógico NOT se utiliza para probar las condiciones booleanas y devuelve verdadero si la condición es falsa. El operador NOT devuelve falso si la condición probada es verdadera
Condición |
NO Resultado del operador |
Cierto |
Falso |
Falso |
Cierto |
¿Por qué utilizar NOT null?
Habrá casos en los que tendremos que realizar cálculos en un conjunto de resultados de consulta y devolver los valores. La realización de operaciones aritméticas en columnas que tienen el valor NULL devuelve resultados nulos. Para evitar que sucedan tales situaciones, podemos emplear el uso de la cláusula NOT NULL para limitar los resultados sobre los que operan nuestros datos.
Valores NO NULOS
Supongamos que queremos crear una tabla con ciertos campos que siempre deben ser provistos de valores al insertar nuevas filas en una tabla. Podemos usar la cláusula NOT NULL en un campo dado al crear la tabla.
El ejemplo que se muestra a continuación crea una nueva tabla que contiene los 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 nombre del empleado y veamos qué sucede.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
La ejecución del script anterior en MySQL workbench da el siguiente error:
Palabras clave NULL
NULL también se puede utilizar como palabra clave al realizar operaciones booleanas en valores que incluyen NULL. La palabra clave "IS / NOT" se utiliza junto con la palabra NULL para tales fines. La sintaxis básica cuando se usa nulo como palabra clave es la siguiente
`comlumn_name' IS NULL`comlumn_name' NOT NULL
AQUÍ
- "IS NULL" 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.
- "NOT NULL" es la palabra clave que realiza la comparación booleana. Devuelve verdadero si el valor proporcionado no es NULL y falso si el valor proporcionado es nulo.
Veamos ahora un ejemplo práctico que usa la palabra clave NOT NULL para eliminar todos los valores de columna que tienen valores nulos.
Continuando con el ejemplo anterior, suponga que necesitamos detalles de miembros cuyo número de contacto no es nulo. Podemos ejecutar una consulta como
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Al ejecutar la consulta anterior, solo se obtienen registros donde el número de contacto no es nulo.
Supongamos que queremos registros de miembros donde el número de contacto sea nulo. Podemos usar la siguiente consulta
SELECT * FROM `members` WHERE contact_number IS NULL;
La ejecución de la consulta anterior proporciona los detalles del miembro cuyo número de contacto es NULL
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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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 |
Comparación de valores nulos s
Lógica de tres valores : realizar operaciones booleanas en condiciones que implican NULL puede devolver "Desconocido", "Verdadero" o "Falso".
Por ejemplo, el uso de la palabra clave "IS NULL" cuando se realizan operaciones de comparación que involucran NULL puede devolver verdadero o falso . El uso de otros operadores de comparación devuelve "Desconocido" (NULL).
Suponga que compara el número cinco con el 5
SELECT 5 =5;
El resultado de la consulta es 1, lo que significa VERDADERO
5 =5 |
---|
1 |
Hagamos la misma operación con NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Veamos otro ejemplo
SELECT 5 > 5;
5> 5 |
---|
0 |
El resultado de la consulta es 0, lo que significa FALSO
Veamos el mismo ejemplo usando NULL
SELECT NULL > NULL;
NULL> NULL |
---|
NULL |
Usemos la palabra clave IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
El resultado de la consulta es 0, que es FALSO.
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
El resultado de la consulta es 1, que es VERDADERO
Resumen
- NULL es un marcador de posición de valor para campos de tabla opcionales.
- MySQL trata el valor NULL de manera diferente a otros tipos de datos. Los valores NULL cuando se usan en una condición se evalúan como un valor booleano falso.
- La operación lógica NOT se usa para probar los valores booleanos y se evalúa como verdadero si el valor booleano es falso y falso si el valor booleano es verdadero.
- La cláusula NOT NULL se utiliza para eliminar valores NULL de un conjunto de resultados
- Realizar operaciones aritméticas en valores NULL siempre devuelve resultados NULL.
- Los operadores de comparación como [, =, etc.] no se pueden utilizar para comparar valores NULL.