MySQL ES NULO Y NO ES NULO Tutorial con EJEMPLOS
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รก ocasiones en las que algunos valores de campos 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 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.
- Operaciones aritmeticas que implica NULL devolver NULL por ejemplo, 69 + NULO = NULO.
- Todos Funciones agregadas afecta sรณlo a las filas que no tienen valores NULL.
Ahora demostremos cรณmo la funciรณn de conteo trata los valores nulos. Veamos 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 |
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: Los valores que son NULL no se han incluido
ยฟLo que no es?
El operador lรณgico NOT se utiliza para probar condiciones booleanas y devuelve verdadero si la condiciรณn es falsa. El operador NOT devuelve falso si la condiciรณn probada es verdadera
| Estado del producto | OperaResultado del motor |
|---|---|
| Cierto | Falso |
| Falso | Cierto |
ยฟPor quรฉ utilizar NO nulo?
Habrรก casos en los que tendremos que realizar cรกlculos en un conjunto de resultados de una consulta y devolver los valores. Realizar 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 en los que operan nuestros datos.
Valores NO NULOS
Supongamos que queremos crear una tabla con ciertos campos a los que siempre se les deben proporcionar valores al insertar nuevas filas en una tabla. Podemos usar la clรกusula NOT NULL en un campo determinado 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');
Ejecutando el script anterior en MySQL El banco de trabajo arroja 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ร
- "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 NULO"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 utiliza la palabra clave NOT NULL para eliminar todos los valores de columna que tienen valores nulos.
Continuando con el ejemplo anterior, supongamos que necesitamos detalles de miembros cuyo nรบmero de contacto no sea nulo. Podemos ejecutar una consulta como
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
La ejecuciรณn de la consulta anterior solo proporciona registros donde el nรบmero de contacto no es nulo.
Supongamos que queremos registros de miembros donde el nรบmero de contacto es nulo. Podemos utilizar la siguiente consulta
SELECT * FROM `members` WHERE contact_number IS NULL;
Al ejecutar la consulta anterior se obtienen 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 | janetjones@yagoo.cm |
| 3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
| 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 |
Comparando valores nulos
Lรณgica de tres valores โ realizar operaciones booleanas en condiciones que involucran NULL puede devolver โDesconocidoโ, โVerdaderoโ o โFalsoโ.
Por ejemplo, usando la palabra clave "ES NULO" al hacer operaciones de comparaciรณn involucrando NULL puede regresar su verdadero or false. Usar otros operadores de comparaciรณn devuelve โDesconocidoโ (NULO).
Supongamos que comparas 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, lo cual 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 utiliza para probar valores booleanos y se evalรบa como verdadera si el valor booleano es falso y falsa si el valor booleano es verdadero.
- La clรกusula NOT NULL se utiliza para eliminar valores NULL de un conjunto de resultados.
- La realizaciรณn de operaciones aritmรฉticas con valores NULL siempre devuelve resultados NULL.
- Los operadores de comparaciรณn como [, =, etc.] no se pueden utilizar para comparar valores NULL.


