SQL JOIN: Aprenda INNER, LEFT, RIGHT, FULL e CROSS

Quem utiliza SQL frequentemente precisa combinar dados de diferentes tabelas para gerar relatórios mais completos ou análises avançadas em banco de dados.
Para isso, utilizamos o comando JOIN no SQL. Existem vários tipos de join SQL, como INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN e CROSS JOIN, cada um útil para situações diferentes.
O que é o comando JOIN no SQL e como funciona a junção de tabelas?
A cláusula JOIN em SQL é utilizada para combinar dados de duas ou mais tabelas com base em uma relação entre elas. O resultado dessa combinação pode ser utilizado diretamente ou salvo como uma nova tabela.
No SQL padrão ANSI, há cinco tipos principais de joins: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN e CROSS JOIN. Cada tipo de join SQL tem sua aplicação e sintaxe específica.
Como um caso especial, uma tabela (tabela base, visão ou tabela juntada) pode juntar-se a si mesma em uma auto-união (self-join).
Em um banco de dados relacional, os dados são distribuídos em várias tabelas lógicas. Para obter um conjunto completo e significativo de dados, é necessário consultar dados dessas tabelas usando junções (JOINs).
A seguir, conheça os principais tipos de JOIN e exemplos práticos para entender como cada um funciona.
INNER JOIN SQL: o que é, como funciona e exemplo de uso
SELECT <select_list>
FROM Tabela A
INNER JOIN Tabela B
ON A.Key = B.KeyA cláusula INNER JOIN compara cada linha da tabela A com as linhas da tabela B e retorna apenas os pares que satisfazem a condição de junção. Ou seja, só aparecem no resultado as linhas em que há correspondência entre as duas tabelas.
LEFT JOIN SQL: como usar e quando aplicar
Retorna todos os registros da tabela esquerda e os registros correspondentes da tabela direita.
SELECT <select_list>
FROM Tabela A
LEFT JOIN Tabela B
ON A.Key = B.KeyPara cada linha da tabela A, a consulta a compara com todas as linhas da tabela B.
Se um par de linhas fizer com que a condição de junção seja avaliado como `TRUE`, os valores da coluna dessas linhas serão combinados para formar uma nova linha que será incluída no conjunto de resultados.
Caso uma linha da tabela A (esquerda) não encontre correspondência na tabela B (direita), o resultado apresenta os dados da tabela A e, para as colunas vindas da tabela B, exibe valores NULL.
Em resumo, a cláusula `LEFT JOIN` retorna todas as linhas da tabela "esquerda" A e as linhas correspondentes ou valores `NULL` da tabela "direita" B.
RIGHT JOIN no SQL: entendendo a sintaxe e exemplos"
Retorna todos os registros da tabela direita e os registros correspondentes da tabela esquerda.
SELECT <select_list>
FROM Tabela A
RIGHT JOIN Tabela B
ON A.Key = B.KeyA `RIGHT JOIN` combina dados de duas ou mais tabelas. A `RIGHT JOIN` começa a selecionar dados da tabela “direita” B e a corresponder às linhas da tabela “esquerda” A.
A `RIGHT JOIN` retorna todas as linhas da tabela B (direita), inclusive aquelas que não têm correspondência na tabela A (esquerda). Quando não há correspondência, as colunas da tabela A terão valor NULL.
FULL JOIN SQL: como funciona e quando utilizar
Retorna todos os registros quando houver uma correspondência na tabela esquerda ou direita.
SELECT <select_list>
FROM Tabela A
FULL JOIN Tabela B
ON A.Key = B.KeyA cláusula `FULL JOIN` retorna todas as linhas das duas tabelas, apresentando valores das duas quando há correspondência ou não. O `FULL JOIN` reúne o comportamento do `LEFT JOIN` e do `RIGHT JOIN`. `FULL JOIN` é um tipo de junção externa, por isso também é chamada junção externa completa."
Quando não existem linhas correspondentes para a linha da tabela esquerda, as colunas da tabela direita serão nulas. Da mesma forma, quando não existem linhas correspondentes para a linha da tabela direita, a coluna da tabela esquerda será nula.
CROSS JOIN SQL: entenda o produto cartesiano entre tabelas
SELECT <select_list>
FROM Tabela A
CROSS JOIN Tabela BA cláusula `CROSS JOIN` retorna todas as combinações possíveis entre as linhas das duas tabelas, ou seja, gera o chamado produto cartesiano.
Ao contrário de outros tipos de JOIN, o CROSS JOIN não requer nenhuma condição de junção ou campo em comum entre as tabelas - ele simplesmente retorna todas as combinações possíveis (produto cartesiano) entre as linhas das duas tabelas.
Exemplo de CROSS JOIN: Pense em um banco de dados onde você tem uma tabela FUNCIONÁRIO e uma tabela CARGO. Usando o comando CROSS JOIN no SQL, é possível gerar todas as combinações possíveis entre funcionários e cargos, formando o chamado produto cartesiano.
Boas práticas ao usar JOINs
- Use sempre a cláusula ON explícita: Especifique claramente a condição de junção usando ON ao invés de WHERE para melhor legibilidade.
- Prefira ANSI JOIN sobre sintaxe antiga: A sintaxe FROM tabela1, tabela2 WHERE tabela1.id = tabela2.id é obsoleta. Use sempre INNER JOIN com ON.
- Crie índices nas colunas de junção: Para melhor performance, certifique-se de que as colunas usadas nas condições de JOIN possuem índices.
- Use aliases de tabela: Facilita a leitura e manutenção do código, especialmente com múltiplos JOINs.
- Evite SELECT: Especifique apenas as colunas necessárias para melhor performance.
- Cuidado com CROSS JOIN: Pode gerar conjuntos de resultados enormes e impactar severamente a performance. Se necessário, use cláusulas WHERE para filtrar os dados.
Por que entender os tipos de JOIN SQL é essencial para manipular dados em banco de dados?
Dominar JOINs é um divisor de águas em SQL.
É nesse ponto que você deixa de fazer consultas simples e passa a extrair informações realmente relevantes, conectando dados e gerando insights.
Se você quer evoluir de quem “entende SQL” para quem realmente trabalha com dados no dia a dia, vale seguir uma trilha mais estruturada.
Pronto para dar o próximo passo? Conheça a Trilha de SQL com MySQL Server da Oracle na Alura e comece a construir consultas avançadas com segurança e eficiência.
Ou, se o seu objetivo é carreira, explore as Carreiras em Análise de Dados e Engenharia de Dados da Alura e desenvolva as habilidades mais valorizadas do mercado.








