Os 4 Tipos de JOIN em SQL que Você Precisa Dominar
JOIN sem tipo especificado funciona como INNER JOIN — simples, mas fácil de esquecer. Entenda a diferença entre INNER, LEFT, RIGHT e FULL JOIN com exemplos práticos.
02/09/2026 Bancos de Dados
Sabe aquela dúvida que trava suas queries no SQL?
Estudando sobre JOINs, uma coisa fica clara rápido: muita gente confunde os tipos, ou simplesmente usa o JOIN "padrão" sem entender exatamente o que está acontecendo por trás. E entender essa diferença muda completamente o resultado de uma consulta — às vezes sem gerar nenhum erro, só um número errado no relatório.
Um detalhe que passa despercebido: o JOIN sem tipo especificado funciona como INNER JOIN — só retorna os registros que existem nas duas tabelas. Simples, mas fácil de esquecer quando o objetivo real é outro.
Abaixo está um guia rápido dos 4 tipos principais, com diagrama de Venn mental e exemplo de sintaxe para cada um.
1. INNER JOIN
Retorna apenas os registros que têm correspondência em ambas as tabelas. Se uma linha existe só na tabela A ou só na tabela B, ela fica de fora do resultado. É o tipo mais usado no dia a dia — e o padrão quando nenhum tipo é especificado.
SELECT clientes.nome, pedidos.valor
FROM clientes
INNER JOIN pedidos ON clientes.id = pedidos.cliente_id;
2. LEFT JOIN
Retorna todos os registros da tabela da esquerda, mais as correspondências da tabela da direita. Quando não há correspondência, os campos da tabela da direita vêm como NULL. Útil para responder perguntas como "quais clientes nunca fizeram um pedido?".
SELECT clientes.nome, pedidos.valor
FROM clientes
LEFT JOIN pedidos ON clientes.id = pedidos.cliente_id;
3. RIGHT JOIN
É o espelho do LEFT JOIN: retorna todos os registros da tabela da direita, mais as correspondências da tabela da esquerda. Na prática, é menos usado do que o LEFT JOIN, porque o mesmo resultado quase sempre pode ser obtido invertendo a ordem das tabelas em um LEFT JOIN — mas vale conhecer, principalmente para ler queries escritas por outras pessoas.
SELECT clientes.nome, pedidos.valor
FROM clientes
RIGHT JOIN pedidos ON clientes.id = pedidos.cliente_id;
4. FULL JOIN
Retorna todos os registros de ambas as tabelas, combinando quando há correspondência e preenchendo com NULL quando não há. É a união do LEFT JOIN com o RIGHT JOIN, útil para auditorias e para encontrar inconsistências entre duas tabelas que deveriam estar sincronizadas.
SELECT clientes.nome, pedidos.valor
FROM clientes
FULL JOIN pedidos ON clientes.id = pedidos.cliente_id;
Como escolher o JOIN certo
Uma forma simples de decidir:
- Só quero o que existe nas duas tabelas? INNER JOIN
- Quero tudo da tabela principal, mesmo sem correspondência? LEFT JOIN
- Quero tudo da tabela secundária, mesmo sem correspondência? RIGHT JOIN (ou inverta as tabelas e use LEFT JOIN)
- Quero tudo de ambas, correspondendo o que for possível? FULL JOIN
Resumindo
Não existe JOIN "certo" de forma isolada — existe o JOIN certo para a pergunta que a query precisa responder. Escolher o tipo errado não costuma travar a query, mas pode devolver menos linhas do que deveria, ou linhas duplicadas, sem nenhum erro visível — só um resultado sutilmente incorreto.
Ainda estou aprendendo esse assunto, mas compartilhar o que já entendi é uma forma de fixar o conhecimento — e quem sabe ajudar alguém na mesma jornada.
E você?
Qual desses 4 tipos de JOIN você mais usa no seu dia a dia?