Comprender el uso de NULL para evitar problemas en la base de datos
Los usuarios nuevos en el mundo de las bases de datos a menudo se confunden con un valor especial particular del campo: El valor NULL. Este valor se puede encontrar en un campo que contiene cualquier tipo de datos y tiene un significado muy especial dentro del contexto de una base de datos relacional. Sera mejor comenzar nuestra discusión con algunas palabras sobre lo que NULL no es:
- NULL no es el número cero.
- NULL no es el valor de cadena vacía ("").
Por el contrario, NULL es el valor utilizado para representar una pieza de datos desconocida. A menudo, los programadores de bases de datos usarán la frase "un valor NULO", pero esto es incorrecto. Recuerde: un NULL es un valor desconocido en el que el campo aparece en blanco.
NULL EN EL MUNDO REAL
Echemos un vistazo a un ejemplo simple: Una tabla que contiene el inventario de un puesto de frutas. Supongamos que nuestro inventario contiene 10 manzanas y tres naranjas. También almacenamos ciruelas, pero nuestra información de inventario está incompleta y no sabemos cuántas ciruelas (si las hay) en stock tenemos. Usando el valor NULL, tendríamos la tabla de inventario que se muestra en la tabla a continuación.
IdInventario | Nombre | Cantidad |
1 | Manzanas | 15 |
2 | Naranjas | 3 |
3 | Ciruelas | NULL |
Está claro que sería incorrecto incluir una cantidad de 0 para el registro de las ciruelas, porque eso implicaría que teníamos no hay ciruelas en el inventario. Por el contrario, podríamos tener algunas ciruelas, pero no estamos seguros.
¿NULO O NO NULO?
Una tabla puede diseñarse para permitir valores NULOS o no.Aquí hay un ejemplo de SQL que crea una tabla de inventario que permite algunos valores NULL:
CREATE TABLE INVENTARIO( IdInventario INT NOT NULL, nombre VARCHAR (20) NOT NULL, cantidad INT );
La tabla de inventario aquí no permite valores NULL para el IdInventario y para la columna nombre, pero permite para la columna cantidad.
Si bien permitir un valor NULL es perfectamente correcto, los valores NULL pueden causar problemas porque cualquier comparación de valores en los que uno sea NULL siempre da como resultado NULL.
Para verificar si su tabla contiene valores NULL, use el operador IS NULL o IS NOT NULL. Aquí hay un ejemplo de IS NULL:
SELECT IdInventario, nombre, cantidad FROM INVENTARIO WHERE cantidad IS NOT NULL;
Dado nuestro ejemplo, esto volvería:
IdInventario | Nombre | Cantidad |
3 | Ciruelas | 15 |
OPERANDO EN NULL
Trabajar con valores NULL a menudo produce resultados NULL, dependiendo de la operación de SQL. Por ejemplo, suponiendo que A es NULO:Operadores aritméticos
- A + B = NULL
- A - B = NULL
- A * B = NULL
- A / B = NULL
Operadores de comparación
- A = B = NULL
- A != B = NULL
- A > B = NULL
- A !< B = NULL
Estos son solo algunos ejemplos de operadores que siempre devolverán NULL si un operando es NULL. Existen consultas mucho más complejas, y todas son complicadas por valores NULL. El punto clave es que, si permite valores NULL en su base de datos, comprenda las implicaciones y planifique para ellos.
¡Eso es NULO en pocas palabras!