N style="mso-spacerun: yes">capaSQL19.jpg

Clique aqui para ler todos os artigos desta edição

Consultas com operadores de conjuntos no Oracle

por Allan Cruz Macedo

Quando trabalhamos com banco de dados relacionais, é comum realizarmos consultas em tabelas retornando um ou mais registros, recuperados de uma ou mais tabelas. Para o último caso, o operador mais usado e talvez o mais conhecido é o join. No Oracle, além do join, temos outras formas de realizar consultas que retornam um conjunto de dados contidos em tabelas diferentes. São os operadores de conjunto (Set Operators), utilizados através dos operadores intersect, union/union all e minus. Esses operadores são muito úteis, e dependendo da situação, mais eficazes que o join. Neste artigo mostrarei alguns exemplos de uso de cada um dos operadores.

Para os exemplos, utilizarei as tabelas EMP e DEPT do usuário Scott, que vem como exemplo na instalação do Oracle, e também a tabela HISTORY_EMP, representadas nas Figuras 1, 2 e 3 respectivamente.

 

IMG01.JPG 

Figura 1. Estrutura e dados da Tabela EMP.

 

IMG02.JPG 

Figura 2. Estrutura e dados da Tabela DEPT.

 

IMG03.JPG 

Figura 3. Estrutura e dados da Tabela EMP_HISTORY.

Operadores relacionais

Os operadores relacionais combinam o resultado de duas ou mais tabelas, ou queries, dentro de um único resultado. Quando a operação é executada sobre queries, podemos chamá-las de queries combinadas.

Os operadores trabalham com conjuntos de dados, manipulando-os de acordo com as características de cada um. Entretanto, eles possuem algumas regras em comum. As mais importantes são:

·         O número de colunas e o tipo de dados devem ser iguais na cláusula select de todas as queries envolvidas;

·         Os registros duplicados são automaticamente eliminados com exceção do operador union all;

·         O resultado é ordenado por default em ordem ascendente com exceção do union all.

·         Os nomes das colunas não precisam ser iguais;

·         A execução da query é feita de cima para baixo, da esquerda para a direita.

 

Para exemplificar, vamos criar os conjuntos A e B, sendo A = (1,2,3,4,5) e B = (1,4,9).

O operador union

Retorna os registros selecionados por ambas as queries, eliminando os registros duplicados. O resultado de um union nos conjuntos A e B seria 1,2,3,4,5,9. Os números comuns entre A e B foram incluídos apenas uma vez no resultado. A Figura 4 demonstra o operador union entre os dois conjuntos.

 

IMG04.JPG 

    Figura 4. Operador union entre os conjuntos A e B.

 

Para ilustrar, iremos fazer duas consultas trazendo os registros das tabelas EMP e EMP_HISTORY, conforme Listagem 1 e 2.

  ...

Quer ler esse conteúdo completo? Tenha acesso completo