SQL: Joins y subqueries

SQL joins y subqueries son esenciales para consultas complejas. Aprende a usarlos correctamente y optimiza tus bases de datos en 2024.

En el ámbito de la programación con SQL, los joins y las subqueries son fundamentales para realizar consultas complejas y optimizar el rendimiento de las bases de datos. Este módulo se centra en el uso adecuado de estas técnicas, siguiendo las recomendaciones más recientes de la documentación oficial de SQL en 2024.

Joins en SQL

Los joins en SQL permiten combinar filas de dos o más tablas en función de una condición relacionada. Los tipos más comunes de joins son:

Inner join

El INNER JOIN devuelve filas cuando hay una coincidencia en ambas tablas.

SELECT a.nombre, b.apellido
FROM empleados a
INNER JOIN departamentos b ON a.departamento_id = b.id;

Left join

El LEFT JOIN devuelve todas las filas de la tabla izquierda y las filas coincidentes de la tabla derecha. Si no hay coincidencia, el resultado es NULL.

SELECT a.nombre, b.apellido
FROM empleados a
LEFT JOIN departamentos b ON a.departamento_id = b.id;

Right join

El RIGHT JOIN es lo inverso del LEFT JOIN. Devuelve todas las filas de la tabla derecha y las filas coincidentes de la tabla izquierda.

SELECT a.nombre, b.apellido
FROM empleados a
RIGHT JOIN departamentos b ON a.departamento_id = b.id;

Full outer join

El FULL OUTER JOIN devuelve filas cuando hay una coincidencia en una de las tablas o en ambas. Si no hay coincidencia, el resultado es NULL.

SELECT a.nombre, b.apellido
FROM empleados a
FULL OUTER JOIN departamentos b ON a.departamento_id = b.id;

Subqueries en SQL

Las subqueries, también conocidas como consultas anidadas, son consultas dentro de otras consultas. Se utilizan para realizar operaciones complejas y filtrar datos de manera eficiente.

Subqueries en la cláusula SELECT

Permiten incluir resultados de una consulta en la lista de selección de otra consulta.

SELECT nombre, 
       (SELECT COUNT(*) 
        FROM proyectos 
        WHERE proyectos.empleado_id = empleados.id) AS num_proyectos
FROM empleados;

Subqueries en la cláusula FROM

Pueden actuar como tablas temporales dentro de una consulta principal.

SELECT sub.nombre, sub.total_salario
FROM (SELECT nombre, SUM(salario) AS total_salario 
      FROM empleados 
      GROUP BY nombre) sub;

Subqueries en la cláusula WHERE

Se utilizan para filtrar resultados basados en otra consulta.

SELECT nombre, salario
FROM empleados
WHERE salario > (SELECT AVG(salario) 
                 FROM empleados);

Subqueries correlacionadas

Las subqueries correlacionadas dependen de la consulta externa para su ejecución.

SELECT nombre
FROM empleados a
WHERE salario > (SELECT AVG(salario) 
                 FROM empleados b 
                 WHERE a.departamento_id = b.departamento_id);

El uso adecuado de joins y subqueries en SQL es esencial para optimizar las consultas y mejorar el rendimiento de las bases de datos. Siguiendo las prácticas recomendadas y utilizando las técnicas avanzadas presentadas, se pueden realizar operaciones complejas de manera eficiente y precisa.

Certifícate en SQL con CertiDevs PLUS

Lecciones de este módulo de SQL

Lecciones de programación del módulo Joins y subqueries del curso de SQL.

Ejercicios de programación en este módulo de SQL

Evalúa tus conocimientos en Joins y subqueries con ejercicios de programación Joins y subqueries de tipo Test, Puzzle, Código y Proyecto con VSCode.