Lección 2

SELECT, WHERE y ORDER BY

Lee la forma central de las consultas SQL cotidianas.

La mayoría del SQL cotidiano empieza con una forma simple:

SELECT id, email, created_at
FROM users
WHERE status = 'active'
ORDER BY created_at DESC
LIMIT 50;

Léelo por capas:

  • SELECT indica qué columnas aparecen en el resultado.
  • FROM indica la tabla de partida.
  • WHERE elimina filas que no cumplen las condiciones.
  • ORDER BY controla el orden del resultado.
  • LIMIT limita cuántas filas se devuelven.

Este orden es fácil de leer, pero las bases de datos no necesariamente lo ejecutan línea a línea. El optimizador puede elegir índices y reordenar el trabajo interno. Para depurar, tu primera tarea sigue siendo entender el significado lógico.

Ten cuidado con los filtros

Pequeños cambios en filtros pueden alterar el comportamiento de forma drástica:

WHERE status = 'paid'
  AND created_at >= '2026-01-01'

Esto significa que ambas condiciones deben ser verdaderas. Si usas OR, las filas pueden coincidir con cualquiera de los dos lados:

WHERE status = 'paid'
   OR status = 'refunded'

Cuando una consulta falla, aísla los filtros uno a uno. Pregunta: ¿qué condición elimina la fila que esperaba ver?

El orden no está garantizado sin ORDER BY

Las tablas no tienen un orden natural estable del que deba depender el código de aplicación. Si un endpoint dice «usuarios más recientes», la consulta debe expresarlo con ORDER BY created_at DESC. Sin ello, los resultados pueden parecer estables en desarrollo y cambiar más tarde tras índices, actualizaciones o crecimiento de datos.

Conclusión clave

Para consultas simples, depura de FROM a WHERE y luego a ORDER BY. Confirma primero las filas de origen, luego añade filtros y después ordenación y límites.

Usa el Formateador SQL para dividir una consulta de una sola línea en cláusulas legibles antes de inspeccionar los filtros.

Volver al resumen del curso