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.
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 tablesSELECT o.OrderID, c.CustomerName
FROM Orders o
INNERJOIN Customers c ON o.CustomerID = c.CustomerID;Tecnologia
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 OrdersSELECT c.CustomerName, o.OrderID
FROM Customers c
LEFTJOIN Orders o ON c.CustomerID = o.CustomerID;Tecnologia
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. Imagem do autor.
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 departmentsSELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
INNERJOIN departments
-- Returns only employees assigned to a departmentON employees.department_id = departments.department_id;Tecnologia
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 departmentSELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
LEFTJOIN departments
ON employees.department_id = departments.department_id;Tecnologia
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 employeesSELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
RIGHTJOIN departments
ON employees.department_id = departments.department_id;Tecnologia
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 departmentsSELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
FULLJOIN departments
ON employees.department_id = departments.department_id;Tecnologia
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 departmentsSELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
INNERJOIN departments
-- Returns only employees assigned to a departmentON employees.department_id = departments.department_id;Tecnologia
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 departmentSELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
LEFTJOIN departments
ON employees.department_id = departments.department_id;Tecnologia
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.
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.
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.
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
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.
Neste tutorial, explicarei a diferença entre o SQL
INNER JOINe oOUTER JOINe usarei exemplos. Depois de resolvermos esse problema, talvez você queira fazer nosso curso Joining Data in SQL, que aborda outras junções interessantes, comoSELF JOINeCROSS JOIN, bem como ideias mais amplas, como a teoria dos conjuntos.Resposta rápida
INNER JOINretorna 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.OUTER JOINinclui 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.Uma análise detalhada do SQL INNER JOIN e OUTER JOIN
Vamos agora dar uma olhada mais de perto no SQL
INNER JOINeOUTER JOIN, um de cada vez. Ao analisarmos cada uma delas, considere as duas tabelas a seguir:Exemplo de tabela de funcionários. Imagem do autor.
Exemplo de tabela de departamentos. Imagem do autor.
Como funciona o INNER JOIN
Um
INNER JOINrecupera 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_nameesalarye, em seguida, retorna as linhas em quedepartment_idexiste.Exemplo de tabela mesclada usando SQL INNER JOIN. Imagem do autor.
Como funciona o OUTER JOIN
O site
OUTER JOINinclui linhas não correspondentes de uma ou ambas as tabelas, dependendo do tipo deOUTER JOINusado.UNIÃO EXTERNA ESQUERDA (UNIÃO ESQUERDA)
O
LEFT OUTER JOINretorna todos os registros da tabela da esquerda e os registros correspondentes da tabela da direita. Se não houver correspondência, os valores deNULLserã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çodepartment_nameausente para os funcionários é retornado comoNULL.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 JOINretorna todos os registros da tabela da direita e os registros correspondentes da tabela da esquerda. As linhas não correspondentes na tabela da esquerda retornamNULL.A consulta abaixo retorna todos os registros da tabela
departments, mesmo quando não há funcionários correspondentes.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 JOINcombina os resultados das uniões externas esquerda e direita. Ele retorna todos os registros de ambas as tabelas, preenchendoNULLonde não há correspondências.A consulta abaixo retorna todos os registros da tabela
employeesedepartments, mesmo com linhas não correspondentes.Exemplo de tabela unida usando SQL Full outer join. Imagem do autor.
INNER JOIN vs. OUTER JOIN: Principais diferenças
INNER JOINeOUTER JOINdiferem 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 JOINretorna 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
employeescom linhas correspondentes da tabeladepartments.Exemplo de tabela unida usando SQL INNER JOIN. Imagem do autor.
O que OUTER JOIN retorna
OUTER JOINinclui linhas não correspondentes de uma ou ambas as tabelas, dependendo do tipo deOUTER JOIN. Por exemplo, oLEFT OUTER JOINretorna 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.
Exemplo de dados recuperados usando SQL LEFT OUTER JOIN. Imagem do autor.
Quando usar SQL INNER JOIN e OUTER JOIN
INNER JOINeOUTER JOINtambé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 siteINNER JOINao 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 JOINeOUTER 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.