Curso
En este tutorial, explicaré la diferencia entre SQL INNER JOIN
y OUTER JOIN
y utilizaré ejemplos. Después de resolver este problema, tal vez quieras seguir nuestro curso de Uniones de Datos en SQL, que abarca otras uniones interesantes, como SELF JOIN
y CROSS JOIN
, así como ideas más amplias, como la teoría de conjuntos.
Respuesta rápida
INNER JOIN
devuelve sólo las filas coincidentes entre tablas basadas en una columna común, excluyendo las filas no coincidentes. Por ejemplo, la consulta siguiente muestra los pedidos con los datos del cliente sólo cuando hay una coincidencia.
-- Inner Join: Returns only matching rows from both tables
SELECT o.OrderID, c.CustomerName
FROM Orders o
INNER JOIN Customers c ON o.CustomerID = c.CustomerID;
OUTER JOIN
incluye filas coincidentes y filas no coincidentes de una o ambas tablas. La consulta siguiente devuelve todos los clientes, incluidos los que no tienen pedidos.
-- Left Outer Join: Returns all rows from Customers and matching rows from Orders
SELECT c.CustomerName, o.OrderID
FROM Customers c
LEFT JOIN Orders o ON c.CustomerID = o.CustomerID;
Un vistazo a los INNER JOIN y OUTER JOIN de SQL
Veamos ahora más de cerca SQL INNER JOIN
y OUTER JOIN
, uno por uno. Al examinar cada uno de ellos, considera las dos tablas siguientes:
Ejemplo de tabla de empleados. Imagen del autor.
Ejemplo de tabla de departamentos. Imagen del autor.
Cómo funciona INNER JOIN
Un INNER JOIN
recupera sólo las filas con una coincidencia en ambas tablas en función de la condición especificada.
La siguiente consulta selecciona las filas employee_id
, demployee_name
, department_name
, y salary
y devuelve las filas en las que existe department_id
.
-- Example: Get employees with matching departments
SELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
INNER JOIN departments
-- Returns only employees assigned to a department
ON employees.department_id = departments.department_id;
Ejemplo de tabla combinada mediante SQL INNER JOIN. Imagen del autor.
Cómo funciona OUTER JOIN
El OUTER JOIN
incluye las filas no coincidentes de una o ambas tablas, dependiendo del tipo de OUTER JOIN
utilizado.
LEFT OUTER JOIN (UNIÓN IZQUIERDA)
La página LEFT OUTER JOIN
devuelve todos los registros de la tabla izquierda y los registros coincidentes de la tabla derecha. Si no hay coincidencia, se devuelven los valores NULL
de las columnas de la tabla correcta.
El siguiente ejemplo recupera todos los registros de la tabla employees
, incluso cuando hay registros sin emparejar. La falta de department_name
para los empleados se devuelve como NULL
.
-- Get all employees, even those without a department
SELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;
Ejemplo de tabla unida mediante SQL left outer join. Imagen del autor.
LEFT JOIN y LEFT OUTER JOIN se utilizan indistintamente en SQL, ya que ambas consultas obtienen todas las filas de la tabla izquierda y las filas coincidentes de la tabla derecha.
UNIÓN EXTERNA DERECHA (UNIÓN DERECHA)
La página RIGHT OUTER JOIN
devuelve todos los registros de la tabla derecha y los registros coincidentes de la tabla izquierda. Las filas no coincidentes de la tabla izquierda devuelven NULL
.
La siguiente consulta devuelve todos los registros de la tabla departments
, aunque no haya empleados que coincidan.
-- Get all departments, even those without employees
SELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.department_id;
Ejemplo de tale unido mediante SQL Right outer join. Imagen del autor.
UNIÓN EXTERNA COMPLETA
En FULL OUTER JOIN
se combinan los resultados de las uniones externas izquierda y derecha. Devuelve todos los registros de ambas tablas, rellenando NULL
donde no existan coincidencias.
La siguiente consulta devuelve todos los registros de la tabla employees
y departments
, incluso con filas no coincidentes.
-- Combine all employees and departments
SELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
FULL JOIN departments
ON employees.department_id = departments.department_id;
Ejemplo de tabla unida mediante SQL Full outer join. Imagen del autor.
INNER JOIN vs. OUTER JOIN: Diferencias clave
INNER JOIN
y OUTER JOIN
difieren fundamentalmente en cómo gestionan las filas no coincidentes al fusionar tablas. Comprender estas diferencias es importante para elegir el tipo de unión adecuado en tus consultas a la base de datos. Comparemos estas diferencias.
Qué devuelve INNER JOIN
INNER JOIN
devuelve sólo las filas con valores coincidentes en ambas tablas. Este tipo de unión se utiliza cuando necesitas datos en ambos conjuntos de datos.
La siguiente consulta recupera registros de employees
con filas coincidentes de la tabla departments
.
-- Example: Get employees with matching departments
SELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
INNER JOIN departments
-- Returns only employees assigned to a department
ON employees.department_id = departments.department_id;
Ejemplo de tabla unida mediante SQL INNER JOIN. Imagen del autor.
Qué devuelve OUTER JOIN
OUTER JOIN
incluye las filas no coincidentes de una o ambas tablas, dependiendo del tipo de OUTER JOIN
. Por ejemplo, LEFT OUTER JOIN
devuelve todas las filas de la tabla izquierda y las filas coincidentes de la tabla derecha. Las filas no coincidentes de la tabla correcta tendrán NULLs.
La siguiente consulta recupera los registros de empleados, incluso los que no tienen departamento.
-- Get all employees, even those without a department
SELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;
Ejemplo de datos recuperados mediante SQL LEFT OUTER JOIN. Imagen del autor.
Cuándo utilizar INNER JOIN y OUTER JOIN en SQL
INNER JOIN
y OUTER JOIN
también difieren en sus casos prácticos de uso en la recuperación de datos.
Cuándo utilizar INNER JOIN
INNER JOIN
es más eficaz cuando sólo necesitas los datos de intersección de dos tablas. Por ejemplo, puedes utilizar INNER JOIN
cuando analices datos de ventas para encontrar productos que se han vendido, como cuando ambas tablas de productos y ventas tienen entradas coincidentes.
Cuándo utilizar OUTER JOIN
OUTER JOIN
es adecuado cuando necesitas devolver un conjunto de datos completo, incluidas las filas no coincidentes. Por ejemplo, al generar un informe para mostrar todos los empleados, incluidos los que no tienen asignado un departamento, o todos los departamentos, incluidos los que no tienen empleados.
Conclusión
Comprender la diferencia entre INNER JOIN
y OUTER JOIN
es importante para escribir consultas eficaces. El aprendizaje de estas técnicas también ayuda a mejorar la optimización de las consultas para una recuperación más rápida de los datos. Te animo a que sigas practicando para aprender más habilidades en la gestión de bases de datos.
Te recomiendo que pruebes nuestro itinerario profesional de Analista de Datos Asociado en SQL para convertirte en un buen analista de datos. Nuestro curso de Elaboración de Informes en SQL también te ayudará a dominar la creación de informes y cuadros de mando complejos para una presentación eficaz de los datos. Si te estás preparando para una entrevista que incluye mostrar tus habilidades SQL, te recomiendo que consultes nuestro blog, 20 preguntas principales de la entrevista sobre uniones SQL, para ayudarte a preparar la entrevista.
Obtén una Certificación Top SQL
Preguntas frecuentes sobre INNER JOIN y OUTER JOIN en SQL
¿Cuál es la diferencia entre INNER JOIN y OUTER JOIN en SQL?
INNER JOIN devuelve sólo las filas coincidentes de ambas tablas, mientras que OUTER JOIN incluye las filas no coincidentes, con NULL rellenando los huecos cuando no se encuentran datos correspondientes.
¿Cuándo debo utilizar un INNER JOIN en SQL?
Utiliza un JION INTERNO cuando necesites recuperar sólo las filas con valores coincidentes en ambas tablas.
¿Cuáles son los tipos de OUTER JOIN en SQL?
Los tipos de JOIN EXTERIOR son JOIN EXTERIOR IZQUIERDO, JOIN EXTERIOR DERECHO y JOIN EXTERIOR COMPLETO.
¿Cómo funciona un LEFT OUTER JOIN en SQL?
Una unión externa izquierda devuelve todas las filas de la tabla izquierda, las filas coincidentes de la tabla derecha y las filas no coincidentes de la izquierda.
¿Qué es un FULL OUTER JOIN en SQL?
Un FULL OUTER JOIN devuelve todas las filas de ambas tablas, incluidas las filas no coincidentes de cada una.