Contenido del Curso
SQL Intermedio
SQL Intermedio
Consultas Anidadas
¡Excelentes noticias!
La administración escolar expresa satisfacción con nuestro rendimiento reciente y señala estar listos para avanzar aún más.
Mientras ellos comienzan su receso de verano y nosotros entramos en un período de flexibilidad, aprovechamos la oportunidad para profundizar en metodologías innovadoras y mejorar nuestra interacción con SQL.
En particular, nuestro objetivo es explorar consultas anidadas, un concepto fundamental dentro de las operaciones de SQL.
Para ilustrar este concepto, consideremos un ejemplo ilustrativo tomado de nuestra base de datos organizacional. Con la expansión de la empresa, se incorpora una nueva entidad, específicamente department
. Esta adición aumenta nuestra estructura de datos, influyendo en la dinámica de nuestras operaciones de base de datos.
Examinemos la estructura de esta nueva tabla para entender mejor su papel dentro de nuestra arquitectura de base de datos en evolución:
Como puede ver, la nueva tabla contiene departamentos, sus tipos y presupuestos. Y en la tabla employee
, como recordará, hay información sobre el departamento al que pertenece cada empleado.
Consideremos un ejemplo en el que utilizamos consultas anidadas para recuperar a aquellos empleados que trabajan en departamentos con presupuestos de $500,000 o menos.
Así es cómo se verá nuestra consulta:
SELECT * FROM employees WHERE department IN ( SELECT name FROM department WHERE budget <= 500000 )
Como pueden ver, esta sintaxis es bastante intuitiva. Utilizamos una cláusula WHERE
para especificar que el nombre del departamento debe estar presente en la tabla que recuperamos con la consulta interna.
Desglosemos esta consulta en dos separadas para ver cómo funciona. Primero, recuperemos los nombres de los departamentos con presupuestos de $500,000 o menos (nuestra consulta interna):
SELECT name FROM department WHERE budget <= 500000
Como pueden ver, obtuvimos 5 departamentos en respuesta. Recuerden esta tabla.
Ahora, considerando el resultado obtenido, escribamos la segunda consulta para obtener información sobre los empleados de estos departamentos:
SELECT * FROM employees WHERE department IN ( 'Marketing', 'Human Resources', 'Finance', 'Customer Service', 'Legal' )
El resultado de esta consulta será idéntico al que obtuvimos con la primera consulta.
Así que, desglosemos paso a paso lo que estamos haciendo:
-
La consulta interna recupera los
names
de los departamentos que necesitamos. -
Luego, utilizando una cláusula
WHERE
, establecemos un cierto criterio que verifica si los departamentos están presentes en la tabla que recuperamos con la consulta interna. -
Obtenemos el resultado deseado.
La sintaxis para usar una consulta interna se verá de la siguiente manera:
Pero hay varios puntos importantes a considerar al usar consultas internas:
-
Resultado Único en Subconsulta: La consulta anidada debe devolver solo una columna, pero también puede estar restringida a un único valor si se usa en una condición de comparación. Esto es particularmente importante para operadores como
=
,>
,<
,>=
,<=
,<>
; -
Tipos de Datos: Asegúrese de que el tipo de dato de la columna devuelta coincida con el tipo de dato de la columna a la que se aplica la condición para evitar errores de incompatibilidad de tipos;
-
Optimización: Las consultas anidadas pueden ser ineficientes, especialmente si se ejecutan para cada fila de la consulta principal;
-
Uso del Operador IN: Las consultas anidadas se utilizan a menudo con el operador
IN
para verificar la presencia de valores en un subconjunto de datos. Sin embargo, los operadores de comparación (>
,<
,>=
,<=
,<>
) también pueden utilizarse para condiciones más complejas.
En los siguientes capítulos, practicaremos juntos con consultas internas y también aprenderemos algunas nuevas sutilezas sobre su uso.
¡Gracias por tus comentarios!