Você está na página 1de 58

Faculdade Impacta Tecnologia

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

Autores Copyright © 2009, Oracle. Todos os direitos reservados.

Puja Singh Isenção de Responsabilidade

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ฺ

1 Recuperando Dados com a Instrução SQL SELECT


Objetivos 1-2
Agenda da Lição 1-3
Recursos de Instruções SQL SELECT 1-4
Instrução SELECT Básica 1-5
Selecionando Todas as Colunas 1-6
Selecionando Colunas Específicas 1-7
Criando Instruções SQL 1-8
Defaults de Cabeçalhos de Colunas 1-9
Agenda da Lição 1-10
s a
Expressões Aritméticas 1-11
) h a
Usando Operadores Aritméticos 1-12 o m
Precedência de Operadores 1-13 o k ฺc ideฺ
u
Definindo um Valor Nulo 1-14
o utlo nt G
Valores Nulos em Expressões Aritméticas 1-15
h a @ tude
Agenda da Lição 1-16
c u n is S
t e ฺ
r e th
a l
Definindo um Apelido de Coluna 1-17
us
( w
Usando Apelidos de Colunas 1-18
t o
Agenda da Lição 1-19
v e ira nse
O li lice
Operador de Concatenação 1-20
nha rable
Strings de Caracteres Literais 1-21
u
l t e r C nsfe
Usando Strings de Caracteres Literais 1-22
a
Wa on-tr
Operador de Aspas (q) Alternativo 1-23
n
Linhas Duplicadas 1-24
Agenda da Lição 1-25
Exibindo a Estrutura de Tabelas 1-26
Usando o Comando DESCRIBE 1-27
Questionário 1-28
Resumo 1-29
Exercício 1: Visão Geral 1-30

2 Restringindo e Classificando Dados


Objetivos 2-2
Agenda da Lição 2-3
Limitando Linhas com uma Seleção 2-4
Limitando as Linhas Selecionadas 2-5

iv
Faculdade Impacta Tecnologia

Usando a Cláusula WHERE 2-6


Strings de Caracteres e Datas 2-7
Operadores de Comparação 2-8
Usando Operadores de Comparação 2-9
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

Condições de Intervalo Usando o Operador BETWEEN 2-10


Condição de Associação Usando o Operador IN 2-11
Correspondência de Padrões Usando o Operador LIKE 2-12
Combinando Caracteres Curinga 2-13
Usando as Condições NULL 2-14
Definindo Condições Usando os Operadores Lógicos 2-15
Usando o Operador AND 2-16
Usando o Operador OR 2-17
Usando o Operador NOT 2-18
Agenda da Lição 2-19 s a
Regras de Precedência 2-20 ) h a
o m
Agenda da Lição 2-22
o k ฺc ideฺ
u
utlo nt G
Usando a Cláusula ORDER BY 2-23
Classificação 2-24 o
@ tude
Agenda da Lição 2-26 h a
n is S
Variáveis de Substituição 2-27 ฺ c
r e thu
l t e
( w a
t o us
Usando a Variável de Substituição E Comercial Simples 2-29

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

3 Usando Funções de Linha Única para Personalizar o Resultado


Objetivos 3-2
Agenda da Lição 3-3
Funções SQL 3-4
Dois Tipos de Funções SQL 3-5
Funções de Linha Única 3-6
Agenda da Lição 3-8
Funções de Caractere 3-9
Funções de Conversão de Capitalização 3-11

v
Faculdade Impacta Tecnologia

Usando Funções de Conversão de Capitalização 3-12


Funções de Manipulação de Caracteres 3-13
Usando as Funções de Manipulação de Caracteres 3-14
Agenda da Lição 3-15
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

Funções de Número 3-16


Usando a Função ROUND 3-17
Usando a Função TRUNC 3-18
Usando a Função MOD 3-19
Agenda da Lição 3-20
Trabalhando com Datas 3-21
Formato de Data RR 3-22
Usando a Função SYSDATE 3-24
Aritmética com Datas 3-25
Usando Operadores Aritméticos com Datas 3-26
s a
Agenda da Lição 3-27
) h a
o m
Funções de Manipulação de Datas 3-28
o k ฺc ideฺ
Usando Funções de Data 3-29 u
Usando as Funções ROUND e TRUNC com Datas 3-30 o utlo nt G
Questionário 3-31 h a @ tude
Resumo 3-32 c u n is S
t e ฺ
r e th
Exercício 3: Visão Geral 3-33
a l us
( w t o
4 Usando Funções de Conversão v e irae Expressões
n se Condicionais
l i
O e lic e
Objetivos 4-2 a
Agenda da Lição u n 4-3 rabl
h
Funções
l t e r deCConversão
n s fe 4-4
a
WConversãon - ra de Tipos de Dados 4-5
tImplícita
no Explícita de Tipos de Dados 4-7
Conversão
Agenda da Lição 4-10
Usando a Função TO_CHAR com Datas 4-11
Elementos do Modelo de Formato de Data 4-12
Usando a Função TO_CHAR com Datas 4-16
Usando a Função TO_CHAR com Números 4-17
Usando as Funções TO_NUMBER e TO_DATE 4-20
Usando as Funções TO_CHAR e TO_DATE com o Formato de Data RR 4-22
Agenda da Lição 4-23
Aninhando Funções 4-24
Agenda da Lição 4-26
Funções Gerais 4-27
Função NVL 4-28

vi
Faculdade Impacta Tecnologia

Usando a Função NVL 4-29


Usando a Função NVL2 4-30
Usando a Função NULLIF 4-31
Usando a Função COALESCE 4-32
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

Agenda da Lição 4-35


Expressões Condicionais 4-36
Expressão CASE 4-37
Usando a Expressão CASE 4-38
Função DECODE 4-39
Usando a Função DECODE 4-40
Questionário 4-42
Resumo 4-43
Exercício 4: Visão Geral 4-44
s a
5 Gerando Relatórios de Dados Agregados Usando as Funções de Grupo ) h a
o m
Objetivos 5-2
o k ฺc ideฺ
u
utlo nt G
Agenda da Lição 5-3
O Que São Funções de Grupo? 5-4 o
@ tude
Tipos de Funções de Grupo 5-5 h a
n is S
Funções de Grupo: Sintaxe 5-6 ฺ c u
Usando as Funções AVG e SUM a5-7 lter use th
Usando as Funções MINra (w 5-8 to
e MAX
vei c5-9
Usando a FunçãoliCOUNT e nse
a O e liDISTINCT 5-10
Usando ah
u nde Grupo
r a be lValores Nulos 5-11
Palavra-Chave

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

6 Exibindo Dados de Várias Tabelas


Objetivos 6-2
Agenda da Lição 6-3
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

Obtendo Dados de Várias Tabelas 6-4


Tipos de Junção 6-5
Unindo Tabelas com a Sintaxe SQL:1999 6-6
Qualificando Nomes de Colunas Ambíguos 6-7
Agenda da Lição 6-8
Criando Junções Naturais 6-9
Recuperando Registros com Junções Naturais 6-10
Criando Junções com a Cláusula USING 6-11
Unindo Nomes de Colunas 6-12
Recuperando Registros com a Cláusula USING 6-13
s a
Usando Apelidos de Tabela com a Cláusula USING 6-14
) h a
Criando Junções com a Cláusula ON 6-15 o m
Recuperando Registros com a Cláusula ON 6-16 o k ฺc ideฺ
Criando Junções Tridimensionais com a Cláusula ON 6-17 ou
tlo t Gu
a @ u d en
Aplicando Outras Condições a uma Junção 6-18
Agenda da Lição 6-19 c u nh is St
Unindo uma Tabela a Ela Mesma 6-20 lte
rฺ e th
Auto-Junções Usando a CláusulaaON ( a
w6-21 t o us
Agenda da Lição 6-22 ive
ir nse
O l l i c e
nha racom
Não-equijunções 6-23
RecuperandouRegistros bleNão-equijunções 6-24
Agenda
l t e rdaCLiçãons6-25
fe
a
WRetornando n - ra
tRegistros sem Correspondência Direta Usando Junções OUTER 6-26
n o
Junções INNER e OUTER 6-27
Junção LEFT OUTER 6-28
Junção RIGHT OUTER 6-29
Junção FULL OUTER 6-30
Agenda da Lição 6-31
Produtos Cartesianos 6-32
Gerando um Produto Cartesiano 6-33
Criando Junções Cruzadas 6-34
Questionário 6-35
Resumo 6-36
Exercício 6: Visão Geral 6-37

viii
Faculdade Impacta Tecnologia

7 Usando Subconsultas para Solucionar Consultas


Objetivos 7-2
Agenda da Lição 7-3
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

Usando uma Subconsulta para Solucionar um Problema 7-4


Sintaxe da Subconsulta 7-5
Usando uma Subconsulta 7-6
Diretrizes de Uso de Subconsultas 7-7
Tipos de Subconsultas 7-8
Agenda da Lição 7-9
Subconsultas de Linha Única 7-10
Executando Subconsultas de Linha Única 7-11
Usando Funções de Grupo em uma Subconsulta 7-12
A Cláusula HAVING com Subconsultas 7-13 a
O Que Está Errado com Esta Instrução? 7-14 h a s
Nenhuma Linha Retornada pela Consulta Interna 7-15 m )
o
ฺc ideฺ
Agenda da Lição 7-16 o k u
Subconsultas de Várias Linhas 7-17
o utlo nt G
h a @ tude
Usando o Operador ANY em Subconsultas de Várias Linhas 7-18
Usando o Operador ALL em Subconsultasu
c nVáriasisLinhas
de S 7-19
ฺ h
Agenda da Lição 7-20
a lter use t
( w t7-21
Valores Nulos em uma Subconsulta
a o
Questionário 7-23 eir s e
Resumo 7-24O
liv licen
nh7:aVisão
Exercício
u a b le 7-25
Geral

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

Operador INTERSECT 8-19


Usando o Operador INTERSECT 8-20
Agenda da Lição 8-21
Operador MINUS 8-22
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

Usando o Operador MINUS 8-23


Agenda da Lição 8-24
Correspondência entre Instruções SELECT 8-25
Correspondência entre Instruções SELECT: Exemplo 8-26
Agenda da Lição 8-27
Usando a Cláusula ORDER BY em Operações Set 8-28
Questionário 8-29
Resumo 8-30
Exercício 8: Visão Geral 8-31
s a
9 Manipulando Dados ) h a
o m
Objetivos 9-2
o k ฺc ideฺ
u
utlo nt G
Agenda da Lição 9-3
DML (Data Manipulation Language) 9-4 o
@ tude
Adicionando uma Nova Linha a uma Tabela 9-5 h a
n is S
Sintaxe da Instrução INSERT 9-6 ฺ c
r e thu
l t e
Inserindo Novas Linhas 9-7
( w a
t o us
v e ira nse
Inserindo Linhas com Valores Nulos 9-8

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

Transações do Banco de Dados: Iniciar e Terminar 9-27


Vantagens das Instruções COMMIT e ROLLBACK 9-28
Instruções de Controle Explícito de Transações 9-29
Fazendo Rollback de Alterações até um Marcador 9-30
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

Processamento de Transação Implícita 9-31


Estado dos Dados Antes de COMMIT ou ROLLBACK 9-33
Estado dos Dados Após COMMIT 9-34
Commit de Dados 9-35
Estado dos Dados Após ROLLBACK 9-36
Estado dos Dados Após ROLLBACK: Exemplo 9-37
Rollback no Nível de Instrução 9-38
Agenda da Lição 9-39
Consistência de Leitura 9-40
Implementando a Consistência de Leitura 9-41
s a
Agenda da Lição 9-42
) h a
o m
Cláusula FOR UPDATE em uma Instrução SELECT 9-43
o k ฺc ideฺ
u
utlo nt G
Cláusula FOR UPDATE: Exemplos 9-44
Questionário 9-46 o
@ tude
Resumo 9-47 h a
n is S
Exercício 9: Visão Geral 9-48 ฺ c u
r e th
l t e
10 Usando Instruções DDLapara ( a
wCriar us
eoGerenciar Tabelas
t
Objetivos 10-2 ive
ir nse
O l l i c e
a ble
Agenda da Lição
ndehBanco
10-3

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

Constraint PRIMARY KEY 10-23


Constraint FOREIGN KEY 10-24
Constraint FOREIGN KEY: Palavras-Chave 10-26
Constraint CHECK 10-27
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

CREATE TABLE: Exemplo 10-28


Violando Constraints 10-29
Agenda da Lição 10-31
Criando uma Tabela com uma Subconsulta 10-32
Agenda da Lição 10-34
Instrução ALTER TABLE 10-35
Tabelas Somente para Leitura 10-36
Agenda da Lição 10-37
Eliminando uma Tabela 10-38
Questionário 10-39
s a
Resumo 10-40 ) h a
o m
Exercício 10: Visão Geral 10-41
o k ฺc ideฺ
u
11 Criando Outros Objetos de Esquema o utlo nt G
Objetivos 11-2 h a @ tude
Agenda da Lição 11-3 c u n is S
t e ฺ
r e th
Objetos de Banco de Dados 11-4
a l us
O Que É uma View? 11-5 ( w t o
Vantagens das Views 11-6 v e ira nse
Views Simples e Complexas O li 11-7 l i c e
Criando umau nha11-8rable
View
e r C Dados
Recuperando
l t n s fede uma View 11-11
a - a View 11-12
truma
WModificando
n
no uma View Complexa 11-13
Criando
Regras para Executar Operações DML em uma View 11-14
Usando a Cláusula WITH CHECK OPTION 11-17
Negando Operações DML 11-18
Removendo uma View 11-20
Exercício 11: Visão Geral da Parte 1 11-21
Agenda da Lição 11-22
Sequências 11-23
Instrução CREATE SEQUENCE: Sintaxe 11-25
Criando uma Sequência 11-26
Pseudocolunas NEXTVAL e CURRVAL 11-27
Usando uma Sequência 11-29
Armazenando Valores de Sequência em Cache 11-30

xii
Faculdade Impacta Tecnologia

Modificando uma Sequência 11-31


Diretrizes para Modificar uma Sequência 11-32
Agenda da Lição 11-33
Índices 11-34
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

Como São Criados os Índices? 11-36


Criando um Índice 11-37
Diretrizes para Criar Índices 11-38
Removendo um Índice 11-39
Agenda da Lição 11-40
Sinônimos 11-41
Criando um Sinônimo para um Objeto 11-42
Criando e Removendo Sinônimos 11-43
Questionário 11-44
Resumo 11-45 a
Exercício 11: Visão Geral da Parte 2 11-46 h a s
m )
o
ฺc ideฺ
Apêndice A: Soluções dos Exercícios
o k u
o utlo nt G
Apêndice B: Descrições das Tabelas
h a @ tude
c u n is S
Apêndice C: Sintaxe da Junção do Oracle t e ฺ
r e th
a l us
Objetivos C-2 ( w t o
Obtendo Dados de Várias
v e iraTabelas
n se C-3
l i e
h a O eC-4
Produtos Cartesianos
l lic
Gerando
u n rab
um Produto Cartesiano C-5

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

Recuperando Registros com Equijunções C-10


Recuperando Registros com Equijunções: Exemplo C-11
Condições Adicionais de Pesquisa Usando o Operador AND C-12
Unindo Mais de Duas Tabelas C-13
Não-equijunções C-14
Recuperando Registros com Não-equijunções C-15
Retornando Registros sem Correspondência Direta com Junções Externas C-16
Junções Externas: Sintaxe C-17
Usando Junções Externas C-18
Junção Externa: Outro Exemplo C-19
Unindo uma Tabela a Ela Mesma C-20
Auto-Junção: Exemplo C-21

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ฺ

Apêndice D: Usando o SQL*Plus


Objetivos D-2
Interação Entre o SQL e o SQL*Plus D-3
Instruções SQL e Comandos do SQL*Plus D-4
Visão Geral do SQL*Plus D-5
Efetuando Login no SQL*Plus D-6
Exibindo a Estrutura de Tabelas D-8
Comandos de Edição do SQL*Plus D-10
Usando LIST, n e APPEND D-12
Usando o Comando CHANGE D-13
s a
Comandos de Edição do SQL*Plus D-14
) h a
Usando os Comandos SAVE, START e EDIT D-15 o m
Comando SERVEROUTPUT D-17 o k ฺc ideฺ
u
Usando o Comando SPOOL do SQL*Plus D-18 o utlo nt G
Usando o Comando AUTOTRACE D-19
h a @ tude
Resumo D-20 c u n is S
t e ฺ
r e th
a l us
Apêndice E: Usando o SQL Developer ( w t o
Objetivos E-2 v e ira nse
O Que É o Oracle SQL O li liceE-3
Developer?
a ble
ndohSQL
Especificações
C u f e r a
Developer E-4

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

Usando SQL*Plus E-24


Depurando Procedimentos e Funções E-25
Gerando Relatórios de Banco de Dados E-26
Criando um Relatório Definido pelo Usuário E-27
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

Mecanismos de Pesquisa e Ferramentas Externas E-28


Definindo Preferências E-29
Especificações do SQL Developer 1.5.3 E-30
Instalando o SQL Developer 1.5.3 E-31
Interface do SQL Developer 1.5.3 E-32
Resumo E-34

Í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.

1. O departamento de RH precisa localizar os dados de todos os funcionários que foram


Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

contratados após o ano de 1997.

2. O departamento de RH precisa de um relatório dos funcionários que ganham comissão.


Mostre o sobrenome, o cargo, o salário e a comissão desses funcionários. Organize os dados
por salário em ordem descendente.

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

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 2


Faculdade Impacta Tecnologia

Exercícios Adicionais (continuação)

3. Para fins orçamentários, o departamento de RH precisa de um relatório sobre os aumentos


estimados. O relatório deve exibir os funcionários que não ganham comissão, mas que
obtiveram um aumento de 10% no salário (salários arredondados).
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

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 3


Faculdade Impacta Tecnologia

Exercícios Adicionais (continuação)

4. Crie um relatório dos funcionários e seus respectivos tempos de serviço. Coloque os


sobrenomes de todos os funcionários juntamente com o total de anos e meses de serviço que
eles já completaram. Organize o relatório pelo tempo de serviço de cada um. O funcionário
com o maior tempo de serviço deve aparecer em primeiro lugar na lista.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ


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.

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 4


Faculdade Impacta Tecnologia

Exercícios Adicionais (continuação)

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

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 5


Faculdade Impacta Tecnologia

Exercícios adicionais (continuação)

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

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 6


Faculdade Impacta Tecnologia

Exercícios Adicionais (continuação)

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

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 7


Faculdade Impacta Tecnologia

Exercícios Adicionais (continuação)

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

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 8


Faculdade Impacta Tecnologia

Exercícios Adicionais (continuação)

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

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 9


Faculdade Impacta Tecnologia

Exercícios Adicionais (continuação)

15. Mostre o número e o nome do departamento, a quantidade de funcionários, o salário médio


de todos os departamentos, juntamente com os nomes, salários e cargos dos funcionários que
trabalham em cada departamento.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ


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

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 10


Faculdade Impacta Tecnologia

Exercícios Adicionais (continuação)

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:

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 11


Faculdade Impacta Tecnologia

Exercícios Adicionais (continuação)

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

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 12


Faculdade Impacta Tecnologia

Exercícios Adicionais (continuação)

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

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 13


Faculdade Impacta Tecnologia

Exercícios Adicionais: Estudo de Caso

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ฺ

Veja, a seguir, um diagrama das entidades e atributos para a aplicação de vídeo:

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

Observação: Se você quiser criar as tabelas, poderá executar os comandos no script


buildtab.sql no SQL Developer. Se você quiser eliminar as tabelas, poderá executar os
comandos no script dropvid.sql no SQL Developer. Em seguida, é possível executar os
comandos no script buildvid.sql no SQL Developer para criar e preencher as tabelas.
Todos os três scripts sql podem ser encontrados na pasta D:\labs\sql1\labs.
• Se você usar o script buildtab.sql para criar as tabelas, comece pela etapa 4.
• Se você usar o script dropvid.sql para remover as tabelas de vídeo, comece pela
etapa 1.
• Se você usar o script buildvid.sql para criar e preencher as tabelas, comece pela
etapa 6(b).
Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 14
Faculdade Impacta Tecnologia

Exercícios Adicionais: Estudo de Caso (continuação)

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.

a. Nome da tabela: MEMBER


Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

Column_ MEMBER_ LAST_ FIRST_NAME ADDRESS CITY PHONE JOIN


Name ID NAME _
DATE
Key PK
Type
Null/ NN,U NN NN
Unique
Default System
Value Date
Data NUMBER VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 DATE
Type
Length 10 25 25 100 30 15
s a
) h a
o m
b. Nome da tabela: TITLE
o k ฺc ideฺ
tlo t GuRELEASE_
DESCRIPTION RATING ou CATEGORY
Column_
Name
TITLE_ID TITLE
a @ u d en DATE
Key PK
c u nh is St
Type
l t e rฺ e th
Null/ NN,U NN
(NN a
w t o us
Unique
Check v e ira nse G, PG, R, DRAMA,
l i
O e lic e NC17, NR COMEDY,
a
nh rabl ACTION,
C u f e CHILD,
r
lte trans SCIFI,
a
W on- DOCUMEN
TARY
n
Data Type NUMBER VARCHAR2 VARCHAR2 VARCHAR2 VARCHAR2 DATE

Length 10 60 400 4 20

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 15


Faculdade Impacta Tecnologia

Exercícios Adicionais: Estudo de Caso (continuação)

c. Nome da tabela: TITLE_COPY


Column COPY_ID TITLE_ID STATUS
Name
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

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

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 16


Faculdade Impacta Tecnologia

Exercícios Adicionais: Estudo de Caso (continuação)

e. Nome da tabela: RESERVATION


Column RES_ MEMBER_ TITLE_
Name DATE ID ID
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

Key PK PK,FK1 PK,FK2


Type
Null/ NN,U NN,U NN
Unique
FK Ref MEMBER TITLE
Table
FK Ref MEMBER_ID TITLE_ID
Column
Data Type DATE NUMBER NUMBER
Length 10 10
s a
) h a
o m
2. Verifique se a tabela foi criada corretamente por meio do Connections Navigator
o k eฺ
ฺc noidSQL
u
utlo nt G
Developer.
o
@ tude
h a
n is S
ฺ c
r e thu
l t e
( 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

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 17


Faculdade Impacta Tecnologia

Exercícios Adicionais: Estudo de Caso (continuação)

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ฺ

cache dos valores. Dê um nome à sequência MEMBER_ID_SEQ.

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.

c. Verifique a existência das sequências por meio do Connections Navigator no SQL


Developer.

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.

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 18


Faculdade Impacta Tecnologia

Exercícios Adicionais: Estudo de Caso (continuação)

Title Description Rating Category Release_date


Willie and All of Willie’s friends make G CHILD 05-OCT-1995
Christmas Too a Christmas list for Santa,
but Willie has yet to add his
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

own wish list.


Alien Again Yet another installation of R SCIFI 19-MAY-1995
science fiction history. Can
the heroine save the planet
from the alien life form?
The Glob A meteor crashes near a NR SCIFI 12-AUG-1995
small American town and
unleashes carnivorous goo
in this classic.
My Day Off With a little luck and a lot of PG COMEDY 12-JUL-1995
ingenuity, a teenager skips
school for a day in New
s a
York.
)h a
Miracles on Ice A six-year-old has doubts PG DRAMA m
12-SEP-1995
co ideฺ
about Santa Claus, but she k ฺ
discovers that miracles
u t loo t Gu
really do exist.
@ o en 01-JUN-1995
Soda Gang After discovering a cache of NR a u
ACTION d
drugs, a young couple find
c u nh is St
themselves pitted against a
l t e rฺ e th
vicious gang.
( w a
t o us
e
b. Adicione dados à tabelavMEMBER.ira nSalvese as instruções inseridas em um script com o
l i
O e liExecute
nome lab_apcs_4b.sql. e
c comandos no script. Certifique-se de usar a
sequência para h a
n rab
adicionar los números dos sócios.
C sfeu
First_er
a
Namel t t r n
aLast_Name Address City Phone Join_Date
WCarmen n -
no Velasquez 283 King
Street
Seattle 206-899-6666 08-MAR-1990

LaDoris Ngao 5 Modrany Bratislava 586-355-8882 08-MAR-1990

Midori Nagayama 68 Via Sao Paolo 254-852-5764 17-JUN-1991


Centrale
Mark Quick-to-See 6921 King Lagos 63-559-7777 07-APR-1990
Street
Audry Ropeburn 86 Chu Street Hong Kong 41-559-87 18-JAN-1991

Molly Urguhart 3035 Laurier Quebec 418-542-9988 18-JAN-1991

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 19


Faculdade Impacta Tecnologia

Exercícios Adicionais: Estudo de Caso (continuação)

c. Adicione as seguintes cópias de filmes à tabela TITLE_COPY:


Observação: Utilize os números em TITLE_ID para este exercício.
Title Copy_Id Status Title Copy_Id
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

Willie and 1 AVAILABLE Willie and 1


Christmas Too Christmas Too
Alien Again 1 AVAILABLE Alien Again 1

2 RENTED 2

The Glob 1 AVAILABLE The Glob 1

My Day Off 1 AVAILABLE My Day Off 1

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

97 1 106 4 days ago 2 days ago

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 20


Faculdade Impacta Tecnologia

Exercícios Adicionais: Estudo de Caso (continuação)

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ฺ

Observação: Os resultados podem variar.

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

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 21


Faculdade Impacta Tecnologia

Exercícios Adicionais: Estudo de Caso (continuação)

7. Faça uma modificação em uma das tabelas.

a. Execute o script lab_apcs_7a.sql localizado na pasta D:\labs\sql1\labs,


para adicionar a coluna PRICE à tabela TITLE, para registrar o preço de aquisição do
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

vídeo. Verifique as modificações.

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.

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 22


Faculdade Impacta Tecnologia

Exercícios Adicionais: Estudo de Caso (continuação)

8. Crie um relatório com o histórico de aluguéis de vídeos de cada cliente. Certifique-se de


incluir o nome do cliente, os filmes alugados, as datas dos aluguéis e a duração dos aluguéis.
Calcule o número de aluguéis de todos os clientes durante o período que consta no relatório.
Salve os comandos que geram o relatório em um arquivo de script com o nome
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

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

Oracle Database 11g: Fundamentos de SQL I Exercícios Adicionais - 23


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ฺ

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

Exercícios Adicionais: Soluções

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.

1. O departamento de RH precisa localizar os dados de todos os funcionários que foram


Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

contratados a partir de 1997.


SELECT *
FROM employees
WHERE job_id = 'ST_CLERK'
AND hire_date > '31-DEC-1997';

2. O departamento de RH precisa de um relatório dos funcionários que ganham comissão.


Mostre o sobrenome, o cargo, o salário e a comissão desses funcionários. Organize os dados
por salário em ordem descendente.
SELECT last_name, job_id, salary, commission_pct
s a
FROM employees
) h a
WHERE commission_pct IS NOT NULL
o m
ORDER BY salary DESC;
o k ฺc ideฺ
u
3. Para fins orçamentários, o departamento de RH precisa de um relatórioo utlo sobret G
os aumentos
estimados. O relatório deve exibir os funcionários que não a @
ganham u d en mas que
comissão,
nh is St
obtiveram um aumento de 10% no salário (saláriosuarredondados).
c
l t e rฺaftere ath10% raise is '
SELECT 'The salary of '||last_name||'
|| ROUND(salary*1.10) ( w a salary"
"New o
t us
FROM employees
v e ira nse
WHERE commission_pct liIS NULL; e
O l i c
u nhdosa funcionários
a b le e seus respectivos tempos de serviço. Coloque os
4. Crie um relatório
e r
sobrenomes
Cde todoss f eosrfuncionários juntamente com o total de anos e meses de serviço que
t r an Organize o relatório pelo tempo de serviço de cada um. O funcionário
alját completaram.
Weles
comn oo
-
n tempo de serviço deve aparecer em primeiro lugar na lista.
maior
SELECT last_name,
TRUNC(MONTHS_BETWEEN(SYSDATE, hire_date) / 12) YEARS,
TRUNC(MOD(MONTHS_BETWEEN(SYSDATE, hire_date), 12)) MONTHS
FROM employees
ORDER BY years DESC, MONTHS desc;

Oracle Database 11g: Fundamentos de SQL I Soluções dos Exercícios Adicionais - 2


Faculdade Impacta Tecnologia

Exercícios Adicionais: Soluções (continuação)

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ฺ

WHERE SUBSTR(last_name, 1,1) IN ('J', 'K', 'L', 'M');

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

Oracle Database 11g: Fundamentos de SQL I Soluções dos Exercícios Adicionais - 3


Faculdade Impacta Tecnologia

Exercícios Adicionais: Soluções (continuação)

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.

a. Digite 1800 em location_id, quando solicitado.


SELECT d.department_name, d.location_id, e.last_name, e.job_id, e.salary
FROM employees e, departments d
WHERE e.department_id = d.department_id
AND d.location_id = &location_id;

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;

Oracle Database 11g: Fundamentos de SQL I Soluções dos Exercícios Adicionais - 4


Faculdade Impacta Tecnologia

Exercícios Adicionais: Soluções (continuação)

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;

Oracle Database 11g: Fundamentos de SQL I Soluções dos Exercícios Adicionais - 5


Faculdade Impacta Tecnologia

Exercícios Adicionais: Soluções (continuação)

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(*)

n a maior quantidade de funcionários:


b. tenha
SELECT d.department_id, d.department_name, COUNT(*)
FROM departments d JOIN employees e
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);

Oracle Database 11g: Fundamentos de SQL I Soluções dos Exercícios Adicionais - 6


Faculdade Impacta Tecnologia

Exercícios Adicionais: Soluções (continuação)

c. tenha a menor quantidade de funcionários:


SELECT d.department_id, d.department_name, COUNT(*)
FROM departments d JOIN employees e
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

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');

Oracle Database 11g: Fundamentos de SQL I Soluções dos Exercícios Adicionais - 7


Faculdade Impacta Tecnologia

Exercícios Adicionais: Soluções de Estudo de Caso

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.

a. Nome da tabela: MEMBER


Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

CREATE TABLE member

(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',

c. Nome da tabela: TITLE_COPY


CREATE TABLE title_copy
(copy_id NUMBER(10),
title_id NUMBER(10)
CONSTRAINT title_copy_title_if_fk REFERENCES title(title_id),
status VARCHAR2(15)
CONSTRAINT title_copy_status_nn NOT NULL
CONSTRAINT title_copy_status_ck CHECK (status IN
('AVAILABLE', 'DESTROYED','RENTED', 'RESERVED')),
CONSTRAINT title_copy_copy_id_title_id_pk
PRIMARY KEY (copy_id, title_id));

Oracle Database 11g: Fundamentos de SQL I Soluções dos Exercícios Adicionais - 8


Faculdade Impacta Tecnologia

Exercícios Adicionais: Soluções de Estudo de Caso (continuação)

d. Nome da tabela: RENTAL


CREATE TABLE rental
(book_date DATE DEFAULT SYSDATE,
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

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

Oracle Database 11g: Fundamentos de SQL I Soluções dos Exercícios Adicionais - 9


Faculdade Impacta Tecnologia

Exercícios Adicionais: Soluções de Estudo de Caso (continuação)

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ฺ

cache dos valores. Dê um nome à sequência MEMBER_ID_SEQ.


CREATE SEQUENCE member_id_seq
START WITH 101
NOCACHE;

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

Oracle Database 11g: Fundamentos de SQL I Soluções dos Exercícios Adicionais - 10


Faculdade Impacta Tecnologia

Exercícios Adicionais: Soluções de Estudo de Caso (continuação)

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ฺ

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.
INSERT INTO title(title_id, title, description, rating,
category, release_date)
VALUES (title_id_seq.NEXTVAL, 'Willie and Christmas Too',
'All of Willie''s friends make a Christmas list for
Santa, but Willie has yet to add his own wish list.',
'G', 'CHILD', TO_DATE('05-OCT-1995','DD-MON-YYYY'))
/
INSERT INTO title(title_id , title, description, rating,
s a
VALUES
category, release_date)
(title_id_seq.NEXTVAL, 'Alien Again', 'Yet another ) h a
o m
installment of science fiction history. Can the
o k ฺc ideฺ
heroine save the planet from the alien life form?',
u
utlo nt G
'R', 'SCIFI', TO_DATE( '19-MAY-1995','DD-MON-YYYY'))
o
/
h a
INSERT INTO title(title_id, title, description, rating,
@ tude
c u n is S
category, release_date)
t e ฺ
r e th
VALUES
l
(title_id_seq.NEXTVAL, 'The Glob', 'A meteor crashes
a us
( w
near a small American town and unleashes carnivorous
t o
v e ira nse
goo in this classic.', 'NR', 'SCIFI',
li lice
TO_DATE( '12-AUG-1995','DD-MON-YYYY'))
O
nha rable
/
INSERT INTO title(title_id, title, description, rating,
u
l t e r C nsfecategory, release_date)
VALUES
a
(title_id_seq.NEXTVAL, 'My Day Off', 'With a little
Wa on-tr luck and a lot ingenuity, a teenager skips school for
n a day in New York.', 'PG', 'COMEDY',
TO_DATE( '12-JUL-1995','DD-MON-YYYY'))
/
INSERT INTO title(title_id, title, description, rating,
category, release_date)
VALUES (title_id_seq.NEXTVAL, 'Miracles on Ice', 'A six-year-old has
doubts about Santa Claus, but she discovers that miracles really do
exist.', 'PG', 'DRAMA',
TO_DATE('12-SEP-1995','DD-MON-YYYY'))
/
INSERT INTO title(title_id, title, description, rating,
category, release_date)
VALUES (title_id_seq.NEXTVAL, 'Soda Gang', 'After discovering a cache
of drugs, a young couple find themselves pitted against a vicious gang.',
'NR', 'ACTION', TO_DATE('01-JUN-1995','DD-MON-YYYY'))
/

Oracle Database 11g: Fundamentos de SQL I Soluções dos Exercícios Adicionais - 11


Faculdade Impacta Tecnologia

...
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

Oracle Database 11g: Fundamentos de SQL I Soluções dos Exercícios Adicionais - 12


Faculdade Impacta Tecnologia

Exercícios Adicionais: Soluções de Estudo de Caso (continuação)

b. Adicione dados à tabela MEMBER. Coloque as instruções inseridas em um script com o


nome lab_apcs_4b.sql. Execute os comandos no script. Certifique-se de usar a
sequência para adicionar os números dos sócios.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

SET VERIFY OFF


INSERT INTO member(member_id, last_name, first_name,
address, city, phone, join_date)
VALUES (member_id_seq.NEXTVAL, 'Carmen', 'Velasquez',
'283 King Street', 'Seattle', '206-899-6666', TO_DATE('08-MAR-
1990',
'DD-MM-YYYY'))
/
INSERT INTO member(member_id, last_name, first_name,
address, city, phone, join_date)
VALUES (member_id_seq.NEXTVAL, 'LaDoris', 'Ngao',
'5 Modrany', 'Bratislava', '586-355-8882', TO_DATE('08-MAR-1990',
s a
'DD-MM-AAAA'))
) h a
/
o m
INSERT INTO member(member_id, last_name, first_name,
o k ฺc ideฺ
u
utlo nt G
address, city, phone, join_date)
VALUES (member_id_seq.NEXTVAL, 'Midori', 'Nagayama',
o
@ tude
'68 Via Centrale', 'Sao Paolo', '254-852-5764', TO_DATE('17-JUN-
1991', h a
n is S
'DD-MM-AAAA')) ฺ c
r e thu
l t e
us
/
( w a
ira nse t o
INSERT INTO member(member_id, last_name, first_name,
address, city, phone, join_date)
v e
li lice
VALUES (member_id_seq.NEXTVAL, 'Mark', 'Quick-to-See',
O
nha rable
'6921 King Way', 'Lagos', '63-559-7777', TO_DATE('07-APR-1990',
u
'DD-MM-AAAA'))
/
l t e r C nsfe
a
Wa on-tr
INSERT INTO member(member_id, last_name, first_name,
address, city, phone, join_date)
n
VALUES (member_id_seq.NEXTVAL, 'Audry', 'Ropeburn',
'86 Chu Street', 'Hong Kong', '41-559-87', TO_DATE('18-JAN-1991',
'DD-MM-AAAA'))
/
INSERT INTO member(member_id, last_name, first_name,
address, city, phone, join_date)
VALUES (member_id_seq.NEXTVAL, 'Molly', 'Urguhart',
'3035 Laurier', 'Quebec', '418-542-9988', TO_DATE('18-JAN-1991',
'DD-MM-YYYY'));
/
COMMIT
SET VERIFY ON

Oracle Database 11g: Fundamentos de SQL I Soluções dos Exercícios Adicionais - 13


Faculdade Impacta Tecnologia

Exercícios Adicionais: Soluções de Estudo de Caso (continuação)

c. Adicione as seguintes cópias de filmes à tabela TITLE_COPY:


Observação: Utilize os números em TITLE_ID para este exercício.
INSERT INTO title_copy(copy_id, title_id, status)
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

VALUES (1, 92, 'AVAILABLE')


/
INSERT INTO title_copy(copy_id, title_id, status)
VALUES (1, 93, 'AVAILABLE')
/
INSERT INTO title_copy(copy_id, title_id, status)
VALUES (2, 93, 'RENTED')
/
INSERT INTO title_copy(copy_id, title_id, status)
VALUES (1, 94, 'AVAILABLE')
/
INSERT INTO title_copy(copy_id, title_id, status)
s a
VALUES
/
(1, 95, 'DISPONÍVEL')
) h a
o m
INSERT INTO title_copy(copy_id, title_id,status)
o k ฺc ideฺ
tlo t Gu
VALUES (2, 95, 'AVAILABLE')
/
o u
INSERT INTO title_copy(copy_id, title_id,status)
a @ u d en
VALUES (3, 95, 'RENTED')
c u nh is St
/
INSERT l t e rฺ e th
INTO title_copy(copy_id, title_id,status)
VALUES (1, 96, 'AVAILABLE')
( w a
t o us
/
v e ira ntitle_id,status)
se
INSERT l i
INTO title_copy(copy_id,
O e lic e
VALUES
a
(1, 97, 'AVAILABLE')
n rabl
h
/ u
l t e r C nsfe
a
Wa on-tr
n

Oracle Database 11g: Fundamentos de SQL I Soluções dos Exercícios Adicionais - 14


Faculdade Impacta Tecnologia

Exercícios Adicionais: Soluções de Estudo de Caso (continuação)

d. Adicione os seguintes aluguéis à tabela RENTAL:


Observação: O número do título pode variar, dependendo do número sequencial.
INSERT INTO rental(title_id, copy_id, member_id,
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

book_date, exp_ret_date, act_ret_date)


VALUES (92, 1, 101, sysdate-3, sysdate-1, sysdate-2)
/
INSERT INTO rental(title_id, copy_id, member_id,
book_date, exp_ret_date, act_ret_date)
VALUES (93, 2, 101, sysdate-1, sysdate-1, NULL)
/
INSERT INTO rental(title_id, copy_id, member_id,
book_date, exp_ret_date, act_ret_date)
VALUES (95, 3, 102, sysdate-2, sysdate, NULL)
/
INSERT INTO rental(title_id, copy_id, member_id,
s a
book_date, exp_ret_date,act_ret_date)
VALUES (97, 1, 106, sysdate-4, sysdate-2, sysdate-2) ) h a
o m
/
o k ฺc ideฺ
COMMIT
u
/
o utlo nt G
h a @ tude
5. Crie uma view com o nome TITLE_AVAIL para mostrar n istítulos
os S dos filmes, a
c u
rฺ estimado,
disponibilidade de cada cópia e a data de retorno
l t e e thcaso estejam alugados. Consulte
( w a
todas as linhas na view. Organize os resultados
t o us
por título.

Observação: Os resultados podem


v e ira variar.
n se
l i e
CREATE VIEW title_avail
h a O AS
l e lic
SELECT
C un tfeJOIN
t.title,
r ab title_copy
c.copy_id, c.status, r.exp_ret_date
FROM r title
ON lte t.title_id n s c

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;

Oracle Database 11g: Fundamentos de SQL I Soluções dos Exercícios Adicionais - 15


Faculdade Impacta Tecnologia

Exercícios Adicionais: Soluções de Estudo de Caso (continuação)

6. Faça alterações nos dados das tabelas.

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

a. Execute o script lab_apcs_7a.sql localizado na pasta D:\labs\sql1\labs,


para adicionar a coluna PRICE à tabela TITLE, para registrar o preço de aquisição do
vídeo. Verifique as modificações.
ALTER TABLE title
ADD (price NUMBER(8,2));

DESCRIBE title

Oracle Database 11g: Fundamentos de SQL I Soluções dos Exercícios Adicionais - 16


Faculdade Impacta Tecnologia

Exercícios Adicionais: Soluções de Estudo de Caso (continuação)

b. Crie um script com o nome lab_apcs_7b.sql contendo instruções de atualização


para atualizar cada vídeo com o preço de acordo com a lista fornecida. Execute os
comandos no script.
Unauthorized reproduction or distribution prohibitedฺ Copyright© 2013, Oracle and/or its affiliatesฺ

Observação: Utilize os números em TITLE_ID para este exercício.


SET ECHO OFF
SET VERIFY OFF
UPDATE title
SET price = &price
WHERE title_id = &title_id;
SET VERIFY OFF
SET ECHO OFF

8. Crie um relatório com o histórico de aluguéis de vídeos de cada cliente. Certifique-se de


incluir o nome do cliente, os filmes alugados, as datas dos aluguéis e a duração dos aluguéis.
s
Calcule o número de aluguéis de todos os clientes durante o período que consta no relatório. a
)
Salve os comandos que geram o relatório em um arquivo de script com o nomeh a
o m
lab_apcs_8.sql.
Observação: Os resultados podem variar. o k ฺc ideฺ
u
o utlo nt G
de
SELECT m.first_name||' '||m.last_name MEMBER, t.title,
r.book_date, r.act_ret_date - r.book_date
h a @ DURATION
t u
FROM member m
c u n is S
JOIN rental r
t e ฺ
r e th
r.member_id = m.member_id a l us
ON
( w t o
JOIN title t
v e ira nse
ON
li lice
r.title_id = t.title_id
ORDER BY member; O
u nha rable
l t e r C nsfe
a
Wa on-tr
n

Oracle Database 11g: Fundamentos de SQL I Soluções dos Exercícios Adicionais - 17


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

Você também pode gostar