NULL: el tercer valor de verdad
Domine el significado de NULL, por qué NULL no es igual a nada (ni siquiera a sí mismo) y cómo la lógica trivaluada afecta a las cláusulas WHERE.
NULL: el tercer valor de verdad es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.
¿Qué es NULL?
NULL representa datos desconocidos o ausentes. No es cero, ni una cadena vacía ni false. Es la ausencia explícita de un valor.
NULL no es igual a nada (ni siquiera a sí mismo)
Esta es la regla que confunde a todo el mundo:
SELECT NULL = NULL; -- NULL (not true!)
SELECT NULL = 0; -- NULL
SELECT NULL = ''; -- NULL
SELECT NULL <> 1; -- NULLUse IS NULL e IS NOT NULL
Para comprobar si un valor es NULL, debe usar los predicados especiales IS NULL e IS NOT NULL:
SELECT email FROM users WHERE deleted_at IS NULL; -- active users
SELECT email FROM users WHERE deleted_at IS NOT NULL; -- deleted usersLógica trivaluada
La lógica booleana de SQL tiene TRES valores: TRUE, FALSE y UNKNOWN (NULL).
| A | B | A AND B | A OR B |
|---|---|---|---|
| TRUE | NULL | NULL | TRUE |
| FALSE | NULL | FALSE | NULL |
| NULL | NULL | NULL | NULL |
WHERE descarta las filas cuyo predicado es NULL
Si WHERE x = 5 se evalúa como NULL para una fila (porque x es NULL), esa fila NO se devuelve. Solo se conservan las filas cuyo predicado es TRUE.
-- Suppose age is NULL for some users:
SELECT * FROM users WHERE age >= 18;
-- Users with NULL age are NOT returned, even though we
-- don't actually know they're under 18.La trampa de NULL con NOT IN
Esta consulta devuelve CERO filas si algún nombre de la subconsulta es NULL:
SELECT * FROM users
WHERE name NOT IN (SELECT excluded_name FROM blocklist);
-- If blocklist has a NULL row, the whole NOT IN evaluates to NULL
-- → no rows returned
-- Safer:
SELECT * FROM users u
WHERE NOT EXISTS (
SELECT 1 FROM blocklist b WHERE b.excluded_name = u.name
);COALESCE: reemplazar NULL por un valor predeterminado
COALESCE devuelve el primer argumento que no sea NULL:
SELECT id, COALESCE(full_name, email, 'Anonymous') AS display_name
FROM users;
-- If full_name is NULL, use email; if that's NULL too, use 'Anonymous'.NULLIF: lo contrario
NULLIF(a, b) devuelve NULL cuando a = b; de lo contrario, devuelve a. Es útil para tratar valores centinela como '' o 0 como NULL.
SELECT NULLIF(price, 0) FROM products;
-- Returns NULL when price is 0, useful for AVG() that should ignore zeros.NULL en las funciones de agregación
Las funciones de agregación (excepto COUNT(*)) omiten las entradas NULL:
-- Suppose: prices = [10, 20, NULL, 30]
SELECT COUNT(*) FROM products; -- 4 (counts rows)
SELECT COUNT(price) FROM products; -- 3 (counts non-NULL prices)
SELECT AVG(price) FROM products; -- 20 (60 / 3, not 60 / 4)
SELECT SUM(price) FROM products; -- 60Ordenación de NULL
De forma predeterminada, PostgreSQL ordena los valores NULL al final en orden ascendente y al principio en orden descendente. Puede cambiar este comportamiento:
SELECT * FROM users ORDER BY last_login_at DESC NULLS LAST;Almacenar NULL frente a una cadena vacía
Decida para cada columna: ¿'' es un valor válido? Si no lo es, use NULL para indicar "sin valor". Si lo es, NULL significa algo diferente (por ejemplo, "todavía no se ha preguntado").
Sea coherente: no mezcle ambos valores en la misma columna.
Repaso
NULL es su propio valor lógico.
- Compruébelo con
IS NULL, nunca con= NULL - Los filtros WHERE conservan únicamente las filas TRUE
- Las funciones de agregación omiten las entradas NULL
COALESCEes su aliado
Comprobación rápida
¿Qué devuelve SELECT NULL = NULL;?
Preguntas frecuentes
¿La lección «NULL: el tercer valor de verdad» es gratis?
Sí — el texto completo de «NULL: el tercer valor de verdad» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.
¿Qué aprenderé en «NULL: el tercer valor de verdad»?
Domine el significado de NULL, por qué NULL no es igual a nada (ni siquiera a sí mismo) y cómo la lógica trivaluada afecta a las cláusulas WHERE. Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar SQL Academy?
No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «NULL: el tercer valor de verdad»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de SQL Academy?
Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Qué es un RDBMS y por qué importan las tablas
- Claves primarias y unicidad
- NULL: el tercer valor de verdad
- Introducción a los tipos de datos: INT VARCHAR DATE BOOLEAN