Ya es hora de hablar más a fondo sobre NULL. Y no es una charla vacía, aunque nuestro protagonista parezca... nada. Si una tabla fuera una casa, NULL sería su fantasma: silencioso, misterioso e impredecible. Está ahí, pero no responde a preguntas, no participa en los cálculos y evita las comparaciones. No es simplemente "vacío" — es "no se sabe nada".
En el mundo de SQL, NULL no es cero, ni una cadena vacía, ni "no hay datos" en el sentido habitual. Es una marca especial de desconocido, y hay que tratarlo con cuidado. Hoy vamos a ver por qué NULL no es solo un invitado raro, sino un participante clave en cualquier base de datos. Porque literalmente significa "el valor es desconocido o no está definido".
¿En qué se diferencia NULL de una cadena vacía o del número 0?
Mucha gente que empieza confunde NULL con otros valores, como la cadena vacía '' o el número 0. Vamos a ver las diferencias clave:
| Concepto | Valor |
|---|---|
NULL |
Ausencia total de valor. No es solo una caja vacía, es que ni siquiera hay caja |
| Cadena vacía | Es una cadena que simplemente no tiene caracteres. Por ejemplo: '' |
Número 0 |
Un valor que representa el número cero, tal cual |
Ejemplo de la vida real: imagina que tienes una tabla de empleados y guardas sus sueldos. Si el sueldo es 0, significa que no le han pagado nada. Pero si el sueldo es NULL, simplemente no sabes cuánto cobra (o aún no está definido).
Cómo interpretar NULL
Ahora que ya tenemos una idea de qué es NULL, vamos a ver cómo lo maneja SQL. Lo más importante sobre NULL se puede resumir en una frase: NULL no es igual a nada ni diferente de nada, ni siquiera de sí mismo.
SELECT NULL = NULL; -- Resultado: FALSE
¡Sorpresa! ¿Por qué? Porque NULL es desconocido. Si tienes dos valores desconocidos, no puedes afirmar que sean iguales, ni tampoco que sean distintos.
Vamos a ver unos ejemplos:
Ejemplos de operaciones con NULL
SELECT NULL + 1; -- Resultado: NULL
SELECT NULL * 100; -- Resultado: NULL
SELECT NULL = 0; -- Resultado: FALSE
SELECT NULL <> 0; -- Resultado: FALSE
NULL en sumas, multiplicaciones o cualquier otro cálculo siempre devuelve NULL. Aquí NULL no funciona como el 0 en matemáticas. Es como si tiraras algo al vacío y el vacío se lo tragara todo.
Ejemplos prácticos
Imagina la tabla students con info sobre estudiantes:
| id | name | birth_date | grade |
|---|---|---|---|
| 1 | Alice | 2000-01-01 | 85 |
| 2 | Bob | NULL | 90 |
| 3 | Charlie | 1999-05-22 | NULL |
| 4 | Diana | NULL | NULL |
Ejemplo 1: Cómo afecta NULL en condiciones
Si intentamos buscar todos los estudiantes sin fecha de nacimiento usando la condición WHERE birth_date = NULL:
SELECT *
FROM students
WHERE birth_date = NULL;
No obtendremos ningún resultado, porque NULL = NULL devuelve FALSE. Para comprobar si algo es NULL hay que usar IS NULL:
SELECT * FROM students WHERE birth_date IS NULL;
Resultado:
| id | name | birth_date | grade |
|---|---|---|---|
| 2 | Bob | NULL | 90 |
| 4 | Diana | NULL | NULL |
Ejemplo 2: Cómo afecta NULL en los cálculos
| id | name | birth_date | grade |
|---|---|---|---|
| 1 | Alice | 2000-01-01 | 85 |
| 2 | Bob | NULL | 90 |
| 3 | Charlie | 1999-05-22 | NULL |
| 4 | Diana | NULL | NULL |
Si intentamos calcular la nota media de todos los estudiantes:
SELECT AVG(grade) FROM students;
El resultado será: 87.5. ¿Por qué? Porque NULL se ignora en funciones agregadas como AVG, SUM, MIN, MAX. ¡Pero ojo! Si necesitas tener en cuenta las filas con NULL, tendrás que hacer algo extra.
Veremos más sobre cómo trabajar con NULL en las próximas lecciones.
GO TO FULL VERSION