SQL_2017 1_operadores_conjuntos
20 pág.

SQL_2017 1_operadores_conjuntos


DisciplinaBanco de Dados I5.941 materiais57.375 seguidores
Pré-visualização1 página
PÓS-GRADUAÇÃOPÓS-GRADUAÇÃO
Usando os Operadores de Conjunto
Criado em julho de 2017 Docente: Gil Jader \u2013 gil.jader@gmail.com
Disciplina: Linguagem SQL \u2013 2017.
PÓS-GRADUAÇÃO
Objetivos
\u2013 Descrever os operadores de conjunto
\u2013 Usar um operador de conjunto para combinar várias
consultas em uma só
\u2013 Controlar a ordem das linhas retornadas
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Operadores de Conjunto
UNION/UNION ALL
A B A B
A B
INTERSECT
A B
MINUS
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Operador UNION
A B
O operador UNION retorna resultados das duas consultas 
após eliminar os valores duplicados.
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Operador UNION
Docente: Gil Jader \u2013 gil.jader@gmail.com
Diretrizes
\u2022 O número de colunas e os tipos de dados das colunas selecionadas devem
ser idênticos em todas as instruções SELECT usadas na consulta.
\u2022 Os nomes das colunas não precisam ser idênticos.
\u2022 Os valores nulos não são ignorados durante a verificação de valores duplicados. 
\u2022 O operador IN tem precedência em relação ao operador UNION.
\u2022 Por default, a saída é classificada em ordem crescente da primeira coluna da 
cláusula SELECT.
PÓS-GRADUAÇÃO
Usando o Operador UNION
\uf097 Exiba os detalhes dos cargos atual e anterior de todos
os funcionários. Exiba cada funcionário apenas uma vez.
SELECT employee_id, job_id
FROM employees
UNION
SELECT employee_id, job_id
FROM job_history;
\u2026
\u2026
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Operador UNION
Na saída anterior, o funcionário 200 aparece duas vezes. 
Por quê? 
Observe os valores de JOB_ID relativos a esse funcionário. 
O valor de JOB_ID em uma linha é AC_ACCOUNT, em outra é 
AD_ASST. 
Em função dessas combinações exclusivas de IDs de cargo e IDs de 
cargos, cada linha relativa ao funcionário 200 é exclusiva e, por isso, 
não é considerada duplicada. Observe que a saída é classificada em
ordem crescente da primeira coluna da cláusula SELECT (nesse
caso, EMPLOYEE_ID).
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Operador UNION ALL
A B
O operador UNION ALL retorna resultados das duas 
consultas, inclusive todos os valores duplicados.
Docente: Gil Jader \u2013 gil.jader@gmail.com
A palavra-chave
DISTINCT não
pode ser usada.
PÓS-GRADUAÇÃO
Usando o Operador UNION ALL
\uf097 Exiba os departamentos anterior e atual de todos os 
funcionários.
SELECT employee_id, job_id, department_id
FROM employees
UNION ALL
SELECT employee_id, job_id, department_id
FROM job_history
ORDER BY employee_id;
\u2026
\u2026
PÓS-GRADUAÇÃO
Operador INTERSECT
A B
O operador INTERSECT retorna linhas
comuns às duas consultas.
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Usando o Operador INTERSECT
\uf097 Exiba os IDs de funcionário e os IDs de cargo dos funcionários 
que, no momento, estão no mesmo cargo que ocupavam 
quando foram admitidos pela empresa (ou seja, eles mudaram 
de cargo, mas agora voltaram para o cargo original).
SELECT employee_id, job_id
FROM employees
INTERSECT
SELECT employee_id, job_id
FROM job_history;
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Operador MINUS
A B
O operador MINUS retorna as linhas da primeira consulta que 
não estão presentes na segunda consulta.
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Operador MINUS
Docente: Gil Jader \u2013 gil.jader@gmail.com
Diretrizes
\u2022 O número de colunas e os tipos de dados das colunas selecionadas pelas
instruções SELECT nas consultas devem ser idênticos em todas as 
instruções SELECT usadas na consulta. 
\u2022 Os nomes das colunas não precisam ser idênticos.
\u2022 Todas as colunas da cláusula WHERE devem estar presentes na cláusula 
SELECT para que o operador MINUS seja executado.
PÓS-GRADUAÇÃO
Operador MINUS
\uf097 Exiba os IDs dos funcionários que nunca mudaram
de cargo.
SELECT employee_id,job_id
FROM employees
MINUS
SELECT employee_id,job_id
FROM job_history;
\u2026
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Diretrizes de Operadores de Conjunto
\uf097 As expressões das listas SELECT devem
corresponder em número e tipo de dados.
\uf097 É possível usar parênteses para alterar a seqüência
de execução.
\uf097 A cláusula ORDER BY:
\uf097 Só pode aparecer no final da instrução
\uf097 Aceitará o nome da coluna, os apelidos da primeira
instrução SELECT ou a notação posicional
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
O Servidor Oracle e os Operadores de 
Conjunto
\uf097 As linhas duplicadas são eliminadas automaticamente, 
exceto em UNION ALL.
\uf097 Os nomes das colunas da primeira consulta aparecem
no resultado.
\uf097 Por default, a saída é classificada em ordem crescente, 
exceto em UNION ALL.
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Correspondência entre Instruções SELECT
\uf097 Com o operador UNION, exiba o ID de departamento, a localização 
e a data de admissão de todos os funcionários.
SELECT department_id, TO_NUMBER(null) AS location, 
hire_date
FROM employees
UNION
SELECT department_id, location_id, TO_DATE(null)
FROM departments;
\u2026
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Correspondência entre Instruções SELECT:
Exemplo
\uf097 Com o operador UNION, exiba o ID de funcionário, o ID do 
cargo e o salário de todos os funcionários.
SELECT employee_id, job_id,salary
FROM employees
UNION
SELECT employee_id, job_id,0
FROM job_history;
\u2026
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
Controlando a Ordem das Linhas
\uf097 Produza uma frase em inglês usando dois operadores UNION.
COLUMN a_dummy NOPRINT
SELECT 'sing' AS "My dream", 3 a_dummy
FROM dual
UNION
SELECT 'I''d like to teach', 1 a_dummy
FROM dual
UNION 
SELECT 'the world to', 2 a_dummy
FROM dual
ORDER BY a_dummy;
Docente: Gil Jader \u2013 gil.jader@gmail.com
PÓS-GRADUAÇÃO
\u2022 KORTH, Henry F. SILBERSCHATZ, Abraham. Sistema de banco de dados. 2ª ed. 
São Paulo. Editora MAKRON Books, 1995.
\u2022 DATE, C. J. Introdução a Sistemas de Banco de Dados. 8ª Edição, São Paulo, 
Campus, 2004.
\u2022 ELMASRI, Ramez E.; NAVATHE, Shamkant. Sistemas de Banco de Dados: 
Fundamentos e Aplicações. 6ª Edição, São Paulo, Addison Wesley, 2011.
\u2022 MACHADO, Felipe Nery Rodrigues. Banco de Dados - Projeto e Implementação. 2ª 
Edição, São Paulo, Editora Érica, 2011.
\u2022 WATSON, JOHN. RAMKLASS, ROOPESH. OCA Oracle Database 11g -
Fundamentos I SQL. MANUAL DO EXAME (1ZO-051). 1ª Edição, São Paulo, ALTA 
BOOKS, 2008.
Docente: Gil Jader \u2013 gil.jader@gmail.com
REFERÊNCIAS
Linguagem SQL \u2013 2017.1