Dominando JOINs no SQL: Guia Completo
Tags: database, sql, learning, programming
Published: 2023-11-13 22:39:19

Neste artigo, abordaremos o comando JOIN no SQL, que é empregado quando há a necessidade de combinar duas ou mais tabelas. 

Esse comando é fundamental quando há a necessidade de consultar informações que estejam distribuídas entre tabelas diferentes, mas que possuam algum tipo de relação ou vínculo.

Existem diversas abordagens para a execução desse tipo de junção. Algumas delas são:

- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
- FULL OUTER JOIN
- CROSS JOIN

**INNER JOIN**

Retorna apenas os registros que possuem correspondência nas duas tabelas envolvidas na junção. Registros que não possuam correspondência são excluídos do resultado.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2thy0yvxuabxcpvc2hy2.png)

A sintaxe básica para realizar um JOIN envolve especificar as tabelas envolvidas e as condições de junção, geralmente definidas pela cláusula ON, onde são indicados os campos relacionados nas tabelas.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6a1eudj5xd29cgqdm797.png)

**LEFT JOIN**

Retorna todos os registros da tabela à esquerda (primeira tabela listada), juntamente com os registros correspondentes da tabela à direita (segunda tabela listada). Se não houver correspondência na tabela à direita, os campos associados a essa tabela conterão valores nulos.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9tsv62yjyuje9mu35502.png)

Para fazer esse join utilizamos o seguinte comando:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/et64m50xj84gb0ph0n94.png)

Podemos fazer o LEFT JOIN excluindo os valores do INNER JOIN, isso chamamos de LEFT JOIN EXCLUDING INNER JOIN

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pup4yjxpm3nbxq68ul7o.png)

Para fazer esse join utilizamos o seguinte comando:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4h6j0eyhrc6gcjmnr745.png)

**RIGHT JOIN**

Similar ao LEFT JOIN, porém retorna todos os registros da tabela à direita, com seus correspondentes da tabela à esquerda. Registros sem correspondência na tabela à esquerda resultarão em valores nulos nos campos associados a essa tabela.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l04e2xk5grvnyz8c7nsf.png)

Para fazer esse join utilizamos o seguinte comando:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/flv2a4prpniwxhtasavg.png)

Assim como no LEFT JOIN, podemos também no RIGHT JOIN excluir os resultados do INNER JOIN, chamamos de RIGHT JOIN EXCLUDING INNER JOIN.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cvniz7yp48zwy4t0clvw.png)

Para fazer esse join utilizamos o seguinte comando:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eetyx6u02sa5e9x99tls.png)

**FULL OUTER JOIN**

Ou apenas FULL JOIN, retorna todos os registros de ambas as tabelas, incluindo os registros que não têm correspondência na tabela oposta. Campos sem correspondência conterão valores nulos.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2sfssvaejwxqnsefa1or.png)

Para fazer esse join utilizamos o seguinte comando:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eqwz50qd9oe3n8fcldv5.png)

Temos também o FULL JOIN EXCLUDING INNER JOIN, que é o FULL JOIN excluindo o INNER JOIN. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6p5ya8mh66w5yaoepnwm.png)

Para fazer esse join utilizamos o seguinte comando:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/43g0podpp8qj5vwqg6f2.png)

**CROSS JOIN**

É um tipo de junção que combina todas as linhas de duas ou mais tabelas envolvidas, produzindo um conjunto de resultados que é o produto cartesiano dessas tabelas. Isso significa que cada linha da primeira tabela será combinada com todas as linhas da segunda tabela e assim por diante, gerando todas as possíveis combinações.

_Sintaxe_

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ez6f8oo4lkvnnm0vefxg.png)

Repare que não temos o "ON A.CHAVE = B.CHAVE" nesse caso, isso por que não estamos relacionando as colunas.

Nesse exemplo, a consulta retorna todas as combinações possíveis entre a tabela A e a tabela B. Se houver 10 registros na tabela A e 5 registros na tabela B, o resultado conterá 50 linhas, combinando cada registro da tabela A com todos os registros da tabela B.

Geralmente, o CROSS JOIN não é tão utilizado quanto outros tipos de JOINs, pois na maioria dos casos estamos interessados em combinar registros com base em critérios de relacionamento específicos. Entretanto, em alguns cenários, pode ser útil, como para gerar combinações cartesianas ou para produzir resultados específicos em relatórios complexos.

Abaixo temos uma imagem com um resumo dos JOINs mais comuns.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2mkwd5gexxoseom2jia1.png)

Em conclusão, as cláusulas JOIN no SQL são uma parte essencial da manipulação e análise de dados em bancos de dados relacionais. Elas permitem que você una dados de várias tabelas com base em relações-chave, expandindo assim a capacidade de extrair informações valiosas a partir de conjuntos de dados interconectados.

1. **Conexão de Dados**: As cláusulas JOIN permitem que você combine informações de diferentes tabelas, o que é fundamental para a construção de consultas complexas que recuperam dados relacionados de várias fontes.
2. **Diversos Tipos de JOIN**: SQL oferece diferentes tipos de joins, como INNER JOIN, LEFT JOIN, RIGHT JOIN e FULL JOIN, cada um adequado a um cenário específico. Isso proporciona flexibilidade na recuperação de dados.
3. **Relações Complexas**: As joins são cruciais quando você lida com bases de dados complexas que têm muitas tabelas com relacionamentos entre elas. Elas ajudam a trazer clareza e organização aos seus dados.
4. **Tomada de Decisões Baseada em Dados**: O domínio das cláusulas JOIN é essencial para profissionais que buscam obter informações precisas a partir de bancos de dados, o que, por sua vez, sustenta a tomada de decisões informadas.

Em resumo, a compreensão das cláusulas JOIN no SQL é uma habilidade crucial para qualquer pessoa que trabalha com dados em um ambiente de banco de dados relacional. Dominar a arte de unir e relacionar tabelas permite que você extraia insights valiosos, construa relatórios complexos e, em última análise, tome decisões embasadas em dados sólidos. Portanto, aprofundar o conhecimento sobre joins é um passo importante na jornada para se tornar um profissional eficiente em gerenciamento e análise de dados.