no SQL Server, às vezes é necessário recuperar, além das linhas correspondentes, as linhas não compensadas de uma ou ambas as tabelas. Tal operação é chamada de junção exterior.os exemplos 1 e 2 mostram a diferença entre uma junção natural e a junção exterior correspondente. (Todos os exemplos nesta secção usam o quadro employee_enh.,o resultado é:
o resultado é:
exemplo 1 usa uma junção natural para mostrar o conjunto de resultados de filas. Se você gostaria de conhecer todos os outros locais de Vida existentes de funcionários, você tem que usar a (esquerda) junção externa. Isto é chamado de junção externa esquerda porque todas as linhas da mesa do lado esquerdo do operador são devolvidas, quer tenham ou não uma linha correspondente na mesa à direita., Por outras palavras, se não houver linhas correspondentes na tabela do lado direito, a junção externa irá ainda devolver uma linha da tabela do lado esquerdo, com NULL em cada coluna da outra tabela (ver Exemplo 2). O motor de banco de dados usa a junção externa esquerda do operador para especificar a junção externa esquerda.
uma junção exterior à direita é semelhante, mas devolve todas as linhas da tabela à direita do símbolo. O motor de banco de dados usa a junção externa direita do operador para especificar a junção externa direita.,
EXEMPLO 2
Obter detalhes completos de todos os funcionários, incluindo a localização de seu departamento, por todas as cidades que são o lugar onde mora, ou para a vida e de trabalho, lugar de outrem:
O resultado é:
Como você pode ver, quando não existe nenhuma linha correspondente na tabela à direita (departamento, neste caso), left outer join retorna ainda as linhas da tabela no lado esquerdo (employee_enh), e as colunas da tabela são preenchidos por valores NULOS., O exemplo 3 mostra o uso da operação de junção externa direita.o resultado é:
além das juntas exteriores esquerda e direita, há também a junção exterior completa, que é definida como a união das juntas exteriores esquerda e direita. Em outras palavras, todas as linhas de ambas as tabelas são representadas no conjunto de resultados., Se não houver linha correspondente numa das tabelas, as suas colunas são devolvidas com valores nulos. Esta operação é especificada usando o operador de junção exterior completa.
cada operação de junção externa pode ser simulada utilizando o operador da União mais a função não existente. Exemplo 4 é equivalente ao exemplo com a junção exterior esquerda (Exemplo 2).,
EXEMPLO 4
Obter detalhes completos de todos os funcionários, incluindo a localização de seu departamento, por todas as cidades que são o lugar onde mora, ou para a vida e de trabalho de funcionários:
A primeira instrução SELECT na união especifica o natural join de tabelas employee_enh e departamento com as colunas de associação domicílio e localização. Esta declaração SELECT recupera todas as cidades que são ao mesmo tempo os locais de vida e de trabalho de cada empregado., A segunda instrução selecione na União recupera, adicionalmente, todas as linhas da tabela emprege_enh que não correspondem à condição na junção natural.