Qual a diferença entre INNER JOIN e OUTER JOIN?

O INNER JOIN retorna apenas registros correspondentes em ambas as tabelas, enquanto o OUTER JOIN pode incluir registros sem correspondência.

Qual a diferença entre INNER JOIN e OUTER JOIN?

Os JOINs no SQL são usados para combinar dados de diferentes tabelas. A principal diferença entre INNER JOIN e OUTER JOIN está na forma como lidam com registros que não possuem correspondência.

O que é INNER JOIN?

O INNER JOIN retorna apenas os registros que possuem correspondência em ambas as tabelas.

SELECT clientes.nome, pedidos.id, pedidos.valor 
FROM clientes 
INNER JOIN pedidos ON clientes.id = pedidos.cliente_id;

Aqui, a consulta retorna apenas os clientes que possuem pedidos registrados.

O que é OUTER JOIN?

O OUTER JOIN retorna todos os registros de uma das tabelas, mesmo que não haja correspondência na outra. Ele pode ser dividido em:

  • LEFT OUTER JOIN (ou simplesmente LEFT JOIN) – Retorna todos os registros da tabela da esquerda, preenchendo com NULL onde não houver correspondência.
  • RIGHT OUTER JOIN (ou simplesmente RIGHT JOIN) – Retorna todos os registros da tabela da direita, preenchendo com NULL onde não houver correspondência.

Exemplo de LEFT OUTER JOIN

SELECT clientes.nome, pedidos.id, pedidos.valor 
FROM clientes 
LEFT JOIN pedidos ON clientes.id = pedidos.cliente_id;

Isso retorna todos os clientes, incluindo aqueles que não possuem pedidos.

Exemplo de RIGHT OUTER JOIN

SELECT clientes.nome, pedidos.id, pedidos.valor 
FROM clientes 
RIGHT JOIN pedidos ON clientes.id = pedidos.cliente_id;

Agora, todos os pedidos aparecem, mesmo aqueles sem clientes associados.

Diferença entre INNER JOIN e OUTER JOIN

JOIN O que retorna?
INNER JOIN Apenas registros correspondentes em ambas as tabelas
LEFT OUTER JOIN Todos os registros da tabela da esquerda, mesmo sem correspondência
RIGHT OUTER JOIN Todos os registros da tabela da direita, mesmo sem correspondência

Quando usar INNER JOIN e OUTER JOIN?

  • Use INNER JOIN se quiser apenas os registros que existem em ambas as tabelas.
  • Use LEFT JOIN se precisar garantir que todos os registros da tabela principal estejam incluídos.
  • Use RIGHT JOIN se quiser priorizar os registros da segunda tabela.
  • Use FULL OUTER JOIN quando precisar combinar todos os registros de ambas as tabelas, preenchendo com NULL onde necessário.

A escolha entre INNER JOIN e OUTER JOIN no SQL depende do tipo de análise que queremos fazer nos dados. Em sistemas de gerenciamento de pedidos, por exemplo, um INNER JOIN pode ser usado para listar apenas os pedidos que possuem um cliente associado. Já um LEFT JOIN pode ser útil para exibir todos os clientes, mesmo aqueles que ainda não realizaram compras. A decisão correta evita perda de informações e melhora a eficiência das consultas em bancos de dados de grande escala.

Algumas aplicações:

  • INNER JOIN: Relacionar pedidos e clientes cadastrados
  • LEFT JOIN: Listar todos os clientes, mostrando quem já fez pedidos
  • RIGHT JOIN: Mostrar todos os pedidos, mesmo sem cliente associado
  • FULL OUTER JOIN: Combinar todos os registros, incluindo os sem correspondência
  • Geração de relatórios detalhados sobre dados distribuídos

Dicas para quem está começando

  • Use INNER JOIN quando precisar apenas dos registros com correspondência
  • Para incluir registros sem correspondência, prefira LEFT JOIN ou RIGHT JOIN
  • Evite FULL OUTER JOIN em grandes volumes de dados sem necessidade
  • Revise a modelagem dos dados antes de escolher o tipo de JOIN
  • Se estiver lidando com muitos valores NULL, reavalie se o JOIN utilizado é o correto

Contribuições de Fernando Albuquerque

Compartilhe este tutorial: Qual a diferença entre INNER JOIN e OUTER JOIN?

Compartilhe este tutorial

Continue aprendendo:

Como usar LEFT JOIN e RIGHT JOIN no SQL?

Os JOINs LEFT e RIGHT permitem unir tabelas no SQL, incluindo registros sem correspondência, garantindo uma visualização mais abrangente dos dados.

Tutorial anterior

Como juntar mais de duas tabelas no SQL?

Podemos unir mais de duas tabelas no SQL utilizando múltiplos JOINs, conectando tabelas relacionadas por meio de chaves primárias e estrangeiras.

Próximo tutorial