Lección 7

Errores SQL habituales

Evita cross joins accidentales, trampas con null, ventanas de tiempo incorrectas y suposiciones inseguras.

Los errores SQL suelen parecer pequeños en texto pero grandes en comportamiento de producción. Una condición de join faltante, un límite de tiempo incorrecto o un NULL inesperado puede cambiar un informe, una respuesta de API o una migración.

Condiciones de join faltantes o débiles

Si falta una condición de join, la base de datos puede combinar muchas más filas de las previstas. Incluso cuando existe una cláusula ON, asegúrate de que usa la clave correcta e incluye límites de tenant o cuenta cuando tu esquema lo requiera.

Comparaciones con NULL

NULL no es igual a valores ordinarios. Usa IS NULL o IS NOT NULL:

WHERE deleted_at IS NULL

No esperes que deleted_at = NULL se comporte como una comparación normal.

Ventanas de tiempo ambiguas

Los filtros de tiempo deben ser explícitos sobre bordes inclusivos y exclusivos:

WHERE created_at >= '2026-01-01'
  AND created_at < '2026-02-01'

Esto suele ser más seguro que intentar incluir el último segundo de un día o mes.

SELECT * en rutas de aplicación

SELECT * es útil mientras exploras, pero arriesgado en código de aplicación. Puede obtener columnas innecesarias, ocultar dependencia de la forma del esquema y dificultar las revisiones.

Conclusión clave

Formatea la consulta, léela cláusula a cláusula y busca las suposiciones pequeñas: claves de join, comportamiento con null, rangos de tiempo y columnas seleccionadas.

El Formateador SQL puede ayudar a exponer esas suposiciones antes de ejecutar o revisar la consulta.

Volver al resumen del curso