JOINS no Banco de Dados
Pois bem, começaremos explicando o que acontece no motor do Banco de Dados quando o usuário solicita ao Banco de Dados a Junção.
Quando o Usuário/Administrador do Banco de Dados pede ao Banco de Dados para realizar a junção, usando, digamos o exemplo mais simples de JOIN :
SELECT UF,NOME FROM TABLEA INNER JOIN TABLEB ON UF = SIGLA
O Banco de Dados antes de processar a recuperação de Dados da Tabela, ele precisará fazer uma combinação das Fontes de Dados entre as duas tabelas “neste caso” acima descritas. Após a combinação de Colunas o Banco de Dados combina cada linha da primeira tabela com todas as linhas da segunda tabela. Após está busca, o Banco de Dados começará buscar as informações “Dados” nas tabelas e levar ao Result Set os dados em forma de Junção. Está combinação também é chamada de Produto Cartesiano.
Ok. Explicado o que acontece no motor/bastidores do InterBase vamos agora mostras as opções de JOIN.
Existe dois tipos de JOIN. Vamos explicar o que é cada uma.
INNER JOIN – Liga em linhas, baseando-se em condições de ligação e, somente retornará as linhas que realmente se combinam entre si. O INNER JOIN contém três
tipos :
EQUI-JOINS – Comparação = “Igual”.
Non-EQUI-JOINS – Não comparação. “>, <, >=, <=, <>”.
Reflexive Joins – Sobre si próprio.
2) OUTER JOIN – Liga as linhas de tabelas, mas, não necessariamente precisam casar entre si para aparecer no Result Set. Desta forma, mesmo as linhas que não se encontrou referência no cruzamento das tabelas aparecerá no Resultado de Dados.
Existem três tipos de OUTER JOIN´s, são eles :
LEFT OUTER JOIN;
RIGHT OUTER JOIN;
FULL OUTER JOIN;
LEFT OUTER JOIN – Diz ao motor do Banco de Dados, que todas as linhas da tabela à esquerda, serão recuperadas. Independente de casarem ou não com o identificado ON.
RIGHT OUTER JOIN – Diz ao motor do Banco de Dados, que todas as linhas da tabela à direita, serão recuperadas. Independente de casarem ou não com o identificado ON.
FULL OUTER JOIN – Diz ao motor do Banco de Dados, para fazer um balanceamento do que atente e o que não atende na requisição de Consulta.
Observações :
Salienta que pode haver uma queda de performance, se não houver alguns cuidados de Otimização de Consulta.
É recomendável, apelidar as tabelas envolvidas em Join’s explícitos e ou não explícitos, para uma melhor compreensão das tabelas envolvidas e também evitar Ambigüidade de colunas.