Hasta ahora hemos aprendido a crear tablas y manipular datos mediante INSERT, SELECT, UPDATE y DELETE. Sin embargo, todavía no hemos hablado de una pregunta fundamental:
¿Qué ocurre cuando no conocemos el valor de un dato?
Para responder esta pregunta, PostgreSQL utiliza el concepto de NULL.
🧠 ¿Qué es NULL?
NULL representa la ausencia de un valor.
No significa:
- Cero (
0) - Cadena vacía (
'') - Espacio en blanco (
' ')
Significa simplemente:
"No existe un valor almacenado para esta columna."
Por ejemplo, supongamos una tabla de empleados:
| id | nombre | telefono |
|---|---|---|
| 1 | Juan Pérez | 555123456 |
| 2 | Ana López | NULL |
En este caso, no sabemos el teléfono de Ana López o simplemente no se ha registrado.
📦 ¿Cuándo utilizar NULL?
Algunos ejemplos comunes son:
- Un cliente aún no ha proporcionado su teléfono.
- Un empleado no tiene fecha de baja.
- Un producto todavía no tiene descripción.
- Un pedido aún no ha sido entregado.
En estos casos, permitir valores NULL tiene sentido.
🔒 ¿Qué es NOT NULL?
NOT NULL es una restricción que obliga a proporcionar un valor para una columna.
Cuando una columna tiene la restricción NOT NULL:
✅ Se debe proporcionar un valor.
❌ No se permite almacenar NULL.
🏗️ Crear una tabla con NOT NULL
Supongamos que estamos creando una tabla de empleados.
En este ejemplo:
ides obligatorio.nombrees obligatorio.departamentoes opcional.salarioes opcional.
✅ Insertar datos válidos
Este INSERT funciona correctamente:
Todos los campos obligatorios contienen un valor.
❌ Intentar insertar NULL en una columna NOT NULL
Ahora intentemos insertar un empleado sin nombre.
PostgreSQL devolverá un error similar a:
Esto ocurre porque la columna nombre fue definida como NOT NULL.
❌ Omitir una columna obligatoria
También obtendremos un error si omitimos una columna obligatoria.
Resultado:
Aunque no escribimos explícitamente NULL, PostgreSQL intentó asignarlo automáticamente al no encontrar un valor para la columna.
✅ Insertar NULL en columnas que lo permiten
Las columnas sin NOT NULL aceptan valores nulos.
Este registro se insertará correctamente.
🔍 Consultar valores NULL
Veamos los datos:
Resultado:
⚠️ Comparar NULL correctamente
Uno de los errores más comunes es intentar buscar valores NULL utilizando el operador =.
❌ Incorrecto
Esta consulta no devolverá resultados.
Forma correcta
Para buscar valores nulos se utilizan:
o
Buscar registros con NULL
Buscar registros con valor
🧪 Ejemplo completo
Crear tabla
Insertar registro válido
Insertar registro con campos opcionales
Funciona porque únicamente se omitieron columnas que permiten NULL.
Intentar omitir un campo obligatorio
Resultado:
🔧 Agregar NOT NULL a una columna existente
También es posible modificar una tabla ya creada.
Por ejemplo:
A partir de ese momento todos los registros nuevos deberán incluir un valor para nombre.
🔧 Eliminar NOT NULL
Si posteriormente decidimos permitir valores nulos:
💡 Buenas prácticas
Usa NOT NULL en datos obligatorios
Generalmente deberían ser obligatorios:
- Nombre de un cliente
- Nombre de un producto
- Correo electrónico (dependiendo del sistema)
- Fecha de creación
- Identificadores
Ejemplo:
No uses NOT NULL en información opcional
Por ejemplo:
- Segundo apellido
- Comentarios
- Observaciones
- Fecha de baja
Estos campos suelen permitir valores nulos.
Define la obligatoriedad desde el diseño
Es más fácil decidir desde el principio qué datos son obligatorios que modificar tablas con millones de registros posteriormente.
✅ Conclusión
NULL representa la ausencia de un valor, mientras que NOT NULL obliga a que una columna siempre tenga información.
Los conceptos más importantes son:
NULLno es cero ni una cadena vacía.- Las columnas permiten
NULLpor defecto. NOT NULLconvierte una columna en obligatoria.- Intentar insertar
NULLen una columnaNOT NULLgenera un error. - Para buscar valores nulos se utiliza
IS NULL. - Para buscar valores no nulos se utiliza
IS NOT NULL.
No hay comentarios:
Publicar un comentario