image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Article image
Matheus Longo
Matheus Longo22/07/2022 15:47
Compartilhe

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

  • #SQL
  • #Banco de dados relacional

O que é e para que serve Join em SQL?

Uma cláusula JOIN em SQL, correspondente a uma operação de junção em álgebra relacional, combina colunas de uma ou mais tabelas em um banco de dados relacional. Ela cria um conjunto que pode ser salvo como uma tabela ou usado da forma como está.

Um JOIN é um meio de combinar colunas de uma (auto-junção) ou mais tabelas, usando valores comuns a cada uma delas. O SQL padrão ANSI especifica cinco tipos de JOININNER JOINLEFT JOINRIGHT JOINFULL JOIN e CROSS JOIN.

Como um caso especial, uma tabela (tabela base, visão ou tabela juntada) pode se juntar 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).

Como já foi mencionado acima, existem diferentes tipos de JOINs no SQL. Vamos definir e exemplificar cada um deles.

INNER JOIN

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 para encontrar todos os pares de linhas que satisfazem a condição de junção. Se a condição de junção for avaliado como TRUE, os valores da coluna das linhas correspondentes das tabelas A e B serão combinados em uma nova linha e incluídos no conjunto de resultados.

LEFT JOIN

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.

Se uma linha da tabela “esquerda” A não tiver nenhuma linha correspondente da tabela “direita” B, a consulta irá combinar os valores da coluna da linha da tabela “esquerda” A com NULL para cada valor da coluna da tabela da “direita” B que não satisfaça a condição de junto (FALSE).

Em resumo, a cláusula LEFT JOIN retorna todas as linhas da tabela “esquerda” A e as linhas correspondentes ou valores NULL da tabela “esquerda” A.

RIGHT JOIN

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

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.

RIGHT JOIN retorna um conjunto de resultados que inclui todas as linhas da tabela “direita” B, com ou sem linhas correspondentes na tabela “esquerda” A. Se uma linha na tabela direita B não tiver nenhuma linha correspondente da tabela “esquerda” A, a coluna da tabela “esquerda” A no conjunto de resultados será nula igualmente ao que acontece no LEFT JOIN.

FULL JOIN

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 tabelas unidas, correspondidas ou não, ou seja, você pode dizer que a FULL JOIN combina as funções da LEFT JOIN e da RIGHT JOINFULL 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

SELECT <select_list>
FROM Tabela A
CROSS JOIN Tabela B

A cláusula CROSS JOIN retorna todas as linhas das tabelas por cruzamento, ou seja, para cada linha da tabela esquerda queremos todos os linhas da tabelas direita ou vice-versa. Ele também é chamado de produto cartesiano entre duas tabelas. Porém, para isso é preciso que ambas tenham o campo em comum, para que a ligação exista entre as duas tabelas.

Para entender melhor, pense que temos um banco de dado, onde temos uma tabela FUNCIONÁRIO e uma tabela CARGO, assim poderíamos ter vários cargos para um único FUNCIONÁRIO, e usando o CROSS JOIN podemos trazer todos os CARGOS de todos os FUNCIONÁRIOS.

Conclusão

Vimos que os JOINs na linguagem SQL são muito importantes, eles nos permite criar consultas mais completas e mais complexas de forma simples, utilizando testes lógicos (condição de junção), e são de extrema importância quando trabalhamos com bancos de dados.

FONTE: https://www.alura.com.br/artigos/join-em-sql#:~:text=O%20que%20%C3%A9%20e%20para,usado%20da%20forma%20como%20est%C3%A1.

Compartilhe
Comentários (2)
Matheus Longo
Matheus Longo - 23/07/2022 11:15

Muito obrigado Marcia, fico grato em ter ajudado em algo ....

Marcia Melo
Marcia Melo - 22/07/2022 23:35

Bem objetivo. Fácil de compreender. Muito bom 😊