¿Qué es una subconsulta?
Una subconsulta, también conocida como consulta anidada, es una consulta SQL que se incluye dentro de otra consulta SQL. Las subconsultas se utilizan para realizar operaciones complejas en una sola instrucción SQL. Pueden aparecer en varias partes de una consulta, como en las cláusulas SELECT
, FROM
, WHERE
, y HAVING
.
Tipos de subconsultas
- Subconsultas de una sola fila: Devuelven un solo valor.
- Subconsultas de múltiples filas: Devuelven múltiples filas y columnas.
- Subconsultas correlacionadas: Dependen de la consulta externa para su ejecución.
Sintaxis básica de una subconsulta
La sintaxis básica de una subconsulta es la siguiente:
SELECT column1, column2, ... FROM table1 WHERE column_name operator (SELECT column_name FROM table2 WHERE condition);
Ejemplo básico
Supongamos que tenemos dos tablas: employees
y departments
.
-
employees
: | employee_id | name | department_id | |-------------|------------|---------------| | 1 | John Doe | 1 | | 2 | Jane Smith | 2 | | 3 | Emily Davis| 1 | -
departments
: | department_id | department_name | |---------------|-----------------| | 1 | HR | | 2 | IT |
Queremos encontrar los nombres de los empleados que trabajan en el departamento de 'HR'. Podemos usar una subconsulta para lograr esto:
SELECT name FROM employees WHERE department_id = (SELECT department_id FROM departments WHERE department_name = 'HR');
Explicación del ejemplo
-
Subconsulta:
(SELECT department_id FROM departments WHERE department_name = 'HR')
- Esta subconsulta selecciona el
department_id
de la tabladepartments
donde eldepartment_name
es 'HR'. En este caso, devolverá1
.
- Esta subconsulta selecciona el
-
Consulta externa:
SELECT name FROM employees WHERE department_id = ...
- La consulta externa selecciona los nombres de la tabla
employees
donde eldepartment_id
coincide con el resultado de la subconsulta (es decir,1
).
- La consulta externa selecciona los nombres de la tabla
Ejercicios prácticos
Ejercicio 1
Objetivo: Encuentra los nombres de los empleados que trabajan en el departamento de 'IT'.
Tablas:
-
employees
: | employee_id | name | department_id | |-------------|------------|---------------| | 1 | John Doe | 1 | | 2 | Jane Smith | 2 | | 3 | Emily Davis| 1 | -
departments
: | department_id | department_name | |---------------|-----------------| | 1 | HR | | 2 | IT |
Solución:
SELECT name FROM employees WHERE department_id = (SELECT department_id FROM departments WHERE department_name = 'IT');
Ejercicio 2
Objetivo: Encuentra los nombres de los empleados cuyo employee_id
es mayor que el employee_id
promedio de todos los empleados.
Tablas:
employees
: | employee_id | name | department_id | |-------------|------------|---------------| | 1 | John Doe | 1 | | 2 | Jane Smith | 2 | | 3 | Emily Davis| 1 |
Solución:
Ejercicio 3
Objetivo: Encuentra los nombres de los empleados que trabajan en cualquier departamento cuyo nombre comience con la letra 'H'.
Tablas:
-
employees
: | employee_id | name | department_id | |-------------|------------|---------------| | 1 | John Doe | 1 | | 2 | Jane Smith | 2 | | 3 | Emily Davis| 1 | -
departments
: | department_id | department_name | |---------------|-----------------| | 1 | HR | | 2 | IT |
Solución:
SELECT name FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE department_name LIKE 'H%');
Conclusión
Las subconsultas son una herramienta poderosa en SQL que permiten realizar consultas complejas de manera eficiente. En esta lección, hemos aprendido qué son las subconsultas, los diferentes tipos y cómo utilizarlas en consultas básicas. En las próximas lecciones, profundizaremos en subconsultas correlacionadas y otras aplicaciones avanzadas de subconsultas.
Resumen
- Subconsulta: Una consulta dentro de otra consulta.
- Tipos de subconsultas: De una sola fila, de múltiples filas, y correlacionadas.
- Sintaxis básica:
SELECT column_name FROM table WHERE column_name operator (SELECT column_name FROM table WHERE condition);
- Ejemplos prácticos: Encontrar empleados en un departamento específico, empleados con
employee_id
mayor que el promedio, etc.
Prepárate para la siguiente lección donde exploraremos las subconsultas correlacionadas y cómo pueden ser utilizadas para resolver problemas aún más complejos.
Curso de SQL
Módulo 1: Introducción a SQL
Módulo 2: Consultas básicas de SQL
- Instrucción SELECT
- Filtrando datos con WHERE
- Ordenando datos con ORDER BY
- Limitando resultados con LIMIT
Módulo 3: Trabajando con múltiples tablas
Módulo 4: Filtrado avanzado de datos
- Usando LIKE para coincidencia de patrones
- Operadores IN y BETWEEN
- Valores NULL y IS NULL
- Agregando datos con GROUP BY
- Cláusula HAVING
Módulo 5: Manipulación de datos
Módulo 6: Funciones avanzadas de SQL
Módulo 7: Subconsultas y consultas anidadas
- Introducción a subconsultas
- Subconsultas correlacionadas
- EXISTS y NOT EXISTS
- Usando subconsultas en cláusulas SELECT, FROM y WHERE
Módulo 8: Índices y optimización de rendimiento
- Entendiendo los índices
- Creación y gestión de índices
- Técnicas de optimización de consultas
- Análisis del rendimiento de consultas
Módulo 9: Transacciones y concurrencia
- Introducción a las transacciones
- Propiedades ACID
- Instrucciones de control de transacciones
- Manejo de concurrencia