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

Philemon Delva
Philemon Delva

Compartilhe

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. 

Banner da Escola de Data Science: Matricula-se na escola de Data Science. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

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.Key

A 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.Key

Para 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.Key

A `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.Key

A 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 B

A 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 

  1. 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. 
  2. Prefira ANSI JOIN sobre sintaxe antiga: A sintaxe FROM tabela1, tabela2 WHERE tabela1.id = tabela2.id é obsoleta. Use sempre INNER JOIN com ON. 
  3. Crie índices nas colunas de junção: Para melhor performance, certifique-se de que as colunas usadas nas condições de JOIN possuem índices. 
  4. Use aliases de tabela: Facilita a leitura e manutenção do código, especialmente com múltiplos JOINs. 
  5. Evite SELECT: Especifique apenas as colunas necessárias para melhor performance. 
  6. 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.

Veja outros artigos sobre Data Science