Escolar Documentos
Profissional Documentos
Cultura Documentos
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
s a
) h a
o m
Oracle Database 11g:
o k ฺc ideฺ
Fundamentosude tloSQL t Iu
G
@ o en
a u d
c u nh is St
Guia do Aluno - Volume III
l t e rฺ e th
( w a
t o us
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
D49996BP11
Edição 1.1
Setembro 2009
D62555
Faculdade Impacta Tecnologia
Brian Pottle Esta documentação contém informações proprietárias e é protegida pela legislação
de direitos autorais e por outras leis de propriedade intelectual. A cópia e a
Revisores e impressão deste documento são permitidas exclusivamente para uso durante os
cursos de treinamento da Oracle. O documento não poderá ser modificado de
Colaboradores Técnicos nenhuma forma. Salvo quando o uso estiver em conformidade com a lei de direitos
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
Claire Bennett autorais, é vedado usar, compartilhar, fazer download ou upload, copiar, imprimir,
exibir, reproduzir, publicar, licenciar, divulgar, transmitir ou distribuir o presente
Tom Best documento, no todo ou em parte, sem a expressa autorização da Oracle.
Purjanti Chang
Ken Cooper As informações contidas neste documento estão sujeitas a alterações sem aviso
László Czinkóczki prévio. Eventuais problemas encontrados no documento deverão ser reportados por
escrito e enviados para: Oracle University, 500 Oracle Parkway, Redwood Shores,
Burt Demchick California 94065 EUA. Distribuidor no Brasil: Oracle do Brasil Sistemas Ltda.
Mark Fleming Av. Alfredo Egydio de Souza Aranha, 100, São Paulo, SP - 04726-170 - Brasil -
Gerlinde Frenzen CNPJ: 59.456.277/0001-76. Este documento pode conter erros.
Nancy Greenberg
Aviso de Direitos Restritos
Chaitanya Koratamaddi
Wendy Lo Caso o destinatário do presente documento seja o Governo dos Estados Unidos ou
Timothy Mcglue qualquer pessoa que esteja usando o documento em seu nome, será aplicado o
Alan Paulson seguinte aviso:
s a
Bryan Roberts DIREITOS DO GOVERNO DOS EUA
) h a
Abhishek Singh
o m
Os direitos do Governo dos EUA de usar, modificar, reproduzir, divulgar, exibir ou
Lori Tritz ฺc ideฺ
publicar estes materiais de treinamento são restritos pelas condições estabelecidas
o k u
no contrato de licença da Oracle e/ou no contrato do Governo dos EUA aplicável.
utlo nt G
Michael Versaci
Lex van der Werff Aviso de Marca Registrada o
@ tude
Redatores h a
n is S
Oracle é uma marca comercial registrada da Oracle Corporation e/ou de suas
Raj Kumar ฺ c u
afiliadas. Outros nomes poderão constituir marcas comerciais de seus respectivos
r e th
titulares.
l t e
Amitha Narayan
Vijayalakshmi Narasimhan ( w a
t o us
v e ira nse
Designer Gráfico
O li lice
Satish Bettegowda ha
u n rable
l t e r C nsfe
W a
Editores
n - tra
n o
Sujatha Nagendra
Syed Ali
Faculdade Impacta Tecnologia
Sumário
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
Prefácio
I Introdução
Objetivos da Lição I-2
Agenda da Lição I-3
Objetivos do Curso I-4
Agenda do Curso I-5
Apêndices Usados no Curso I-7
Agenda da Lição I-8
s a
Oracle Database 11g: Áreas de Foco I-9
) h a
Oracle Database 11g I-10 o m
Oracle Fusion Middleware I-12 o k ฺc ideฺ
u
o
Oracle Enterprise Manager Grid Control 10g I-13 utlo nt G
Oracle BI Publisher I-14
h a @ tude
Agenda da Lição I-15 c u n is S
t e ฺ
r e th
a l
Sistemas de Gerenciamento de Banco de Dados Relacional e de Banco de Dados
us
( w
Relacional de Objeto I-16 t o
e ira nse
Armazenamento de Dados em Diferentes Mídias I-17
v
O li lice
Conceito de Banco de Dados Relacional I-18
nha rable
Definição de um Banco de Dados Relacional I-19
u
l t e r C nsfe
Modelos de Dados I-20
a
Wa on-trModelo de Relacionamento entre Entidades I-21
n Convenções de Modelagem de Relacionamento entre Entidades I-23
Relacionando Várias Tabelas I-25
Terminologia do Banco de Dados Relacional I-27
Agenda da Lição I-29
Usando SQL para Consultar Seu Banco de Dados I-30
Instruções SQL I-31
Ambientes de Desenvolvimento para SQL I-32
Agenda da Lição I-33
Esquema HR (Human Resources) I-34
Tabelas Usadas no Curso I-35
Agenda da Lição I-36
Documentação do Oracle Database 11g I-37
Recursos Adicionais I-38
iii
Faculdade Impacta Tecnologia
Resumo I-39
Exercício I: Visão Geral I-40
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
iv
Faculdade Impacta Tecnologia
v e ira nse
Valores de Caractere e Data com Variáveis de Substituição 2-31
li lice
Especificando Nomes de Colunas, Expressões e Texto 2-32
O
nha rable
Usando a Variável de Substituição E Comercial Duplo 2-33
u
Agenda da Lição 2-34
l t e r C nsfe
Usando o Comando DEFINE 2-35
Wa oUsando
n -trao Comando VERIFY 2-36
n Questionário 2-37
Resumo 2-38
Exercício 2: Visão Geral 2-39
v
Faculdade Impacta Tecnologia
vi
Faculdade Impacta Tecnologia
l t e r C da
Funções
Agenda n s fe 5-12
-traGrupos de Dados 5-13
Lição
Wa oCriando
n
n Criando Grupos de Dados: Sintaxe da Cláusula GROUP BY 5-14
Usando a Cláusula GROUP BY 5-15
Agrupando por Mais de Uma Coluna 5-17
Usando a Cláusula GROUP BY em Várias Colunas 5-18
Consultas Inválidas Usando Funções de Grupo 5-19
Restringindo Resultados de Grupos 5-21
Restringindo Resultados de Grupos com a Cláusula HAVING 5-22
Usando a Cláusula HAVING 5-23
Agenda da Lição 5-25
Aninhando Funções de Grupo 5-26
Questionário 5-27
Resumo 5-28
Exercício 5: Visão Geral 5-29
vii
Faculdade Impacta Tecnologia
viii
Faculdade Impacta Tecnologia
e r C sfer
lt tranos Operadores de Conjunto
Wa8 oUsando
n-
n Objetivos 8-2
Agenda da Lição 8-3
Operadores de Conjunto 8-4
Diretrizes de Operadores de Conjunto 8-5
O Servidor Oracle e os Operadores de Conjunto 8-6
Agenda da Lição 8-7
Tabelas Usadas Nesta Lição 8-8
Agenda da Lição 8-12
Operador UNION 8-13
Usando o Operador UNION 8-14
Operador UNION ALL 8-16
Usando o Operador UNION ALL 8-17
Agenda da Lição 8-18
ix
Faculdade Impacta Tecnologia
O li lice
Inserindo Valores Especiais 9-9
Inserindo Valores de
n h a be lHora
Data e Específicos 9-10
r C u f9-11
Criando um Script
e ra
te Linhas
Copiando
l a s Outra Tabela 9-12
nde
a t r
WAgendaonda-Lição 9-13
n Dados de uma Tabela 9-14
Alterando
Sintaxe da Instrução UPDATE 9-15
Atualizando Linhas de uma Tabela 9-16
Atualizando Duas Colunas com uma Subconsulta 9-17
Atualizando Linhas com Base em Outra Tabela 9-18
Agenda da Lição 9-19
Removendo uma Linha de uma Tabela 9-20
Instrução DELETE 9-21
Deletando Linhas de uma Tabela 9-22
Deletando Linhas com Base em Outra Tabela 9-23
Instrução TRUNCATE 9-24
Agenda da Lição 9-25
Transações de Banco de Dados 9-26
x
Faculdade Impacta Tecnologia
r C u
Objetos
f e rade Dados 10-4
a lteRegras
t r a nsNomeação 10-5
de
n- daCREATE
W oAgenda
n Instrução
Lição 10-6
TABLE 10-7
Fazendo Referência a Tabelas de Outro Usuário 10-8
Opção DEFAULT 10-9
Criando Tabelas 10-10
Agenda da Lição 10-11
Tipos de Dados 10-12
Tipos de Dados de Data/Hora 10-14
Agenda da Lição 10-15
Incluindo Constraints 10-16
Diretrizes de Constraints 10-17
Definindo Constraints 10-18
Constraint NOT NULL 10-20
Constraint UNIQUE 10-21
xi
Faculdade Impacta Tecnologia
xii
Faculdade Impacta Tecnologia
l t e r C denJunção
Tipos
s fe Proprietária da Oracle C-6
-traTabelas
Wa oQualificando
Unindo
n
Usando a Sintaxe Oracle C-7
n Equijunções NomesC-9
de Coluna Ambíguos C-8
xiii
Faculdade Impacta Tecnologia
Resumo C-22
Exercício C: Visão Geral C-23
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
a l t er o rSQL
Instalando
a n sDeveloper E-5
WInterfaceo n -tSQL Developer 1.2 E-6
do
n uma Conexão com um Banco de Dados -E-7
Criando
Procurando Objetos do Banco de Dados E-10
Criando um Objeto de Esquema E-11
Criando uma Nova Tabela: Exemplo E-12
Usando a Planilha do SQL E-13
Executando Instruções SQL E-16
Salvando Scripts SQL E-17
Executando Arquivos de Script Salvos: Método 1 E-18
Executando Arquivos de Script Salvos: Método 2 E-19
Executando Instruções SQL E-20
Formatando o Código SQL E-21
Usando Snippets E-22
Usando Snippets: Exemplo E-23
xiv
Faculdade Impacta Tecnologia
Índice
Exercícios Adicionais a
h a s
Exercícios Adicionais: Soluções m )
o
ฺc ideฺ
o k u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
xv
Faculdade Impacta Tecnologia
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
s a
) h a
o m
o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
Faculdade Impacta Tecnologia
___________________
Exercícios Adicionais
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
___________________
s a
) h a
o m
o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
Faculdade Impacta Tecnologia
Exercícios Adicionais
Você poderá usar estes exercícios como prática adicional após a discussão dos seguintes tópicos:
Instrução SELECT básica SQL, comandos básicos do SQL Developer e funções SQL.
s a
) h a
o m
o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
s a
) h a
o m
o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
…
s a
) h a
o m
o k ฺc ideฺ
o u tlo t Gu
5. Mostre os funcionários com sobrenomes que começam com@
a u d en“K”, “L” ou “M".
as letras “J”,
c u nh is St
l t e rฺ e th
( w a
t o us
v e ira nse
O li lice
u nha rable
l t e r C nsfe
Wasapalavras
6. Crie tra com todos os funcionários e indique se eles recebem comissão, utilizando
um relatório
n -
n o Sim ou Não. Use a expressão DECODE na consulta.
Observação: Os resultados continuam na próxima página.
6. (continuação)
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
s a
) h a
o m
o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
Você poderá usar estes exercícios como prática adicional após a discussão dos seguintes tópicos:
Instrução SELECT básica SQL, comandos básicos do SQL Developer, funções SQL, joins e
funções de grupo.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
7. Crie um relatório com o nome do departamento, ID do local, sobrenome, cargo e salário dos
funcionários que trabalham em determinado local. Solicite que o usuário informe o local. Por
exemplo, se o usuário digitar 1800, estes serão os resultados:
8. Calcule o número de funcionários com sobrenomes que terminam com a letra “n”. Crie duas
soluções possíveis.
s a
) h a
o m
o k ฺc ideฺ
lo t Gu
9. Crie um relatório com o nome, local e número de funcionários de cada departamento.
utfuncionários.
o
Certifique-se de que o relatório também inclua departamentos sem
@ en
a u d
c u nh is St
l t e rฺ e th
( w a
t o us
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
10. O departamento de RH precisa descobrir quais são os cargos existentes nos departamentos 10
e 20. Crie um relatório mostrando os IDs dos cargos desses departamentos.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
11. Crie um relatório que mostre os cargos encontrados nos departamentos de Administração e
Executivo. Mostre também o número de funcionários que ocupam esses cargos. Mostre
primeiro o cargo com a maior quantidade de funcionários.
s a
) h a
o m
o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
Você poderá usar estes exercícios como prática adicional após a discussão dos seguintes tópicos:
Instruções SELECT básica SQL, comandos básicos do SQL Developer, funções SQL, joins,
funções de grupo e subconsultas.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
12. Mostre todos os funcionários que foram contratados na primeira metade do mês (antes do
dia 16).
s a
) h a
o m
o k ฺc ideฺ
Sobrenome, salário e salário expresso em milhares de dólares. out
lo t Gu
13. Crie um relatório que mostre as seguintes informações sobre todos os funcionários:
a @ u d en
nh is St
Observação: Os resultados continuam na próximaupágina.
c
l t e rฺ e th
( w a
t o us
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
13. (continuação)
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
14. Mostre todos os funcionários cujos gerentes ganham salários superiores a US$ 15.000,00.
s a
) h a
Mostre os seguintes dados: nome do funcionário, nome do gerente, salário do gerente e nível
salarial do gerente. m
o
ฺc ideฺ
o k u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
…
s a
) h a
o m
16. Crie um relatório para exibir o número do departamento e o menor salário do departamento
com a média salarial mais alta. o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
17. Crie um relatório que mostre os departamentos que não contam com o trabalho de
representantes de vendas. Inclua o número do departamento, o nome do departamento,
o ID do gerente e seu respectivo local.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
18. Crie os seguintes relatórios de estatísticas para o departamento de RH: Inclua o número do
departamento, o nome do departamento e o número de funcionários que trabalham nos s a
departamentos que: ) h a
o m
a. tenham menos de três funcionários: o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
(
a sew t o
e irfuncionários:
li licen
v
b. tenha a maior quantidade
O
de
u nha rable
l t e r C nsfe
Wc. atenha n - tra
no a menor quantidade de funcionários:
19. Crie um relatório mostrando o número dos funcionários, o sobrenome, o salário, o número do
departamento e a média salarial de todos os funcionários do departamento.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
s a
)h a
… k ฺ
m
co ideฺ
u t loo t Gu
@ o en
a u d
c u nh is St
e rฺ noe dia
20. Mostre todos os funcionários que foram contratados
l t thda semana em que houve o maior
w
número de contratações de funcionários.
( a
t o us
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
21. Crie um aniversário com base na data de contratação dos funcionários. Organize os
aniversários em ordem ascendente.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
s a
) h a
… o m
o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
Neste estudo de caso, você deve criar um conjunto de tabelas de banco de dados para uma
aplicação de vídeo. Após a criação das tabelas, você deverá inserir, atualizar e deletar registros
no banco de dados de uma videolocadora e gerar um relatório. O banco de dados contém
somente as tabelas essenciais.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
TITLE
for #* id
RESERVATION * title
#* res date the subject * description
of o rating
set up for o category
o release date
s a
available as) ha
ฺ c om eฺ
t l o ok Guid
responsible o
a copyu n t
a@ Stud e
for
n h
u hiTITLE_COPY
r ฺ c t s
MEMBER a l t e s e #* id
#* id ( w t o u * status
* last name
a
eir ense
o first name O l i v c the subject of
l i
o address
u n ha abresponsible
le
e r C sfer for
o city
made against
a lt o phone a n
W o* njoin-trdate RENTAL
n created #* book date
for o act ret date
o exp ret date
1. Crie as tabelas com base nos seguintes gráficos de instância de tabelas. Escolha os tipos de
dados apropriados e certifique-se de adicionar contraints de integridade.
Length 10 60 400 4 20
Key PK PK,FK
Type
Null/ NN,U NN,U NN
Unique
Check AVAILABLE,
DESTROYED,
RENTED,
RESERVED
FK Ref TITLE
Table
FK Ref TITLE_ID
Col s a
Data NUMBER NUMBER VARCHAR2
) h a
Type o m
Length 10 10 15
o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
d. Nome da tabela: RENTAL
t e ฺ
r e th
l
a ACT_RET_ us
Column BOOK_
a w
MEMBER_ (COPY_
t o EXP_RET_ TITLE_
Name DATE ID
v e ir nse
ID DATE DATE ID
Key PK
O li licePK,FK2
PK,FK1 PK,FK2
nha rable
Type
Default u
System System Date
Valueer CDate sfe + 2 days
t tran MEMBER TITLE_
alRef
WFK
Tableo n - COPY
TITLE_
COPY
n
FK Ref MEMBER_I COPY_ TITLE_ID
Col D ID
Data DATE NUMBER NUMBER DATE DATE NUMBER
Type
Length 10 10 10
3. Crie sequências que forneçam identificação exclusiva a cada linha nas tabelas MEMBER e
TITLE.
a. Número do sócio da tabela MEMBER: Comece por 101; não permita o armazenamento em
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
b. Número do título na tabela TITLE: Comece por 92; não permita o armazenamento em
cache dos valores. Dê um nome à sequência TITLE_ID_SEQ.
s a
) h a
o m
o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
4. Adicione dados às tabelas. Crie um script para cada conjunto de dados a ser adicionado.
a. Adicione títulos de filmes à tabela TITLE. Crie um script para inserir as informações
dos filmes. Salve as instruções em script com o nome lab_apcs_4a.sql. Use as
sequências para fornecer identificação exclusiva a cada título. Insira as datas de
lançamento no formato DD-MMM-AAAA. Lembre-se que as aspas simples exigem
condições especiais em um campo de caracteres. Verifique as adições realizadas.
2 RENTED 2
2 AVAILABLE 2
s a
3 RENTED 3 ) h a
o m
Miracles on Ice 1 AVAILABLE Miracles on Ice o k1
ฺc ideฺ
o u tlo t Gu
Soda Gang 1 AVAILABLE @
Soda Gang
a u d en1
c u nh is St
e rฺ e th
d. Adicione os seguintes aluguéis à tabelaltRENTAL:
Observação: O número do título(w
a s
udependendo
i r a e t o
pode variar, do número sequencial.
Title_ Id Copy_
l i v e ens
Member_Id
a O b101 c
92
Id
1nh l e li Book_date
3 days ago
Exp_Ret_Date
1 day ago
u r a
93 lte
r C 2 nsfe 101 1 day ago 1 day from now
a
Wa on-tr
95 n 3 102 2 days ago Today
5. Crie uma view com o nome TITLE_AVAIL para mostrar os títulos dos filmes, a
disponibilidade de cada cópia e a data de retorno estimado, caso estejam alugados. Consulte
todas as linhas na view. Organize os resultados por título.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
s a
6. Faça alterações nos dados das tabelas.
)h a
m
co como ฺ
o k ฺ
a. Adicione um novo título. O nome do filme é “Interstellar Wars,” classificado
i d ePG,
o
interstellar action movie. Can the rebels save the humans from t Géu“Futuristic
uthelodescrição
do gênero ficção científica. A data de lançamento é 07-JUL-77.tA
evilnempire?”
a
Certifique-se de adicionar um registro de cópia do título
h @a duastu de
cópias.
c u n is S
b. Insira duas reservas. Uma reserva é parate ฺ th que deseja alugar
r Velasquez,
Carmen
“Interstellar Wars”. A outra reserva
l
éapara Mark
e
usQuick-to-See, que deseja alugar
( w t o
“Soda Gang”.
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
s a
) h a
o m
o k ฺc ideฺ
Title Price
o u tlo t Gu
Willie and 25
a @ u d en
Christmas Too
c u nh is St
Alien Again 35
l t e rฺ e th
The Glob
( w a
35
t o us
My Day Off
v e ira n30se
35
Miracles on Ice
O li lice
Soda Gang ha le 35
u n a b
e r C Warssfer
Interstellar 29
lt ran com o nome lab_apcs_7b.sql contendo instruções de atualização
Wb.aCrieonum-tscript
n atualizar cada vídeo com o preço de acordo com a lista anterior. Execute os
para
comandos no script.
Observação: Utilize os números em TITLE_ID para este exercício.
lab_apcs_8.sql.
Observação: Os resultados podem variar.
s a
) h a
o m
o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
s a
) h a
o m
o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
Faculdade Impacta Tecnologia
___________________
Exercícios Adicionais:
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
Soluções
___________________
s a
) h a
o m
o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
Faculdade Impacta Tecnologia
Você poderá usar estes exercícios como prática adicional após a discussão dos seguintes tópicos:
Instrução SELECT básica SQL, comandos básicos do SQL Developer e funções SQL.
5. Mostre os funcionários com sobrenomes que começam pelas letras “J,” “K,” “L,” ou “M.”
SELECT last_name
FROM employees
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
6. Crie um relatório com todos os funcionários e indique se eles recebem uma comissão,
utilizando as palavras Sim ou Não. Use a expressão DECODE na consulta.
SELECT last_name, salary,
decode(commission_pct, NULL, 'No', 'Yes') commission
FROM employees;
s a
) h a
o m
o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
Você poderá usar estes exercícios como atividades complementares após a discussão dos
seguintes tópicos: Instrução SELECT básica SQL, comandos básicos do SQL Developer,
funções SQL, joins e funções de grupo.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
7. Crie um relatório com o nome do departamento, ID do local, nome, cargo e salário dos
funcionários que trabalham em um determinado local. Solicite que o usuário informe o local.
8. Calcule o número de funcionários com sobrenomes que terminam com a letra “n”. Crie duas
soluções possíveis. s a
) h a
SELECT COUNT(*)
o m
FROM employees
o k ฺc ideฺ
u
utlo nt G
WHERE last_name LIKE '%n';
--or
o
@ tude
SELECT COUNT(*)
FROM employees h a
n is S
WHERE SUBSTR(last_name, -1) = 'n'; rฺcu
l t e e th
s
a de ufuncionários
9. Crie um relatório com o nome, local(ew númeroto de cada departamento.
i r a e
sinclua departamentos sem funcionários.
l i ve também
Certifique-se de que o relatório
e n
a
SELECT d.department_id,
h l e lic
O d.department_name,
un efeRIGHT
d.location_id,
C r ab COUNT(e.employee_id)
FROM
ON alte
r
employees
n s OUTER JOIN departments d
-tra
e.department_id = d.department_id
W BYond.department_id,
GROUP d.department_name, d.location_id;
n
10. O departamento de RH precisa descobrir quais são os cargos existentes nos departamentos 10
e 20. Crie um relatório mostrando as IDs dos cargos desses departamentos.
SELECT DISTINCT job_id
FROM employees
WHERE department_id IN (10, 20);
11. Crie um relatório que mostre os cargos encontrados nos departamentos de Administração e
Executivo. Mostre também o número de funcionários que ocupam esses cargos. Mostre o
cargo com a maior quantidade de funcionários, primeiro.
SELECT e.job_id, count(e.job_id) FREQUENCY
FROM employees e JOIN departments d
ON e.department_id = d.department_id
WHERE d.department_name IN ('Administration', 'Executive')
GROUP BY e.job_id
ORDER BY FREQUENCY DESC;
Você poderá usar estes exercícios como atividades complementares após a discussão dos
seguintes tópicos: Instruções SELECT básica SQL, comandos básicos do SQL Developer,
funções SQL, joins, funções de grupo e subconsultas.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
12. Mostre todos os funcionários que foram contratados na primeira metade do mês (antes do
dia 16).
SELECT last_name, hire_date
FROM employees
WHERE TO_CHAR(hire_date, 'DD') < 16;
13. Crie um relatório que mostre as seguintes informações sobre todos os funcionários:
Sobrenome, salário e salário expresso em milhares de dólares.
SELECT last_name, salary, TRUNC(salary, -3)/1000 Thousands
FROM employees;
s a
)h a
m
14. Mostre todos os funcionários cujos gerentes ganham salários superiores a US$ 15.000,00.
cogerente
Mostre os seguintes dados: nome do funcionário, nome do gerente, salário
o k ฺ
do
i d ee ฺnível
u
salarial do gerente.
o utlo nt G
SELECT e.last_name, m.last_name manager, m.salary,
h a de
@ tuj.grade_level
FROM employees e JOIN employees m
e.manager_id = m.employee_id rฺcu
n is S
ON
l t e e th
JOIN job_grades j
( w a ANDusj.highest_sal
ON m.salary BETWEEN j.lowest_sal
m.salary > 15000; ira e to
AND
e
liv licen s
O
15. Mostre o númeroh
u n e ao nome
r
de todos os departamentos, a b ledepartamento,
do
juntamente com
a quantidade de funcionários, o salário médio
os nomes, salários e cargos dos funcionários que
r C f e
lte emtracada
trabalham
a nsdepartamento.
-
W od.department_id,
n n
SELECT d.department_name,
count(e1.employee_id) employees,
NVL(TO_CHAR(AVG(e1.salary), '99999.99'), 'No average' ) avg_sal,
e2.last_name, e2.salary, e2.job_id
FROM departments d RIGHT OUTER JOIN employees e1
ON d.department_id = e1.department_id
RIGHT OUTER JOIN employees e2
ON d.department_id = e2.department_id
GROUP BY d.department_id, d.department_name, e2.last_name, e2.salary,
e2.job_id
ORDER BY d.department_id, employees;
16. Crie um relatório para exibir o número do departamento e o menor salário do departamento
com a média salarial mais alta.
SELECT department_id, MIN(salary)
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
FROM employees
GROUP BY department_id
HAVING AVG(salary) = (SELECT MAX(AVG(salary))
FROM employees
GROUP BY department_id);
17. Crie um relatório que mostre os departamentos que não contam com o trabalho de
representantes de vendas. Inclua o número do departamento, o nome do departamento e seu
respectivo local.
SELECT *
FROM departments
s a
WHERE department_id NOT IN(SELECT department_id
FROM employees ) h a
o m
WHERE job_id = 'SA_REP'
o k ฺc ideฺ
AND department_id IS NOT NULL);
u
o utlo nt G
18. Crie os seguintes relatórios de estatísticas para o departamento
a @ de tRH:
u e o número do
dInclua
departamento, o nome do departamento e o número de
u h
n is S
funcionários que trabalham nos
departamentos que:
e c
rฺ e th
l t
a. tenham menos de três funcionários: ( w a
t o us
v e ira nse
SELECT d.department_id,
O li employees
l i c e
d.department_name, COUNT(*)
nha rab=lee.department_id
FROM departments d JOIN e
ON
u
d.department_id
r C ns< f3;
GROUP BY d.department_id,
HAVINGlte
e d.department_name
a
Wa on-tr
COUNT(*)
ON d.department_id = e.department_id
GROUP BY d.department_id, d.department_name
HAVING COUNT(*) = (SELECT MAX(COUNT(*))
FROM employees
GROUP BY department_id);
19. Crie um relatório mostrando o número dos funcionários, o sobrenome, o salário, o número do
departamento e a média salarial de todos os funcionários do departamento.
SELECT e.employee_id, e.last_name, e.department_id, e.salary,
AVG(s.salary)
FROM employees e JOIN employees s
s a
ON e.department_id = s.department_id
GROUP BY e.employee_id, e.last_name, e.department_id, e.salary; )h a
m
cohouveidoemaior
ฺ
20. Mostre todos os funcionários que foram contratados no dia da semana emo k ฺ
que
u
número de contratações de funcionários.
o utlo nt G
SELECT last_name, TO_CHAR(hire_date, 'DAY') day
h a @ tude
FROM employees
c u n is S
WHERE TO_CHAR(hire_date, 'Day') = er
t ฺ th
l
a 'Day')us e
(SELECT TO_CHAR(hire_date,
( w o
FROM employees
e i ra se t'Day')
HAVING COUNT(*) O liv = (SELECT
GROUP BY TO_CHAR(hire_date,
l i c en MAX(COUNT(*))
u nha rable FROM employees
r C
e rans f e GROUP BY TO_CHAR(hire_date, 'Day')));
21.W altum
Crie -t
aniversário com base na data de contratação dos funcionários. Organize os
n o n
aniversários em ordem ascendente.
SELECT last_name, TO_CHAR(hire_date, 'Month DD') BIRTHDAY
FROM employees
ORDER BY TO_CHAR(hire_date, 'DDD');
1. Crie as tabelas com base nos seguintes gráficos de instância de tabelas. Escolha os tipos de
dados apropriados e certifique-se de adicionar contraints de integridade.
(member_id NUMBER(10)
CONSTRAINT member_member_id_pk PRIMARY KEY,
last_name VARCHAR2(25)
CONSTRAINT member_last_name_nn NOT NULL,
first_name VARCHAR2(25),
address VARCHAR2(100),
city VARCHAR2(30),
phone VARCHAR2(15),
join_date DATE DEFAULT SYSDATE
s a
CONSTRAINT member_join_date_nn NOT NULL);
) h a
o m
b. Nome da tabela: TITLE
o k ฺc ideฺ
CREATE TABLE title
o u tlo t Gu
(title_id NUMBER(10)
a @ u d en
CONSTRAINT title_title_id_pk PRIMARY
c u nh is St
KEY,
title VARCHAR2(60)
CONSTRAINT title_title_nnlte rฺ NULL,
NOT e th
description
( w
VARCHAR2(400) a
t o us
v e ira nse
CONSTRAINT title_description_nn NOT NULL,
rating
CONSTRAINTO
li lice
VARCHAR2(4)
(rating h a title_rating_ck
b l e
n raVARCHAR2(20)
IN ('G', 'PG', 'R',
CHECK
'NC17', 'NR')),
u
C sfe
l t rCONSTRAINT
category
e n title_category_ck CHECK
a - t r a
W on'CHILD',(category IN ('DRAMA', 'COMEDY', 'ACTION',
nrelease_date DATE);'DOCUMENTARY')),
'SCIFI',
member_id NUMBER(10)
CONSTRAINT rental_member_id_fk REFERENCES member(member_id),
copy_id NUMBER(10),
act_ret_date DATE,
exp_ret_date DATE DEFAULT SYSDATE + 2,
title_id NUMBER(10),
CONSTRAINT rental_book_date_copy_title_pk
PRIMARY KEY (book_date, member_id, copy_id,title_id),
CONSTRAINT rental_copy_id_title_id_fk
FOREIGN KEY (copy_id, title_id)
REFERENCES title_copy(copy_id, title_id));
s a
e. Nome da tabela: RESERVATION
)h a
CREATE TABLE reservation m
co ideฺ
k ฺ
loo t Gu
(res_date DATE,
member_id NUMBER(10)
u t
o member(member_id),
CONSTRAINT reservation_member_id REFERENCES
a @ u d en
title_id NUMBER(10)
CONSTRAINT reservation_title_idun
c
h
i s
REFERENCESSt title(title_id),
l t
CONSTRAINT reservation_resdate_mem_tit_pk e rฺ e th PRIMARY KEY
w
(res_date, member_id, title_id));
( a
t o us
e ra se por meio do Connections Navigator no SQL
icorretamente
li licen
v
2. Verifique se a tabela foi criada
Developer. O
u nha rable
l t e r C nsfNavigator,
a. No Connections e expanda Connections > myconnection > Tables.
a
Wa on-tr
n
3. Crie sequências que forneçam identificação exclusiva a cada linha nas tabelas MEMBER e
TITLE.
a. Número do sócio da tabela MEMBER: Comece por 101; não permita o armazenamento em
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
b. Número do título na tabela TITLE: Comece por 92; não permita o armazenamento em
cache dos valores. Dê um nome à sequência TITLE_ID_SEQ.
CREATE SEQUENCE title_id_seq
START WITH 92
NOCACHE;
s a
) h a
c. Verifique a existência das sequências por meio do Connections Navigator nom
SQL
Developer. o
ฺc ideฺ
o k
o
a. No Connections Navigator, pressupondo que o nó myconnection Gu
utlo ntesteja
expandido, expanda Sequences.
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
4. Adicione dados às tabelas. Crie um script para cada conjunto de dados a ser adicionado.
a. Adicione títulos de filmes à tabela TITLE. Crie um script para inserir as informações
dos filmes. Salve as instruções em script com o nome lab_apcs_4a.sql. Use as
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
...
COMMIT
/
SELECT title
FROM title;
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
s a
) h a
o m
o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n
W a
n
FULL OUTER - traJOIN rental r
= c.title_id
ON no c.copy_id = r.copy_id
AND c.title_id = r.title_id;
SELECT *
FROM title_avail
ORDER BY title, copy_id;
a. Adicione um novo título. O nome do filme é “Interstellar Wars”, classificado como PG,
do gênero ficção científica. A data de lançamento é 07-JUL-77. A descrição é “Futuristic
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ
interstellar action movie. Can the rebels save the humans from the evil empire?”
Certifique-se de adicionar um registro de cópia do título a duas cópias.
INSERT INTO title(title_id, title, description, rating,
category, release_date)
VALUES (title_id_seq.NEXTVAL, 'Interstellar Wars',
'Futuristic interstellar action movie. Can the
rebels save the humans from the evil empire?',
'PG', 'SCIFI', '07-JUL-77')
/
INSERT INTO title_copy (copy_id, title_id, status)
VALUES (1, 98, 'AVAILABLE')
s a
/
) h a
INSERT INTO title_copy (copy_id, title_id, status)
o m
VALUES (2, 98, 'AVAILABLE')
o k ฺc ideฺ
u
utlo nt G
/
o
h a @ que
b. Insira duas reservas. Uma reserva é para Carmen Velasquez,
t u de alugar
deseja
“Interstellar Wars”. A outra reserva é para Mark
c u nQuick-to-See,
i s S que deseja alugar
ฺ h
“Soda Gang”.
a lter use t
INSERT INTO reservation (res_date,
a ( w member_id,
t o title_id)
VALUES (SYSDATE, 101, 98) ir
/ l i ve cense
a
INSERT INTO reservation O (res_date,
e li member_id, title_id)
n h 104,a97)b l
VALUES (SYSDATE,
C u fer
/ r
lte trans
a -
7. W
nonmodificação em uma das tabelas.
Faça uma
DESCRIBE title
s a
) h a
o m
o k ฺc ideฺ
u
o utlo nt G
h a @ tude
c u n is S
t e ฺ
r e th
a l us
( w t o
v e ira nse
O li lice
u nha rable
l t e r C nsfe
a
Wa on-tr
n