SQL

Tutorial SQL: Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN

SQL JOIN: combinaciones de tablas en SQL para unir datos de manera eficiente. Aprende cómo usar INNER, LEFT, RIGHT y FULL JOIN en bases de datos relacionales.

Las cláusulas JOIN en SQL son fundamentales para combinar filas de diferentes tablas basándose en una columna relacionada. Existen cuatro tipos principales: INNER JOIN, LEFT JOIN, RIGHT JOIN, y FULL JOIN.

Ciertas bases de datos utilizan la nomenclatura OUTER, pero su funcionamiento es el mismo.

Tipos de JOIN y sus usos

INNER JOIN

El INNER JOIN es el tipo de unión más común que se utiliza en SQL. Devuelve registros que tienen valores coincidentes en ambas tablas. Si no hay una coincidencia, la fila no se incluirá en el resultado.

Por ejemplo, si se tienen dos tablas, Clientes y Pedidos, y se quiere encontrar todos los clientes que han realizado al menos un pedido, se podría usar INNER JOIN de la siguiente manera:

SELECT Clientes.Nombre, Pedidos.Producto
FROM Clientes
INNER JOIN Pedidos ON Clientes.ID = Pedidos.ID_Cliente;

En este ejemplo, Clientes.ID y Pedidos.ID_Cliente son los campos que se utilizan para determinar la coincidencia entre las dos tablas. Solo se devolverán los registros donde exista un ID de cliente en la tabla Pedidos que coincida con un ID de cliente en la tabla Clientes.

Esta unión es ideal cuando se requiere información que está presente en ambas tablas.

LEFT JOIN (o LEFT OUTER JOIN)

El LEFT JOIN devuelve todos los registros de la tabla izquierda (la primera tabla), y los registros coincidentes de la tabla derecha (la segunda tabla). Si no hay una coincidencia, el resultado es NULL en el lado derecho.

Siguiendo con el ejemplo anterior, si se quieren encontrar todos los clientes, sin importar si han realizado un pedido o no, se podría usar LEFT JOIN de la siguiente manera:

SELECT Clientes.Nombre, Pedidos.Producto
FROM Clientes
LEFT JOIN Pedidos ON Clientes.ID = Pedidos.ID_Cliente;

En este caso, se devolverán todos los registros de la tabla Clientes, independientemente de si tienen una coincidencia en la tabla Pedidos. Para los clientes sin pedidos, el lado derecho (Pedidos.Producto) será NULL.

LEFT JOIN es útil cuando se quieren incluir todos los registros de una tabla, independientemente de si tienen una coincidencia en la otra tabla.

RIGHT JOIN (o RIGHT OUTER JOIN)

El RIGHT JOIN devuelve todos los registros de la tabla derecha, y los registros coincidentes de la tabla izquierda. Si no hay una coincidencia, el resultado es NULL en el lado izquierdo.

Si, en lugar de todos los clientes, se quieren encontrar todos los pedidos, sin importar si tienen un cliente asociado o no, se podría usar RIGHT JOIN de la siguiente manera:

SELECT Clientes.Nombre, Pedidos.Producto
FROM Clientes
RIGHT JOIN Pedidos ON Clientes.ID = Pedidos.ID_Cliente;

En este caso, se devolverán todos los registros de la tabla Pedidos, independientemente de si tienen una coincidencia en la tabla Clientes. Para los pedidos sin cliente, el lado izquierdo (Clientes.Nombre) será NULL.

FULL JOIN (o FULL OUTER JOIN)

El FULL JOIN devuelve todos los registros cuando hay una coincidencia en la tabla izquierda o la tabla derecha. Si no hay una coincidencia, el resultado es NULL en el lado que no tiene coincidencias.

Si se quieren encontrar todos los clientes y todos los pedidos, sin importar si tienen una coincidencia entre sí o no, podría usarse FULL JOIN de la siguiente manera:

SELECT Clientes.Nombre, Pedidos.Producto
FROM Clientes
FULL JOIN Pedidos ON Clientes.ID = Pedidos.ID_Cliente;

En este caso, se devolverán todos los registros de las tablas Clientes y Pedidos, independientemente de si tienen una coincidencia entre ellos. Para los pedidos sin cliente, el lado izquierdo (Clientes.Nombre) será NULL, y para los clientes sin pedidos, el lado derecho (Pedidos.Producto) será NULL.

Alternativa para FULL JOIN en MySQL

Es importante recordar que no todos los sistemas de gestión de bases de datos soportan FULL JOIN. Por ejemplo, MySQL no soporta FULL JOIN, pero se puede lograr el mismo resultado utilizando una combinación de LEFT JOIN y UNION.

SELECT Clientes.Nombre, Pedidos.Producto
FROM Clientes
LEFT JOIN Pedidos ON Clientes.ID = Pedidos.ID_Cliente
UNION
SELECT Clientes.Nombre, Pedidos.Producto
FROM Clientes
RIGHT JOIN Pedidos ON Clientes.ID = Pedidos.ID_Cliente;    

Conclusión

Las cláusulas JOIN son herramientas poderosas en SQL que permiten combinar información de múltiples tablas de manera eficiente y flexible. Comprender cuándo y cómo usar cada tipo de JOIN es esencial para crear consultas efectivas y optimizadas.

Certifícate en SQL con CertiDevs PLUS

Ejercicios de esta lección Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN

Evalúa tus conocimientos de esta lección Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN 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 los cuatro tipos principales de cláusulas JOIN en SQL: INNER JOIN, LEFT JOIN, RIGHT JOIN y FULL JOIN.
  2. Conocer cómo utilizar INNER JOIN para obtener registros con valores coincidentes en varias tablas.
  3. Conocer cómo utilizar LEFT JOIN y RIGHT JOIN para obtener todos los registros de una tabla, más los registros coincidentes de otra segunda tabla.
  4. Conocer cómo utilizar FULL JOIN para obtener todos los registros de entre varias tablas, coincidentes o no.