Saltar al contenido principal

SQL INNER JOIN vs. OUTER JOIN: Diferencias clave

Entender SQL INNER JOIN vs. OUTER JOIN con ejemplos y ayudas visuales para mejorar tus conocimientos de gestión de bases de datos.
Actualizado 6 mar 2025  · 4 min de lectura

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.

Ejemplo de tabla de empleados. Imagen del autor.

Ejemplo de tabla de departamentos.

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.

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

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.

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.

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.

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.

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

Demuestra tus conocimientos básicos de SQL y avanza en tu carrera de datos.
Certifícate en SQL

Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Creo artículos que simplifican la ciencia de los datos y la analítica, haciéndolos fáciles de entender y accesibles.

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.

Temas

Aprende SQL con DataCamp

Certificación disponible

curso

Unir datos en SQL

4 hr
207.8K
Aumenta tus conocimientos de SQL y aprende a unir tablas, aplicar la teoría de conjuntos relacionales y trabajar con subconsultas.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

blog

20 preguntas principales de la entrevista sobre SQL Joins

Prepara tu entrevista SQL con esta lista de las preguntas más comunes sobre SQL Joins
Javier Canales Luna's photo

Javier Canales Luna

15 min

blog

SQL Server, PostgreSQL, MySQL... ¿cuál es la diferencia? ¿Por dónde empiezo?

En este tutorial, aprenderás algunas de las diferencias básicas entre los dialectos SQL y por dónde deberías empezar.
Mona Khalil's photo

Mona Khalil

5 min

tutorial

Ejemplos y tutoriales de consultas SQL

Si quiere iniciarse en SQL, nosotros le ayudamos. En este tutorial de SQL, le presentaremos las consultas SQL, una potente herramienta que nos permite trabajar con los datos almacenados en una base de datos. Verá cómo escribir consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

21 min

tutorial

Cómo utilizar un alias SQL para simplificar tus consultas

Explora cómo el uso de un alias SQL simplifica tanto los nombres de las columnas como los de las tablas. Aprende por qué utilizar un alias SQL es clave para mejorar la legibilidad y gestionar uniones complejas.
Allan Ouko's photo

Allan Ouko

9 min

tutorial

Tutorial de SQLAlchemy con ejemplos

Aprende a acceder y ejecutar consultas SQL en todo tipo de bases de datos relacionales utilizando objetos Python.
Abid Ali Awan's photo

Abid Ali Awan

13 min

tutorial

Seleccionar varias columnas en SQL

Aprende a seleccionar fácilmente varias columnas de una tabla de base de datos en SQL, o a seleccionar todas las columnas de una tabla en una simple consulta.
DataCamp Team's photo

DataCamp Team

3 min

Ver másVer más