Tipos de Joins: SQL 92 vs SQL 89

Eduardo Soares Alves
Zup Developer Blog
Published in
3 min readNov 23, 2020

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:

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).

Inner Join nos padrões SQL89 e SQL92

Left Outer 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.

Left Join nos padrões SQL89 e SQL92

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:

Right Join nos padrões SQL89 e SQL92

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.

Full Join nos padrões SQL89 e SQL92

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.

Cross Join nos padrões SQL89 e SQL92

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.

--

--