Junção externa (álgebra relacional)
# Junção externa (álgebra relacional)

A Junção Externa (Outer Join) é uma seleção que não requer que os registros de uma tabela possuam registros equivalentes em outra. O registro é mantido na pseudo-tabela se não existe outro registro que lhe corresponda. Este tipo de junção se subdivide dependendo da tabela do qual admitiremos os registros que não possuem correspondência: a tabela esquerda, a direita ou ambas.
Left Outer Join (Junção externa à esquerda _|X| ) O resultado desta seleção sempre contém todos os registros da tabela esquerda (isto é, a primeira tabela mencionada na consulta), mesmo quando não exista registros correspondentes na tabela direita. Desta forma, esta seleção retorna todos os valores da tabela esquerda com os valores da tabela direita correspondente, ou quando não há correspondência retorna um valor NULL.
Right Outer Join (Junção externa à direita |X|_ ) Esta operação é inversa à anterior e retorna sempre todos os registros da tabela à direita (a segunda tabela mencionada na consulta), mesmo se não existir registro correspondente na tabela à esquerda. Nestes casos, o valor NULL é retornado quando não há correspondência.
Full Outer Join (Junção externa total _|X|_ ) Esta operação apresenta todos os dados das tabelas à esquerda e à direita, mesmo que não possuam correspondência em outra tabela. A tabela combinada possuirá assim todos os registros de ambas as tabelas e apresentará valores nulos para os registros sem correspondência.

## Sintaxe
### Notação do Operador

(Relação) $^{_|X|_}$$_{(predicado)}$ (Relação)
Onde, predicado é o conjunto de expressões lógicas que devem ser satisfeitas para uma linha que faça parte do subconjunto resultante. E releção é o conjunto de entrada (inicial).
As expressões lógicas podem ser formadas por operadores lógicos e relacionais:
Os operadores lógicos são:
* ^ (and)
* v (or)
* ¬ (not)
Os Operadores relacionais são:
* = (Igual a)
* < (Menor que)
* ⇐ (Menor ou igual a)
* > (Maior que)
* >= (Maior ou igual a)
* <> (Diferente de)

## Exemplos

| CS1 | CS2 |
| 1 | AA |
| 2 | BB |
| 3 | CC |
| 4 | DD |
| CR1 | CR2 | CS1 |
| 1 | 20/10/2007 | 3 |
| 2 | 10/11/2007 | 2 |
| 3 | 01/02/2008 | 3 |
| 4 | 15/03/2008 | 5 |

### S _|X|_ s.cs1=r.cs1 R

| CS1 | CS2 | CR1 | CR2 | CS1 |
| 1 | AA | null | null | null |
| 2 | BB | 2 | 10/11/2007 | 2 |
| 3 | CC | 1 | 20/10/2007 | 3 |
| 3 | CC | 3 | 01/02/2008 | 3 |
| 4 | DD | null | null | null |
| null | null | 4 | 15/03/2008 | 5 |