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:
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.
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.
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.
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.
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.
Imagine duas tabelas:
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 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).
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.
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.”
Mesmas tabelas de antes:
Consulta com LEFT JOIN:
SELECT *
FROM clientes
LEFT JOIN compras
ON clientes.id = compras.id_cliente;
Essa consulta retorna:
O LEFT JOIN não exclui ninguém da tabela da esquerda. Ele inclui mesmo quem está “sozinho”.
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.
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.”
Mesmas tabelas:
Consulta com RIGHT JOIN:
SELECT *
FROM clientes
RIGHT JOIN compras
ON clientes.id = compras.id_cliente;
Essa consulta retorna:
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).
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.
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 |
Imagine essas situações reais:
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.
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.
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.
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:
Seja em análise de dados, engenharia, produto ou negócio, as decisões que movem times e produtos nascem de perguntas como:
Essas perguntas quase sempre dependem de JOINs bem construídos.
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.