¿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

  1. Subconsultas de una sola fila: Devuelven un solo valor.
  2. Subconsultas de múltiples filas: Devuelven múltiples filas y columnas.
  3. 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

  1. Subconsulta: (SELECT department_id FROM departments WHERE department_name = 'HR')

    • Esta subconsulta selecciona el department_id de la tabla departments donde el department_name es 'HR'. En este caso, devolverá 1.
  2. Consulta externa: SELECT name FROM employees WHERE department_id = ...

    • La consulta externa selecciona los nombres de la tabla employees donde el department_id coincide con el resultado de la subconsulta (es decir, 1).

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:

SELECT name
FROM employees
WHERE employee_id > (SELECT AVG(employee_id) FROM employees);

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

Módulo 3: Trabajando con múltiples tablas

Módulo 4: Filtrado avanzado de datos

Módulo 5: Manipulación de datos

Módulo 6: Funciones avanzadas de SQL

Módulo 7: Subconsultas y consultas anidadas

Módulo 8: Índices y optimización de rendimiento

Módulo 9: Transacciones y concurrencia

Módulo 10: Temas avanzados

Módulo 11: SQL en la práctica

Módulo 12: Proyecto final

© Copyright 2024. Todos los derechos reservados