Buscar

Banco de Dados Relacional-148

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIDADE 3 | BANCO DE DADOS FUNÇÕES 
138
Segundo Aléssio (2015), a união (UNION) de duas relações é o conjunto 
de todas as linhas que estão em uma ou outra relação, ignorando as duplicadas, 
ou seja, retorna à união de dois select’s, ignorando as linhas que estão duplicadas. 
Já a interseção (INTERSECT) resultará no conjunto de todas as linhas que estão 
simultaneamente em ambas as relações, ou seja, retorna à interseção de dois se-
lect’s. Já a diferença (MINUS) é o conjunto de todas as linhas que estão em apenas 
uma das relações, ou seja, retorna à subtração de dois select. Antes de apresentar-
mos os respectivos exemplos, vejamos algumas regras que devem ser obedecidas 
para a utilização desses comandos, segundo Aléssio (2015, p. 82).
• A cláusula Select deve selecionar o mesmo número de colunas.
• As colunas correspondentes devem ser do mesmo tipo de dado.
• As linhas duplicadas são automaticamente eliminadas.
• Os nomes das colunas do primeiro select é que aparecem no re-
sultado.
• A cláusula order by deve aparecer no final do comando.
• A cláusula order by somente pode ser usada indicando o número 
da coluna.
Vamos verificar a figura, nela temos seleções muito parecidas, na 
quantidade e no tipo, mas não no conteúdo. Na primeira seleção, estamos 
buscando da visão que criamos anteriormente o salário anual, já na segunda 
estamos buscando o salário mensal. Também estamos indicando por qual coluna 
devemos fazer a ordenação, neste caso a coluna 3 que é a salário. 
O comando Union não apresenta as linhas que se repetem, mas se você 
quiser apresentar as linhas que aparecem nas duas seleções, pode usar o UNON 
ALL, que segue as mesmas regras. Vejamos o exemplo: 
SELECT 'A' pesquisa, v_emp.nome_completo nome, v_emp.salario_
anual salario, d.department_name
FROM V_Consulta_empregado v_emp, employees e, departments d
WHERE v_emp.cod_empregado = e.employee_id
AND d.department_id = e.department_id
AND v_emp.salario_anual > 200000
UNION
SELECT 'B' pesquisa, v_emp.nome_completo nome, e.salary salario, 
d.department_name 
FROM V_Consulta_empregado v_emp, employees e,departments d
WHERE v_emp.cod_empregado = e.employee_id
AND d.department_id = e.department_id
AND e.salary > 15000;

Outros materiais