DQL

Recordando la Instrucción SELECT

Para poder sumergirnos en la complejidad de relacionar múltiples conjuntos de datos, debemos asegurar que el “motor” de nuestras consultas, la instrucción SELECT, esté perfectamente claro.

Como administradores y programadores de bases de datos, no solo nos interesa que la consulta funcione, sino entender cómo el motor de la base de datos la procesa.

La Anatomía de una Consulta (Sintaxis Estándar)

Aunque escribimos el código en un orden específico, el motor de SQL lo procesa de manera distinta. Es vital recordar esta estructura:

Orden de EscrituraClavePropósito
1SELECTDefine qué columnas o expresiones queremos obtener.
2FROMEspecifica la tabla (o tablas) de origen.
3WHEREFiltra filas basándose en condiciones lógicas.
4GROUP BYAgrupa filas que tienen valores comunes en columnas específicas.
5HAVINGFiltra los grupos creados por GROUP BY (no filas individuales).
6ORDER BYOrdena el resultado final (Ascendente o Descendente).
7LIMIT / OFFSETRestringe el número de filas devueltas.

El Orden Lógico de Ejecución

Es importante entender que el orden de ejecución no es igual al de escritura. Esto explica por qué no puedes, en términos generales, usar un alias creado en el SELECT dentro del WHERE.

  1. FROM: Primero se identifica de dónde vienen los datos.
  2. WHERE: Se descartan las filas que no cumplen la condición.
  3. GROUP BY: Se organizan los datos restantes.
  4. HAVING: Se filtran los grupos.
  5. SELECT: Se eligen las columnas y se calculan expresiones.
  6. DISTINCT: Se eliminan los valores duplicados si se solicitó.
  7. ORDER BY: Finalmente, se ordena lo que quedó.
  8. LIMIT / OFFSET: Se recorta el número de filas a devolver.

Conceptos Clave para Recordar

Para que las Consultas Multitabla sean exitosas, debemos tener frescos estos tres pilares:

A. Expresiones y Aliases

El uso de AS para renombrar columnas es útil, pero en consultas multitabla, el uso de alias para tablas (ej. FROM Clientes AS c) es obligatorio para evitar la ambigüedad cuando dos tablas tienen columnas con el mismo nombre.

B. Predicados de Filtrado (WHERE)

Recordemos los operadores esenciales que usaremos al unir tablas:

  1. IN / NOT IN: Para comparar contra listas o subconsultas.
  2. BETWEEN: Rangos.
  3. LIKE / ILIKE: Patrones de texto.
  4. IS NULL / IS NOT NULL: Fundamental para entender los Outer Joins.

C. Agregación básica

Recordar funciones como COUNT(), SUM(), AVG(), MAX() y MIN(). Estas funciones suelen aplicarse sobre el resultado de un JOIN.

La instrucción SELECT que hemos repasado hasta ahora trabaja sobre el concepto de un único conjunto de datos.

En la ejecución de Consultas Multitabla, el FROM dejará de ser una simple tabla para convertirse en un producto de conjuntos (Teoría de Conjuntos). Ahí es donde decidiremos si queremos solo la intersección de los datos (Inner Join) o si queremos conservar elementos que no tienen pareja en la otra tabla (Outer Joins).