Mais
SQL JOIN e diferentes tipos de JOINs
O que é um SQL JOIN
e quais são os diferentes tipos?
236
3
O que é um SQL JOIN
e quais são os diferentes tipos?
Uma ilustração de W3schools:
! RIGHT JOIN - Todos os registros da tabela 2 em conjunto com os registros da tabela 1 que correspondem à condição
O que é 'SQL JOIN' ?
O
SQL JOIN
é um método para recuperar dados de duas ou mais tabelas de banco de dados.Quais são os diferentes 'SQL JOIN`s ?
Há um total de cinco
JOIN
s. Eles são :Junte-se ou junte-se INNER :
Neste tipo de `JOIN', obtemos todos os registros que correspondem à condição em ambas as tabelas, e os registros em ambas as tabelas que não correspondem não são relatados.
Em outras palavras,
INNER JOIN
é baseado no simples fato de que: APENAS as entradas correspondentes em AMBOS as tabelas DEVEM ser listadas.Note que um
JUNTAR
sem outras palavras-chaveJUNTAR
(comoINNER
,OUTER
,LEFT
, etc.) é umINNER JOIN
. Em outras palavras,JUNTAR
é um açúcar sintáctico paraINNER JOIN
(ver: https://stackoverflow.com/questions/565620/difference-between-join-and-inner-join).JUNÇÃO DO EXTERIOR :
"OUTER JOIN" recupera
Qualquer um dos dois, as linhas combinadas de uma tabela e todas as linhas da outra tabela Ou.., todas as filas em todas as tabelas (não importa se há ou não uma correspondência).
Existem três tipos de Outer Join :
**2.1 JOGO ESQUERDA ou JOGO ESQUERDA***
Esta união retorna todas as linhas da tabela da esquerda em conjunto com as linhas correspondentes da Mesa da direita. Se não houver colunas correspondentes na tabela da direita, ela retorna os valores
NULL
.**2.2 JUNTAR À DIREITA ou JUNTAR À DIREITA***
Este
JOIN
devolve todas as linhas da tabela da direita em conjunto com as linhas correspondentes do Mesa da esquerda. Se não houver colunas correspondentes na tabela da esquerda, ela retorna os valoresNULL
.**2.3 FULL OUTER JOIN ou FULL OUTER JOIN***
Este 'JOIN' combina 'LEFT OUTER JOIN' e 'RIGHT OUTER JOIN'. Ele retorna linhas de qualquer uma das tabelas quando as condições são cumpridas e retorna o valor
NULL
quando não há correspondência.Em outras palavras, 'OUTER JOIN' é baseado no fato de que: SOMENTE as entradas correspondentes em UMA das tabelas (DIREITA ou ESQUERDA) ou AMBOS das tabelas(COMPLETO) DEVEM ser listadas.
NATURAL JOIN :
Baseia-se nas duas condições :
JOIN
é feito em todas as colunas com o mesmo nome para igualdade.Isto parece ser mais de natureza teórica e como resultado (provavelmente) a maioria dos SGBD don'nem se preocupe em apoiar isto.
CROSS JOIN :
É o produto cartesiano das duas mesas envolvidas. O resultado de uma
CROSS JOIN
não fará sentido. na maioria das situações. Além disso, nós ganhamos'não precisamos disso em absoluto (ou precisamos o mínimo, para ser precisos).AUTO-INCLUSÃO :
Não é uma forma diferente de
JUNTAR
, mas sim umaJUNTAR
(INNER
,OUTER
, etc.) de uma mesa para si mesma.Juntas baseadas em Operadores
Dependendo do operador utilizado para uma cláusula
JOIN
, pode haver dois tipos deJOIN
s. Eles sãoEqui JOIN
Theta JOIN
Equi JOIN :
Para qualquer tipo de
JOIN
(INNER
,OUTER
, etc), se utilizarmos SOMENTE o operador de igualdade (=), então dizemos que oJUNTAR
é umEQUI JOIN
.Theta JOIN :
Isto é o mesmo que
EQUI JOIN
mas permite a todos os outros operadores como >, = etc.Definição:
Os JOINS são uma forma de consultar os dados que se combinam a partir de várias tabelas simultaneamente.
Tipos de JUNTAS:
Preocupação com RDBMS há 5 tipos de adesões:
Equi-Join: Combina registros comuns de duas tabelas baseadas na condição de igualdade. Tecnicamente, a união feita usando o operador de igualdade (=) para comparar valores da chave primária de uma tabela e valores da chave externa de outra tabela, portanto, o conjunto de resultados inclui registros comuns de ambas as tabelas. Para implementação, ver INNER-JOIN.
Natural-Join: É uma versão melhorada do Equi-Join, na qual SELECT a operação omite a coluna duplicada. Para implementação ver INNER-JOIN
Non-Equi-Join: É o inverso de Equi-join em que a condição de junção é diferente de operador igual(=) e.g., !=, =, >, < ou BETWEEN etc. Para implementação ver INNER-JOIN.
Selff-Join:: Um comportamento personalizado de join onde uma tabela combinada consigo mesma; Isto é normalmente necessário para consultar tabelas de auto-referência (ou entidade Unary relationship entity). Para implementação ver INNER-JOINs.
Produto cartesiano: Combina todos os registos de ambas as tabelas sem qualquer condição. Tecnicamente, retorna o conjunto de resultados de uma consulta sem WHERE-Clause.
De acordo com a preocupação e avanço do SQL, existem 3 tipos de junções e todas as junções RDBMS podem ser conseguidas utilizando estes tipos de junções.
INNER-JOIN: Funde(ou combina) linhas combinadas de duas tabelas. A correspondência é feita com base em colunas comuns de tabelas e na sua operação de comparação. Se condição baseada na igualdade, então: EQUI-JOIN realizado, caso contrário não EQUI-Join.
OUTER-JOIN: Funde (ou combina) linhas combinadas de duas tabelas e linhas incomparáveis com valores NULL. No entanto, pode personalizar a selecção de linhas sem correspondência, por exemplo, seleccionando linha sem correspondência da primeira tabela ou da segunda tabela por subtipos: LEFT OUTER JOIN e RIGHT OUTER JOIN.
2.1. LEFT Outer JOIN (a.k.a, LEFT-JOIN): Devolve linhas combinadas de duas tabelas e sem comparação da tabela ESQUERDA (ou seja, primeira tabela) apenas.
2.2. *JUNTAR À DIREITA** (a.k.a, RIGHT-JOIN): Devolve filas combinadas de duas tabelas e só da tabela DIREITA.
2.3. FULL OUTER JOIN (a.k.a OUTER JOIN): Devoluções combinadas e inigualáveis de ambas as tabelas.
CROSS-JOIN: Esta join não se funde/combina, mas executa produto cartesiano.
![insira aqui a descrição da imagem][1] Nota: A auto-junção pode ser alcançada tanto pelo INNER-JOIN, OUTER-JOIN e CROSS-JOIN com base na exigência, mas a tabela deve se unir a si mesma.
[Para mais informações:][2]
Exemplos:
**1.1: INNER-JOIN: Implementação Equi-join***
**1.2: INNER-JOIN: Implementação de Natural-JOIN***
**1.3: INNER-JOIN com implementação NÃO-Equi-juntar***