Entendendo a diferença entre INNER JOIN e OUTER JOIN

Se você já precisou cruzar dados entre duas tabelas no banco de dados, certamente se deparou com os JOINs. Mas você sabe a diferença entre INNER JOIN e OUTER JOIN? Neste post, vamos explicar de forma simples e prática!

O que é um JOIN?

JOIN é uma operação que combina registros de duas ou mais tabelas com base em uma condição relacionada, normalmente usando chaves primárias e estrangeiras.

INNER JOIN

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

Exemplo:

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

Explicação: Vai trazer somente os clientes que possuem pedidos cadastrados.

OUTER JOIN

O OUTER JOIN retorna todas as linhas de uma tabela, mesmo que não haja correspondência na outra. Existem três tipos:

  • LEFT OUTER JOIN: todos os registros da tabela da esquerda + correspondências da direita.
  • RIGHT OUTER JOIN: todos da direita + correspondências da esquerda.
  • FULL OUTER JOIN: todos os registros de ambas as tabelas.

Exemplo com LEFT OUTER JOIN:

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

Explicação: Vai trazer todos os clientes, mesmo que não tenham feito pedidos. Quando não houver pedido, o campo "numero" será nulo.

Resumo rápido

JOIN O que retorna?
INNER JOIN Apenas registros com correspondência em ambas as tabelas.
LEFT OUTER JOIN Todos da tabela da esquerda + correspondências da direita.
RIGHT OUTER JOIN Todos da tabela da direita + correspondências da esquerda.
FULL OUTER JOIN Todos os registros de ambas as tabelas.

Conclusão

Agora que você entende a diferença entre INNER JOIN e OUTER JOIN, suas consultas SQL vão ficar muito mais poderosas! Use o INNER JOIN quando quiser apenas os registros relacionados, e o OUTER JOIN quando quiser visualizar todos os dados, mesmo que não tenham correspondências.