Los 6 pasos de una consulta SELECT

Wendy Navarrete
4 min readNov 26, 2020

Usando un ejemplo muy sencillo, te voy a contar detalladamente lo que sucede al ejecutarse una consulta SQL

Licencia de Pixabay

Introducción

En esta artículo, voy a describirte paso a paso el proceso lógico que se lleva a cabo cuando ejecutamos una consulta en una base de datos relacional. Para hacer esto, voy a usar dos tablas, muy simples y que no estan normalizadas: Ciudadano y Ciudad, las describo a continuación:

La tabla Ciudadano contiene a el nombre de distinguidos ciudadanos y el numero que identifica la ciudad en donde viven y la tabla Ciudad contiene los nombres de las ciudades y su respectivo identificador.

Supongamos que queremos saber el nombre de dos ciudades en donde tenemos el registro de dos o mas ciudadanos, pero no queremos tomar en cuenta la ciudad de San Bruno. También queremos que el resultado se ordene alfabéticamente.

Entonces, este sería el query o consulta que tendríamos que ejecutar en nuestro manejador de bases de datos para extraer la información:

SELECT ciudad.nombre_ciudad AS "Ciudad"
FROM ciudadano
JOIN ciudad
ON ciudadano.id_ciudad = ciudad.id_ciudad
WHERE ciudad.nombre_ciudad != 'San Bruno'
GROUP BY ciudad.nombre_ciudad
HAVING COUNT(*) >= 2
ORDER BY ciudad.nombre_ciudad ASC
LIMIT 2

Pasos a seguir durante esta consulta

  1. Obtener el conjunto de datos (From, Join)
  2. Filtrar registros (Where)
  3. Agrupar datos (Group by)
  4. Aplicar filtros a los datos agrupados (Having)
  5. Mostrar los datos (Select)
  6. Ordenar y paginar (Order by & Limit / Offset)

Paso 1: Obtener el conjunto de datos (From, Join)

FROM ciudadano
JOIN ciudad

El primer paso en este proceso es la ejecución de las operaciones From y Join. El resultado de estas operaciones en SQL es la obtención de un producto cartesiano de nuestras dos tablas:

Una vez que From y Join han sido ejecutadas, el procesador obtendrá sólo aquellos registros que cumplan la condición que hemos indicado con la palabra On, en este ejemplo estamos solicitando que los identificadores de las ciudades coincidan en ambas tablas.

ON ciudadano.id_ciudad = ciudad.id_ciudad

Paso 2: Filtrar registros (Where)

El siguiente paso también tiene que ver con una condición. Con la palabra Where se evaluará cada registro usando en relación a la condición dada. Cuando la evaluacion resulta no verdadera, el registro es removido del grupo de datos.

WHERE ciudad.nombre_ciudad != 'San Bruno'

Paso 3: Agrupar datos (Group by)

Después de filtrar los registros, se ejecutará la claúsula Group by, la cual se encargará de conjuntar los registros o renglones con valores iguales dentro de subgrupos. A partir de este momento, las siguientes operaciones serán procesadas por grupos y no por renglones.

GROUP BY ciudad.nombre_ciudad

Paso 4: Aplicar filtros a los datos agrupados (Having)

La operación Having consiste en una condicion, ésta se procesa después de ejecutar Group By por lo que no puede aplicarse a registros individuales, sólo se aplica a los grupos de registros.

HAVING COUNT(*) >= 2

El resultado de esta operación mantiene el grupo de datos tal y como se observa en la imagen previa, dado que en cada grupo hay dos o mas de dos elementos en cada grupo.

Paso 5: Mostrar los datos (Select)

Durante este paso, el procesador evalua cual es el resultado de la ejecucion de la consulta, qué datos devolver y también evalua si hay mas funciones que aplicar a dichos datos. Me refiero a funciones como Distinct, Max, Sqrt, Date, Lower, etc. En nuestro ejemplo no solicitamos aplicar ninguna función a nuestros datos resultantes, así que la operación Select nos dará llanamente el nombre de las ciudades e incluirá al nombre de la columna el identificador “Ciudad”.

Paso 6: Ordenar y paginar (Order by & Limit / Offset)

Los pasos finales de procesamiento de la consulta se ocupan de presentar ordenadamente nuestros datos y de limitar el tamaño del conjunto de datos extraídos. En nuestro ejemplo, se requiere presentar un máximo de dos registros ordenados alfabéticamente.

ORDER BY city.city_name ASC
LIMIT 2
Resultado Final

Conclusiones:

Un mejor entendimiento de cómo funcionan las cosas, nos permitirá obtener mejores resultados, por lo tanto, teniendo el conocimiento fundamental de como es ejecutada la operacion Select, nos será mucho mas sencillo obtener un los datos que esperamos.

¡¡ Deseo que este artículo te sea útil !!

--

--