Operadores de conjunto do Oracle

Categoria: Oracle
Publicado em 01 de Julho de 2013

Existem quatro operadores de conjunto no Oracle:

  • UNION - Combina linhas de duas queries eliminando duplicidades.
  • UNION ALL - Combina linhas de duas queries e não elimina as duplicidades.
  • INTERSECT - Combina linhas e só retorna as que estão presentes nas duas queries.
  • MINUS - Combina linhas e retorna as linhas da primeira query que não estão presentes na segunda query.

Exemplo de uso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
   CAMPO_QUALQUER_1,
   CAMPO_QUALQUER_2
FROM
   TABELA_QUALQUER
UNION ALL 
SELECT
   CAMPO_QUALQUER_A,
   CAMPO_QUALQUER_B
FROM
   TABELA_QUALQUER
ORDER BY
   CAMPO_QUALQUER_1
;

Acima, exemplo de uso do operador de conjunto UNION ALL. Os outros operadores podem ser usados de forma idêntica.

NOTA: As colunas do resultado de uma operação de conjunto serão nomeadas de acordo com a primeira query.

É importante notar que a cláusula ORDER BY presente no fim do código atuará sobre as linhas resultantes do UNION ALL, ou seja, após a operação de conjunto, e não antes. O operador ORDER BY não pode ser usado em queries que serão passadas como operando de um operador de conjunto. 

Note também que no ORDER BY a coluna de ordenação foi identificada por referência ("CAMPO1"), mas também poderia ter sido identificada por posição (exemplo: 1). 

Não é obrigatório especificar um ALIAS para os campos da primeira query de uma operação de conjunto (ex.: nos casos em que uma função agregadora é utilizada). Se a coluna resultar de uma expressão complexa e não possuir nome, o Oracle se encarregará de associar um nome correspondente.

A quantidade de campos de ambas as queries precisam ser iguais e os campos da primeira query e da segunda query precisam ser do mesmo tipo (ou passíveis de conversão de tipo pelo Oracle) para uma operação de conjunto bem sucedida.

 

Copyright © Fernando Hidemi Uchiyama 2010 - Todos os direitos reservados