
Tipos de JOIN no SQL: INNER, LEFT e RIGHT [+ exemplos]
JOINs são um dos conceitos mais importantes do SQL e da modelagem de dados relacional.
Eles permitem cruzar informações entre tabelas diferentes e responder perguntas que envolvem múltiplas entidades (como clientes e pedidos, usuários e acessos, produtos e vendas).
Neste conteúdo, você vai entender o que é um JOIN, como ele funciona e quais são os tipos principais (INNER, LEFT e RIGHT), com exemplos práticos que ajudam a visualizar o comportamento de cada um.
Se você está começando a trabalhar com dados ou quer reforçar sua base técnica, este guia é para você.
Aqui você vai encontrar:
- O que é um JOIN no SQL?
- INNER JOIN: o que há em comum
- LEFT JOIN: tudo da tabela da esquerda (mesmo que não tenha par)
- RIGHT JOIN: o contrário do LEFT JOIN
- Comparando os JOINs: o que muda na prática?
- Por que dominar JOINs é essencial?
- Conclusão
O que é um JOIN no SQL?
Em bancos de dados relacionais, os dados não ficam todos em uma única tabela. Eles são organizados de forma separada, por entidades. Clientes em uma tabela, compras em outra, produtos em uma terceira, e assim por diante.
Mas, no dia a dia, as perguntas que queremos responder muitas vezes envolvem informações espalhadas entre essas tabelas. Como saber, por exemplo, quais clientes fizeram compras? Ou quais produtos ainda não foram vendidos?
É aí que entra o JOIN: uma ferramenta do SQL que permite combinar dados de duas (ou mais) tabelas com base em uma relação entre elas.
JOIN é conexão
Quando usamos um JOIN, estamos dizendo:
“Junte essas tabelas usando uma coluna em comum para cruzar os dados.”
Essa “coluna em comum” normalmente representa uma chave, por exemplo:
clientes.id
compras.id_cliente
A partir dessa correspondência, o JOIN cria uma nova visão combinada, unindo os dados que fazem sentido juntos.
Como funciona na prática?
Uma estrutura básica de JOIN no SQL costuma seguir este padrão:
SELECT *
FROM clientes
JOIN compras
ON clientes.id = compras.id_cliente;
Esse comando diz:
"Traga os dados das tabelas clientes e compras, e una as linhas onde o id do cliente bate com o id_cliente da compra."
JOINs são essenciais para responder perguntas mais ricas com SQL.
A seguir, vamos entender quais são os tipos de JOIN disponíveis e como cada um se comporta.
INNER JOIN: o que há em comum
O INNER JOIN é o tipo mais comum de JOIN no SQL e, muitas vezes, o mais intuitivo.
Ele retorna apenas os registros que existem nas duas tabelas ao mesmo tempo, ou seja, somente os dados que têm correspondência nas colunas relacionadas.
Quando usar o INNER JOIN
Use o INNER JOIN quando você quiser ver apenas os dados que “batem” entre as tabelas.
Por exemplo:
“Quero listar os clientes que já fizeram alguma compra e ver o que compraram.”
Nesse caso, só nos interessam os clientes com compras registradas. Clientes sem nenhuma compra ficam de fora.
Exemplo prático
Imagine duas tabelas:
- clientes (id, nome)
- compras (id, id_cliente, produto)
Consulta com INNER JOIN:
SELECT *
FROM clientes
INNER JOIN compras
ON clientes.id = compras.id_cliente;
Essa consulta retorna apenas os clientes que têm compras associadas e mostra os dados combinados dos dois lados.
O que o INNER JOIN exclui
- Clientes sem compras → não aparecem no resultado
- Compras sem cliente vinculado → também não aparecem
O INNER JOIN filtra tudo que não tem correspondência entre as tabelas.
O INNER JOIN é ideal quando você quer análises mais precisas, baseadas em dados que se relacionam diretamente (como transações concluídas, associações válidas ou vínculos confirmados).
LEFT JOIN: tudo da tabela da esquerda (mesmo que não tenha par)
O LEFT JOIN (ou left outer join) amplia a lógica do INNER JOIN:
Ele traz todos os registros da tabela da esquerda, mesmo que não tenham correspondência na tabela da direita.
Quando usar o LEFT JOIN
Use o LEFT JOIN quando você quiser garantir que todos os dados da primeira tabela apareçam, mesmo que não exista um “par” correspondente na segunda.
Exemplo:
“Quero ver todos os clientes, inclusive os que nunca compraram nada.”
Exemplo prático
Mesmas tabelas de antes:
- clientes (id, nome)
- compras (id, id_cliente, produto)
Consulta com LEFT JOIN:
SELECT *
FROM clientes
LEFT JOIN compras
ON clientes.id = compras.id_cliente;
Essa consulta retorna:
- Todos os clientes
- As compras associadas (quando houver)
- NULL nos campos da tabela compras para quem não comprou nada
O que o LEFT JOIN revela
- Clientes ativos e inativos (com ou sem compras)
- Ajuda a identificar ausências ou lacunas nos dados
- É muito útil para análises completas, relatórios gerenciais ou para detectar comportamentos (ex: clientes inativos)
O LEFT JOIN não exclui ninguém da tabela da esquerda. Ele inclui mesmo quem está “sozinho”.
RIGHT JOIN: o contrário do LEFT JOIN
O RIGHT JOIN funciona como o espelho do LEFT JOIN:
Ele garante que todos os registros da tabela da direita apareçam no resultado, mesmo que não tenham correspondência na tabela da esquerda.
Quando usar o RIGHT JOIN
Use o RIGHT JOIN quando você quiser manter todos os dados da tabela da direita, mesmo que não estejam associados à tabela da esquerda.
Exemplo:
“Quero ver todas as compras registradas, mesmo aquelas que não estão ligadas a nenhum cliente.”
Exemplo prático
Mesmas tabelas:
- clientes (id, nome)
- compras (id, id_cliente, produto)
Consulta com RIGHT JOIN:
SELECT *
FROM clientes
RIGHT JOIN compras
ON clientes.id = compras.id_cliente;
Essa consulta retorna:
- Todas as compras
- Os dados dos clientes, se houver correspondência
- Campos da tabela clientes como NULL caso a compra não tenha cliente associado
Alternativa ao RIGHT JOIN
Nem todos os bancos de dados suportam bem o RIGHT JOIN, ou preferem evitar para manter legibilidade.
Em muitos casos, você pode trocar a ordem das tabelas em um LEFT JOIN e ter o mesmo resultado:
SELECT *
FROM compras
LEFT JOIN clientes
ON compras.id_cliente = clientes.id;
A lógica é a mesma: mantenha tudo da tabela principal e junte o que der da outra.
O RIGHT JOIN é menos comum no dia a dia, mas pode ser útil quando a tabela principal da sua análise está à direita (como um inventário, uma tabela de eventos, ou registros técnicos).
Comparando os JOINs: o que muda na prática?
Agora que você viu como funcionam os principais tipos de JOIN, a pergunta natural é:
“Qual JOIN usar e quando?”
Tudo depende do que você precisa responder com sua consulta.
Resumo visual: tipos de JOIN e seus comportamentos
Tipo de JOIN | O que traz do resultado final | Quando usar |
---|---|---|
INNER JOIN | Só os registros com correspondência nas duas tabelas | Quando você quer trabalhar apenas com dados relacionados |
LEFT JOIN | Todos os registros da tabela da esquerda + correspondentes da direita (se houver) | Quando você quer garantir todos os dados da tabela principal (esquerda) |
RIGHT JOIN | Todos os registros da tabela da direita + correspondentes da esquerda (se houver) | Quando a tabela mais importante da análise está à direita |
Visualizando o comportamento
Imagine essas situações reais:
- Você quer listar clientes que fizeram compras → INNER JOIN
- Quer ver todos os clientes, mesmo os que não compraram → LEFT JOIN
- Quer analisar todos os produtos disponíveis, mesmo os que nunca foram comprados → RIGHT JOIN (ou inverter com LEFT)
Uma dica pra você: sempre que possível, pense qual é a “tabela principal” da sua análise.
Ela deve ficar à esquerda e, na dúvida, prefira LEFT JOIN, que costuma ser mais intuitivo e mais usado no mercado.
JOINs são ferramentas de leitura: o tipo de JOIN define o que você vai enxergar nos dados.
Por que dominar JOINs é essencial?
Saber escrever um JOIN no SQL é uma habilidade técnica.
Mas entender JOINs profundamente vai muito além da sintaxe: é o que separa quem apenas executa consultas de quem realmente entende os dados.
JOINs estão em quase toda análise relevante
Sempre que você quiser responder perguntas que envolvem múltiplas entidades (clientes, pedidos, produtos, usuários, eventos) vai precisar conectar tabelas.
JOINs são essa ponte.
E saber qual tipo usar é o que garante que a resposta da sua análise seja completa, confiável e precisa.
Dominar JOINs é dominar relacionamentos
A maior parte dos sistemas é relacional, e isso não é por acaso.
Dados no mundo real são interdependentes: uma compra depende de um cliente, um acesso depende de um usuário, um ticket está ligado a um produto.
Saber aplicar JOINs com clareza é o que permite:
- Enxergar conexões reais entre dados
- Encontrar lacunas e exceções
- Construir consultas que contam histórias completas
JOINs são base para decisões e produtos
Seja em análise de dados, engenharia, produto ou negócio, as decisões que movem times e produtos nascem de perguntas como:
- Quem são nossos clientes mais ativos?
- Quais produtos são mais comprados por faixa etária?
- Quais ações não estão gerando engajamento?
Essas perguntas quase sempre dependem de JOINs bem construídos.
Conclusão
JOINs são parte da base de qualquer trabalho com dados em SQL, e dominar seus diferentes tipos é o que permite ir além do básico e fazer análises que realmente refletem a realidade dos sistemas e do negócio.
Mais do que decorar comandos, o essencial é entender o comportamento de cada tipo de JOIN e saber aplicá-los de forma estratégica, com clareza sobre o que se quer responder.
Se você está começando sua jornada em tecnologia, dados ou produto, dominar JOINs é um passo necessário para ler e modelar o mundo relacional que existe por trás de quase todo software moderno.
O caminho agora é praticar: explore bases diferentes, teste combinações, observe como os dados se comportam, e transforme consultas em respostas confiáveis.