Em seguida, precisaremos adicionar nas tabelas recém criadas alguns dados que nos permitam colocar à prova as junções. Sendo assim, vamos inserir, com o script da Listagem 2 alguns registros de forma que haja nomes que estão presentes apenas em uma tabela, e também nomes que sejam comuns às duas.
|
Figura 3. Resultado do Inner Join |
Left Join
O Left Join, cujo funcionamento é ilustrado na
Figura 4, tem 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 à tabela A.
|
Figura 4. Representação do Left Join |
Para compreender melhor seu uso, temos um exemplo na
Listagem 4, cujo resultado é apresentado em seguida na
Figura 5.
SELECT a.Nome, b.Nome
FROM TabelaA as A
LEFT JOIN TabelaB as B
on a.Nome = b.Nome
Listagem 4. Usando o Left Join
|
Figura 5. Resultado 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 à tabela B.
|
Figura 6. Representação do Right Join |
Na
Listagem 5 temos um exemplo desse tipo de consulta, e na
Figura 7 vemos seu resultado.
SELECT a.Nome, b.Nome
FROM TabelaA as A
RIGHT JOIN TabelaB as B
on a.Nome = b.Nome
Listagem 5. Usando o Right Join
|
Figura 7. Resultado do Right Join |
Outer Join
O Outer Join (também conhecido por Full Outer Join ou Full Join), conforme mostra a
Figura 8, tem como resultado todos os registros que estão na tabela A e todos os registros da tabela B.
|
Figura 8. Representação do Outer Join |
Para obter esse resultado, devemos executar a consulta seguindo a estrutura que é demonstrada na
Listagem 6, e cujo retorno é apresentado na
Figura 9.
SELECT a.Nome, b.Nome
FROM TabelaA as A
FULL OUTER JOIN TabelaB as B
on a.Nome = b.Nome
Listagem 6. Usando o Outer Join
|
Figura 9. Resultado do Outer Join |
Nesse código, a palavra reservada
OUTER é opcional. Portanto, se a removermos, deixando apenas a expressão
FULL JOIN, o resultado será o mesmo.
Left Excluding Join
Na
Figura 10 temos a representação gráfica 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.
|
Figura 10. Representação do Left Excluding Join |
Os comandos desse join podem ser vistos na
Listagem 7, e seu resultado é apresentado na
Figura 11.
SELECT a.Nome, b.Nome
FROM TabelaA as A
LEFT JOIN TabelaB as B
on a.Nome = b.Nome
WHERE b.Nome is null
Listagem 7. Usando Left Excluding Join
|
Figura 11. Resultado do Left Excluding Join |
Right Excluding Join
O Right Excluding Join, como ilustra a
Figura 12, retorna 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, podemos executar os comandos da
Listagem 8. Como resultado, teremos os mesmos registros apresentados na
Figura 13.
|
Figura 12. Representação do 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
Listagem 8. Utilizando Right Excluding Joi
|
Figura 13. Resultado 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, mas que não estejam na tabela A, e todos os registros que estão na tabela A, mas que não estejam na tabela B.
|
Figura 14. Representação do Outer Excluding Join |
O código da
Listagem 9 mostra a sintaxe necessária para executar esse tipo de consulta.
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
Listagem 9. Usando Outer Excluding Join
Nesse caso o termo
OUTER é optativo e, se removido, deixando apenas
FULL JOIN, o resultado será o mesmo.
O resultado dessa consulta pode ser visto na
Figura 15.
|
Figura 15. Resultado do Outer Excluding Join |
As cláusulas JOIN na linguagem SQL são extremamente úteis e utilizadas com muita frequência, portanto, seu conhecimento é fundamental para quem trabalha com bancos de dados relacionais com o SQL Server, o MySQL, o Firebird, etc.
Fonte: DevMedia