SQL
Tutorial SQL: Creación y uso de subqueries
SQL subqueries: consultas anidadas. Domina la creación y uso de subqueries en SQL mediante ejemplos prácticos y detallados.
Aprende SQL GRATIS y certifícateLas subqueries, también conocidas como subconsultas o consultas anidadas, son consultas SQL incrustadas dentro de otras consultas SQL. Sirven como una herramienta fundamental para extraer y manipular datos en bases de datos relacionales. Estas consultas pueden existir en diversas partes de una consulta principal, incluyendo las cláusulas SELECT
, WHERE
, FROM
, GROUP BY
y HAVING
.
Creación de subqueries
Para crear una subconsulta, se sigue el formato de una consulta SQL estándar, pero se coloca dentro de paréntesis y se incrusta dentro de otra consulta. Por ejemplo:
SELECT columna_1
FROM tabla_1
WHERE columna_2 IN (SELECT columna_2 FROM tabla_2);
En este ejemplo, la subconsulta es (SELECT columna_2 FROM tabla_2)
. La consulta principal usa el resultado de esta subconsulta para filtrar los resultados del SELECT
principal.
Tipos de subqueries
Subquery de fila única
Estas subqueries devuelven una sola fila. Se utilizan comúnmente con operadores como =, >, <, >=, <=. Por ejemplo:
SELECT columna_1, columna_2
FROM tabla
WHERE columna_1 = (SELECT MAX(columna_1) FROM tabla);
En este caso, la subconsulta (SELECT MAX(columna_1) FROM tabla)
devuelve un solo valor, que es el valor máximo en columna_1
. La consulta principal selecciona las filas donde columna_1
es igual a ese valor máximo. Es decir, la subconsulta calcula el valor máximo en columna_1
y la consulta principal devuelve los registros para los que columna_1
tiene dicho valor máximo.
Subquery de múltiples filas
Estas subqueries devuelven más de una fila. Se utilizan con operadores como IN
, ANY
, ALL
. Por ejemplo:
SELECT columna_1, columna_2
FROM tabla
WHERE columna_1 IN (SELECT columna_1 FROM otra_tabla);
En este caso, la subconsulta (SELECT columna_1 FROM otra_tabla)
puede devolver múltiples valores - específicamente, todos los valores en columna_1
de otra_tabla
. La consulta principal selecciona las filas donde el valor de su columna_1
se encuentra entre esos valores. En otras palabras, esta consulta devolverá todas las filas de tabla
donde su columna_1
tiene un valor que también aparece en la columna_1
de otra_tabla
.
Similarmente, ANY
se usaría para una condición que sea verdadera si la operación es verdadera para cualquiera de los valores en su rango, y ALL
se usaría para una condición que sea verdadera sólo si la operación es verdadera para todos los valores en su rango.
Usos comunes de las subqueries
Subqueries en la cláusula WHERE
Como en los ejemplos anteriores, pueden usarse subqueries en la cláusula WHERE
para filtrar resultados en base al resultado de otra consulta.
Subqueries en la cláusula FROM
Pueden usarse subqueries en la cláusula FROM
para crear una tabla temporal que luego puede usarse en la consulta principal. Por ejemplo:
SELECT columna_1, COUNT(*)
FROM (
SELECT columna_1 FROM tabla
) AS subquery
GROUP BY columna_1;
En este caso, la subconsulta (SELECT columna_1 FROM tabla)
se utiliza para crear una tabla temporal que consiste solo en columna_1
de tabla
. La consulta principal luego selecciona columna_1
y el conteo de cada columna_1
(es decir, cuántas veces aparece cada columna_1
) de esta tabla temporal. Así que el resultado final de esta consulta será una lista de columna_1
y la cantidad de veces que cada uno aparece en tabla
.
Subqueries en la cláusula SELECT
Las subqueries en la cláusula SELECT
se usan para calcular valores dinámicos en los resultados. Por ejemplo:
SELECT columna_1,
(SELECT MAX(columna_2) FROM tabla WHERE columna_1 = outer.columna_1) AS max_columna_2
FROM tabla AS outer;
En este caso, la subconsulta (SELECT MAX(columna_2) FROM tabla WHERE columna_1 = outer.columna_1)
se calcula para cada fila de tabla
. Para cada fila, se selecciona el valor máximo en columna_2
donde columna_2
es igual al columna_1
de la fila actual (esto es lo que hace outer.columna_1
). En otras palabras, para cada columna_1
en tabla
, esta consulta devolverá el valor máximo de columna_2
. El resultado de esta consulta será una lista de columna_1
y su correspondiente valor máximo en columna_2
.
Conclusión
Las subqueries son herramientas poderosas en SQL que permiten realizar consultas complejas y dinámicas. Su comprensión y uso adecuado pueden mejorar significativamente la capacidad de manipulación y extracción de datos en una base de datos relacional.
Ejercicios de esta lección Creación y uso de subqueries
Evalúa tus conocimientos de esta lección Creación y uso de subqueries con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Actualización de datos: UPDATE
Creación y uso de procedimientos almacenados
Uso de funciones agregadas: COUNT, SUM, AVG, MAX, MIN
Tipos de datos
Uso de índices y particiones
Uso de vistas
Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
Sentencias INSERT
Creación y uso de subqueries
Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
Instalación de MySQL
Relaciones entre tablas
Clasificación de resultados con ORDER BY
Creación y manejo de usuarios y roles
Eliminación de datos: DELETE
Creación y uso de funciones
Vaciar tablas y bases de datos: DROP
Consultas básicas de selección: SELECT y WHERE
Creación de bases de datos y tablas
Filtrado de valores únicos con DISTINCT
Alterar la estructura de tablas existentes: ALTER TABLE
Creación de tablas e inserción de datos con SQL
Asignación y gestión de permisos
Optimización de consultas
Introducción a SQL
Triggers y eventos
Copias de seguridad y restauración de bases de datos
Filtrado de grupos de resultados con HAVING
Eliminación de datos: DELETE
Inserción de datos: INSERT INTO
Instalación de PostgreSQL
Agrupación de resultados con GROUP BY
Actualización de datos: UPDATE
Renombrar tablas y bases de datos: RENAME
Creación de bases de datos y tablas: CREATE DATABASE, CREATE TABLE
Bases de datos y tablas
Consultas básicas de selección SELECT y WHERE
Relaciones entre tablas
Todas las lecciones de SQL
Accede a todas las lecciones de SQL y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Sql
Introducción Y Entorno
Ddl Y Dml
Introducción Y Entorno
Instalación De Mysql
Introducción Y Entorno
Instalación De Postgresql
Introducción Y Entorno
Tipos De Datos
Introducción Y Entorno
Bases De Datos Y Tablas
Introducción Y Entorno
Creación De Bases De Datos Y Tablas: Create Database, Create Table
Operaciones Básicas
Consultas Básicas De Selección: Select Y Where
Operaciones Básicas
Inserción De Datos: Insert Into
Operaciones Básicas
Actualización De Datos: Update
Operaciones Básicas
Eliminación De Datos: Delete
Operaciones Básicas
Clasificación De Resultados Con Order By
Filtros Y Clasificación
Filtrado De Valores Únicos Con Distinct
Filtros Y Clasificación
Uso De Funciones Agregadas: Count, Sum, Avg, Max, Min
Funciones Agregadas Y Agrupaciones
Agrupación De Resultados Con Group By
Funciones Agregadas Y Agrupaciones
Filtrado De Grupos De Resultados Con Having
Funciones Agregadas Y Agrupaciones
Relaciones Entre Tablas
Joins Y Subqueries
Uso De Inner Join, Left Join, Right Join, Full Join
Joins Y Subqueries
Creación Y Uso De Subqueries
Joins Y Subqueries
Alterar La Estructura De Tablas Existentes: Alter Table
Manipulación De Tablas Y Datos
Renombrar Tablas Y Bases De Datos: Rename
Manipulación De Tablas Y Datos
Vaciar Tablas Y Bases De Datos: Drop
Manipulación De Tablas Y Datos
Creación Y Uso De Funciones
Funciones Y Procedimientos Almacenados
Creación Y Uso De Procedimientos Almacenados
Funciones Y Procedimientos Almacenados
Creación Y Manejo De Usuarios Y Roles
Seguridad Y Administración De Bases De Datos Sql
Asignación Y Gestión De Permisos
Seguridad Y Administración De Bases De Datos Sql
Copias De Seguridad Y Restauración De Bases De Datos
Seguridad Y Administración De Bases De Datos Sql
Optimización De Consultas
Sintaxis Avanzada
Uso De Índices Y Particiones
Sintaxis Avanzada
Uso De Vistas
Sintaxis Avanzada
Triggers Y Eventos
Sintaxis Avanzada
Certificados de superación de SQL
Supera todos los ejercicios de programación del curso de SQL y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.
En esta lección
Objetivos de aprendizaje de esta lección
- Comprender el concepto de subqueries en SQL, y aprender cómo se crean y dónde se pueden utilizar dentro de una consulta SQL.
- Conocer los dos tipos principales de subqueries: de fila única y de múltiples filas, y cómo difieren en su uso y resultados.
- Practicar la escritura de subqueries en diversas partes de una consulta, como en las cláusulas
WHERE
,FROM
ySELECT
. - Entender los diferentes usos comunes de las subqueries, como filtrar resultados, crear tablas temporales y calcular valores dinámicos.