Pular para o conteúdo principal

SQL INNER JOIN vs. INNER JOIN. OUTER JOIN: Principais diferenças

Entenda o que é SQL INNER JOIN e o que é SQL INNER JOIN. OUTER JOIN com exemplos e recursos visuais para aprimorar suas habilidades de gerenciamento de banco de dados.
Actualizado 6 de mar. de 2025  · 4 min de leitura

Neste tutorial, explicarei a diferença entre o SQL INNER JOIN e o OUTER JOIN e usarei exemplos. Depois de resolvermos esse problema, talvez você queira fazer nosso curso Joining Data in SQL, que aborda outras junções interessantes, como SELF JOIN e CROSS JOIN, bem como ideias mais amplas, como a teoria dos conjuntos.

Resposta rápida

INNER JOIN retorna apenas as linhas correspondentes entre tabelas com base em uma coluna comum, excluindo as linhas não correspondentes. Por exemplo, a consulta abaixo mostra pedidos com detalhes do cliente somente quando há uma correspondência.

-- 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 inclui linhas correspondentes, bem como linhas não correspondentes de uma ou ambas as tabelas. A consulta abaixo retorna todos os clientes, inclusive aqueles sem 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;

Uma análise detalhada do SQL INNER JOIN e OUTER JOIN

Vamos agora dar uma olhada mais de perto no SQL INNER JOIN e OUTER JOIN, um de cada vez. Ao analisarmos cada uma delas, considere as duas tabelas a seguir:

Exemplo de tabela de funcionários.

Exemplo de tabela de funcionários. Imagem do autor.

Exemplo de tabela de departamentos.

Exemplo de tabela de departamentos. Imagem do autor.

Como funciona o INNER JOIN

Um INNER JOIN recupera apenas as linhas com uma correspondência em ambas as tabelas com base na condição especificada. 

A consulta a seguir seleciona employee_id, demployee_name, department_name e salary e, em seguida, retorna as linhas em que department_id existe.

-- 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;

Exemplo de tabela mesclada usando SQL INNER JOIN.

Exemplo de tabela mesclada usando SQL INNER JOIN. Imagem do autor.

Como funciona o OUTER JOIN

O site OUTER JOIN inclui linhas não correspondentes de uma ou ambas as tabelas, dependendo do tipo de OUTER JOIN usado.

UNIÃO EXTERNA ESQUERDA (UNIÃO ESQUERDA)

O LEFT OUTER JOIN retorna todos os registros da tabela da esquerda e os registros correspondentes da tabela da direita. Se não houver correspondência, os valores de NULL serão retornados para as colunas da tabela correta.

O exemplo a seguir recupera todos os registros da tabela employees, mesmo quando há registros não correspondentes. O endereço department_name ausente para os funcionários é retornado 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;

Exemplo de tabela unida usando a união externa esquerda do SQL

Exemplo de tabela unida usando a união externa esquerda do SQL. Imagem do autor.

LEFT JOIN e LEFT OUTER JOIN são usados de forma intercambiável no SQL, pois ambas as consultas buscam todas as linhas da tabela da esquerda e as linhas correspondentes da tabela da direita.

JUNÇÃO EXTERNA DIREITA (JUNÇÃO DIREITA)

O RIGHT OUTER JOIN retorna todos os registros da tabela da direita e os registros correspondentes da tabela da esquerda. As linhas não correspondentes na tabela da esquerda retornam NULL.

A consulta abaixo retorna todos os registros da tabela departments, mesmo quando não há funcionários correspondentes.

-- 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;

Exemplo de união de contos usando a união externa direita do SQL.

Exemplo de união de contos usando a união externa direita do SQL. Imagem do autor.

JUNÇÃO EXTERNA COMPLETA

O site FULL OUTER JOIN combina os resultados das uniões externas esquerda e direita. Ele retorna todos os registros de ambas as tabelas, preenchendo NULL onde não há correspondências.

A consulta abaixo retorna todos os registros da tabela employees e departments, mesmo com linhas não correspondentes.

-- 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;

Exemplo de tabela unida usando SQL Full outer join.

Exemplo de tabela unida usando SQL Full outer join. Imagem do autor.

INNER JOIN vs. OUTER JOIN: Principais diferenças

INNER JOIN e OUTER JOIN diferem fundamentalmente na forma como lidam com linhas não correspondentes ao mesclar tabelas. Entender essas diferenças é importante para que você escolha o tipo de união correto em suas consultas ao banco de dados. Vamos comparar essas diferenças.

O que INNER JOIN retorna

INNER JOIN retorna apenas as linhas com valores correspondentes em ambas as tabelas. Esse tipo de união é usado quando você precisa de dados em ambos os conjuntos de dados.

A consulta a seguir recupera registros de employees com linhas correspondentes da tabela 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;

Exemplo de tabela unida usando o Inner join do SQL.

Exemplo de tabela unida usando SQL INNER JOIN. Imagem do autor.

O que OUTER JOIN retorna

OUTER JOIN inclui linhas não correspondentes de uma ou ambas as tabelas, dependendo do tipo de OUTER JOIN. Por exemplo, o LEFT OUTER JOIN retorna todas as linhas da tabela da esquerda e as linhas correspondentes da tabela da direita. Se você não encontrar linhas correspondentes na tabela correta, terá NULLs.

A consulta a seguir recupera registros de funcionários, mesmo aqueles sem um 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;

Exemplo de dados recuperados usando a junção externa esquerda do SQL.

Exemplo de dados recuperados usando SQL LEFT OUTER JOIN. Imagem do autor.

Quando usar SQL INNER JOIN e OUTER JOIN

INNER JOIN e OUTER JOIN também diferem em seus casos de uso prático na recuperação de dados.

Quando usar INNER JOIN

INNER JOIN é mais eficaz quando você precisa apenas dos dados de interseção de duas tabelas. Por exemplo, você pode usar o site INNER JOIN ao analisar dados de vendas para encontrar produtos que foram vendidos, como quando as tabelas de produtos e vendas têm entradas correspondentes.

Quando usar OUTER JOIN

OUTER JOIN é apropriado quando você precisa retornar um conjunto de dados completo, incluindo linhas sem correspondência. Por exemplo, ao gerar um relatório para mostrar todos os funcionários, inclusive aqueles sem atribuição de departamento, ou todos os departamentos, inclusive aqueles sem funcionários.

Conclusão

Entender a diferença entre INNER JOIN e OUTER JOIN é importante para que você possa escrever consultas eficientes. O aprendizado dessas técnicas também ajuda a aprimorar a otimização de consultas para acelerar a recuperação de dados. Incentivo você a continuar praticando para aprender mais habilidades no gerenciamento de banco de dados.

Recomendo que você experimente o nosso programa de carreira Associate Data Analyst in SQL para se tornar um bom analista de dados. Nosso curso Reporting in SQL também ajudará você a se tornar proficiente na criação de relatórios e painéis complexos para a apresentação eficaz de dados. Se você estiver se preparando para uma entrevista que inclua a demonstração de suas habilidades em SQL, recomendo que consulte nosso blog, 20 Top SQL Joins Interview Questions, para ajudá-lo a se preparar para a entrevista.

Obtenha uma das melhores certificações em SQL

Comprove suas habilidades básicas em SQL e avance em sua carreira de dados.
Obtenha a certificação SQL

Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Eu crio artigos que simplificam a ciência e a análise de dados, tornando-as fáceis de entender e acessíveis.

Perguntas frequentes sobre SQL INNER JOIN e OUTER JOIN

Qual é a diferença entre INNER JOIN e OUTER JOIN no SQL?

INNER JOIN retorna apenas as linhas correspondentes de ambas as tabelas, enquanto OUTER JOIN inclui as linhas não correspondentes, com NULLs preenchendo as lacunas quando nenhum dado correspondente é encontrado.

Quando devo usar um INNER JOIN no SQL?

Use um INNER JION quando você precisar recuperar apenas as linhas com valores correspondentes em ambas as tabelas.

Quais são os tipos de OUTER JOIN no SQL?

Os tipos de OUTER JOIN são LEFT OUTER JOIN, RIGHT OUTER JOIN e FULL OUTER JOIN.

Como funciona um LEFT OUTER JOIN no SQL?

Uma união externa esquerda retorna todas as linhas da tabela esquerda, as linhas correspondentes da tabela direita e as linhas não correspondentes da esquerda.

O que é um FULL OUTER JOIN no SQL?

Um FULL OUTER JOIN retorna todas as linhas de ambas as tabelas, incluindo as linhas não correspondentes de cada uma delas.

Temas

Aprenda SQL com a DataCamp

Curso

Joining Data in SQL

4 hr
207.8K
Level up your SQL knowledge and learn to join tables together, apply relational set theory, and work with subqueries.
Ver DetalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

SQL Server, PostgreSQL, MySQL... qual é a diferença? Por onde devo começar?

Neste tutorial, você aprenderá algumas das diferenças básicas entre os dialetos SQL e por onde deve começar.
Mona Khalil's photo

Mona Khalil

5 min

blog

Para que o SQL é usado? 7 Principais usos do SQL

Descubra os usos do SQL em setores e trabalhos específicos. Além disso, saiba por que a linguagem SQL é tão versátil e requisitada.
Natassha Selvaraj's photo

Natassha Selvaraj

11 min

blog

SQL vs Python: Qual você deve aprender?

Neste artigo, abordaremos os principais recursos do Python e do SQL, suas principais semelhanças e diferenças, e qual deles você deve escolher primeiro para iniciar sua jornada na ciência de dados.
Javier Canales Luna's photo

Javier Canales Luna

12 min

SQL Programming Language

blog

O que é SQL? - A linguagem essencial para o gerenciamento de bancos de dados

Saiba tudo sobre o SQL e por que ele é a linguagem de consulta ideal para o gerenciamento de bancos de dados relacionais.
Summer Worsley's photo

Summer Worsley

16 min

Tutorial

Exemplos e tutoriais de consultas SQL

Se você deseja começar a usar o SQL, nós o ajudamos. Neste tutorial de SQL, apresentaremos as consultas SQL, uma ferramenta poderosa que nos permite trabalhar com os dados armazenados em um banco de dados. Você verá como escrever consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

21 min

Tutorial

Como usar um alias SQL para simplificar suas consultas

Explore como o uso de um alias SQL simplifica os nomes de colunas e tabelas. Saiba por que usar um alias SQL é fundamental para melhorar a legibilidade e gerenciar uniões complexas.
Allan Ouko's photo

Allan Ouko

9 min

Ver maisVer mais