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.

Las 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.

Certifícate en SQL con CertiDevs PLUS

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

Código

Creación y uso de procedimientos almacenados

Test

Uso de funciones agregadas: COUNT, SUM, AVG, MAX, MIN

Test

Tipos de datos

Test

Uso de índices y particiones

Test

Uso de vistas

Test

Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN

Test

Sentencias INSERT

Código

Creación y uso de subqueries

Test

Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN

Código

Instalación de MySQL

Test

Relaciones entre tablas

Código

Clasificación de resultados con ORDER BY

Test

Creación y manejo de usuarios y roles

Test

Eliminación de datos: DELETE

Código

Creación y uso de funciones

Test

Vaciar tablas y bases de datos: DROP

Test

Consultas básicas de selección: SELECT y WHERE

Test

Creación de bases de datos y tablas

Código

Filtrado de valores únicos con DISTINCT

Test

Alterar la estructura de tablas existentes: ALTER TABLE

Test

Creación de tablas e inserción de datos con SQL

Proyecto

Asignación y gestión de permisos

Test

Optimización de consultas

Test

Introducción a SQL

Test

Triggers y eventos

Test

Copias de seguridad y restauración de bases de datos

Test

Filtrado de grupos de resultados con HAVING

Test

Eliminación de datos: DELETE

Test

Inserción de datos: INSERT INTO

Test

Instalación de PostgreSQL

Test

Agrupación de resultados con GROUP BY

Test

Actualización de datos: UPDATE

Test

Renombrar tablas y bases de datos: RENAME

Test

Creación de bases de datos y tablas: CREATE DATABASE, CREATE TABLE

Test

Bases de datos y tablas

Test

Consultas básicas de selección SELECT y WHERE

Código

Relaciones entre tablas

Test

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

Sublenguajes De Sql: Data Definition Language Y Data Manipulation Language

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

  1. Comprender el concepto de subqueries en SQL, y aprender cómo se crean y dónde se pueden utilizar dentro de una consulta SQL.
  2. Conocer los dos tipos principales de subqueries: de fila única y de múltiples filas, y cómo difieren en su uso y resultados.
  3. Practicar la escritura de subqueries en diversas partes de una consulta, como en las cláusulas WHERE, FROM y SELECT.
  4. Entender los diferentes usos comunes de las subqueries, como filtrar resultados, crear tablas temporales y calcular valores dinámicos.