SQL JOIN e diferentes tipos de JOINs

O que é um SQL JOIN e quais são os diferentes tipos?

Soluçã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 JOINs. Eles são :

  1. JOIN or INNER JOIN
  2. OUTER JOIN

     2.1 LEFT OUTER JOIN or LEFT JOIN
     2.2 RIGHT OUTER JOIN or RIGHT JOIN
     2.3 FULL OUTER JOIN or FULL JOIN

  3. NATURAL JOIN
  4. CROSS JOIN
  5. SELF JOIN
  1. 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-chave JUNTAR (como INNER, OUTER, LEFT, etc.) é um INNER JOIN. Em outras palavras, JUNTAR é um açúcar sintáctico para INNER JOIN (ver: https://stackoverflow.com/questions/565620/difference-between-join-and-inner-join).

  1. 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 valores NULL.

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

Note that `OUTER JOIN` is a loosened form of `INNER JOIN`.
  1. NATURAL JOIN :

Baseia-se nas duas condições :

  1. o JOIN é feito em todas as colunas com o mesmo nome para igualdade.
  2. Remove colunas duplicadas do resultado.

Isto parece ser mais de natureza teórica e como resultado (provavelmente) a maioria dos SGBD don'nem se preocupe em apoiar isto.

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

  1. AUTO-INCLUSÃO :

Não é uma forma diferente de JUNTAR, mas sim uma JUNTAR (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 de JOINs. Eles são

  1. Equi JOIN

  2. Theta JOIN

  3. Equi JOIN :

Para qualquer tipo de JOIN (INNER, OUTER, etc), se utilizarmos SOMENTE o operador de igualdade (=), então dizemos que o JUNTAR é um EQUI JOIN.

  1. Theta JOIN :

Isto é o mesmo que EQUI JOIN mas permite a todos os outros operadores como >, = etc.

Muitos consideram tanto o EQUI JOIN como o Theta JOIN semelhante ao INNER, OUTER. etc JOINs. Mas eu acredito firmemente que é um erro e faz o ideias vagas. Porque INNER JOIN, OUTER JOIN etc. estão todos ligados a as tabelas e seus dados enquanto EQUI JOIN e THETA JOIN são apenas ligados com os operadores que usamos no primeiro.

Mais uma vez, há muitos que consideram o NATURAL JOIN como uma espécie de " peculiar" EQUI JOIN. Na verdade, é verdade, por causa do primeiro condição que mencionei para NATURAL JOIN. No entanto, nós não'não temos que restrinja isso simplesmente a NATURAL JOINs sozinho. 'INNER JOIN', 'OUTER JOIN', 'OUTER JOIN', 'NATURAL JOIN'. etc. poderia ser um "EQUI JOIN" também.

Comentários (3)

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.

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

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

  3. 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***

SELECT  *
FROM Table1 A 
 INNER JOIN Table2 B ON A. =B.;

**1.2: INNER-JOIN: Implementação de Natural-JOIN***

Select A.*, B.Col1, B.Col2          --But no B.ForeignKeyColumn in Select
 FROM Table1 A
 INNER JOIN Table2 B On A.Pk = B.Fk;

**1.3: INNER-JOIN com implementação NÃO-Equi-juntar***


Select *
 FROM Table1 A INNER JOIN Table2 B On A.Pk 
Comentários (2)