Figura 1 - Joins em SQL.
Em cima dessa figura, vamos criar a estrutura e realizar as consultas usando cada join.
Para isso, o primeiro passo é criar as tabelas A e B, conforme mostra o código da Seleção 1.
Mas atenção: este post não tem o foco de melhores práticas, normalização etc. por isso, serão criadas apenas duas tabelas simples com apenas um campo chamado nome para visualizar o resultado de cada join.
Seleção 1 - Criando as tabelas.
CREATE TABLE TabelaA(
Nome varchar(50) NULL
)
GO
CREATE TABLE TabelaB(
Nome varchar(50) NULL
)
Já o segundo passo inclui a inserção de valores nas tabelas A e B. A Seleção 2 exibe os valores que serão incluídos nas tabelas A e B.
Seleção 2 - Inclusão de dados nas tabelas.
INSERT INTO TabelaA VALUES('Willian')
INSERT INTO TabelaA VALUES('Pamela')
INSERT INTO TabelaA VALUES('Alfredo')
INSERT INTO TabelaA VALUES('Carlos')
INSERT INTO TabelaB VALUES('Pamela')
INSERT INTO TabelaB VALUES('Tiago')
INSERT INTO TabelaB VALUES('Jefferson')
INSERT INTO TabelaB VALUES('Alfredo')
Vamos analisar cada um dos joins.
Inner Join
Usando o inner join, conforme mostra a Figura 2, teremos como resultado todos os registros comuns nas duas tabelasFigura 2 - Usando Inner Join.
Para isso executaremos os comandos presentes na Seleção 3.
Seleção 3 - Usando Inner Join
SELECT a.Nome, b.Nome
FROM TabelaA as A
INNER JOIN TabelaB as B
on a.Nome = b.Nome
Na prática, o resultado será conforme a Figura 3.
Retorno do Inner Join
Figura 3 - Retorno do Inner Join.
Left Join
Usando o Left Join, conforme mostra a Figura 4, teremos como resultado todos os registros que estão na tabela A (mesmo que não estejam na tabela B) e os registros da tabela B que são comuns na tabela A. Para entender melhor, executaremos o código presente na Seleção 4.
Figura 4 - Usando Left Join
Seleção 4 - Usando Left Join
SELECT a.Nome, b.Nome
FROM TabelaA as A
LEFT JOIN TabelaB as B
on a.Nome = b.Nome
E na prática o resultado será conforme a Figura 5.
Figura 5 - Retorno do Left Join.
Right Join
Usando o Right Join, conforme mostra a Figura 6, teremos como resultado todos os registros que estão na tabela B (mesmo que não estejam na tabela A) e os registros da tabela A que são comuns na tabela B. Para vermos isso na prática, executaremos os comandos da Seleção 5.
Figura 6 - Usando Right Join
Seleção 5 -Usando Right Join
SELECT a.Nome, b.Nome
FROM TabelaA as A
RIGHT JOIN TabelaB as B
on a.Nome = b.Nome
O resultado desses comando será o mesmo apresentado na Figura 7.
Figura 7 - Retorno do Right Join.
Outer Join
Usando o Outer Join (conhecido por Full Outer Join ou Full Join), conforme mostra a Figura 8, teremos como resultado todos os registros que estão na tabela A e todos os registros da tabela B. Na prática, você deve executar os mesmos comando presentes na Seleção 6.
Figura 8 - Usando Full Outer Join e Full Join
Seleção 6 -Usando Full Outer Join ou Full Join
SELECT a.Nome, b.Nome
FROM TabelaA as A
FULL OUTER JOIN TabelaB as B
on a.Nome = b.Nome
SELECT a.Nome, b.Nome
FROM TabelaA as A
FULL JOIN TabelaB as B
on a.Nome = b.Nome
E na prática o resultado será conforme a Figura 9.
Figura 9 - Retorno do Full Outer Join ou Full Join
Left Excluding Join
Na Figura 10 temos o uso do Left Excluding Join, que retorna como resultado todos os registros que estão na tabela A e que não estejam na tabela B. Os comandos desses join estão presentes na Seleção 7 e o resultado desses comandos são apresentados na Figura 11.
Figura 10 - Usando Left Excluding Join
Seleção 7 - Usando Left Excluding Join
SELECT a.Nome, b.Nome
FROM TabelaA as A
LEFT JOIN TabelaB as B
on a.Nome = b.Nome
WHERE b.Nome is null
Figura 11 - Retorno do Left Excluding Join
Right Excluding Join
Usando o Right Excluding Join, conforme mostra a Figura 12, teremos como resultado todos os registros que estão na tabela B e que não estejam na tabela A. Para vermos isso na prática, precisamos executar os comandos da Seleção 8. Como resultado, teremos os mesmos registros retornados na Figura 13.
Figura 12 - Usando Right Excluding Join.
Seleção 8 - Usando Right Excluding Join.
SELECT a.Nome, b.Nome
FROM TabelaA as A
RIGHT JOIN TabelaB as B
on a.Nome = b.Nome
WHERE a.Nome is null
Figura 13 - Retorno do Right Excluding Join.
Outer Excluding Join
Usando o Outer Excluding Join, conforme mostra a Figura 14, teremos como resultado todos os registros que estão na tabela B (que não estejam na tabela A) e todos os registros que estão na tabela A (que não estejam na tabela B).
Figura 14 - Usando Outer Excluding Join
Para isso, executaremos o comando da Seleção 9.
Seleção 9 - Usando Outer Excluding Join
SELECT a.Nome, b.Nome
FROM TabelaA as A
FULL OUTER JOIN TabelaB as B
on a.Nome = b.Nome
WHERE a.Nome is null or b.Nome is null
SELECT a.Nome, b.Nome
FROM TabelaA as A
FULL JOIN TabelaB as B
on a.Nome = b.Nome
WHERE a.Nome is null or b.Nome is null
E na prática o resultado será conforme a Figura 15.
Figura 15 - Retorno do Outer Excluding Join
Conclusão
Esses foram mais alguns comandos importantíssimos no desenvolvimento de profissionais que vão atuar como programadores ou administradores de banco de dados.
Fiquem atentos e vamos para os estudos!!
Se tiverem alguma dúvida ou sugestões de novos posts favor me avise pelo Facebook ou então deixando seu comentário no blog.
Nenhum comentário:
Postar um comentário