SELECT, WHERE y ORDER BY

Mapa conceptual
- SQL
- Básico
- SELECT
- WHERE
- ORDER BY
- JOINs
- INNER
- LEFT
- FULL
- Agregación
- GROUP BY
- HAVING
- Avanzado
- Subconsultas
- CTEs
- Ventana
- Rendimiento
- EXPLAIN
- Índices
- Básico
Proyección: SELECT
SELECT elige qué columnas aparecerán en el resultado: es la proyección del álgebra relacional. Puedes listar columnas concretas, usar un asterisco para todas (cómodo pero derrochador en producción) o calcular expresiones nuevas a partir de las existentes, como un precio con descuento.
Selección: WHERE
WHERE filtra filas según una condición booleana: sobreviven solo las que la cumplen. Combina comparaciones con operadores como igual, distinto, menor, mayor y con conectores lógicos AND, OR, NOT. Es la selección del álgebra relacional aplicada sobre cada fila.
El orden lógico de ejecución
Aunque se escribe primero el SELECT, el motor procesa en este orden: FROM para localizar las tablas, WHERE para filtrar filas, GROUP BY y HAVING para agregar, SELECT para proyectar y calcular columnas, ORDER BY para ordenar y, al final, LIMIT para recortar. Por eso un alias creado en SELECT no está disponible en WHERE, pero sí en ORDER BY.
Comparaciones y rangos
- Igualdad y desigualdad se escriben con un solo signo igual, no con dos como en programación.
- Entre valores usa BETWEEN, que es inclusivo por ambos extremos.
- Para conjuntos finitos emplea IN con una lista de valores permitidos.
- Las cadenas se comparan con LIKE y los comodines por ciento y guion bajo.
Nulos: la trampa de tres valores
NULL no es cero ni cadena vacía: representa dato desconocido. Cualquier comparación con NULL devuelve desconocido, no verdadero, así que x igual NULL nunca filtra nada. Para buscar nulos se usa IS NULL y para excluirlos IS NOT NULL. Olvidarlo es el bug más común de quien viene de programar.
Ordenar: ORDER BY
ORDER BY clasifica las filas del resultado por una o varias columnas, ascendente por defecto y descendente con la palabra reservada. Puedes ordenar por una columna que ni siquiera incluyes en el SELECT, y encadenar claves para desempatar.
Limitar filas
LIMIT corta el número de filas devueltas; combinado con OFFSET permite paginar. Para un top N tiene sentido ordenar primero y limitar después: sin ORDER BY, LIMIT devuelve un subconjunto arbitrario que puede cambiar en cada ejecución.
Anatomía de una consulta
- FROM: de dónde saco los datos.
- WHERE: qué filas conservo.
- SELECT: qué columnas o cálculos muestro.
- ORDER BY: cómo las ordeno.
- LIMIT: cuántas devuelvo.
Alias y legibilidad
AS permite renombrar columnas y tablas dentro de una consulta, para acortar nombres o dar significado a un cálculo. Un buen alias hace una consulta autoexplicativa; escribir cada palabra reservada en mayúsculas y el resto en minúsculas separa visualmente la estructura de los datos.
| Frase | Palabras clave | Pregunta que responde |
|---|---|---|
| Proyectar | SELECT columnas | ¿qué campos muestro? |
| Filtrar | WHERE condición | ¿qué filas conservo? |
| Ordenar | ORDER BY campo | ¿en qué las presento? |
| Recortar | LIMIT n | ¿cuántas entrego? |
¿Por qué un alias definido en la cláusula SELECT no puede usarse en el WHERE de la misma consulta?
Distintivo entre WHERE y un filtro de presentación
WHERE decide qué filas llegan al resultado; ordenar o limitar no oculta filas del cómputo, solo cambia cómo se muestran. Confundir filtrado con presentación lleva a contar mal: un LIMIT no reduce un total agregado hecho antes.
Predicados compuestos
Encadenar condiciones con AND afina el filtro; con OR lo amplía. Un exceso de OR sin paréntesis mezcla criterios no relacionados y devuelve basura. Ante la duda, agrupa con paréntesis para fijar la precedencia y no depender de la que asume el motor.
Ordenación y nulos
Los NULL ordenan de forma distinta según el motor: unos los ponen al principio en ascendente, otros al final. Si el orden de los desconocidos importa, hay que explicitarlo. Asumir un comportamiento único rompe portabilidad entre sistemas.
Buenos hábitos de consulta
- Enumera las columnas en lugar de usar asterisco en código de producción.
- Escribe la condición IS NULL para los desconocidos, nunca igual NULL.
- Acompaña todo LIMIT con un ORDER BY determinista.
- Prueba la consulta sin LIMIT primero para ver el conjunto completo.
Query exploratoria
Para conocer una tabla nueva, vale mirar las primeras filas, luego los valores distintos de una columna categórica con DISTINCT, y después afinar filtros. Explorar antes de asumir el dominio de los datos ahorra consultas mal dirigidas.
En SQL, la comparación columna = NULL devuelve verdadero para las filas cuyo valor es nulo.
De la consulta al dato
Una consulta bien escrita es reproducible y documenta una pregunta del negocio. Tratarlas como artefactos versionables, con nombres claros y comentarios, convierte un script suelto en parte de los activos de datos de un equipo.
Palabras clave del trío fundamental
Toca una tarjeta para ver la respuesta.
Ordena las cláusulas según el orden lógico de ejecución (no de escritura):
Arrastra cada ficha a su categoría (o tócala y luego toca la categoría). También puedes usar el teclado.
SQLZooEjercicios interactivos para practicar SELECT, WHERE y ORDER BY.
Escribe la consulta que devuelve nombre y sueldo de los empleados del departamento 3, ordenados por sueldo de mayor a menor y solo los 10 primeros. ¿Por qué LIMIT sin ORDER BY no daría el top 10 correcto?
Tu texto se guarda sólo en este dispositivo.
SQLZooEjercicios interactivos de SQL en línea.
Comentarios
Inicia sesión para comentar.
Todavía no hay comentarios. Sé la primera persona en opinar.