Qual é a diferença entre LEFT JOINe LEFT OUTER JOIN?
Qual é a diferença entre LEFT JOINe LEFT OUTER JOIN?
Respostas:
Conforme a documentação: FROM (Transact-SQL) :
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
A palavra OUTER- chave está marcada como opcional (entre colchetes). Nesse caso específico, se você especifica OUTERou não, não faz diferença. Observe que, embora os outros elementos da cláusula de junção também sejam marcados como opcionais, deixá- los de fora fará a diferença.
Por exemplo, toda a parte de tipo da JOINcláusula é opcional; nesse caso, o padrão é INNERse você apenas especificar JOIN. Em outras palavras, isso é legal:
SELECT *
FROM A JOIN B ON A.X = B.Y
Aqui está uma lista de sintaxes equivalentes:
A LEFT JOIN B A LEFT OUTER JOIN B
A RIGHT JOIN B A RIGHT OUTER JOIN B
A FULL JOIN B A FULL OUTER JOIN B
A INNER JOIN B A JOIN B
Também dê uma olhada na resposta que eu deixei nessa outra pergunta do SO: SQL left join vs multiple tables on FROM FROM? .

INNER JOINà direita e JOINà esquerda na lista de equivalentes?
JOINs também.
Para responder à sua pergunta, não há diferença entre LEFT JOIN e LEFT OUTTER JOIN, elas são exatamente as mesmas que disse ...
INNER JOIN - busca dados se presentes nas duas tabelas.
OUTER JOIN são de 3 tipos:
LEFT OUTER JOIN - busca dados se presentes na tabela esquerda.RIGHT OUTER JOIN - busca dados se presentes na tabela correta.FULL OUTER JOIN - busca dados, se presentes em uma das duas tabelas.CROSS JOIN , como o nome sugere, faz [n X m]isso unir tudo a tudo.
Semelhante ao cenário em que simplesmente listamos as tabelas para associação (na FROMcláusula da SELECTinstrução), usando vírgulas para separá-las.
Pontos a serem observados:
JOIN, por padrão, é a INNER JOIN.OUTERassociação deve ser LEFT| RIGHT| FULLvocê não pode simplesmente dizer OUTER JOIN.OUTERpalavra-chave e apenas dizer LEFT JOINou RIGHT JOINou FULL JOIN.Para aqueles que desejam visualizá-los de uma maneira melhor, acesse este link: Uma Explicação Visual das Associações SQL
CROSS JOINo mesmo que FULL JOIN?
Cross Joine Full Outer Join... de alguma forma, parece semelhante.
Qual é a diferença entre junção esquerda e junção externa esquerda?
Nada . LEFT JOINe LEFT OUTER JOINsão equivalentes.
OUTERé opcional.
Eu sou um DBA do PostgreSQL, tanto quanto pude entender a diferença entre a diferença de junções externas ou não externas é um tópico que tem uma discussão considerável em toda a Internet. Até hoje nunca vi diferença entre os dois; Então fui mais longe e tento encontrar a diferença entre eles. No final, li toda a documentação sobre o assunto e encontrei a resposta para isso,
Portanto, se você procurar na documentação (pelo menos no PostgreSQL), pode encontrar esta frase:
Em outras palavras,
LEFT JOINe LEFT OUTER JOINsão os mesmos
RIGHT JOINe RIGHT OUTER JOINsão os mesmos
Espero que possa contribuir para aqueles que ainda estão tentando encontrar a resposta.
Left Joine Left Outer Joinsão a mesma coisa . O primeiro é o atalho para o último. O mesmo pode ser dito sobre o relacionamento Right Joine Right Outer Join. A demonstração irá ilustrar a igualdade. Exemplos de trabalho de cada consulta foram fornecidos via SQL Fiddle . Essa ferramenta permitirá a manipulação prática da consulta.
Dado

Junção esquerda e junção externa esquerda

Resultados

Junção direita e junção externa direita

Resultados

Acho mais fácil pensar em Junções na seguinte ordem:
Até eu descobrir esse modelo (relativamente) simples, o JOINS era sempre um pouco mais uma arte negra. Agora eles fazem todo o sentido.
Espero que isso ajude mais do que confunde.
Por que esquerda / direita e esquerda / direita são iguais? Vamos explicar por que esse vocabulário. Entenda que junções ESQUERDA e DIREITA são casos específicos da junção EXTERIOR e, portanto, não pode ser outra coisa senão ESQUERDA EXTERNA / DIREITA EXTERNA. A junção OUTER também é chamada de EXTERIOR COMPLETO, em oposição às junções ESQUERDA e DIREITA, que são resultados PARCIAIS da junção OUTER. De fato:
Table A | Table B Table A | Table B Table A | Table B Table A | Table B
1 | 5 1 | 1 1 | 1 1 | 1
2 | 1 2 | 2 2 | 2 2 | 2
3 | 6 3 | null 3 | null - | -
4 | 2 4 | null 4 | null - | -
null | 5 - | - null | 5
null | 6 - | - null | 6
OUTER JOIN (FULL) LEFT OUTER (partial) RIGHT OUTER (partial)
Agora está claro por que essas operações têm aliases, assim como é claro que existem apenas 3 casos: INTERNO, EXTERNO, CRUZ. Com dois sub-casos para o EXTERIOR. O vocabulário, a maneira como os professores explicam isso, bem como algumas respostas acima, geralmente fazem parecer que existem muitos tipos diferentes de associação. Mas é realmente muito simples.
JOINimplica INNER JOIN" se encaixa no seu raciocínio para o vocabulário de junção externa?
Para responder sua pergunta
No Sql Server junta-se à sintaxe OUTER é opcional
É mencionado no artigo msdn: https://msdn.microsoft.com/en-us/library/ms177634(v=sql.130).aspx
Portanto, a lista a seguir mostra as sintaxes equivalentes à junção com e sem OUTER
LEFT OUTER JOIN => LEFT JOIN
RIGHT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN
Outras sintaxes equivalentes
INNER JOIN => JOIN
CROSS JOIN => ,
Recomendamos vivamente Dotnet Mob Artice: ingressa no Sql Server

C) Junção externa:
There are three type of outer join
1) Left Outer Join = Left Join
2) Right Outer Join = Right Join
3) Full Outer Join = Full Join Espero que ajude.
Existem principalmente três tipos de JOIN
Exterior: são de três tipos
Cross Join: junta tudo a tudo
Açúcar sintático, torna mais óbvio para o leitor casual que a junção não é interna.
Apenas no contexto desta pergunta, quero postar os 2 operadores 'APPLY' também:
JUNTA - SE :
INNER JOIN = JOIN
JUNÇÃO EXTERNA
ESQUERDA EXTERIOR JOIN = ESQUERDA JOIN
JOIN EXTERIOR DIREITO = JOIN DIREITO
JOGO EXTERNO CHEIO = JOGO CHEIO
CROSS JOIN
SELF-JOIN : Este não é exatamente um tipo separado de junção. Basicamente, isso é unir uma tabela a ela mesma usando uma das junções acima. Mas achei que vale a pena mencionar no contexto JOIN discussões, pois você ouvirá esse termo de muitos na comunidade SQL Developer.
APLICAR :
https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/
https://sqlhints.com/2016/10/23/outer-apply-in-sql-server/
Exemplo da vida real, quando usar OUTER / CROSS APPLY no SQL
Acho o operador APPLY muito benéfico, pois eles oferecem melhor desempenho do que ter que fazer o mesmo cálculo em uma subconsulta. Eles também substituem muitas funções analíticas em versões mais antigas do SQL Server. É por isso que acredito que, depois de se sentir confortável com o JOINS, um desenvolvedor SQL deve tentar aprender os operadores APPLY a seguir.
OUTERpalavra-chave é opcional.