Tipos de Joins: SQL 92 vs SQL 89

No items found.
18/3/2020
Eduardo Soares
Eduardo Soares
DBA

Praticando a sutil arte de transformar dados em conhecimento

Está sem tempo para ler? Aperte o play para escutar o artigo.

As instruções SQL do tipo DML (Data Manipulation Language) são muito utilizadas em Bancos de Dados Relacionais  para manipulação de dados, como o próprio nome já diz .

Por causa da necessidade em exibir dados que foram distribuídos em diversas tabelas, é necessário o uso de uma Join, já que ela possibilita unir duas ou mais tabelas a partir de campos correspondentes entre elas, sendo necessário informar as colunas responsáveis por este relacionamento. 

Outro fator importante é que esses campos não precisam ser homônimos, mas tecnicamente devem possuir a mesma informação.

Quer melhorar a escrita de suas queries e extrair dados de forma mais legível e eficaz?

O objetivo deste artigo é apresentar as variações das joins e a forma de utilizá-las, demonstrando na prática os padrões SQL89 e SQL92 (ANSI92). 

Veja uma estrutura de tabelas para os exemplos que vou dar a seguir:

SQL 92 vs SQL 89

Inner Join


Este tipo de Join deverá ser usado quando o resultado esperado entre duas ou mais tabelas for por coincidência, ou seja, para cada linha da Table A queremos a(s) linha(s) da Table B correspondente(s).


padrão SQL

Inner Join nos padrões SQL89 e SQL92


Left Outer Join

join

Se quisermos retornar os registros da Table A mesmo que não existam registros correspondente na Table B, é este o tipo de Join que deverá ser usado, pois irá retornar as linhas que coincidem e as que existem apenas na primeira.


padrão join

Right Outer Join

Esse outro tipo de Join é um espelho do LEFT JOIN, como resultado trará os registros da tabela B mesmo que não existam correspondência na tabela A. Neste caso irá retornar o que for correspondente e as linhas da segunda tabela mesmo que não existam na primeira. Veja outro exemplo abaixo:

SQL92

Full Outer Join

full outer join


Neste caso queremos listar todos os registros entres as tabelas e linhas não associadas, tanto do lado direito RIGHT JOIN quanto do esquerdo LEFT JOIN

SQL89

Cross Join


A Cross Join irá retornar um produto cartesiano entre as tabelas Table A e Table B. Cada linha da Table A é correspondida com todas as linhas da Table B. 

join


Conclusão

Podemos concluir que após várias execuções em ambientes corporativos de grande porte não foram identificadas alterações de performance entre os padrões SQL92 e SQL89, mas podemos entender que nos critérios manutenção e legibilidade do código, o padrão SQL92 é de longe o melhor, pois em queries extensas (com várias entidades e condições) as Joins entre as tabelas são visualizadas de maneira mais rápida.

O que você achou deste conteúdo?
Quer receber nossos conteúdos?
Seu cadastro foi efetuado com sucesso! Enviaremos as novidades no seu email.
Oops! Something went wrong while submitting the form.