de SQL I
m y
Guia do Aluno • Volume II
d e
c a
e A
c l
r a
O ly
l & On
D64258BP10
Edição 1.0
n a e
Outubro de 2011
t e r U s
D74863
I n
c l e
r a
O
Autores Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos
reservados.
Salome Clement
Isenção de Responsabilidade
Brian Pottle
Puja Singh Este documento contém informações de propriedade da Oracle Corporation e está
protegido pela legislação de direitos autorais e outras leis de propriedade intelectual,
Revisores e podendo ser copiado e impresso somente para uso individual em um curso de
treinamento Oracle. O documento não pode ser modificado nem alterado de forma
Colaboradores Técnicos alguma. Exceto em situações que constituam "uso justo" de acordo com a legislação
de direitos autorais, não será permitido utilizar, compartilhar, descarregar, carregar,
Anjulaponni Azhagulekshmi
copiar, imprimir, executar, reproduzir, publicar, licenciar, divulgar, transmitir nem
Clair Bennett distribuir este documento - total ou parcialmente - sem a expressa autorização da
Zarko Cesljas Oracle.
Yanti Chang
Gerlinde Frenzen As informações contidas neste documento estão sujeitas a alterações sem aviso
prévio. Se você encontrar algum problema no documento, envie à Oracle Corporation
Steve Friedberg ou à Oracle do Brasil Sistemas Ltda. uma descrição de tal problema por escrito.
Joel Goodman Oracle University, 500 Oracle Parkway, Redwood Shores, California 94065 USA. A
Nancy Greenberg Oracle Corporation não garante que este documento esteja isento de erros.
Pedro Neves
Aviso de Direitos Restritos
Manish Pawar
Surya Rekha Se esta documentação for entregue / distribuída ao Governo dos Estados Unidos ou
Helen Robertson a qualquer outra parte que a licencie ou utilize em nome daquele governo, a seguinte
Lauran Serhal legenda será aplicável:
Hilda Simon U.S. GOVERNMENT RIGHTS
Tulika Srivastava The U.S. Government’s rights to use, modify, reproduce, release, perform, display, or
disclose these training materials are restricted by the terms of the applicable Oracle
Redatora license agreement and/or the applicable U.S. Government contract.
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Conteúdo
I Introdução
Objetivos da Lição I-2
Agenda de Lições I-3
Objetivos do Curso I-4
Agenda de Lições I-5
Apêndices Usados no Curso I-7
Agenda de Lições I-8
Oracle Database 11g: Áreas de Foco I-9
Oracle Database 11g I-10
Oracle Fusion Middleware I-12
Oracle Enterprise Manager Grid Control I-13
Oracle BI Publisher I-14
Agenda de Lições I-15
Sistemas de Gerenciamento de Banco de Dados Relacional e de Objeto
Relacional I-16
m y
Armazenamento de Dados em Tipos de Mídia Diferentes I-17
d e
Conceito de Banco de Dados Relacional I-18
Definição de um Banco de Dados Relacional I-19
c a
Modelos de Dados I-20
e
Modelo de Relacionamento entre Entidades I-21 A
c l
Convenções de Modelagem de Relacionamentos entre Entidades I-23
r a
Relacionando Várias Tabelas I-25
Terminologia de Banco de Dados Relacional I-27
Agenda de Lições I-29
O ly
Instruções SQL I-31
l & On
Usando SQL para Consultar Seu Banco de Dados I-30
n a e
Ambientes de Desenvolvimento para SQL I-32
t e r
Agenda de Lições I-33
U s
Esquema de Human Resources (HR) I-34
I n
Tabelas Usadas no Curso I-35
c l e
Agenda de Lições I-36
Documentação do Oracle Database I-37
iii
1 Recuperando dados por meio da instrução SQL SELECT
Objetivos 1-2
Agenda de Lições 1-3
Recursos das 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
Padrões de cabeçalho de coluna 1-9
Agenda de Lições 1-10
Expressões aritméticas 1-11
Usando operadores aritméticos 1-12
Precedência de operadores 1-13
Definindo um valor nulo 1-14
Valores nulos em expressões aritméticas 1-15
Agenda de Lições 1-16
Definindo um apelido de coluna 1-17
Usando apelidos de coluna 1-18
Agenda de Lições 1-19
m y
Operador de concatenação 1-20
d e
Strings de caracteres de literal 1-21
Usando strings de caracteres de literal 1-22
ca
Operador de cotação (q) alternativo 1-23
Linhas duplicadas 1-24
e A
Agenda de Lições 1-25
c l
Usando o comando DESCRIBE 1-27 r a
Exibindo a Estrutura da Tabela 1-26
Questionário 1-28
O ly
Sumário 1-29
l & On
Exercício 1: Visão Geral 1-30
n a e
2
Objetivos 2-2
t e r U s
Restringindo e Classificando Dados
I n
Agenda de Lições 2-3
Limitando linhas com uma seleção 2-4
l e
Limitando as linhas selecionadas 2-5
c
r aUsando a cláusula WHERE 2-6
Strings de caracteres e datas 2-7
iv
Usando operadores de comparação 2-9
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 de Lições 2-19
Regras de precedência 2-20
Agenda de Lições 2-22
Usando a cláusula ORDER BY 2-23
Classificando 2-24
Agenda de Lições 2-26
Variáveis de Substituição 2-27
Usando a variável de substituição E comercial simples 2-29
Valores de caracteres e datas com variáveis de substituição 2-31
Especificando nomes de coluna, expressões e texto 2-32
m y
Usando a variável de substituição E comercial duplo 2-33
d e
Agenda de Lições 2-34
Usando o comando DEFINE 2-35
c a
Usando o comando VERIFY 2-36
e A
Questionário 2-37
Sumário 2-38
c l
r a
Exercício 2: Visão Geral 2-39
3 O ly
Usando funções de uma única linha para Personalizar a Saída
Objetivos 3-2
l & On
Funções SQL 3-4
n a e
Agenda de Lições 3-3
e r s
Dois tipos de funções SQL 3-5
t U
Funções de uma única linha 3-6
I n
Agenda de Lições 3-8
c l e
Funções de caracteres 3-9
Funções de conversão de capitalização 3-11
v
Agenda de Lições 3-15
Funções de números 3-16
Usando a função ROUND 3-17
Usando a função TRUNC 3-18
Usando a função MOD 3-19
Agenda de Lições 3-20
Trabalhando com datas 3-21
Formato de datas RR 3-22
Usando a função SYSDATE 3-24
Aritmética com datas 3-25
Usando operadores aritméticos com datas 3-26
Agenda de Lições 3-27
Funções de manipulação de datas 3-28
Usando funções de datas 3-29
Usando as funções ROUND e TRUNC com datas 3-30
Questionário 3-31
Sumário 3-32
Exercício 3: Visão Geral 3-33
e
Conversão explícita de tipo de dados 4-7 A
Agenda de Lições 4-10
c l
r a
Usando a função TO_CHAR com datas 4-11
Elementos do modelo de formato de data 4-12
O ly
Usando a função TO_CHAR com datas 4-16
& On
Usando a função TO_CHAR com números 4-17
l
n a e
Usando as funções TO_NUMBER e TO_DATE 4-20
Usando a função TO_CHAR e TO_DATE com o formato de data RR 4-22
e
Agenda de Lições 4-23
t r
Aninhando funções 4-24
U s
I n
Aninhando Funções: Exemplo 1 4-25
c l e
Aninhando Funções: Exemplo 2 4-26
Agenda de Lições 4-27
vi
Usando a função NVL2 4-31
Usando a função NULLIF 4-32
Usando a função COALESCE 4-33
Agenda de Lições 4-36
Expressões condicionais 4-37
Expressão CASE 4-38
Usando a expressão CASE 4-39
Função DECODE 4-40
Usando a função DECODE 4-41
Questionário 4-43
Sumário 4-44
Exercício 4: Visão Geral 4-45
e A
Agenda de Lições 5-12
Criando grupos de dados 5-13
c l
r a
Criando grupos de dados: Sintaxe da cláusula GROUP BY 5-14
O ly
Usando a cláusula GROUP BY 5-15
Agrupando por Mais de Uma Coluna 5-17
l & On
Usando a cláusula GROUP BY em várias colunas 5-18
a e
Consultas ilegais usando funções de grupo 5-19
n
t e r
Restringindo resultados de grupo 5-21
s
Restringindo os resultados de grupo com a cláusula HAVING 5-22
U
I n
Usando a cláusula HAVING 5-23
Agenda de Lições 5-25
c l e
Aninhando funções de grupo 5-26
Questionário 5-27
r a Sumário 5-28
vii
6 Exibindo Dados de Várias Tabelas Usando Joins
Objetivos 6-2
Agenda de Lições 6-3
Obtendo Dados de Várias Tabelas 6-4
Tipos de Joins 6-5
Unindo tabelas com a sintaxe SQL:1999 6-6
Qualificando Nomes de Coluna Ambíguos 6-7
Agenda de Lições 6-8
Criando joins natural 6-9
Recuperando registros com joins natural 6-10
Criando joins com a cláusula USING 6-11
Unindo nomes de colunas 6-12
Recuperando registros com a cláusula USING 6-13
Usando apelidos de tabela com a cláusula USING 6-14
Criando Joins com a Cláusula ON 6-15
Recuperando registros com a cláusula ON 6-16
Criando three-way joins com a cláusula ON 6-17
Aplicando condições adicionais em uma join 6-18
Agenda de Lições 6-19
Unindo uma Tabela a Ela Mesma 6-20
m y
Self-Joins usando a cláusula ON 6-21
d e
Agenda de Lições 6-22
Não-equijoins 6-23
c a
Recuperando Registros com Não-equijoins 6-24
e A
Agenda de Lições 6-25
c l
Retornando registros sem correspondência direta usando OUTER joins 6-26
r a
Joins INNER comparadas com OUTER 6-27
LEFT OUTER JOIN 6-28
RIGHT OUTER JOIN 6-29 O ly
FULL OUTER JOIN 6-30
l & On
Agenda de Lições 6-31
n a e
t e r
Produtos Cartesianos 6-32
s
Gerando um Produto Cartesiano 6-33
U
I n
Criando joins cruzadas 6-34
Questionário 6-35
l e
Sumário 6-36
c
Exercício 6: Visão Geral 6-37
r a
O
viii
7 Usando subconsultas para solucionar consultas
Objetivos 7-2
Agenda de Lições 7-3
Usando uma subconsulta para solucionar um problema 7-4
Sintaxe de subconsulta 7-5
Usando uma subconsulta 7-6
Diretrizes para usar subconsultas 7-7
Tipos de subconsultas 7-8
Agenda de Lições 7-9
Subconsultas de uma única linha 7-10
Executando as subconsultas de uma única linha 7-11
Usando funções de grupo em uma subconsulta 7-12
Cláusula HAVING com subconsultas 7-13
O que está errado com esta instrução? 7-14
Nenhuma linha retornada pela consulta interna 7-15
Agenda de Lições 7-16
Subconsultas de várias linhas 7-17
Usando o operador ANY em subconsultas de várias linhas 7-18
Usando o operador ALL em subconsultas de várias linhas 7-19
Usando o Operador EXISTS 7-20
m y
Agenda de Lições 7-21
d e
Valores nulos em uma subconsulta 7-22
Questionário 7-24
c a
Sumário 7-25
Exercício 7: Visão Geral 7-26
e A
c l
8
a
Usando os operadores de conjunto
Objetivos 8-2 r
Agenda de Lições 8-3
O ly
l & On
Operadores de conjunto 8-4
Diretrizes do operador de conjunto 8-5
n a e
O servidor Oracle e os Operadores Set 8-6
t e r
Agenda de Lições 8-7
U s
Tabelas usadas nesta lição 8-8
I n
Agenda de Lições 8-12
Operador UNION 8-13
c l e
Uso do operador UNION 8-14
ix
Operador INTERSECT 8-19
Uso do operador INTERSECT 8-20
Agenda de Lições 8-21
Operador MINUS 8-22
Uso do operador MINUS 8-23
Agenda de Lições 8-24
Correspondência às instruções SELECT 8-25
Correspondência à instrução SELECT: Exemplo 8-26
Agenda de Lições 8-27
Uso da cláusula ORDER BY nas operações de conjunto 8-28
Questionário 8-29
Sumário 8-30
Exercício 8: Visão Geral 8-31
9 Manipulando dados
Objetivos 9-2
Agenda de Lições 9-3
Data Manipulation Language 9-4
Adicionando uma nova linha a uma tabela 9-5
Sintaxe da instrução INSERT 9-6
m y
Inserindo novas linhas 9-7
d e
Inserindo linhas com valores nulos 9-8
Inserindo valores especiais 9-9
ca
Inserindo valores de data e horário específicos 9-10
e A
Criando um script 9-11
Copiando linhas de outra tabela 9-12
c l
Agenda de Lições 9-13
r a
O ly
Alterando dados em uma tabela 9-14
Sintaxe da instrução UPDATE 9-15
& On
Atualizando linhas em uma tabela 9-16
l
n a e
Atualizando duas colunas com uma subconsulta 9-17
Atualizando linhas baseadas em outra tabela 9-18
e
Agenda de Lições 9-19
t r U s
Removendo uma linha de uma tabela 9-20
I n
Instrução DELETE 9-21
c l e
Excluindo linhas de uma tabela 9-22
Excluindo linhas baseadas em outra tabela 9-23
x
Transações do banco de dados: início e fim 9-27
Vantagens das instruções COMMIT e ROLLBACK 9-28
Instruções explícitas do controle de transações 9-29
Efetuando rollback das alterações para um marcador 9-30
Processamento implícito de transações 9-31
Estado dos dados antes do COMMIT ou ROLLBACK 9-33
Estado dos dados depois do COMMIT 9-34
Efetuando commit de dados 9-35
Estado dos dados depois do ROLLBACK 9-36
Estado dos dados depois do ROLLBACK: Exemplo 9-37
Rollback no nível da instrução 9-38
Agenda de Lições 9-39
Consistência na leitura 9-40
Implementando consistência na leitura 9-41
Agenda de Lições 9-42
Cláusula FOR UPDATE em uma instrução SELECT 9-43
Cláusula FOR UPDATE: Exemplos 9-44
Questionário 9-46
Sumário 9-47
Exercício 9: Visão Geral 9-48
m y
d e
10 Usando instruções DDL para criar e gerenciar tabelas
Objetivos 10-2
ca
Agenda de Lições 10-3
e A
Objetos do banco de dados 10-4
Regras de nomeação 10-5
c l
Agenda de Lições 10-6
r
Instrução CREATE TABLE 10-7
a
O ly
Fazendo Referência a Tabelas de Outro Usuário 10-8
Opção DEFAULT 10-9
l & On
n a e
Criando tabelas 10-10
Agenda de Lições 10-11
e r
Tipos de dados 10-12
t U s
Tipos de dados datetime 10-14
I n
Agenda de Lições 10-15
c l e
Incluindo restrições 10-16
Diretrizes da restrição 10-17
xi
Restrição PRIMARY KEY 10-23
Restrição FOREIGN KEY 10-24
Restrição FOREIGN KEY: palavras-chave 10-26
Restrição CHECK 10-27
CREATE TABLE: Exemplo 10-28
Violando restrições 10-29
Agenda de Lições 10-31
Criando uma tabela usando uma subconsulta 10-32
Agenda de Lições 10-34
Instrução ALTER TABLE 10-35
Tabelas somente para leitura 10-36
Agenda de Lições 10-37
Eliminando uma tabela 10-38
Questionário 10-39
Sumário 10-40
Exercício 10: Visão Geral 10-41
e A
Criando uma view 11-8
Recuperando dados de uma view 11-11
c l
Modificando uma view 11-12
Criando uma view complexa 11-13r a
O ly
Regras para execução das operações DML em uma view 11-14
& On
Usando a cláusula WITH CHECK OPTION 11-17
l
n
Removendo uma view 11-20 a e
Negando operações DML 11-18
t e r
Agenda de Lições 11-22
U s
Exercício 11: visão geral da parte 1 11-21
I n
Sequências 11-23
c l e
Instrução CREATE SEQUENCE: Sintaxe 11-25
Criando uma sequência 11-26
r a
Pseudocolunas NEXTVAL e CURRVAL 11-27
Usando uma sequência 11-29
xii
Modificando uma sequência 11-31
Diretrizes para modificação de uma sequência 11-32
Agenda de Lições 11-33
Índices 11-34
Como são criados os índices? 11-36
Criando um índice 11-37
Diretrizes de criação de índice 11-38
Removendo um índice 11-39
Agenda de Lições 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
Sumário 11-45
Exercício 11: Visão Geral of Part 2 11-46
m y
Apêndice B: Descrição das Tabelas
d e
Apêndice C: Usando o SQL Developer
ca
Objetivos C-2
O que É o Oracle SQL Developer? C-3
e A
l
Especificações do SQL Developer C-4
c
r a
Interface do SQL Developer 1.5 C-5
Criando uma Conexão de Banco de Dados C-7
O ly
Navegando por Objetos de Banco de Dados C-10
l & On
Exibindo a Estrutura da Tabela C-11
Procurando Arquivos C-12
a e
Criando um Objeto de Esquema C-13
n
t e r U s
Criando uma Nova Tabela: Exemplo C-14
Usando a Planilha SQL C-15
I n
Executando Instruções SQL C-18
Salvando Scripts SQL C-19
c l e
Executando Arquivos de Script Salvos: Método 1 C-20
Executando Arquivos de Script Salvos: Método 2 C-21
xiii
Depurando Procedures e Funções C-25
Geração de Relatórios de Banco de Dados C-26
Criando um Relatório Definido pelo Usuário C-27
Mecanismos de Pesquisa e Ferramentas Externas C-28
Definindo Preferências C-29
Redefinindo o Layout do SQL Developer C-30
Sumário C-31
e A
Apêndice E: Usando o JDeveloper
c l
Objetivos E-2
Oracle JDeveloper E-3 r a
Database Navigator E-4 O ly
Criando Conexão E-5
l & On
Navegando por Objetos de Banco de Dados E-6
n a e
Executando Instruções SQL E-7
Compilando E-9
t e r U s
Criando Unidades de Programa E-8
I n
Executando uma Unidade de Programa E-10
c l e
Eliminando uma Unidade de Programa E-11
Janela Structure E-12
r a
Janela Editor E-13
Application Navigator E-14
xiv
Publicando Java em PL/SQL E-16
Como Posso Obter Mais Informações sobre o JDeveloper 11g? E-17
Sumário E-18
r
Índice
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
xv
m y
d e
ca
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
xvi
Apêndice A
Exercícios e Soluções
m y
d e
ca
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Índice
Exercícios para a Lição............................................................................................................. 4
Exercício I-1: Introdução ................................................................................................ 5
Soluções do Exercício I-1: Introdução............................................................................ 6
Exercícios para a Lição 1........................................................................................................ 12
Exercício 1-1: Recuperando dados usando a instrução SQL SELECT ........................ 13
Soluções do Exercício 1-1: Recuperando dados usando a instrução SQL SELECT.... 17
Exercícios para a Lição 2........................................................................................................ 20
Exercício 2-1: Restringindo e Classificando Dados ..................................................... 21
Soluções do Exercício 2-1: Restringindo e Classificando Dados................................. 25
Exercícios para a Lição 3........................................................................................................ 28
Exercício 3-1: Usando Funções de uma Única Linha para Personalizar o Resultado .. 29
Soluções do Exercício 3-1: Usando Funções de uma Única Linha para Personalizar
o Resultado................................................................................................................ 33
Exercícios para a Lição 4........................................................................................................ 36
Exercício 4-1: Usando Funções de Conversão e Expressões Condicionais ................. 37
Soluções do Exercício 4-1: Usando Funções de Conversão e Expressões Condicionais
....................................................................................................................................... 40
Exercícios para a Lição 5........................................................................................................ 42
Exercício 5-1: Gerando Relatórios de Dados Agregados Usando as Funções
de Grupo.................................................................................................................... 43
Soluções do Exercício 5-1: Gerando Relatórios de Dados Agregados Usando
m y
d e
as Funções de Grupo................................................................................................. 46
Exercícios para a Lição 6........................................................................................................ 49
Exercício 6-1: Exibindo Dados de Várias Tabelas Usando Joins................................. 50
Soluções do Exercício 6-1: Exibindo Dados de Várias Tabelas Usando Joins ............ 53 c a
A
Exercícios para a Lição 7........................................................................................................ 55
e
c l
Exercício 7-1: Usando Subconsultas para Solucionar Consultas ................................. 56
Soluções do Exercício 7-1: Usando Subconsultas para Solucionar Consultas ............. 59
r a
Exercícios para a Lição 8........................................................................................................ 61
Exercício 8-1: Usando os Operadores de Conjunto...................................................... 62
O ly
Soluções do Exercício 8-1: Usando os Operadores de Conjunto ................................. 64
l & On
Exercícios para a Lição 9........................................................................................................ 66
Exercício 9-1: Manipulando Dados .............................................................................. 67
n a e
Soluções do Exercício 9-1: Manipulando Dados.......................................................... 71
Exercícios para a Lição 10...................................................................................................... 75
t e r U s
Exercício 10-1: Usando Instruções DDL para Criar e Gerenciar Tabelas.................... 76
Soluções do Exercício 10-1: Usando Instruções DDL para Criar e Gerenciar Tabelas 78
I n
Exercícios para a Lição 11...................................................................................................... 81
Exercício 11-1: Criando Outros Objetos de Esquema .................................................. 82
l e
Soluções do Exercício 11-1: Criando Outros Objetos de Esquema.............................. 84
c
Exercícios do Apêndice F ....................................................................................................... 86
Alguns exercícios podem ser antecedidos pelas expressões “Se tiver tempo” ou “Se
quiser tomar parte em mais um desafio”. Faça esses exercícios apenas se tiver concluído
todos os outros exercícios no tempo proposto e deseja um desafio maior para suas
habilidades.
Observação
1) Todos os exercícios escritos usam o Oracle SQL Developer como ambiente de
desenvolvimento. Ainda que seja recomendável que você use o Oracle SQL
Developer, você também poderá usar o SQL*Plus disponível neste curso.
m y
2) Talvez a sequência de linhas recuperada do banco de dados seja diferente dos
d e
screenshots mostrados para as consultas.
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 4
Exercício I-1: Introdução
Este é o primeiro de vários exercícios deste curso. Se você precisar, as soluções podem
ser encontradas no fim deste exercício. Os exercícios destinam-se a abordar a maioria dos
tópicos que são apresentados na lição correspondente.
d e
Testando e Conectando Usando a Conexão com o Banco de Dados do Oracle SQL
Developer
c a
4) Teste a nova conexão.
e A
nova conexão.
c l
5) Se o status for Bem-sucedido, estabeleça a conexão com o banco de dados usando a
r a
Pesquisando as Tabelas no Connections Navigator
O ly
6) No Connections Navigator, visualize os objetos disponíveis no nó Tables. Verifique
& On
se as seguintes tabelas estão presentes:
l
a e
COUNTRIES
n
DEPARTMENTS
EMPLOYEES
JOB_GRADES
JOB_HISTORY
t e r U s
JOBS
LOCATIONS I n
l e
REGIONS
c
7) Navegue pela estrutura da tabela EMPLOYEES.
r a
8) Visualize os dados da tabela DEPARTMENTS.
O
Oracle Database: Fundamentos de SQL I A - 5
Soluções do Exercício I-1: Introdução
Iniciando o Oracle SQL Developer
1) Inicie o Oracle SQL Developer com o ícone SQL Developer no desktop.
a) Clique duas vezes no ícone SQL Developer no desktop.
m y
d e
c a
e A
c l
r a
Criando uma Nova Conexão com o Banco de Dados do Oracle SQL Developer
O ly
2) Para criar uma nova conexão com o banco de dados, no Connections Navigator,
& On
clique com o botão direito do mouse em Connections e selecione New Connection no
l
menu.
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 6
Soluções do Exercício I-1: Introdução (continuação)
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 7
Soluções do Exercício I-1: Introdução (continuação)
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
5) Se o status for Bem-sucedido, estabeleça a conexão com o banco de dados usando a
I
nova conexão.
n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 8
Soluções do Exercício I-1: Introdução (continuação)
Quando você criar uma conexão, será aberta automaticamente uma planilha SQL para
essa conexão.
m y
d e
c a
e A
c l
r a
O ly
l & On
a e
Pesquisando as Tabelas no Connections Navigator
n
t e r s
6) No Connections Navigator, visualize os objetos disponíveis no nó Tables. Verifique
se as seguintes tabelas estão presentes:
U
COUNTRIES
DEPARTMENTS
I n
l e
EMPLOYEES
c
JOB_GRADES
r aJOB_HISTORY
JOBS
O LOCATIONS
REGIONS
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
8) Visualize os dados da tabela DEPARTMENTS.
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 10
Soluções do Exercício I-1: Introdução (continuação)
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 11
Exercícios para a Lição 1
Neste exercício você escreverá consultas SELECT simples. As consultas abrangem a
maioria das cláusulas e operações SELECT que você aprendeu nesta lição.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 12
Exercício 1-1: Recuperando dados usando a instrução SQL
SELECT
Parte 1
Verdadeiro/Falso
Verdadeiro/Falso
m y
SELECT employee_id, last_name
sal x 12 ANNUAL SALARY
d e
FROM employees;
c a
Parte 2
e A
l
Observe os seguintes pontos antes de começar os exercícios:
c
•
a
Salve todos os arquivos do lab no seguinte local:
r
/home/oracle/labs/sql1/labs
• O ly
Digite suas instruções SQL em uma Planilha SQL. Para salvar um script no SQL
l & On
Developer, verifique se a planilha SQL está ativa e, no menu File, selecione Save
As para salvar a instrução SQL como um script
a e
lab_<lessonno>_<stepno>.sql. Quando você estiver modificando um script
n
t e r
arquivo diferente.
U s
existente, assegure-se de usar a opção Save As para salvá-lo com um nome de
•
I n
Para executar a consulta, clique no ícone Execute Statement da planilha SQL.
Alternativamente, você pode pressionar [F9]. Para instruções DML e DDL, use o
•c l e
ícone Run Script ou pressione [F5].
O
Oracle Database: Fundamentos de SQL I A - 13
Exercício 1-1: Recuperando dados usando a instrução SQL
SELECT (continuação)
Você foi contratado como programador SQL da Acme Corporation. Sua primeira tarefa é
criar alguns relatórios com base nos dados das tabelas de recursos humanos.
4) Sua primeira tarefa é determinar a estrutura da tabela DEPARTMENTS e seu conteúdo.
I n
HIRE_DATE. Salve sua instrução SQL em um arquivo nomeado como
c l e
lab_01_05.sql, assim, você poderá enviá-lo para o departamento de RH.
6) Teste a consulta no arquivo lab_01_05.sql para verificar se ela é executada
r acorretamente.
m y
d e
c a
e A
Parte 3
c l
r a
Se você tiver tempo, faça os seguintes exercícios:
O ly
8) O departamento de RH precisa de cabeçalhos de colunas mais descritivos para o
l & On
relatório sobre os funcionários. Copie a instrução do lab_01_05.sql para uma nova
planilha SQL. Nomeie os cabeçalhos de coluna Emp #, Employee, Job e Hire
a e
Date, respectivamente. Execute a consulta novamente.
n
t e r U s
I n
c l e
r a…
O
Oracle Database: Fundamentos de SQL I A - 15
Exercício 1-1: Recuperando dados usando a instrução SQL
SELECT (continuação)
c a
e A
c l
r a
…
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 16
Soluções do Exercício 1-1: Recuperando dados usando a
instrução SQL SELECT
Parte 1
Verdadeiro/Falso.
Verdadeiro/Falso.
c a
A
A tabela EMPLOYEES não contém uma coluna com o nome sal. O nome da
coluna é SALARY.
e
c l
O operador de multiplicação é *, e não x, como mostrado na linha 2.
r a
O apelido ANNUAL SALARY não pode conter espaços. O apelido deve ser
O ly
escrito da forma ANNUAL_SALARY ou estar dentro de aspas duplas.
l & On
Falta uma vírgula após a coluna LAST_NAME.
Parte 2
n a e
t e r U s
Você foi contratado como programador SQL da Acme Corporation. Sua primeira tarefa é
criar alguns relatórios com base nos dados das tabelas de recursos humanos.
I n
4) Sua primeira tarefa é determinar a estrutura da tabela DEPARTMENTS e seu conteúdo.
c l e
a. Para determinar a estrutura da tabela DEPARTMENTS:
ra
DESCRIBE departments
O
Oracle Database: Fundamentos de SQL I A - 17
Soluções do Exercício 1-1: Recuperando dados usando a
instrução SQL SELECT (continuação)
b. Para visualizar os dados contidos na tabela DEPARTMENTS:
SELECT *
FROM departments;
l & On
planilha SQL. Nomeie os cabeçalhos de coluna Emp #, Employee, Job e Hire
Date, respectivamente. Execute a consulta novamente.
n a e
r
SELECT employee_id "Emp #", last_name "Employee",
FROM
t
employees;
e U s
job_id "Job", hire_date "Hire Date"
I n
9) O departamento de RH solicitou um relatório com todos os funcionários e seus IDs de
l e
cargo. Exiba o sobrenome concatenado com o ID de cargo (separado por uma vírgula
e espaço) e nomeie a coluna como Employee e Title.
c
Ora SELECT last_name||', '||job_id "Employee and Title"
FROM employees;
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 19
Exercícios para a Lição 2
Neste exercício, você criará mais relatórios, incluindo instruções que usam a cláusula
WHERE e a cláusula ORDER BY. Você tornará as instruções SQL mais reutilizáveis e
genéricas, incluindo a substituição do E comercial.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 20
Exercício 2-1: Restringindo e Classificando Dados
O departamento de RH precisa de seu auxílio para a criação de algumas consultas.
1) Por questões de orçamento, o departamento de RH precisa de um relatório que exiba
o sobrenome e o salário dos funcionário que recebem mais de US$ 12.000. Salve sua
instrução SQL em um arquivo denominado lab_02_01.sql. Execute a consulta.
2) Abra uma nova Planilha SQL. Crie um relatório que exiba o sobrenome e o número
de departamento para o número de funcionário 176. Execute a consulta.
c l e
crescente pela data de admissão.
r a
O
Oracle Database: Fundamentos de SQL I A - 21
Exercício 2-1: Restringindo e Classificando Dados (continuação)
5) Mostre os sobrenomes e os IDs de departamento de todos os funcionários dos
departamentos 20 ou 50 em ordem alfabética crescente por nome.
m y
d e
7) O departamento de RH precisa de um relatório mostrando os sobrenomes e a data de
contratação de todos os funcionários que foram contratados em 1994.
c a
e A
c l
r a
8) Crie um relatório para exibir os sobrenomes e os cargos de todos os funcionários que
não têm um gerente.
O ly
l & On
n a e
e r s
9) Crie um relatório para exibir o sobrenome, o salário e a comissão de todos os
t U
I n
funcionários que ganham comissão. Classifique os dados na ordem descendente de
salário e comissões.
c l e
Use a posição numérica da coluna na cláusula ORDER BY.
r a
O
Oracle Database: Fundamentos de SQL I A - 22
Exercício 2-1: Restringindo e Classificando Dados (continuação)
11) O departamento de RH quer executar relatórios com base em um gerente. Crie uma
consulta que solicite ao usuário um ID de gerente e gere o ID dos funcionários, os
sobrenomes, os salários e o departamento dos funcionários desse gerente. O
m y
pode testar os dados com os seguintes valores:
d e
departamento de RH deseja classificar o relatório em uma coluna selecionada. Você
c a
e A
c l
a
manager_id = 201, classificado por salário:
r
O ly
l & On
manager_id = 124, classificado por employee_id:
n a e
t e r U s
I n
c l e
r a
Se você tiver tempo, faça os seguintes exercícios:
12) Mostre todos os sobrenomes dos funcionários cuja terceira letra do nome é “a”.
O
Oracle Database: Fundamentos de SQL I A - 23
Exercício 2-1: Restringindo e Classificando Dados (continuação)
13) Mostre os sobrenomes de todos os funcionários que têm as letras “a” e “e” no
sobrenome.
m y
d e
c a
e A
15) Modifique lab_02_06.sql para exibir os sobrenomes, os salários e as comissões de
c l
todos os funcionários que ganham uma comissão de 20%. Salve o arquivo
arquivo lab_02_15.sql.
r a
lab_02_06.sql como lab_02_15.sql. Execute novamente a instrução no
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 24
Soluções do Exercício 2-1: Restringindo e Classificando Dados
O departamento de RH precisa de seu auxílio para a criação de algumas consultas.
1) Por questões de orçamento, o departamento de RH precisa de um relatório que exiba
o sobrenome e o salário dos funcionários que recebem mais de US$ 12.000. Salve sua
instrução SQL em um arquivo denominado lab_02_01.sql. Execute a consulta.
SELECT last_name, salary
FROM employees
WHERE salary > 12000;
2) Abra uma nova Planilha SQL. Crie um relatório que mostre o sobrenome e o número
de departamento do funcionário de número 176.
SELECT last_name, department_id
FROM employees
WHERE employee_id = 176;
O ly
departamentos 20 ou 50 em ordem alfabética crescente por nome.
FROM employees
l & On
SELECT last_name, department_id
WHERE
a e
department_id IN (20, 50)
n
ORDER BY last_name ASC;
e r s
6) Modifique lab_02_03.sql para listar os sobrenomes e os salários dos funcionários
t U
que ganham entre US$ 5.000,00 e US$ 12.000,00 e estão no departamento 20 ou 50.
I n
Nomeie as colunas como Employee e Monthly Salary, respectivamente. Salve o
l e
arquivo lab_02_03.sql como lab_02_06.sql. Execute a instrução no
lab_02_06.sql.
c
Ora SELECT
FROM
WHERE
last_name "Employee", salary "Monthly Salary"
employees
salary BETWEEN 5000 AND 12000
r a
de representante de vendas ou caixa de estoque e cujos salários não equivalem a US$
2.500,00, US$ 3.500,00 ou US$ 7.000,00.
SELECT O ly
last_name, job_id, salary
FROM
WHERE
employees
l & On
job_id IN ('SA_REP', 'ST_CLERK')
AND
a e
salary NOT IN (2500, 3500, 7000);
n
t e r U s
15) Modifique lab_02_06.sql para exibir os sobrenomes, os salários e as comissões
de todos os funcionários que ganham uma comissão de 20%. Salve o arquivo
I n
lab_02_06.sql como lab_02_15.sql. Execute novamente a instrução no
arquivo lab_02_15.sql.
c l e
SELECT last_name "Employee", salary "Monthly Salary",
ra
commission_pct
FROM employees
WHERE commission_pct = .20;
O
Oracle Database: Fundamentos de SQL I A - 27
Exercícios para a Lição 3
Este exercício fornece uma série de exercícios que usam funções diferentes disponíveis
para tipos de dados de caracteres, números e datas.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 28
Exercício 3-1: Usando Funções de uma Única Linha para
Personalizar o Resultado
1) Crie uma consulta para exibir a data do sistema. A coluna deve ter o nome Date.
Observação:Se o banco de dados estiver localizado remotamente em outro fuso
horário, o resultado será a data do sistema operacional onde o banco de dados reside.
…
m y
d e
c a
4) Modifique sua consulta lab_03_02.sql para adicionar uma coluna que subtraia o
A
antigo salário do novo salário. Nomeie a coluna Increase. Salve o conteúdo do
e
l
arquivo como lab_03_04.sql. Execute a consulta revisada.
c
r a
O ly
l & On
n a e
…
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 29
Exercício 3-1: Usando Funções de uma Única Linha para
Personalizar o Resultado (continuação)
5) Crie uma consulta que mostre os sobrenomes (com a primeira letra em maiúscula e
todas as demais em minúscula) e o comprimento dos sobrenomes de todos os
funcionários que tenham nomes que começam com as letras “J”, “A” ou “M”.Dê um
nome apropriado a cada coluna. Classifique os resultados pelos sobrenomes dos
funcionários.
Crie novamente a consulta de forma que o usuário seja solicitado a inserir a letra que
o sobrenome começa. Por exemplo, se o usuário digitar "H" (em letra maiúscula)
quando for solicitado a digitar uma letra, o resultado deverá mostrar todos os
funcionários que têm sobrenomes que começam com a letra “H”.
Modifique a consulta para que o resultado não seja afetado pela diferenciação de
maiúsculas e minúsculas. A letra inserida deve ser colocada em maiúsculo antes de
m y
ser processada pela consulta SELECT.
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
6) O departamento de RH quer saber o tempo de serviço de cada funcionário. Para cada
funcionário, exiba o sobrenome e calcule o número de meses entre hoje e a data em
l e
que o funcionário foi admitido. Nomeie a coluna como MONTHS_WORKED. Ordene os
c
resultados pelo número de meses empregado. Arredonde o número de meses para o
O Observação: como esta consulta depende da data em que foi executada, os valores da
coluna MONTHS_WORKED serão diferentes para você.
m y
d e
…
c a
e A
c l
8) Crie uma consulta mostrando os primeiro oito caracteres dos sobrenomes dos
r a
funcionários e indicando o valor dos seus respectivos salários com asteriscos. Cada
asterisco significa mil dólares. Classifique os dados na ordem descendente do salário.
O ly
A coluna deve receber o nome EMPLOYEES_AND_THEIR_SALARIES.
l & On
n a e
t e r U s
I n
…
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 31
Exercício 3-1: Usando Funções de uma Única Linha para
Personalizar o Resultado (continuação)
9) Crie uma consulta para exibir os sobrenomes e o número de semanas de serviço de
todos os funcionários do departamento 90. A coluna com o número de semanas deve
receber o nome TENURE. Trunque o valor do número de semanas para 0 casas
decimais. Mostre os registros de tempo de serviço dos funcionários em ordem
decrescente.
Observação: o valor TENURE será diferente pois dependerá da data em que você
executar a consulta.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 32
Soluções do Exercício 3-1: Usando Funções de uma Única Linha
para Personalizar o Resultado
1) Crie uma consulta para exibir a data do sistema. A coluna deve ter o nome Date.
Observação:Se o banco de dados estiver localizado remotamente em outro fuso
horário, o resultado será a data do sistema operacional onde o banco de dados reside.
SELECT sysdate "Date"
FROM dual;
4) Modifique sua consulta lab_03_02.sql para adicionar uma coluna que subtraia o
m y
antigo salário do novo salário. Nomeie a coluna Increase. Salve o conteúdo do
arquivo como lab_03_04.sql. Execute a consulta revisada.
d e
SELECT employee_id, last_name, salary,
c a
ROUND(salary * 1.155, 0) "New Salary",
e
ROUND(salary * 1.155, 0) - salary "Increase" A
FROM employees;
c l
r a
5) Crie uma consulta que mostre os sobrenomes (com a primeira letra em maiúscula e
todas as demais em minúscula) e o comprimento dos sobrenomes de todos os
O ly
funcionários que tenham nomes que começam com as letras “J”, “A” ou “M”.Dê um
nome apropriado a cada coluna. Classifique os resultados pelos sobrenomes dos
funcionários.
l & On
SELECT
a e
INITCAP(last_name) "Name",
n
r
LENGTH(last_name) "Length"
FROM
WHERE
employees
t e U s
last_name LIKE 'J%'
OR
OR
I n
last_name LIKE 'M%'
last_name LIKE 'A%'
l e
ORDER BY last_name;
c
r aRecrie a consulta para que o usuário seja solicitado a digitar a letra pela qual começa
o sobrenome. Por exemplo, se o usuário digitar H (em letra maiúscula) quando for
O solicitado a digitar uma letra, o resultado deverá mostrar todos os funcionários que
têm sobrenomes que começam com a letra “H”.
Observação: como esta consulta depende da data em que foi executada, os valores da
coluna MONTHS_WORKED serão diferentes para você.
m y
SELECT last_name, ROUND(MONTHS_BETWEEN(
d e
FROM
SYSDATE, hire_date)) MONTHS_WORKED
employees
c a
ORDER BY months_worked;
e A
c l
Se tiver tempo, faça os seguintes exercícios:
7) Crie uma consulta para exibir os sobrenomes e os salários de todos os funcionários.
r a
Formate o salário para ter 15 caracteres, preenchido à esquerda com o símbolo US$.
Nomeie a coluna como SALARY.
O ly
SELECT last_name,
l & On
LPAD(salary, 15, '$') SALARY
FROM employees;
n a e
e r
8) Crie uma consulta mostrando os primeiro oito caracteres dos sobrenomes dos
s
funcionários e indicando o valor dos seus respectivos salários com asteriscos. Cada
t U
asterisco significa mil dólares. Classifique os dados na ordem descendente do salário.
I n
A coluna deve receber o nome EMPLOYEES_AND_THEIR_SALARIES.
l e
SELECT rpad(last_name, 8)||' '||
r aFROM employees
EMPLOYEES_AND_THEIR_SALARIES
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 35
Exercícios para a Lição 4
Esta é uma série de exercícios usando as funções TO_CHAR e TO_DATE, e as expressões
condicionais como DECODE e CASE. Lembre-se de que, nas funções aninhadas, os
resultados são avaliados da função mais interna para a mais externa.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 36
Exercício 4-1: Usando Funções de Conversão e Expressões
Condicionais
1) Crie um relatório que produza o seguinte para cada funcionário:
<employee last name> ganha <salary> monthly but wants <3 times
salary.>. Nomeie a coluna Dream Salaries.
m y
d e
c a
e A
…
c l
r a
O ly
l & On
3) Mostre o sobrenome, a data de contratação e o dia da semana em que o funcionário
começou a trabalhar. Nomeie a coluna DAY. Organize os resultados por dia da
a e
semana, começando por segunda-feira.
n
t e r U s
I n
c l e
r a…
O
Oracle Database: Fundamentos de SQL I A - 37
Exercício 4-1: Usando Funções de Conversão e Expressões
Condicionais (continuação)
c l e
r a
O …
m y
d e
ca
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 39
Soluções do Exercício 4-1: Usando Funções de Conversão e
Expressões Condicionais
1) Crie um relatório que produza o seguinte para cada funcionário:
<employee last name> ganha <salary> mensalmente, mas deseja <3 times salary.>.
Nomeie a coluna como Dream Salaries.
SELECT last_name || ' earns '
|| TO_CHAR(salary, 'fm$99,999.00')
|| ' monthly but wants '
|| TO_CHAR(salary * 3, 'fm$99,999.00')
|| '.' "Dream Salaries"
FROM employees;
e A
l
4) Crie uma consulta para exibir os sobrenomes e as comissões de todos os funcionários.
c
coluna como COMM.
r a
Caso um funcionário não ganhe comissão, mostre “Nenhuma comissão”. Nomeie a
SELECT last_name,
O ly
FROM employees;
l & On
NVL(TO_CHAR(commission_pct), 'No Commission') COMM
n a e
t e r s
5) Com a função DECODE, crie uma consulta que exiba o nível de todos os funcionários
com base no valor da coluna JOB_ID. Use estes dados:
U
Cargo
I n Nível
AD_PRES
ST_MAN
c l
IT_PROG
e A
B
C
r a
SA_REP
ST_CLERK
D
E
m y
d e
ca
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 41
Exercícios para a Lição 5
No final deste exercício, você deverá estar familiarizado com o uso das funções de grupo
e seleção de grupos de dados.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 42
Exercício 5-1: Gerando Relatórios de Dados Agregados Usando
as Funções de Grupo
Determine a validade das três afirmações a seguir. Envolva a opção Verdadeiro ou Falso.
1) As funções de agrupamento agem em várias linhas para gerar um resultado por grupo.
Verdadeiro/Falso
2) As funções de grupo incluem valores nulos nos cálculos.
Verdadeiro/Falso
3) A cláusula WHERE restringe as linhas antes de sua inclusão em um cálculo de grupo .
Verdadeiro/Falso
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 43
Exercício 5-1: Gerando Relatórios de Dados Agregados Usando
as Funções de Grupo (continuação)
6) Crie uma consulta para exibir o número de pessoas com o mesmo cargo.
e A
l
Dica:Use a coluna MANAGER_ID para determinar o número de gerentes.
c
r a
O ly
8) Encontre a diferença entre os salários mais altos e os mais baixos. Nomeie a coluna
como DIFFERENCE.
l & On
n a e
e r s
Se você tiver tempo, faça os seguintes exercícios:
t U
I n
9) Crie um relatório para exibir o número do gerente e quanto ganha o funcionário com
o menor salário que trabalha para esse gerente. Exclua todos os funcionários cujo
l e
gerente é desconhecido. Exclua quaisquer grupos onde o salário mínimo seja US$
c
6.000 ou menos. Organize os resultados por ordem decrescente de salários.
r a
O
Oracle Database: Fundamentos de SQL I A - 44
Exercício 5-1: Gerando Relatórios de Dados Agregados Usando
as Funções de Grupo (continuação)
11) Crie uma consulta matriz que exiba o cargo, o salário relativo a esse cargo com base
no número do departamento e o salário total desse cargo para os departamentos 20,
50, 80 e 90, atribuindo um cabeçalho apropriado a cada coluna.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 45
Soluções do Exercício 5-1: Gerando Relatórios de Dados
Agregados Usando as Funções de Grupo
Determine a validade das três afirmações a seguir. Envolva a opção Verdadeiro ou Falso.
1) As funções de agrupamento agem em várias linhas para gerar um resultado por grupo.
Verdadeiro/Falso
2) As funções de grupo incluem valores nulos nos cálculos.
Verdadeiro/Falso
3) A cláusula WHERE restringe as linhas antes de sua inclusão em um cálculo de grupo .
Verdadeiro/Falso
instrução em lab_05_05.sql.
e A
c
SELECT job_id, ROUND(MAX(salary),0)
l "Maximum",
a
ROUND(MIN(salary),0) "Minimum",
FROM
r
ROUND(SUM(salary),0)
O ly
ROUND(AVG(salary),0)
employees
"Sum",
"Average"
GROUP BY job_id;
l & On
6) Crie uma consulta para exibir o número de pessoas com o mesmo cargo.
n a e
r
SELECT job_id, COUNT(*)
FROM employees
t
GROUP BY job_id;
e U s
I n
Generalize a consulta para que o usuário no departamento de RH seja solicitado a
l e
informar um cargo. Salve o script em um arquivo com o nome de lab_05_06.sql.
c
Execute a consulta. Informe IT_PROG quando solicitado e clique em OK.
n a e
SUM(DECODE(TO_CHAR(hire_date,
'YYYY'),1996,1,0))"1996",
t e r
'YYYY'),1997,1,0))"1997",
U s
SUM(DECODE(TO_CHAR(hire_date,
FROM
I n
SUM(DECODE(TO_CHAR(hire_date, 'YYYY'),1998,1,0))"1998"
employees;
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 47
Soluções do Exercício 5-1: Gerando Relatórios de Dados
Agregados Usando as Funções de Grupo (continuação)
11) Crie uma consulta matriz para exibir o cargo, o salário desse cargo baseado no
número do departamento e o salário total desse cargo nos departamentos 20,50, 80 e
90, nomeando cada coluna com um cabeçalho apropriado.
SELECT job_id "Job",
SUM(DECODE(department_id , 20, salary)) "Dept 20",
SUM(DECODE(department_id , 50, salary)) "Dept 50",
SUM(DECODE(department_id , 80, salary)) "Dept 80",
SUM(DECODE(department_id , 90, salary)) "Dept 90",
SUM(salary) "Total"
FROM employees
GROUP BY job_id;
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 48
Exercícios para a Lição 6
Este exercício tem como objetivo proporcionar a você um treinamento prático de como
extrair dados de mais de uma tabela com joins compatíveis com o padrão SQL:1999.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 49
Exercício 6-1: Exibindo Dados de Várias Tabelas Usando Joins
1) Crie uma consulta para o departamento de RH, obtendo os endereços de todos os
departamentos. Use as tabelas LOCATIONS e COUNTRIES. Mostre o ID do local, o
endereço, a cidade, o estado ou província e o país no resultado. Use um NATURAL
JOIN para produzir os resultados.
…
m y
d e
c a
3) O departamento de RH precisa de um relatório dos funcionários de Toronto. Exiba o
c l
r a
O ly
4) Crie um relatório para exibir o sobrenome e o número dos funcionários, bem como o
l & On
sobrenome e o número dos respectivos gerentes. O label das colunas deverá ser
Employee, Emp#, Manager e Mgr#, respectivamente. Salve sua instrução SQL como
n a e
lab_06_04.sql. Execute a consulta.
t e r U s
I n
c l e
r a…
O
Oracle Database: Fundamentos de SQL I A - 50
Exercício 6-1: Exibindo Dados de Várias Tabelas Usando Joins
(continuação)
m y
d e
c a
e A
c l
9) O departamento de RH precisa obter os nomes e as datas de admissão de todos os
funcionários admitidos antes dos respectivos gerentes, além dos nomes e das datas de
r a
admissão desses gerentes. Salve o script em um arquivo nomeado como
lab_06_09.sql.
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 52
Soluções do Exercício 6-1: Exibindo Dados de Várias Tabelas
Usando Joins
1) Crie uma consulta para o departamento de RH, obtendo os endereços de todos os
departamentos. Use as tabelas LOCATIONS e COUNTRIES. Mostre o ID do local, o
endereço, a cidade, o estado ou província e o país no resultado. Use um NATURAL
JOIN para produzir os resultados.
SELECT location_id, street_address, city, state_province,
country_name
FROM locations
NATURAL JOIN countries;
m y
e
SELECT e.last_name, e.job_id, e.department_id,
d.department_name
FROM employees e JOIN departments d
a d
c
ON (e.department_id = d.department_id)
JOIN locations l
ON (d.location_id = l.location_id)
WHERE LOWER(l.city) = 'toronto';
e A
c l
4) Crie um relatório para exibir os sobrenomes e os números dos funcionários,
r a
juntamente com os sobrenomes e números dos seus gerentes. O label das colunas
deverá ser Employee, Emp#, Manager e Mgr#, respectivamente. Salve sua instrução
O ly
SQL como lab_06_04.sql. Execute a consulta.
l & On
SELECT w.last_name "Employee", w.employee_id "EMP#",
a e
m.last_name "Manager", m.employee_id "Mgr#"
FROM employees w join employees m
ON
r n s
(w.manager_id = m.employee_id);
t e U
5) Modifique lab_06_04.sql para exibir todos os funcionários, incluindo King, que
n
não tem um gerente. Organize os resultados por número de funcionário. Salve sua
I
instrução SQL como lab_06_05.sql. Execute a consulta em lab_06_05.sql.
e
c l
SELECT w.last_name "Employee", w.employee_id "EMP#",
a
m.last_name "Manager", m.employee_id "Mgr#"
O r FROM
LEFT
ON
employees w
OUTER JOIN employees m
(w.manager_id = m.employee_id)
e A
c l
8) O departamento de RH precisa determinar os nomes de todos os funcionários que
foram contratados depois de Davies. Crie uma consulta para exibir o nome e a data de
Davies.
r a
contratação de todos os funcionários que foram contratados após o funcionário
SELECT O ly
e.last_name, e.hire_date
FROM
ON
l & On
employees e JOIN employees davies
(davies.last_name = 'Davies')
WHERE
a e
davies.hire_date < e.hire_date;
n
t e r U s
9) O departamento de RH precisa determinar os nomes e as datas de contratação de
todos os funcionários que foram contratados antes dos seus gerentes, juntamente
I n
como os nomes dos seus gerentes e as datas de contratação. Salve o script em um
arquivo nomeado como lab_06_09.sql.
c l
FROM
e
SELECT w.last_name, w.hire_date, m.last_name, m.hire_date
employees w JOIN employees m
r aON
WHERE
(w.manager_id = m.employee_id)
w.hire_date < m.hire_date;
O
Oracle Database: Fundamentos de SQL I A - 54
Exercícios para a Lição 7
Neste exercício, você criará consultas complexas com instruções SELECT aninhadas.
Por questões práticas, é recomendável criar a consulta interna primeiro. Certifique-se de
que ela seja executada e gere os dados previstos antes de você codificar a consulta
externa.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 55
Exercício 7-1: Usando Subconsultas para Solucionar Consultas
1) O departamento de RH precisa de uma consulta que solicite ao usuário o sobrenome
de um funcionário. A consulta, então, exibe o sobrenome e a data de admissão de
qualquer funcionário no mesmo departamento que o funcionário cujo nome foi
fornecido (excluindo aquele funcionário). Por exemplo, se o usuário inserir Zlotkey,
localize todos os funcionários que trabalham com Zlotkey (excluindo Zlotkey).
Execute a consulta.
n a e
sobrenome contenha a letra “u”. Salve a instrução SQL como lab_07_03.sql.
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 56
Exercício 7-1: Usando Subconsultas para Solucionar Consultas
(continuação)
e A
c l
r a
O ly
l & On
6) Crie um relatório para o departamento de RH exibindo o número do departamento, os
a e
sobrenomes e o ID de cargo de todos os funcionários do departamento Executivo.
n
t e r U s
I n
l e
7) Crie um relatório que exiba uma lista de todos os funcionários cujo salário seja maior
c
que o salário de qualquer funcionário do departamento 60.
r a
Se tiver tempo, faça o seguinte exercício:
O
Oracle Database: Fundamentos de SQL I A - 57
Exercício 7-1: Usando Subconsultas para Solucionar Consultas
(continuação)
8) Modifique a consulta em lab_07_03.sql para exibir o número, sobrenome e salário
de todos os funcionários que ganham mais que o salário médio e que trabalham em
um departamento com qualquer funcionário cujo sobrenome contenha uma letra "u".
Salve lab_07_03.sql como lab_07_08.sql novamente. Execute a instrução em
lab_07_08.sql.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 58
Soluções do Exercício 7-1: Usando Subconsultas para
Solucionar Consultas
1) O departamento de RH precisa de uma consulta que solicite ao usuário o sobrenome
de um funcionário. A consulta, então, exibe o sobrenome e a data de admissão de
qualquer funcionário no mesmo departamento que o funcionário cujo nome foi
fornecido (excluindo aquele funcionário). Por exemplo, se o usuário inserir Zlotkey,
localize todos os funcionários que trabalham com Zlotkey (excluindo Zlotkey).
UNDEFINE Enter_name
d e
c a
3) Crie uma consulta exibindo o número do funcionário e o sobrenome de todos os
funcionários que trabalham em um departamento com quaisquer funcionários cujo
Execute a consulta.
e A
sobrenome contenha a letra “u”. Salve a instrução SQL como lab_07_03.sql.
r a
WHERE department_id IN (SELECT department_id
FROM
O ly employees
WHERE last_name like '%u%');
l & On
4) O departamento de RH precisa de um relatório mostrando os sobrenomes, o número
1700.
n a e
do departamento e o ID do cargo de todos os funcionários cuja ID de localização seja
t e r U s
SELECT last_name, department_id, job_id
FROM
I n
employees
WHERE department_id IN (SELECT department_id
c l e FROM departments
WHERE location_id = 1700);
y
FROM departments
WHERE department_name =
'Executivo');
e m
7) Crie um relatório que exiba uma lista de todos os funcionários cujo salário seja maior
que o salário de qualquer funcionário do departamento 60.
a d
SELECT last_name FROM employees
WHERE salary > ANY (SELECT salary
A c
FROM
l e
employees
WHERE department_id=60);
c
r a
Se tiver tempo, faça o seguinte exercício:
8) Modifique a consulta em lab_07_03.sql para exibir o número, sobrenome e salário
O ly
de todos os funcionários que ganham mais que o salário médio e que trabalham em
l & On
um departamento com qualquer funcionário cujo sobrenome contenha uma letra "u".
Salve lab_07_03.sql como lab_07_08.sql novamente. Execute a instrução em
lab_07_08.sql.
n a e
FROM
t e r
employees
U s
SELECT employee_id, last_name, salary
I n
WHERE department_id IN (SELECT department_id
FROM employees
c
AND
l e WHERE last_name like '%u%')
salary > (SELECT AVG(salary)
r a FROM employees );
O
Oracle Database: Fundamentos de SQL I A - 60
Exercícios para a Lição 8
Neste exercício, você escreverá consultas usando os operadores de conjunto.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 61
Exercício 8-1: Usando os Operadores de Conjunto
1) O departamento de RH precisa de uma lista dos IDs de departamento dos
departamentos que não contêm o ID de cargo ST_CLERK. Use os operadores de
conjunto para criar o relatório.
2) O departamento de RH precisa de uma lista dos países que não têm departamentos.
Exiba o ID do país e os nomes dos países. Use os operadores de conjunto para criar o
relatório.
3) Gere uma lista de cargos dos departamentos 10, 50 e 20, nessa ordem. Exiba o ID do
cargo e o ID do departamento usando os operadores de conjunto.
m y
d e
c a
e A
c l
4) Crie um relatório listando os IDs dos funcionários e os IDs de cargo dos funcionários
r a
que atualmente ocupam um cargo igual ao que ocupavam quando foram contratados
O ly
pela empresa (ou seja, mudaram de cargo mas agora voltaram para seus cargos
originais).
l & On
n a e
t e r U s
5) O departamento de RH precisa de um relatório com as seguintes especificações:
•
I n
Sobrenome e ID de departamento de todos os funcionários da tabela EMPLOYEES,
independentemente de eles pertencerem ou não a um departamento
•
c l e
O ID e o nome de todos os departamentos da tabela DEPARTMENTS,
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 63
Soluções do Exercício 8-1: Usando os Operadores de Conjunto
1) O departamento de RH precisa de uma lista dos IDs de departamento dos
departamentos que não contêm o ID de cargo ST_CLERK. Use os operadores de
conjunto para criar o relatório.
SELECT department_id
FROM departments
MINUS
SELECT department_id
FROM employees
WHERE job_id = 'ST_CLERK';
2) O departamento de RH precisa de uma lista dos países que não têm departamentos.
Exiba o ID do país e os nomes dos países. Use os operadores de conjunto para criar o
relatório.
SELECT country_id,country_name
FROM countries
MINUS
SELECT l.country_id,c.country_name
FROM locations l JOIN countries c
ON(l.country_id = c.country_id)
JOIN departments d
ON d.location_id=l.location_id;
3) Gere uma lista de cargos dos departamentos 10, 50 e 20, nessa ordem. Mostre o ID de
m y
cargo e o ID do departamento usando os operadores de conjunto.
d e
SELECT distinct job_id, department_id
FROM employees
c a
WHERE
UNION ALL
department_id = 10
e A
FROM employees
c l
SELECT DISTINCT job_id, department_id
WHERE
UNION ALL
department_id = 50
r a
O ly
SELECT DISTINCT job_id, department_id
& On
FROM employees
l
WHERE department_id = 20
n a e
4) Crie um relatório listando os IDs dos funcionários e os IDs de cargo dos funcionários
que atualmente ocupam um cargo igual ao que ocupavam quando foram contratados
e r s
pela empresa (ou seja, mudaram de cargo mas agora voltaram para seus cargos
originais).
t U
SELECT
I n
employee_id,job_id
l e
FROM employees
c
INTERSECT
r aSELECT
FROM
employee_id,job_id
job_history;
O
Oracle Database: Fundamentos de SQL I A - 64
Soluções do Exercício 8-1: Usando os Operadores de Conjunto
(continuação)
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 65
Exercícios para a Lição 9
Neste exercício, você adicionará linhas à tabela MY_EMPLOYEE, atualizará e deletará
dados na tabela e controlará as transações. Executará um script para criar a tabela
MY_EMPLOYEE.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 66
Exercício 9-1: Manipulando Dados
O departamento de RH precisa que você crie instruções SQL para inserir, atualizar e
deletar dados de funcionários. Você usa a tabela MY_EMPLOYEE como protótipo antes de
passar as instruções para o departamento de RH.
Observação: para todas as instruções DML, use o ícone Executar Script (ou pressione
[F5]) para executar a consulta. Dessa forma, você poderá ver as mensagens de feedback
na página com a tab Script Output. Para as consultas SELECT, continue a usar o ícone
Execute Statement ou pressione [F9] para obter a saída formatada na página com a tab
Results.
Insira dados na tabela MY_EMPLOYEE.
1) Execute a instrução no script lab_09_01.sql para criar a tabela MY_EMPLOYEE
usada neste exercício.
2) Descreva a estrutura da tabela MY_EMPLOYEE para identificar os nomes das colunas.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 67
Exercício 9-1: Manipulando Dados (continuação)
3) Crie uma instrução INSERT para adicionar a primeira linha de dados à tabela
MY_EMPLOYEE a partir do exemplo de dados a seguir. Não liste as colunas na cláusula
d e
c a
e A
c l
6) Escreva uma instrução INSERT em um arquivo de script dinâmico reutilizável para
carregar as linhas remanescentes na tabela MY_EMPLOYEE. Este script deve apresentar
r a
um prompt para todas as colunas (ID, LAST_NAME, FIRST_NAME, USERID e
SALARY). Salve esse script para um arquivo lab_09_06.sql.
O ly
7) Preencha a tabela com as duas linhas de dados de amostra e seguida, listadas na etapa
& On
3, executando a instrução INSERT no script que você criou.
l
a e
8) Confirme as adições à tabela.
n
t e r U s
I n
c l e
9) Torne as adições de dados permanentes.
r a
O
Oracle Database: Fundamentos de SQL I A - 68
Exercício 9-1: Manipulando Dados (continuação)
Atualize e exclua dados na tabela MY_EMPLOYEE.
10) Altere o sobrenome do funcionário 3 para Drexler.
11) Altere o salário de todos os funcionários com salário inferior a US$ 900 para US$
1.000.
12) Verifique as alterações feitas na tabela.
m y
Transação de dados de controle para a tabela MY_EMPLOYEE.
d e
c a
16) Preencha a tabela com as últimas duas linhas de dados de amostra, listadas na etapa 3,
usando as instruções no script que você criou na etapa 6. Execute as instruções no
script.
e A
l
17) Confirme a inclusão feita na tabela.
c
r a
O ly
l & On
a e
18) Marque um ponto intermediário no processamento da transação.
n
t e r
19) Exclua todas as linhas da tabela MY_EMPLOYEE.
U s
20) Confirme que a tabela está vazia.
I n
21) Descarte a operação DELETE mais recente sem descartar a operação INSERT anterior.
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 69
Exercício 9-1: Manipulando Dados (continuação)
22) Confirme se a nova linha ainda está intacta.
e
c l
26) Confirme que a nova linha foi adicionada com o USERID correto.
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 70
Soluções do Exercício 9-1: Manipulando Dados
Insira dados na tabela MY_EMPLOYEE.
1) Execute a instrução no script lab_09_01.sql para criar a tabela MY_EMPLOYEE
usada neste exercício.
a) No menu File, selecione Open. Na caixa de diálogo Open, navegue até a pasta
/home/oracle/labs/sql1/labs e clique duas vezes em lab_09_01.sql.
b) Quando a instrução estiver aberta em uma Planilha SQL, clique no ícone Run
Script para executar o script. Na página com a tab Script Output, você receberá a
mensagem de êxito da ação Create Table.
2) Descreva a estrutura da tabela MY_EMPLOYEE para identificar os nomes das colunas.
DESCRIBE my_employee
m y
2 Dancs Betty bdancs 860
d e
3 Biri Ben bbiri
c a1100
4 Newman Chad
e
cnewman A 750
c l
5 Ropeburn
r aAudrey aropebur 1550
O ly
3) Crie uma instrução INSERT para adicionar a primeira linha de dados à tabela
INSERT.
l & On
MY_EMPLOYEE a partir do exemplo de dados a seguir. Não liste as colunas na cláusula
n a e
e r
INSERT INTO my_employee
t U s
VALUES (1, 'Patel', 'Ralph', 'rpatel', 895);
I n
4) Preencha a tabela MY_EMPLOYEE com a segunda linha do exemplo de dados a partir
l e
da lista precedente. Agora, liste as colunas explicitamente na cláusula INSERT.
c
r aINSERT INTO my_employee (id, last_name, first_name,
userid, salary)
O
VALUES (2, 'Dancs', 'Betty', 'bdancs', 860);
5) Confirme as adições à tabela.
7) Preencha a tabela com as duas linhas de dados de amostra e seguida, listadas na etapa
3, executando a instrução INSERT no script que você criou.
INSERT INTO my_employee
VALUES (&p_id, '&p_last_name', '&p_first_name',
'&p_userid', &p_salary);
8) Confirme as adições à tabela.
SELECT *
FROM my_employee;
9) Torne as adições de dados permanentes.
COMMIT;
m y
d e
Atualize e exclua dados na tabela MY_EMPLOYEE.
c a
10) Altere o sobrenome do funcionário 3 para Drexler.
UPDATE my_employee
e A
SET last_name = 'Drexler'
c l
a
WHERE id = 3;
1.000,00.
r
11) Altere o salário de todos os funcionários que ganham menos de US$ 900,00 para US$
O ly
UPDATE my_employee
SET salary = 1000
l & On
WHERE salary < 900;
n a e
t e r U s
12) Verifique as alterações feitas na tabela.
n
SELECT *
FROM
e I
my_employee;
l
13) Exclua Betty Dancs da tabela MY_EMPLOYEE.
c
a
DELETE
O r FROM my_employee
WHERE last_name = 'Dancs';
14) Confirme as alterações feitas na tabela.
m y
e
DELETE
d
FROM my_employee;
20) Confirme que a tabela está vazia.
c a
SELECT *
FROM my_employee;
e A
l
21) Descarte a operação DELETE mais recente sem descartar a operação INSERT anterior.
c
ROLLBACK TO step_17;
r a
O ly
22) Confirme que a nova linha ainda está intacta.
SELECT *
FROM my_employee;
l & On
a e
23) Torne a adição de dados permanente.
n
COMMIT;
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 73
Soluções do Exercício 9-1: Manipulando Dados (continuação)
ID
6
LAST_NAME
Anthony
FIRST_NAME
Mark
USERID
manthony
SALARY
1230
m y
26) Confirme que a nova linha foi adicionada com o USERID correto.
d e
SELECT *
FROM my_employee
c a
WHERE ID='6';
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 74
Exercícios para a Lição 10
Crie novas tabelas com a instrução CREATE TABLE. Confirme que a nova tabela foi
incluída ao banco de dados. Você também aprendeu a configurar o status de uma tabela
como READ ONLY e reverter para READ/WRITE.
Observação: para todas as instruções DDL e DML, clique no ícone Executar Script (ou
pressione [F5]) para executar a consulta no SQL Developer. Dessa forma, você poderá
ver as mensagens de feedback na página com a tab Script Output. Para as consultas
SELECT, continue e clique no ícone Execute Statement ou pressione [F9] para obter a
saída formatada na página com a tab Results.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 75
Exercício 10-1: Usando Instruções DDL para Criar e Gerenciar
Tabelas
1) Crie a tabela DEPT com base nas informações a seguir sobre a instância da tabela.
Salve a instrução em um script denominado lab_10_01.sql e execute a instrução
no script para criar a tabela. Confirme que a tabela foi criada.
Column Name ID NAME
Key Type Primary key
Nulls/Unique
FK Table
FK Column
Data type NUMBER VARCHAR2
Length 7 25
e A
Column Name ID
Key Type
c l
LAST_NAME FIRST_NAME DEPT_ID
Nulls/Unique
r a
FK Table
O ly DEPT
FK Column
l & On ID
Data type
a e
NUMBER VARCHAR2 VARCHAR2 NUMBER
Length 7
r n s
25 25 7
n t e U
e I
c l
r a
O
Oracle Database: Fundamentos de SQL I A - 76
Exercício 10-1: Usando Instruções DDL para Criar e Gerenciar
Tabelas (continuação)
4) Crie a tabela EMPLOYEES2 com base na estrutura da tabela EMPLOYEES. Inclua
apenas as colunas EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY e
DEPARTMENT_ID. Atribua um nome às colunas na nova tabela ID, FIRST_NAME,
LAST_NAME, SALARY e DEPT_ID, respectivamente.
5) Altere o status da tabela EMPLOYEES2 para somente para leitura. Observe que esta
opção é suportada no Oracle Database 11g.
m y
d e
c a
e A
7) Reverta a tabela EMPLOYEES2 para o status leitura/gravação. Agora, tente inserir a
mesma linha novamente. Observe que esta opção é suportada no Oracle Database
11g.
c l
a
Você deve obter as seguintes mensagens:
r
O ly
l & On
8) Elimine a tabela EMPLOYEES2.
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 77
Soluções do Exercício 10-1: Usando Instruções DDL para Criar e
Gerenciar Tabelas
1) Crie a tabela DEPT com base nas informações a seguir sobre a instância da tabela.
Salve a instrução em um script denominado lab_10_01.sql e execute a instrução
no script para criar a tabela. Confirme que a tabela foi criada.
Column Name ID NAME
Key Type Primary key
Nulls/Unique
FK Table
FK Column
Data type NUMBER VARCHAR2
Length 7 25
O ly
instrução em um script denominado lab_10_03.sql e execute a instrução no script
para criar a tabela. Confirme que a tabela foi criada.
Column Name ID
l & OnLAST_NAME FIRST_NAME DEPT_ID
Key Type
n a e
Nulls/Unique
t e r U s
FK Table
FK Column I n DEPT
ID
c l e
Data type NUMBER VARCHAR2 VARCHAR2 NUMBER
r a Length 7 25 25 7
O
Oracle Database: Fundamentos de SQL I A - 78
Soluções do Exercício 10-1: Usando Instruções DDL para Criar e
Gerenciar Tabelas (continuação)
CREATE TABLE emp
(id NUMBER(7),
last_name VARCHAR2(25),
first_name VARCHAR2(25),
dept_id NUMBER(7)
CONSTRAINT emp_dept_id_FK REFERENCES dept (id)
);
r a
(Operação de atualização não permitida na tabela). Portanto, você não poderá inserir
nenhuma linha na tabela porque ela foi atribuída ao status de somente leitura.
INSERT INTO employees2 O ly
& On
VALUES (34, 'Grant','Marcie',5678,10)
l
linha, novamente.
n a e
7) Reverta a tabela EMPLOYEES2 para o status leitura/gravação. Tente inserir a mesma
e r s
Desta vez, você poderá inserir a linha na tabela porque ela foi atribuída ao status
t U
READ WRITE.
I n
ALTER TABLE employees2 READ WRITE
c l e
INSERT INTO employees2
O
Oracle Database: Fundamentos de SQL I A - 79
Soluções do Exercício 10-1: Usando Instruções DDL para Criar e
Gerenciar Tabelas (continuação)
8) Elimine a tabela EMPLOYEES2.
Observação:Você pode até mesmo remover uma tabela que está no modo READ
ONLY. Para testar esse processo, altere a tabela novamente para o status READ ONLY e
execute o comando DROP TABLE. A tabela EMPLOYEES2 será removida.
DROP TABLE employees2;
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 80
Exercícios para a Lição 11
A Parte 1 do exercício desta lição contém várias atividades que permitem criar, utilizar e
remover views. Conclua as perguntas 1 a 6 desta lição.
A Parte 2 do exercício desta lição contém várias atividades que permitem criar e usar
uma seqüência, um índice e um sinônimo. Conclua as perguntas 7 a 10 desta lição.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 81
Exercício 11-1: Criando Outros Objetos de Esquema
Parte 1
1) A equipe do departamento de RH precisa ocultar alguns dos dados na tabela
EMPLOYEES. Eles querem uma view denominada EMPLOYEES_VU com base nos
números dos funcionários, sobrenomes dos funcionários e números dos
departamentos na tabela EMPLOYEES. O título do nome do funcionário deve ser
EMPLOYEE.
2) Confirme o funcionamento da view. Exiba o conteúdo da view EMPLOYEES_VU.
e r s
funcionários e os números dos departamentos para todos os funcionários no
t U
departamento 50. Você foi solicitado a rotular as colunas da view EMPNO, EMPLOYEE
I n
e DEPTNO. Para fins de segurança, não permita que um funcionário seja reatribuído a
outro departamento por meio da view.
c l e
5) Exiba a estrutura e o conteúdo da view DEPT50.
r a
O
Oracle Database: Fundamentos de SQL I A - 82
Exercício 11-1: Criando Outros Objetos de Esquema
(continuação)
Parte 2
7) Você precisa de uma sequência que possa ser usada com a coluna PRIMARY KEY da
tabela DEPT. A sequência deve começar em 200 e ter um valor máximo de 1.000.
Incremente a sequência em 10. Ela deve se chamar DEPT_ID_SEQ.
8) Para testar sua sequência, escreva um script para inserir duas linhas na tabela DEPT.
m y
Atribua o nome lab_11_08.sql ao script. Não se esqueça de usar a sequência
d e
criada para a coluna ID. Inclua dois departamentos: Education e Administration.
Confirme suas inclusões. Execute os comandos no script.
9) Crie um índice não exclusivo na coluna NAME na tabela DEPT.
c a
10) Crie um sinônimo para a tabela EMPLOYEES. Chame-a de EMP.
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 83
Soluções do Exercício 11-1: Criando Outros Objetos de
Esquema
Parte 1
1) A equipe do departamento de RH precisa ocultar alguns dos dados na tabela
EMPLOYEES. Eles querem uma view denominada EMPLOYEES_VU com base nos
números dos funcionários, sobrenomes dos funcionários e números dos
departamentos na tabela EMPLOYEES. O título do nome do funcionário deve ser
EMPLOYEE.
CREATE OR REPLACE VIEW employees_vu AS
SELECT employee_id, last_name employee, department_id
FROM employees;
4) O departamento 50 precisa acessar os dados dos seus funcionários. Crie uma view
m y
denominada DEPT50 contendo os números dos funcionários, os sobrenomes dos
funcionários e os números dos departamentos de todos os funcionários do
d e
c a
departamento 50. Você foi solicitado a rotular as colunas da view EMPNO, EMPLOYEE
e DEPTNO. Para fins de segurança, não permita que um funcionário seja reatribuído a
outro departamento por meio da view.
e A
CREATE VIEW dept50 AS
SELECT
c l
employee_id empno, last_name employee,
r a
department_id deptno
FROM employees
WHERE
O ly
department_id = 50
& On
WITH CHECK OPTION CONSTRAINT emp_dept_50;
l
5) Exiba a estrutura e o conteúdo da view DEPT50.
a e
DESCRIBE dept50
r n s
SELECT *
FROM
n t
dept50; e U
I
6) Teste a sua view. Tente reatribuir Matos ao departamento 80.
e
c l
UPDATE dept50
r aSET
WHERE
deptno = 80
employee = 'Matos';
O
Oracle Database: Fundamentos de SQL I A - 84
Soluções do Exercício 11-1: Criando Outros Objetos de
Esquema (continuação)
O erro ocorre porque a view DEPT50 foi criada com a restrição WITH CHECK
OPTION. Isso garante que a coluna DEPTNO na view fique protegida contra alterações.
Parte 2
7) Você precisa de uma sequência que possa usada com a coluna de chave primária da
tabela DEPT. A sequência deve começar em 200 e ter um valor máximo de 1.000.
Incremente a sequência em 10. Ela deve se chamar DEPT_ID_SEQ.
CREATE SEQUENCE dept_id_seq
START WITH 200
INCREMENT BY 10
MAXVALUE 1000;
8) Para testar sua sequência, escreva um script para inserir duas linhas na tabela DEPT.
Atribua o nome lab_11_08.sql ao script. Não se esqueça de usar a sequência
criada para a coluna ID. Inclua dois departamentos: Education e Administration.
Confirme suas inclusões. Execute os comandos no script.
INSERT INTO dept
VALUES (dept_id_seq.nextval, 'Education');
e A
CREATE SYNONYM emp FOR EMPLOYEES;
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 85
Exercícios do Apêndice F
Este exercício pretende proporcionar uma experiência prática de extração de dados de
mais de uma tabela usando a sintaxe de join da Oracle.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 86
Exercício F-1: Sintaxe Join do Oracle
1) Crie uma consulta para o departamento de RH, obtendo os endereços de todos os
departamentos. Use as tabelas LOCATIONS e COUNTRIES. Mostre o ID do local, o
endereço, a cidade, o estado ou província e o país no resultado. Execute a consulta.
m y
d e
c a
3) O departamento de RH precisa de um relatório dos funcionários de Toronto. Mostre o
sobrenome, o cargo, o número e o nome do departamento de todos os funcionários
que trabalham em Toronto.
e A
c l
r a
O ly
4) Crie um relatório para exibir os sobrenomes e os números dos funcionários,
l & On
juntamente com os sobrenomes e números dos seus gerentes. O label das colunas
deverá ser Employee, Emp#, Manager e Mgr#, respectivamente. Salve sua instrução
SQL como lab_f_04.sql.
n a e
t e r U s
I n
c l e
r a…
O
Oracle Database: Fundamentos de SQL I A - 87
Exercício F-1: Sintaxe Join do Oracle (continuação)
m y
d e
c a
e A
…
c l
r a
O ly
l & On
a e
7) O departamento de RH precisa de um relatório com os graus e salários dos cargos.
n
t e r s
Para se familiarizar com a tabela JOB_GRADES, primeiro mostre a estrutura da tabela
JOB_GRADES. Em seguida, crie uma consulta para exibir os nomes, os cargos, o
U
n
nome do departamento, os salários e os graus de todos os funcionários.
I
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 88
Exercício F-1: Sintaxe Join do Oracle (continuação)
m y
d e
c a
e A
c l
9) O departamento de RH precisa determinar os nomes e as datas de contratação de
r a
todos os funcionários que foram contratados antes dos seus gerentes, juntamente
como os nomes dos seus gerentes e as datas de contratação. Salve o script em um
O ly
arquivo nomeado como lab_f_09.sql.
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 89
Soluções dos Exercícios F-1: Sintaxe Join do Oracle
1) Crie uma consulta para o departamento de RH, obtendo os endereços de todos os
departamentos. Use as tabelas LOCATIONS e COUNTRIES. Mostre o ID do local, o
endereço, a cidade, o estado ou província e o país no resultado. Execute a consulta.
SELECT location_id, street_address, city, state_province,
country_name
FROM locations, countries
WHERE locations.country_id = countries.country_id;
A
juntamente com os sobrenomes e números dos seus gerentes. O label das colunas
deverá ser Employee, Emp#, Manager e Mgr#, respectivamente. Salve sua instrução
e
SQL como lab_f_04.sql.
c l
r a
SELECT w.last_name "Employee", w.employee_id "EMP#",
m.last_name "Manager", m.employee_id "Mgr#"
FROM
O ly
employees w, employees m
WHERE w.manager_id = m.employee_id;
l & On
5) Modifique lab_06_04.sql para exibir todos os funcionários, incluindo King, que
a e
não têm um gerente. Organize os resultados por número de funcionário. Salve sua
n
t e r
instrução SQL como lab_f_05.sql. Execute a consulta em lab_f_05.sql.
U s
SELECT w.last_name "Employee", w.employee_id "EMP#",
FROM
I n
m.last_name "Manager", m.employee_id "Mgr#"
employees w, employees m
l e
WHERE w.manager_id = m.employee_id (+);
c
r a
O
Oracle Database: Fundamentos de SQL I A - 90
Soluções dos Exercícios F-1: Sintaxe Join do Oracle
(continuação)
FROM
WHERE
e.salary, j.grade_level
employees e, departments d, job_grades j
e.department_id = d.department_id
m y
AND e.salary BETWEEN j.lowest_sal AND j.highest_sal;
d e
Se desejar um desafio adicional, faça os seguintes exercícios:
c a
A
8) O departamento de RH precisa determinar os nomes de todos os funcionários que
foram contratados depois de Davies. Crie uma consulta para exibir o nome e a data
e
l
de contratação de todos os funcionários que foram contratados após Davies.
c
SELECT
FROM
r a
e.last_name, e.hire_date
employees e , employees davies
WHERE
O ly
davies.last_name = 'Davies'
& On
AND davies.hire_date < e.hire_date;
l
9) O departamento de RH precisa determinar os nomes e as datas de contratação de
a e
todos os funcionários que foram contratados antes dos seus gerentes, juntamente
r n
como os nomes dos seus gerentes e as datas de contratação. O label das colunas
s
e
deverá ser Employee, Emp Hired, Manager e Mgr Hired, respectivamente. Salve
t U
o script em um arquivo nomeado como lab_f_09.sql.
n
SELECT
e I
w.last_name, w.hire_date, m.last_name, m.hire_date
c l
FROM
WHERE
employees w, employees m
w.manager_id = m.employee_id
O
Oracle Database: Fundamentos de SQL I A - 91
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I A - 92
Apêndice AP
Exercícios e Soluções Adicionais
m y
d e
ca
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Índice
Exercícios Adicionais ......................................................................................................... 3
Exercício 1-1................................................................................................................... 4
Soluções do Exercício 1-1 ............................................................................................ 12
Estudo de Caso.................................................................................................................. 17
Exercício 2-1................................................................................................................. 19
Soluções do Exercício 2-1 ............................................................................................ 27
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 2
Exercícios Adicionais
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 3
Exercício 1-1
Você poderá usar estes exercícios como atividades complementares após a discussão dos
seguintes tópicos: instrução SQL SELECT básica, comandos SQL Developer básicos e
funções SQL.
1) O departamento de RH precisa localizar os dados de todos os funcionários que foram
contratados a partir de 1997.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 4
Exercício 1-1 (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.
m y
d e
c a
e A
“M.”
c l
5) Mostre os funcionários com sobrenomes que começam pelas letras “J,” “K,” “L,” ou
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 5
Exercício 1-1 (continuação)
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.
m y
d e
c a
e A
Você poderá usar estes exercícios como atividades complementares após a discussão dos
seguintes tópicos: Instrução SQL SELECT básica, comandos básicos do SQL Developer,
c
funções SQL, joins e funções de grupo.l
r a
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
O ly
informe o local. Por exemplo, se o usuário digitar 1800, estes serão os resultados:
l & On
n a e
e r s
8) Calcule o número de funcionários com sobrenomes que terminam com a letra “n”.
t U
n
Crie duas soluções possíveis.
I
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 6
Exercício 1-1 (continuação)
9) Crie um relatório com o nome, local e número de funcionários de cada departamento.
Certifique-se de que o relatório também inclua departamentos sem funcionários.
d
c a
e A
c l
r a
Você poderá usar estes exercícios como atividades complementares após a discussão dos
seguintes tópicos: Instruções SQL SELECT básicas, comandos básicos do SQL
O ly
Developer, funções SQL, joins, funções de grupo de subconsultas.
l & On
12) Mostre todos os funcionários que foram contratados na primeira metade do mês
(antes do dia 16).
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 7
Exercício 1-1 (continuação)
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.
m y
d e
c a
e A
14) Mostre todos os funcionários cujos gerentes ganham salários superiores a US$
15.000,00. Mostre os seguintes dados: nome do funcionário, nome do gerente, salário
c l
do gerente e nível salarial do gerente.
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 8
Exercício 1-1 (continuação)
m y
d e
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.
c a
e A
c l
17) Crie um relatório que mostre os departamentos que não contam com o trabalho de
r a
representantes de vendas. Inclua o número do departamento, o nome do
departamento, o ID do gerente e seu respectivo local.
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 9
Exercício 1-1 (continuação)
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 10
Exercício 1-1 (continuação)
20) Mostre todos os funcionários que foram contratados no dia da semana em que houve
o maior número de contratações de funcionários.
21) Crie um aniversário com base na data de contratação dos funcionários. Organize os
aniversários em ordem ascendente.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 11
Soluções do Exercício 1-1
Você poderá usar estes exercícios como atividades complementares após a discussão dos
seguintes tópicos: instrução SQL SELECT básica, comandos SQL Developer básicos e
funções SQL.
1) O departamento de RH precisa localizar os dados de todos os funcionários que foram
contratados a partir de 1997.
SELECT *
FROM employees
WHERE job_id = 'ST_CLERK'
AND hire_date > '31-DEC-1997';
c l
serviço que eles já completaram. Organize o relatório pelo tempo de serviço de cada
lista.
r a
um. O funcionário com o maior tempo de serviço deve aparecer em primeiro lugar na
SELECT last_name,
O ly
l & On
TRUNC(MONTHS_BETWEEN(SYSDATE, hire_date) / 12) YEARS,
TRUNC(MOD(MONTHS_BETWEEN(SYSDATE, hire_date), 12))
MONTHS
FROM employees
n a e
t e r U s
ORDER BY years DESC, MONTHS desc;
I n
5) Mostre os funcionários com sobrenomes que começam pelas letras “J,” “K,” “L,” ou
“M.”
c l e
SELECT last_name
r aFROM employees
WHERE SUBSTR(last_name, 1,1) IN ('J', 'K', 'L', 'M');
O
Oracle Database: Fundamentos de SQL I AP - 12
Soluções do Exercício 1-1 (continuação)
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;
Você poderá usar estes exercícios como atividades complementares após a discussão dos
seguintes tópicos: Instrução SQL SELECT básica, comandos básicos do SQL Developer,
funções SQL, joins e funções de grupo.
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) Informe 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.
m y
SELECT COUNT(*)
d e
FROM employees
WHERE last_name LIKE '%n';
c a
A
--or
SELECT COUNT(*)
FROM employees
c
WHERE SUBSTR(last_name, -1) = 'n';
l e
r a
9) Crie um relatório com o nome, local e número de funcionários de cada departamento.
Certifique-se de que o relatório também inclua departamentos sem funcionários.
O ly
SELECT d.department_id, d.department_name,
FROM
d.location_id,
l & On
COUNT(e.employee_id)
employees e RIGHT OUTER JOIN departments d
a e
ON e.department_id = d.department_id
n
t e r U s
GROUP BY d.department_id, d.department_name, d.location_id;
I n
departamentos 10 e 20. Crie um relatório mostrando as IDs dos cargos desses
departamentos.
l e
SELECT DISTINCT job_id
c
FROM employees
O
Oracle Database: Fundamentos de SQL I AP - 13
Soluções do Exercício 1-1 (continuação)
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 SQL SELECT básicas, comandos básicos do SQL
Developer, funções SQL, joins, funções de grupo de subconsultas.
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.
m y
SELECT last_name, salary, TRUNC(salary, -3)/1000
d e
Thousands
a
FROM employees;
A c
14) Mostre todos os funcionários cujos gerentes ganham salários superiores a US$
15.000,00. Mostre os seguintes dados: nome do funcionário, nome do gerente, salário
c l e
do gerente e nível salarial do gerente.
SELECT e.last_name, m.last_name manager, m.salary,
j.grade_level
FROM
r a
employees e JOIN employees m
ON
JOIN O ly
e.manager_id = m.employee_id
job_grades j
ON
AND m.salary > 15000;
l & On
m.salary BETWEEN j.lowest_sal AND j.highest_sal
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 14
Soluções do Exercício 1-1 (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.
SELECT d.department_id, 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;
d
FROM employees
a
GROUP BY department_id);
A c
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 *
c l e
FROM departments
r a
WHERE department_id NOT IN(SELECT department_id
O ly
FROM employees
WHERE job_id = 'SA_REP'
l & On
AND department_id IS NOT NULL);
n a e
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
t e r U s
trabalham nos departamentos que:
a) tenham menos de três funcionários:
I n
SELECT d.department_id, d.department_name, COUNT(*)
c
ON l
FROM
e departments d JOIN employees e
d.department_id = e.department_id
O
Oracle Database: Fundamentos de SQL I AP - 15
Soluções do Exercício 1-1 (continuação)
b) tenha a maior quantidade de funcionários:
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);
c l
SELECT last_name, TO_CHAR(hire_date, 'DAY') day
FROM employees
r a
WHERE TO_CHAR(hire_date, 'Day') =
O ly
(SELECT TO_CHAR(hire_date, 'Day')
FROM employees
l & On
GROUP BY TO_CHAR(hire_date, 'Day')
HAVING COUNT(*) = (SELECT MAX(COUNT(*))
n a e FROM employees
'Day')));
t e r U s
GROUP BY TO_CHAR(hire_date,
I n
21) Crie um aniversário com base na data de contratação dos funcionários. Organize os
aniversários em ordem ascendente.
l e
SELECT last_name, TO_CHAR(hire_date, 'Month DD') BIRTHDAY
c
FROM employees
O
Oracle Database: Fundamentos de SQL I AP - 16
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.
Veja, a seguir, um diagrama das entidades e atributos para a aplicação de vídeo:
TÍTULO
loop #* id
RESERVATION * título
#* res date o assunto * descrição
de classificação o
configurada categoria o
data de liberação 0
disponível
uma
responsável cópia
loop
TITLE_COPY
m y
MEMBRO
#* id
#* id
* status
d e
* sobrenome
nome o c a
o assunto de
endereço o responsável
e A
cidade o
telefone o
loop
c l em relação a
* data de admissão
r a LOCAÇÃO
#* data de reserva
O ly criada
loop data de dev real o
n a e
t e r s
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
U
I n
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
c l e
preencher as tabelas.
Todos os três scripts SQL estão presentes na pasta
r a
/home/oracle/labs/sql1/labs.
• Se você usar o script buildtab.sql para criar as tabelas, comece pela etapa 4.
O
Oracle Database: Fundamentos de SQL I AP - 17
Soluções do Exercício 1-1 (continuação)
• 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).
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 18
Exercício 2-1
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 restrições de integridade.
a) Nome da tabela: MEMBRO
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
Column_
Name
TITLE_ID TITLE DESCRIPTION RATING CATEGORY
y
RELEASE_
m
DATE
Key
Type
PK
d e
Null/
Unique
NN,U NN NN
c a
Check
e
G, PG, R,
NC17, NR A
DRAMA,
COMEDY,
c l ACTION,
CHILD,
r a SCIFI,
DOCUMEN
Length 10
l
60 & On 400 4 20
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 19
Exercício 2-1 (continuação)
c a ID
PK,FK2
Type
Default System
e A
System Date
Value
FK Ref
Date
MEMBER
c l TITLE_
+ 2 days
TITLE_
Table
FK Ref r a
MEMBER_I
COPY
COPY_
COPY
TITLE_ID
Col D
O ly ID
Data
Type
DATE
l & On
NUMBER NUMBER DATE DATE NUMBER
Length
n a e10 10 10
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 20
Exercício 2-1 (continuação)
e) Nome da tabela: RESERVATION
2) Verifique se a tabela foi criada corretamente por meio do Connections Navigator no
SQL Developer.
m y
d e
c a
e A
c l
r a
O ly
3) Crie sequências que forneçam identificação exclusiva a cada linha nas tabelas
MEMBER e TITLE.
l & On
a) Número do sócio da tabela MEMBER: Comece por 101; não permita o
a e
armazenamento em cache dos valores. Dê um nome à sequência
n
MEMBER_ID_SEQ.
t e r U s
b) Número do título na tabela TITLE: Comece por 92; não permita o armazenamento
I n
em cache dos valores. Dê um nome à sequência TITLE_ID_SEQ.
c l e
c) Verifique a existência das sequências por meio do Connections Navigator no SQL
Developer.
r a
O
Oracle Database: Fundamentos de SQL I AP - 21
Exercício 2-1 (continuação)
4) Adicione dados às tabelas. Crie um script para cada conjunto de dados a ser
adicionado.
m y
informações dos filmes. Salve as instruções em script com o nome
d e
a) Adicione títulos de filmes à tabela TITLE. Crie um script para inserir as
c a
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-
A
se que as aspas simples exigem condições especiais em um campo de caracteres.
e
Verifique as adições realizadas.
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 22
Exercício 2-1 (continuação)
Soda Gang
really do exist.
After discovering a cache NR ACTION 01-JUN-1995
m y
of drugs, a young couple
find themselves pitted
d e
against a vicious gang.
c
b) Adicione dados à tabela MEMBER. Salve as instruções inseridas em um script com a
e
sequência para adicionar os números dos sócios. A
o nome lab_apcs_4b.sql. Execute comandos no script. Certifique-se de usar a
First_
c l
Nome
Carmen
Last_Name
Velasquez r a
Endereço
283 King
City
Seattle
Phone
206-899-
Join_Date
08-MAR-
O ly
Street 6666 1990
LaDoris Ngao
n a e 68 Via
Centrale
Sao Paolo 254-852-
5764
17-JUN-
1991
Mark
t e r U s
Quick-to-See 6921 King
Street
Lagos 63-559-7777 07-APR-1990
Audry
I n Ropeburn 86 Chu Street Hong Kong 41-559-87 18-JAN-
1991
c l
Molly
e Urguhart 3035 Laurier Quebec 418-542-
9988
18-JAN-
1991
r a
O
Oracle Database: Fundamentos de SQL I AP - 23
Exercício 2-1 (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.
Título Copy_Id Status Título Copy_Id
2 RENTED 2
2 DISPONÍVEL 2
3 RENTED 3
e
3 days ago
A
1 day ago
93 2 101
95 3 102
r a 2 days ago Today
97 1
O ly
106 4 days ago 2 days ago
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 24
Exercício 2-1 (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.
Observação:Os resultados podem variar.
Título Price
Willie and Christmas Too 25
Alien Again 35
The Glob 35
My Day Off 35
Miracles on Ice 30
Soda Gang
Interstellar Wars
35
29
m y
b) Crie um script com o nome lab_apcs_7b.sql contendo instruções de
d e
Execute os comandos no script.
c a
atualização para atualizar cada vídeo com o preço de acordo com a lista anterior.
A
Observação:Utilize os números em TITLE_ID para este exercício.
e
c l
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
r a
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 lab_apcs_8.sql. O ly
l & On
Observação:Os resultados podem variar.
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 26
Soluções do Exercício 2-1
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 restrições de integridade.
a) Nome da tabela: MEMBRO
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
CONSTRAINT member_join_date_nn NOT NULL);
e A
c l
(category IN ('DRAMA', 'COMEDY', 'ACTION',
'CHILD', 'SCIFI', 'DOCUMENTARY')),
release_date DATE);
r a
c) Nome da tabela: TITLE_COPY
O ly
CREATE TABLE title_copy
(copy_id
l & On
NUMBER(10),
title_id
a e
NUMBER(10)
n
CONSTRAINT title_copy_title_if_fk REFERENCES
title(title_id),
status
t e r U s
VARCHAR2(15)
n
CONSTRAINT title_copy_status_nn NOT NULL
e I
CONSTRAINT title_copy_status_ck CHECK (status IN
('AVAILABLE', 'DESTROYED','RENTED', 'RESERVED')),
c l CONSTRAINT title_copy_copy_id_title_id_pk
PRIMARY KEY (copy_id, title_id));
r a
O
Oracle Database: Fundamentos de SQL I AP - 27
Soluções do Exercício 2-1 (continuação)
d) Nome da tabela: LOCAÇÃO
CREATE TABLE rental
(book_date DATE DEFAULT SYSDATE,
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));
c a
SQL Developer.
e A
2) Verifique se a tabela foi criada corretamente por meio do Connections Navigator no
l
a) No Connections Navigator, expanda Connections > myconnection > Tables.
c
MEMBER e TITLE.
r a
3) Crie sequências que forneçam identificação exclusiva a cada linha nas tabelas
O ly
a) Número do sócio da tabela MEMBER: Comece por 101; não permita o
MEMBER_ID_SEQ.
l & On
armazenamento em cache dos valores. Dê um nome à sequência
n a e
r
CREATE SEQUENCE member_id_seq
START WITH 101
NOCACHE;
t e U s
I n
b) Número do título na tabela TITLE: Comece por 92; não permita o armazenamento
c l e
em cache dos valores. Dê um nome à sequência TITLE_ID_SEQ.
CREATE SEQUENCE title_id_seq
r aSTART WITH 92
NOCACHE;
O
Oracle Database: Fundamentos de SQL I AP - 28
Soluções do Exercício 2-1 (continuação)
c) Verifique a existência das sequências por meio do Connections Navigator no SQL
Developer.
i) No Connections Navigator, pressupondo que o nó myconnection esteja
expandido, expanda Sequences.
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.
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,
category, release_date)
m y
e
VALUES (title_id_seq.NEXTVAL, 'Alien Again', 'Yet another
installment of science fiction history. Can the
heroine save the planet from the alien life form?',
a d
c
'R', 'SCIFI', TO_DATE( '19-MAY-1995','DD-MON-YYYY'))
/
INSERT INTO title(title_id, title, description, rating,
e
category, release_date) A
VALUES
l
(title_id_seq.NEXTVAL, 'The Glob', 'A meteor crashes
c
near a small American town and unleashes carnivorous
r a
goo in this classic.', 'NR', 'SCIFI',
TO_DATE( '12-AUG-1995','DD-MON-YYYY'))
/
O ly
& On
INSERT INTO title(title_id, title, description, rating,
VALUES
l
category, release_date)
a e
(title_id_seq.NEXTVAL, 'My Day Off', 'With a little
for
r n
luck and a lot ingenuity, a teenager skips school
s
n t e
a day in New York.', 'PG', 'COMEDY',
U
TO_DATE( '12-JUL-1995','DD-MON-YYYY'))
/
I
INSERT INTO title(title_id, title, description, rating,
e
c l
VALUES
category, release_date)
(title_id_seq.NEXTVAL, 'Miracles on Ice', 'A six-
O /
TO_DATE('12-SEP-1995','DD-MON-YYYY'))
y
VALUES (member_id_seq.NEXTVAL, 'Carmen', 'Velasquez',
'283 King Street', 'Seattle', '206-899-6666',
TO_DATE('08-MAR-1990',
'DD-MM-AAAA'))
e m
/
a d
INSERT INTO member(member_id, last_name, first_name,
address, city, phone, join_date)
VALUES (member_id_seq.NEXTVAL, 'LaDoris', 'Ngao', A c
l e
'5 Modrany', 'Bratislava', '586-355-8882',
TO_DATE('08-MAR-1990',
c
/
'DD-MM-AAAA'))
r a
O ly
INSERT INTO member(member_id, last_name, first_name,
l & On
address, city, phone, join_date)
VALUES (member_id_seq.NEXTVAL, 'Midori', 'Nagayama',
a e
'68 Via Centrale', 'Sao Paolo', '254-852-5764',
n
r
TO_DATE('17-JUN-1991',
/
t e
'DD-MM-AAAA'))
U s
I n
INSERT INTO member(member_id, last_name, first_name,
a
'6921 King Way', 'Lagos', '63-559-7777', TO_DATE('07-
O r APR-1990',
/
'DD-MM-AAAA'))
COMMIT
SET VERIFY ON
d e
INSERT
VALUES
INTO title_copy (copy_id, title_id, status)
(1, 93, 'AVAILABLE')
c a
A
/
INSERT INTO title_copy (copy_id, title_id, status)
VALUES
/
(2, 93, 'RENTED')
c l e
INSERT
VALUES
r
(1, 94, 'AVAILABLE')
a
INTO title_copy (copy_id, title_id, status)
/
INSERT
O ly
INTO title_copy (copy_id, title_id, status)
VALUES
/ & On
(1, 95, 'AVAILABLE')
l
INSERT
VALUES
n a e
INTO title_copy(copy_id, title_id,status)
(2, 95, 'AVAILABLE')
/
INSERT
t e r U s
INTO title_copy(copy_id, title_id,status)
VALUES
/
n
(3, 95, 'RENTED')
I
l e
INSERT
VALUES
/
c
INTO title_copy(copy_id, title_id,status)
(1, 96, 'AVAILABLE')
Ora INSERT
VALUES
/
INTO title_copy(copy_id, title_id,status)
(1, 97, 'AVAILABLE')
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.
m y
Observação:Os resultados podem variar.
d e
CREATE VIEW title_avail AS
SELECT t.title, c.copy_id, c.status, r.exp_ret_date
c a
FROM title t JOIN title_copy c
e A
l
ON t.title_id = c.title_id
c
FULL OUTER JOIN rental r
a
ON c.copy_id = r.copy_id
AND
SELECT *
r
c.title_id = r.title_id;
O ly
FROM title_avail
ORDER BY title, copy_id;
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 32
Soluções do Exercício 2-1 (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 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')
/
INSERT INTO title_copy (copy_id, title_id, status)
VALUES (2, 98, 'AVAILABLE')
/
b) Insira duas reservas. Uma reserva é para Carmen Velasquez, que deseja alugar
“Interstellar Wars”. A outra reserva é para Mark Quick-to-See, que deseja alugar
“Soda Gang”.
m y
INSERT
VALUES
INTO reservation (res_date, member_id, title_id)
(SYSDATE, 101, 98)
d e
/
INSERT INTO reservation (res_date, member_id, title_id)
c a
VALUES
/
(SYSDATE, 104, 97)
e A
c l
7) Faça uma modificação em uma das tabelas.
r a
a) Execute o script lab_apcs_7a.sql localizado na pasta
O ly
/home/oracle/labs/sql1/labs para adicionar uma coluna PRICE à tabela
TITLE e registrar o preço de compra do vídeo. Verifique as modificações.
ALTER TABLE title
l & On
a e
ADD (price NUMBER(8,2));
n
DESCRIBE title
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I AP - 33
Soluções do Exercício 2-1 (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.
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
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Descrição do esquema
Descrição Geral
Os esquemas de amostra do Oracle Database ilustram uma empresa fictícia que opera em todo o
mundo e atende pedidos de diversos produtos diferentes. A empresa contém três divisões:
• Human Resources: controla informações sobre funcionários e instalações
• Order Entry: controla inventários de produtos e vendas por meio de vários canais
• Sales History: controla as estatísticas dos negócios para facilitar a tomada de decisões
Cada uma dessas divisões é representada por um esquema. Neste curso, você tem acesso aos
objetos de todos os esquemas. No entanto, a ênfase dos exemplos, das demonstrações e das
práticas está no esquema Human Resources (HR).
Todos os scripts necessários para criar os exemplos de esquemas estão na pasta
$ORACLE_HOME/demo/schema/.
Human Resources (HR)
Este é o esquema utilizado neste curso. Nos registros de Human Resource (HR), cada
funcionário apresenta um número de identificação, um endereço de e-mail, um código de
identificação do cargo, um salário e um gerente. Além do salário, alguns funcionários recebem
comissões.
A empresa também rastreias as informações sobre os cargos na organização. Há um código de
identificação, um título e uma faixa salarial com os valores mínimo e máximo para cada cargo.
r a
Nos lugares onde os departamentos e armazéns estão localizados, os detalhes dos registros da
O ly
empresa contêm, por exemplo, nome do país, símbolo monetário, nome da moeda e região de
localização geográfica do país.
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I B - 2
O Diagrama de Relacionamento entre Entidades de HR
HR DEPARTAMENTS LOCATION
department_id location_id
department_name street_address
manager_id postal_code
location_id cidade
state_province
country_id
JOB_HISTORY
employee_id
start_date EMPLOYEES
end_date employee_id
job_id first_name COUNTRY
department_id last_name country_id
email country_name
phone_number region_id
hire_date
job_id
JOBS salário
job_id commission_pct
job_title manager_id
min_salary REGION
department_id
max_salary region_id
region_name
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I B - 3
Human Resources (HR) Tabela Descriptions
DESCRIBE countries
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I B - 4
Human Resources (HR) Tabela Descriptions (continuação)
DESCRIBE departments
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I B - 5
Human Resources (HR) Tabela Descriptions (continuação)
DESCRIBE employees
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I B - 6
Human Resources (HR) Tabela Descriptions (continuação)
DESCRIBE job_history
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I B - 7
Human Resources (HR) Tabela Descriptions (continuação)
DESCRIBE jobs
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I B - 8
Human Resources (HR) Tabela Descriptions (continuação)
DESCRIBE locations
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I B - 9
Human Resources (HR) Tabela Descriptions (continuação)
DESCRIBE regions
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I B - 10
Usando o SQL Developer
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Objetivos
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Objetivos
e A
l
Neste apêndice, você será apresentado à ferramenta gráfica chamada SQL Developer. Você
c
r a
aprenderá a usar o SQL Developer nas tarefas de desenvolvimento de seu banco de dados. Você
aprenderá a usar a Planilha SQL para executar instruções e scripts SQL.
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I C2
O que É o Oracle SQL Developer?
• O Oracle SQL Developer é uma ferramenta gráfica que
melhora a produtividade e simplifica as tarefas de
desenvolvimento de banco de dados.
• Você pode se conectar a qualquer esquema de banco de
dados Oracle de destino usando a autenticação de banco
de dados padrão Oracle.
m y
SQL Developer
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
O que É o Oracle SQL Developer?
e A
c l
O Oracle SQL Developer é uma ferramenta gráfica gratuita projetada para melhorar sua
produtividade e simplificar o desenvolvimento das tarefas diárias de banco de dados. Com
r a
apenas alguns cliques, você poderá criar e depurar com facilidade procedures armazenados,
testar instruções SQL e exibir planos do otimizador.
O ly
O SQL Developer, a ferramenta visual para o desenvolvimento de banco de dados, simplifica as
seguintes tarefas:
l & On
• Pesquisa e gerenciamento de objetos de banco de dados
a e
• Execução de scripts e instruções SQL
n
t
• Criação de relatórios
e r U s
• Edição e depuração de instruções PL/SQL
I n
Você pode se conectar a qualquer esquema de banco de dados Oracle de destino usando a
autenticação padrão de banco de dados Oracle. Quando estiver conectado, você poderá executar
l e
operações em objetos no banco de dados.
c
O SQL Developer release 1.2 está totalmente integrado ao Developer Migration Workbench, que
r a
oferece aos usuários um único ponto para navegar pelos dados e objetos de bancos de dados em
bancos de dados de terceiros e para migrar desses bancos de dados para o Oracle. Você também
O
pode se conectar a esquemas de bancos de dados de terceiros (não Oracle) como, MySQL,
Microsoft SQL Server e Microsoft Access e pode também exibir dados e metadados nesses
bancos de dados.
Além disso, o SQL Developer inclui suporte para o Oracle Application Express 3.0.1 (Oracle
APEX).
Oracle Database: Fundamentos de SQL I C3
Especificações do SQL Developer
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Especificações do SQL Developer
e A
l
O Oracle SQL Developer 1.5 é fornecido com o Oracle Database 11g Release 2. O SQL
c
r a
Developer é desenvolvido em Java e utiliza o IDE (Integrated Development Environment) do
Oracle JDeveloper . Portanto, é uma ferramenta multiplataforma. A ferramenta funciona nas
O ly
plataformas X de sistema operacional (OS) Windows, Linux e Mac.
l & On
A conectividade default para o banco de dados se dá pelo driver Java Database Connectivity
(JDBC) Thin e, portanto, não há a necessidade de um Oracle Home. O SQL Developer não
a e
necessita de um instalador e você precisa apenas descompactar o arquivo transferido por
n
t e r U s
download. Com o SQL Developer, os usuários podem se conectar a Oracle Databases 9.2.0.1 e
posteriores e a todas as versões de banco de dados Oracle, incluindo a Express Edition.
Observação
I n
c l e
Em versões do Oracle Database anteriores à Oracle Database 11g Release 2, você deverá fazer o
download e instalar o SQL Developer. O SQL Developer 1.5 está disponível para download
r a
gratuito a partir do seguinte link:
http://www.oracle.com/technology/products/database/sql_developer/index.html.
O
Para obter instruções sobre como instalar o S QL Developer, consulte o site em:
http://download.oracle.com/docs/cd/E12151_01/index.htm
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Interface do SQL Developer 1.5
e A
direita: c l
A interface do SQL Developer 1.5 contém três tabs principais de navegação, da esquerda para a
r a
• Tab Connections: Com esta tab, você pode navegar pelos objetos e usuários de banco de
dados aos quais tem acesso.
O ly
• Tab Files: Identificada pelo ícone da pasta Files, essa tab permite o acesso aos arquivos na
l & On
máquina local sem que seja necessário usar o menu File > Open.
a e
• Tab Reports: Identificada pelo ícone Reports, essa tab permite que você execute relatórios
n
Uso e Navegação Geral
t e r
predefinidos ou crie e adicione seus próprios relatórios.
U s
I n
O SQL Developer usa o lado esquerdo de navegação para localizar e selecionar objetos e o lado
direito para exibir informações sobre objetos selecionados. Você pode personalizar diversos
l e
aspectos da aparência e do comportamento do SQL Developer configurando preferências.
c
r a
Observação: Você precisa definir pelo menos uma conexão para poder conectar-se a um
esquema de banco de dados e emitir consultas SQL ou executar procedimentos/funções.
O
Oracle Database: Fundamentos de SQL I C5
Interface do SQL Developer 1.5 (continuação)
Menus
Os menus a seguir contêm entradas padrão, além de entradas para recursos específicos do SQL
Developer:
• View: Contém opções que afetam o que é exibido na interface do SQL Developer
• Navigate: Contém opções para navegar para painéis e para executar subprogramas
• Run: Contém as opções Run File e Execution Profile que são relevantes quando uma
função ou um procedimento são selecionados, além de operações de depuração.
• Source: Contém opções para serem usadas quando você editar funções e procedures
• Versioning: Oferece suporte integrado para os seguintes sistemas de controle de origem e
de versão: CVS (Concurrent Versions System) e Subversion.
• Migration: Contém opções relacionadas à migração de bancos de dados de terceiros para
o Oracle
• Tools: Chama as ferramentas do SQL Developer como, por exemplo, SQL*Plus,
Preferences e Planilha SQL
Observação: O menu Run também contém opções que são relevantes quando uma função ou
um procedure é selecionado para depuração. Essas são as mesmas opções encontradas no menu
Debug na versão 1.2.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I C6
Criando uma Conexão de Banco de Dados
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Criando uma Conexão de Banco de Dados
e A
l
Uma conexão é um objeto do SQL Developer que especifica as informações necessárias para
c
r a
conexão com determinado banco de dados como um usuário específico desse banco de dados.
Para usar o SQL Developer, será necessário ter ao menos uma conexão de banco de dados, que
O ly
poderá ser existente, criada ou importada.
l & On
Você pode criar e testar conexões com vários bancos de dados e vários esquemas.
Por default, o arquivo tnsnames.ora está localizado no diretório
n a e
$ORACLE_HOME/network/admin, mas ele também pode estar no diretório especificado
t e r U s
pelo valor de Registro ou pela variável de ambiente TNS_ADMIN. Quando você iniciar o SQL
Developer e exibir a caixa de diálogo Database Connections, o SQL Developer importará
I n
automaticamente as conexões definidas no arquivo tnsnames.ora do sistema.
c l e
Observação: No Windows, se existir o arquivo tnsnames.ora, mas suas conexões não
estiverem sendo usadas pelo SQL Developer, defina TNS_ADMIN como uma variável de
r a
ambiente do sistema.
Você pode exportar conexões para um arquivo XML para que você possa reutilizá-las.
O
Você pode criar conexões adicionais como usuários diferentes do mesmo banco de dados ou
para conectar-se aos diferentes bancos de dados.
1 2
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Criando uma Conexão de Banco de Dados (continuação)
e A
l
Para criar uma conexão de banco de dados, faça o seguinte:
c
selecione New Connection.
r a
1. Na página com a tab Connections, clique com o botão direito do mouse em Connections e
O ly
2. Na janela New/Select Database Connection, informe o nome da conexão. Informe o nome
l & On
de usuário e a senha do esquema ao qual deseja se conectar.
a) Na lista drop-down Role, você pode selecionar default ou SYSDBA. (Você pode
a e
escolher SYSDBA para o usuário sys ou qualquer usuário com privilégios de
n
t e r
administrador do banco de dados).
s
b) Você pode selecionar o tipo de conexão como:
U
I n
Basic:Nesse tipo, digite o nome do host e o SID para o banco de dados ao qual
deseja se conectar. A porta já foi configurada como 1521. Como alternativa, você
c l e
pode digitar o nome do serviço em Service name diretamente, se usar uma conexão
remota de banco de dados.
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I C9
Navegando por Objetos de Banco de Dados
Use o Connections Navigator para:
• Navegar por vários objetos em um esquema de banco
de dados
• Analisar rapidamente as definições de objetos
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Navegando por Objetos de Banco de Dados
e A
l
Após criar uma conexão de banco de dados, você poderá usar o Connections Navigator para
c
r a
procurar dentre vários objetos em um esquema de banco de dados, incluindo Tabelas, Views,
Índices, Pacotes, Procedures, Triggers e Tipos.
O ly
O SQL Developer usa o lado esquerdo de navegação para localizar e selecionar objetos e o lado
l & On
direito para exibir informações sobre objetos selecionados. Você pode personalizar diversos
aspectos da aparência do SQL Developer configurando preferências.
n a e
Você pode visualizar a definição dos objetos dividida em tabs de informações que são obtidas do
t e r U s
dicionário de dados. Por exemplo, se você tiver selecionado uma tabela no Navigator, os
detalhes sobre colunas, constraints, grants, estatísticas, triggers e assim por diante serão exibidos
I n
em uma página com tabs fácil de ler.
c l e
Se desejar visualizar a definição da tabela EMPLOYEES conforme mostrada no slide, execute as
seguintes etapas:
r a
1. Expanda o nó Connections no Connections Navigator.
2. Expanda Tables.
O 3. Clique em EMPLOYEES. Por default, a tab Columns é selecionada. Ela mostra a descrição
da coluna da tabela. Usando a tab Data, você poderá exibir os dados da tabela, assim como
incluir novas linhas, atualizar dados e fazer commit dessas alterações no banco de dados.
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Exibindo a Estrutura da Tabela
e A
l
No SQL Developer, também é possível exibir a estrutura de uma tabela usando o comando
c
r a
DESCRIBE. O resultado do comando é uma exibição de nomes de colunas e tipos de dados,
assim como uma indicação informando se a coluna deve conter dados.
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I C11
Procurando Arquivos
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Navegando por Objetos de Banco de Dados
e A
l
Você pode usar o File Navigator para procurar e abrir os arquivos do sistema.
c
r a
• Para exibir o Files Navigator, clique na tab Files ou selecione View > Files.
• Para exibir o conteúdo de um arquivo, clique duas vezes no nome de um arquivo para
O ly
exibir seu conteúdo na área da Planilha SQL.
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I C12
Criando um Objeto de Esquema
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Criando um Objeto de Esquema
e A
l
O SQL Developer oferece suporte para a criação de qualquer objeto de esquema com a execução
c
r a
de uma instrução SQL em uma planilha SQL. Como alternativa, você poderá criar objetos
usando os menus de contexto. Depois de criados, você poderá editar os objetos usando uma
O ly
caixa de diálogo de edição ou um dos muitos menus contextuais.
l & On
À medida que os novos objetos são criados ou que os objetos existentes são editados, a DDL
referente a esses ajustes se torna disponível para análise. A opção Export DDL estará disponível
a e
se você quiser criar a DDL completa para um ou mais objetos no esquema.
n
t e r U s
As apresentações de slides mostram como criar uma tabela usando o menu de contexto. Para
abrir uma caixa de diálogo a fim de criar uma nova tabela, clique com o botão direito do mouse
I n
em Tables e selecione New Table. As caixas de diálogo para criar e editar objetos de banco de
l e
dados possuem diversas tabs, cada uma delas refletindo um agrupamento lógico de propriedades
para esse tipo de objeto.
c
r a
O
Oracle Database: Fundamentos de SQL I C13
Criando uma Nova Tabela: Exemplo
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Criando uma Nova Tabela: Exemplo
e A
l
Na caixa de diálogo Create Table, se você não marcar a caixa de seleção Advanced, poderá criar
c
r a
uma tabela rapidamente especificando colunas e alguns recursos usados com frequência.
Se você marcar a caixa de seleção Advanced, a caixa de diálogo Create Table será alterada para
O ly
outra com diversas opções, na qual será possível especificar um amplo conjunto de recursos
durante a criação da tabela.
l & On
O exemplo do slide mostra como criar a tabela DEPENDENTS, marcando a caixa de seleção
Advanced.
n a e
e r s
Para criar uma nova tabela, execute as seguintes etapas:
t U
1. No Connections Navigator, clique com o botão direito do mouse em Tables.
I n
2. Selecione Create TABLE.
c l e
3. Na caixa de diálogo Create Table, selecione Advanced.
4. Especifique as informações da coluna.
r a
5. Clique em OK.
Ainda que não seja obrigatório, você deve especificar também uma chave primária usando a tab
O
Primary Key na caixa de diálogo. Às vezes, talvez você queira editar a tabela que criou. Para
fazê-lo, clique com o botão direito do mouse na tabela no Connections Navigator e selecione
Edit.
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Usando a Planilha SQL
e A
l
Quando você estabelecer uma conexão com um banco de dados, uma janela da Planilha SQL
c
r a
será aberta automaticamente para essa conexão. Você pode usar a Planilha SQL para informar e
executar instruções SQL, PL/SQL e SQL*Plus. A Planilha SQL oferece suporte a instruções
O ly
SQL*Plus até determinado ponto. As instruções SQL*Plus que não são compatíveis com a
l & On
Planilha SQL serão ignoradas e não passarão para o banco de dados.
Você pode especificar as ações que podem ser processadas pela conexão de banco de dados
associada à planilha, como:
n a e
• Criar uma tabela
• Inserir dados
t e r U s
I n
• Criar e editar um trigger
• Selecionando dados de uma tabela
l e
• Salvar os dados selecionados em um arquivo
c
r a
Você pode exibir uma Planilha SQL usando uma das seguintes opções:
• Selecione Tools > SQL Worksheet.
O • Clique no ícone Open SQL Worksheet.
2 4 6 8
1 3 5 7 9
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Usando a Planilha SQL (continuação)
e A
l
Você poderá usar as teclas de atalho ou os ícones para executar determinadas tarefas como a
c
r a
execução de uma instrução SQL, de um script e a exibição do histórico de instruções SQL
executadas por você. Você poderá usar a barra de ferramentas da Planilha SQL que contém
O ly
ícones para a execução das seguintes tarefas:
l & On
1. Execute Statement: Executa a instrução no local onde o cursor está na caixa Enter SQL
Statement. Você poderá usar variáveis de bind nas instruções SQL, mas não poderá usar
variáveis de substituição.
n a e
t e r
2. Run Script: Executa todas as instruções na caixa Enter SQL Statement usando o Script
s
Runner. Você poderá usar variáveis de substituição nas instruções SQL, mas não poderá
U
I n
usar variáveis de bind.
3. Commit: Grava as alterações no banco de dados e finaliza a transação
l e
4. Rollback: Descarta as alterações no banco de dados sem gravá-las e finaliza a transação.
c
5. Cancel: Interrompe as instruções em execução no momento.
r a
6. SQL History: Exibe uma caixa de diálogo com informações sobre instruções SQL
executadas por você
O 7. Execute Explain Plan: Gera o plano de execução, que você pode visualizar clicando na
tab Explain.
8. Autotrace: Gera informações de rastreamento da instrução.
9. Clear: Apaga a(s) instrução(ões) na caixa Enter SQL Statement.
Oracle Database: Fundamentos de SQL I C16
Usando a Planilha SQL
Informe
instruções SQL.
Os resultados
são mostrados
aqui.
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Usando a Planilha SQL (continuação)
e A
l
Quando você estabelecer uma conexão com um banco de dados, uma janela da Planilha SQL
c
r a
será aberta automaticamente para essa conexão. Você pode usar a Planilha SQL para informar e
executar instruções SQL, PL/SQL e SQL*Plus. Todos os comandos SQL e PL/SQL são
O ly
suportados, já que passam diretamente da Planilha SQL para o banco de dados Oracle. Os
l & On
comandos SQL*Plus usados no SQL Developer precisam ser interpretados pela Planilha SQL
antes de passarem para o banco de dados.
a e
Atualmente, a Planilha SQL oferece suporte a diversos comandos do SQL*Plus. Os comandos
n
t e r U s
não suportados pela Planilha SQL serão ignorados e não serão enviados para o banco de dados
Oracle. Com a Planilha SQL, você pode executar instruções SQL e alguns dos comandos do
SQL*Plus.
I n
l e
Você pode exibir uma Planilha SQL usando uma das opções a seguir:
• Selecione Tools > SQL Worksheet.
c
a
• Clique no ícone Open SQL Worksheet.
r
O
Oracle Database: Fundamentos de SQL I C17
Executando Instruções SQL
F9 F5
F5
F9
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Executando Instruções SQL
e A
l
O exemplo no slide mostra a diferença no resultado da mesma consulta quando a tecla [F9] ou
c
a
Execute Statement é usada em vez de [F5] ou Run Script.
r
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I C18
Salvando Scripts SQL
Clique no ícone Save
1 para salvar sua instrução
SQL em um arquivo.
Identifique um local,
O conteúdo do arquivo
2 informe um nome de
3 salvo estará visível e arquivo e clique em Save.
poderá ser editado na
janela da Planilha SQL.
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Salvando Scripts SQL
e A
l
Você pode salvar as instruções SQL da Planilha SQL em um arquivo de texto. Para salvar o
c
r a
conteúdo da caixa Enter SQL Statement, execute as seguintes etapas:
1. Clique no ícone Save ou use o item de menu File > Save.
O ly
2. Na caixa de diálogo Salvar, informe um nome de arquivo e o local no qual deseja salvar o
arquivo.
3. Clique em Save.
l & On
a e
Depois de salvar o conteúdo em um arquivo, a janela Enter SQL Statement exibirá uma página
n
t e r U s
com uma tab do conteúdo do arquivo. Você pode abrir vários arquivos ao mesmo tempo. Cada
arquivo será exibido como uma página com tab.
Script Pathing
I n
c l e
Você pode selecionar um caminho default no qual poderá procurar e salvar scripts. Em Tools >
Preferences > Database > Worksheet Parameters, informe um valor no campo “Select default
a
path to look for scripts” .
r
O
Oracle Database: Fundamentos de SQL I C19
Executando Arquivos de Script Salvos: Método 1
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Executando Arquivos de Script Salvos: Método 1
e A
l
Para abrir um arquivo de script e exibir o código na área da Planilha SQL, siga estas etapas:
c
r a
1. No Files Navigator, selecione (ou navegue até) o arquivo de script que deseja abrir.
2. Clique duas vezes no arquivo para abri-lo. O código do arquivo de script será exibido na
área da Planilha SQL.
O ly
l & On
3. Selecione uma conexão na lista drop-down.
4. Para executar o código, clique no ícone Run Script (F5) na barra de ferramentas da
a e
Planilha SQL. Se você não tiver selecionado uma conexão na lista drop-down, uma caixa
n
script.
t e r
de diálogo de conexão será exibida. Selecione a conexão que deseja usar na execução do
U s
I n
Como alternativa, você também pode fazer o seguinte:
1. Selecionar File > Open. A caixa de diálogo Open será exibida.
l e
2. Na caixa de diálogo Open, selecione (ou navegue até) o arquivo de script que deseja abrir.
c
3. Clique em Open. O código do arquivo de script será exibido na área da Planilha SQL.
r a
4. Selecione uma conexão na lista drop-down.
O 5. Para executar o código, clique no ícone Run Script (F5) na barra de ferramentas da
Planilha SQL. Se você não tiver selecionado uma conexão na lista drop-down, uma caixa
de diálogo de conexão será exibida. Selecione a conexão que deseja usar na execução do
script.
A saída do script é
exibida na página com
a tab Script Output.
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Executando Arquivos de Script Salvos: Método 2
e A
l
Para executar um script SQL salvo, siga estas etapas:
c
Enter SQL Statement.
r a
1. Use o comando @ seguido pelo local e pelo nome do arquivo que deseja executar na janela
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I C21
Formatando o Código SQL
Antes da
formatação
Depois da
formatação
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Formatando o Código SQL
e A
l
Você poderá formatar a endentação, o espaçamento, o uso de maiúsculas e minúsculas e a
c
código SQL.
r a
separação de linha do código SQL. O SQL Developer possui um recurso para a formatação do
O ly
Para formatar o código SQL, clique com o botão direito do mouse na área da instrução e
selecione Format SQL.
l & On
No exemplo do slide, antes da formatação, as palavras-chave do código SQL não estão
n a e
capitalizadas e a endentação adequada não foi aplicada à instrução. Após a formatação, o código
t e r U s
SQL é aprimorado com a capitalização das palavras-chave e a endentação adequada.
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I C22
Usando Snippets
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Usando Snippets
e A
l
Você poderá usar determinados fragmentos de códigos quando usar a Planilha SQL ou criar ou
c
r a
editar uma função ou um procedure PL/SQL. O SQL Developer possui o recurso chamado
Snippets. Snippets são fragmentos de códigos como funções SQL, dicas do Optimizer e diversas
O ly
técnicas de programação de PL/SQL. Você pode arrastar snippets para a janela Editor.
l & On
Para exibir os Snippets, selecione View > Snippets.
A janela Snippets é exibida à direita. Você poderá usar a lista drop-down para selecionar um
n a e
grupo. O botão Snippets é exibido na margem da janela à direita para que você possa exibir a
t e r U s
janela Snippets se ela ficar oculta.
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I C23
Usando Snippets: Exemplo
Inserindo
um snippet
Editando o
snippet
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Usando Snippets: Exemplo
e A
l
Para inserir um Snippet em seu código em uma Planilha SQL ou em uma função ou um
c
r a
procedure PL/SQL, arraste o snippet da janela Snippets para o local desejado no código. Em
seguida, você poderá editar a sintaxe para que a função SQL seja válida no contexto atual. Para
O ly
exibir uma breve descrição de uma função SQL em uma dica de ferramenta, posicione o cursor
sobre o nome da função.
l & On
O exemplo no slide mostra que CONCAT(char1, char2)é arrastado do grupo Character
a e
Functions na janela Snippets. Em seguida, a sintaxe de função CONCAT é editada e o restante da
n
t e r U s
instrução é adicionado conforme a seguir:
SELECT CONCAT(first_name, last_name)
I n
FROM employees;
c l e
r a
O
Oracle Database: Fundamentos de SQL I C24
Depurando Procedures e Funções
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Depurando Procedures e Funções
e A
l
No SQL Developer, você pode depurar procedures e funções PL/SQL. Usando as opções do
c
r a
menu Debug, você pode executar as seguintes tarefas de depuração:
• Find Execution Point vai para o próximo ponto de execução.
• Resume continua a execução.
O ly
l & On
• Step Over ignora o próximo método e vai para a instrução seguinte após o método.
• Step Into vai para a primeira instrução no próximo método.
a e
• Step Out deixa o método atual e vai para a próxima instrução.
n
t e r
• Step to End of Method vai para a última instrução do método atual.
s
• Pause interrompe a execução, mas não sai, permitindo que a execução seja retomada.
U
I n
• Terminate interrompe e sai da execução. Não é possível retomar a execução a partir deste
ponto. Em vez disso, para iniciar a execução ou a depuração no início da função ou do
l e
procedure, clique no ícone Run ou Debug, na barra de ferramentas da tab Source.
c
• Garbage Collection remove objetos inválidos do cache para armazenar objetos acessados
O
Essas opções também estão disponíveis como ícones na barra de ferramentas de depuração.
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Geração de Relatórios de Banco de Dados
e A
c l
O SQL Developer oferece diversos relatórios sobre o banco de dados e seus objetos. Esses
relatórios podem ser agrupados nas seguintes categorias:
• About Your Database
r a
• Database Administration
• Table O ly
• PL/SQL
l & On
• Security
• XML
n a e
• Jobs
• Streams
t e r U s
• All Objects
• Data Dictionary I n
l e
• Relatórios Definidos pelo Usuário
c
r a
Para exibir os relatórios, clique na tab Reports à esquerda da janela. Os relatórios individuais são
exibidos em painéis com tab à direita da janela. Para cada relatório, você poderá selecionar
O
(usando uma lista suspensa) a conexão de banco de dados para a qual exibir o relatório. Nos
relatórios sobre objetos, aqueles mostrados são apenas os objetos visíveis para o usuário do
banco de dados associado à conexão com o banco de dados selecionada, e as linhas são
normalmente ordenadas por Owner. Você também pode criar seus próprios relatórios definidos
pelo usuário.
Oracle Database: Fundamentos de SQL I C26
Criando um Relatório Definido pelo Usuário
c
Criando um Relatório Definido pelo Usuário
e A
l
Os relatórios definidos pelo usuário são aqueles criados pelos usuários do SQL Developer. Para
c
r a
criar um relatório definido pelo usuário, faça o seguinte:
1. Clique com o botão direito do mouse no nó User Defined Reports em Reports e selecione
Add Report.
O ly
l & On
2. Na caixa de diálogo Create Report, especifique o nome do relatório e a consulta SQL para
recuperar as informações do relatório. Em seguida, clique em Apply.
a e
No exemplo do slide, o nome do relatório foi especificado como emp_sal. Uma descrição
n
t e r U s
opcional é oferecida, indicando que o relatório contém detalhes de funcionários com salary
>= 10000. A instrução SQL completa para a recuperação das informações a serem exibidas no
I n
relatório definido pelo usuário está especificada na caixa SQL. Você também poderá incluir uma
dica de ferramenta opcional, a ser exibida quando o cursor for posicionado brevemente sobre o
l e
nome do relatório na opção Reports do navegador.
c
r a
Você pode organizar os relatórios definidos pelo usuário em pastas e pode criar uma hierarquia
de pastas e subpastas. Para criar uma pasta para os relatórios definidos pelo usuário, clique com
O
o botão direito do mouse no nó User Defined Reports ou em qualquer nome de pasta nesse nó e
selecione Add Folder. As informações sobre os relatórios definidos pelo usuário, incluindo as
pastas desses relatórios, são armazenadas em um arquivo chamado UserReports.xml no
diretório de informações específicas do usuário.
Atalhos para
ferramentas usadas
com frequência
1
Links para
mecanismos de
pesquisa e fóruns de
discussão populares
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Mecanismos de Pesquisa e Ferramentas Externas
e A
l
Para melhorar a produtividade dos desenvolvedores de SQL, o SQL Developer adicionou links
c
r a
rápidos para mecanismos de pesquisa e fóruns de discussão populares como AskTom, Google e
assim por diante. Além disso, você tem disponíveis ícones de atalho para algumas das
O ly
ferramentas usadas com mais frequência, como Bloco de Notas, Microsoft Word e
Dreamweaver.
l & On
Você pode adicionar ferramentas externas à lista existente ou até mesmo deletar atalhos para
a e
ferramentas que não usa com frequência. Para fazer isso, execute estas etapas:
n
t e r U s
1. No menu Tools, selecione External Tools.
2. Na caixa de diálogo External Tools, selecione New para adicionar novas ferramentas.
n
Selecione Delete para remover qualquer ferramenta da lista.
I
c l e
r a
O
Oracle Database: Fundamentos de SQL I C28
Definindo Preferências
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Definindo Preferências
e A
l
Você pode personalizar muitos aspectos da interface e do ambiente do SQL Developer
c
r a
modificando as preferências do SQL Developer de acordo com suas preferências e necessidades.
Para modificar as preferências do SQL Developer, selecione Tools e Preferences.
O ly
As preferências estão agrupadas nas seguintes categorias:
• Environment
l & On
• Accelerators (atalhos do teclado)
• Code Editors
n a e
• Database
• Debugger
t e r U s
• Documentation
• Extensions I n
l
• File Types
c
• Migration
e
r a
• PL/SQL Compilers
O • PL/SQL Debugger
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Redefinindo o Layout do SQL Developer
e A
l
Ao trabalhar com o SQL Developer, se o Connections Navigator desaparecer, ou se você não
c
problema:
r a
puder encaixar a janela Log em seu local original, execute as seguintes etapas para corrigir o
a e
3. Vá para o diretório em que windowinglayout.xml está e delete esse arquivo.
n
t e r
4. Reinicie o SQL Developer.
U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I C30
Sumário
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Sumário
e A
l
O SQL Developer é uma ferramenta gráfica gratuita que simplifica as tarefas de
c
r a
desenvolvimento de banco de dados. Com o SQL Developer, você pode criar, editar e navegar
por objetos de banco de dados. Você pode usar a Planilha SQL para executar scripts e instruções
O ly
SQL. O SQL Developer permite que você crie e salve seu próprio conjunto especial de relatórios
para reutilização.
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I C31
m y
d e
ca
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Usando o SQL*Plus
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Objetivos
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Objetivos
e A
l
É possível criar instruções SELECT que possam ser usadas indefinidamente. Este apêndice
c
r a
também aborda o uso de comandos do SQL*Plus para executar instruções SQL. Você aprenderá
a formatar a saída usando comandos do SQL*Plus, a editar comandos SQL e a salvar scripts no
SQL*Plus.
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I D - 2
Interação entre SQL e SQL*Plus
Instruções SQL
Servidor
SQL*Plus
Resultados da consulta
Buffer
SQL
SQL
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
SQL e SQL*Plus
e A
c l
SQL é uma linguagem de comando usada para comunicação com o servidor Oracle por meio de
qualquer ferramenta ou aplicativo. O Oracle SQL contém diversas extensões. Quando você
r a
informa uma instrução SQL, ela é armazenada em uma parte da memória chamada de buffer
O ly
SQL e permanece lá até que você especifique uma nova instrução SQL. O SQL*Plus é uma
ferramenta da Oracle que reconhece e envia instruções SQL para o Oracle9i Server para serem
l & On
executadas. Ele contém sua própria linguagem de comandos.
Recursos da linguagem SQL
n a e
experiência em
programação t e r
• Ela pode ser usada por diferentes usuários, incluindo aqueles com pouca ou nenhuma
U s
I n
• É uma linguagem não procedural
c l e
• Reduz a quantidade de tempo necessária para a criação e a manutenção de sistemas
• É uma linguagem semelhante ao idioma inglês
r a
Recursos do SQL*Plus
• Aceita a entrada ad hoc de instruções
O • Aceita a entrada SQL de arquivos
• Oferece um editor de linha para a modificação de instruções SQL
• Controla as configurações do ambiente
• Formata os resultados da consulta em relatórios básicos
• Acessa bancos de dados locais e remotos
Oracle Database: Fundamentos de SQL I D - 3
Instruções SQL Versus Comandos do SQL*Plus
SQL SQL*Plus
• Uma linguagem • Um ambiente
• Padrão ANSI • Proprietário da Oracle
• Palavras-chave não • Palavras-chave podem
podem ser abreviadas. ser abreviadas.
• Instruções manipulam • Os comandos não
dados permitem a manipulação
e definições de tabela no de valores no banco de
banco de dados. dados.
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
SQL e SQL*Plus (continuação)
e A
A tabela a seguir compara o SQL e o SQL*Plus:
c l
SQL
r a SQL*Plus
O ly
É uma linguagem para a comunicação com o Reconhece instruções SQL e as envia ao servidor
l
É baseada no padrão ANSI (American& On
servidor Oracle a fim de acessar os dados
É a interface proprietária da Oracle para a
n a e
National Standards Institute) SQL execução de instruções SQL
banco de dados
t e r U s
Manipula dados e definições de tabelas no Não permite a manipulação de valores no banco
de dados
I n
É incluída no buffer SQL em uma ou mais É incluído em uma linha de cada vez; não é
linhas
c l e
Não tem um caractere de continuação
armazenado no buffer SQL
Utiliza um traço (–) como caractere de
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
SQL*Plus
e A
O SQL*Plus é um ambiente no qual você pode:
c l
dados
r a
• Executar instruções SQL para recuperar, modificar, adicionar e remover dados do banco de
O ly
• Formatar, executar cálculos, armazenar e imprimir resultados de consultas no formato de
relatórios
l & On
• Criar arquivos de script para armazenar instruções SQL para uso repetido no futuro
a e
Os comandos do SQL*Plus podem ser divididos nas seguintes categorias principais:
n
Categoria
e r
Objetivo
t U s
Environment
Format I n
Afeta o comportamento geral das instruções SQL na sessão
Formata os resultados da consulta
c l
Execution
e
File manipulation Salva, carrega e executa arquivos de script
Envia instruções SQL do buffer SQL para o servidor Oracle
r a
Edit Modifica as instruções SQL no buffer
O Interaction
Miscellaneous
Cria e especifica variáveis para instruções SQL, imprime valores de
variáveis e imprime mensagens na tela
Conecta-se ao banco de dados, manipula o ambiente SQL*Plus e exibe
definições de colunas
sqlplus [username[/password[@database]]]
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Efetuando Login no SQL*Plus
e A
l
O modo como você chama o SQL*Plus depende do tipo de sistema operacional no qual você
c
está executando o Oracle Database.
r a
Para efetuar login em um ambiente Linux, execute as seguintes etapas:
O ly
1. Clique com o botão direito do mouse na área de trabalho Linux e selecione o terminal.
l & On
2. Digite o comando sqlplus mostrado no slide.
3. Digite o nome do usuário, a senha e o nome do banco de dados.
Na sintaxe:
n a e
t e r U s
username Seu nome de usuário do banco de dados
password Sua senha do banco de dados (Ela estará visível se você digitá-la aqui).
n
@database A string de conexão do banco de dados
I
c l e
Observação: Para assegurar a integridade de sua senha, não digite-a no prompt do sistema
operacional. Em vez disso, digite apenas seu nome de usuário. Digite a senha no prompt de
a
senha.
r
O
Oracle Database: Fundamentos de SQL I D - 6
Exibindo a Estrutura da Tabela
DESC[RIBE] tablename
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Exibindo a Estrutura da Tabela
e A
l
No SQL*Plus, você pode exibir a estrutura de uma tabela usando o comando DESCRIBE. O
c
r a
resultado do comando é uma exibição de nomes de colunas e tipos de dados, assim como uma
indicação informando se a coluna deve conter dados.
Na sintaxe: O ly
o usuário l & On
tablename O nome de qualquer tabela, view ou sinônimo acessível para o
n a e
Para descrever a tabela DEPARTMENTS, use este comando:
Name
t e r U s
SQL> DESCRIBE DEPARTMENTS
Null? Type
I n
----------------------- -------- ---------------
c l e
DEPARTMENT_ID NOT NULL NUMBER(4)
r a DEPARTMENT_NAME
MANAGER_ID
NOT NULL VARCHAR2(30)
NUMBER(6)
O LOCATION_ID NUMBER(4)
DESCRIBE departments
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Exibindo a Estrutura da Tabela (continuação)
e A
l
O exemplo no slide exibe informações sobre a estrutura da tabela DEPARTMENTS. No
c
resultado:
r a
Null?: Especifica se uma coluna deve conter dados (NOT NULL indica que a coluna deve
conter dados.)
O ly
& On
Type: Exibe o tipo de dados de uma coluna
l
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I D - 8
Comandos de Edição do SQL*Plus
• A[PPEND] text
• C[HANGE] / old / new
• C[HANGE] / text /
• CL[EAR] BUFF[ER]
• DEL
• DEL n
• DEL m n
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Comandos de Edição do SQL*Plus
e A
l
Os comandos do SQL*Plus são inseridos em uma linha por vez e não são armazenados no buffer
c
SQL.
Comando r a
Descrição
A[PPEND] text
O ly
Adiciona texto ao final da linha atual
C[HANGE] / old / new
l & On
Altera o texto old para o texto new na linha atual
C[HANGE] / text /
O número de linha.
• Você pode finalizar o buffer SQL digitando um dos caracteres finalizadores (ponto e
vírgula ou barra) ou pressionando [Enter] duas vezes. O prompt SQL será exibido.
• I[NPUT]
• I[NPUT] text
• L[IST]
• L[IST] n
• L[IST] m n
• R[UN]
• n
• n text
• 0 text
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Comandos de Edição do SQL*Plus (continuação)
e A
Comando Descrição
c l
I[NPUT]
I[NPUT] text
r a
Insere um número indefinido de linhas
Insere uma linha que consiste em text
L[IST]
O ly
Lista todas as linhas no buffer SQL
L[IST] n
l & On
Lista uma linha (especificada por n)
Lista uma faixa de linhas (m a n) inclusive
L[IST] m n
R[UN]
n a e
Exibe e executa a instrução SQL atual no buffer
n
n text
t e r U s
Especifica a linha que se tornará a atual
Substitui a linha n por text
0 text
I n Insere uma linha antes da linha 1
l e
Observação: Você pode informar apenas um comando do SQL*Plus para cada prompt SQL. Os
c
comandos do SQL*Plus não são armazenados no buffer. Para continuar um comando do
r a
SQL*Plus na linha seguinte, finalize a primeira linha com um hífen (-).
O
Oracle Database: Fundamentos de SQL I D - 10
Usando LIST, n e APPEND
LIST
1 SELECT last_name
2* FROM employees
1
1* SELECT last_name
A , job_id
1* SELECT last_name, job_id
LIST
1 SELECT last_name, job_id
2* FROM employees
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Usando LIST, n e APPEND
e A
l
• Use o comando L[IST] para exibir o conteúdo do buffer SQL. O asterisco (*) ao lado da
c
linha atual.
r a
linha 2 no buffer indica que a linha 2 é a linha atual. Quaisquer edições feitas se aplicam à
O ly
• Altere o número da linha atual digitando o número (n) da linha que você deseja editar. A
nova linha atual será exibida.
l & On
• Use o comando A[PPEND] para adicionar texto à linha atual. A linha recém-editada será
a e
exibida. Verifique o novo conteúdo do buffer usando o comando LIST.
n
t e r U s
Observação: Muitos comandos do SQL*Plus, incluindo LIST e APPEND, podem ser
abreviados para apenas sua primeira letra. LIST pode ser abreviado para L; APPEND pode ser
abreviado para A.
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I D - 11
Usando o Comando CHANGE
LIST
1* SELECT * from employees
c/employees/departments
1* SELECT * from departments
LIST
1* SELECT * from departments
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Usando o Comando CHANGE
e A
l
• Use o comando L[IST] para exibir o conteúdo do buffer.
c
r a
• Use o comando C[HANGE] para alterar o conteúdo da linha atual no buffer SQL. Neste
caso, substitua a tabela employees pela tabela departments. A nova linha atual será
exibida.
O ly
& On
• Use o comando L[IST] para verificar o novo conteúdo do buffer.
l
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I D - 12
Comandos de Arquivo do SQL*Plus
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Comandos de Arquivo do SQL*Plus
e A
c l
As instruções SQL se comunicam com o servidor Oracle. Os comandos do SQL*Plus controlam
o ambiente, formatam os resultados das consultas e gerenciam arquivos. Você pode usar os
comandos descritos na seguinte tabela:
r a
Comando
O ly
Descrição
SAV[E] filename
[.ext]
l & On
Salva o conteúdo atual do buffer SQL em um arquivo. Use APPEND
para adicionar o conteúdo a um arquivo existente e REPLACE para
[REP[LACE]APP[END]]
t e r U s
Grava o conteúdo de um arquivo salvo anteriormente no buffer SQL. A
extensão default do nome do arquivo é .sql.
STA[RT] filename
[.ext]
I n Executa um arquivo de comandos salvo anteriormente
@ filename
ED[IT]
c l e Executa um arquivo de comandos salvo anteriormente (igual a START)
Acessa o editor e salva o conteúdo do buffer no arquivo afiedt.buf
O ra
ED[IT]
[filename[.ext]]
SPO[OL]
Acessa o editor para editar o conteúdo de um arquivo salvo
LIST
1 SELECT last_name, manager_id, department_id
2* FROM employees
SAVE my_query
Created file my_query
START my_query
c
Usando os Comandos SAVE, START e EDIT
e A
SAVE
c l
r a
Use o comando SAVE para armazenar o conteúdo atual do buffer em um arquivo. Dessa
maneira, você pode armazenar scripts usados frequentemente para emprego futuro.
START O ly
l & On
Use o comando START para executar um script no SQL*Plus. Você também pode, como
a e
alternativa, usar o símbolo @ para executar um script.
n
@my_query
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I D - 14
Comando SERVEROUTPUT
• Use o comando SET SERVEROUT[PUT] para controlar se
o resultado dos procedimentos armazenados ou os blocos
PL/SQL deverão ser exibidos no SQL*Plus.
• O limite de comprimento da linha DBMS_OUTPUT
é aumentado de 255 bytes para 32767 bytes.
• O tamanho default agora é ilimitado.
• Os recursos não são pré-alocados quando
SERVEROUTPUT está definido.
• Como não há penalidades de desempenho, use
UNLIMITED, a não ser que você deseje preservar
a memória física.
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Comando SERVEROUTPUT
e A
l
A maioria dos programas PL/SQL executa entrada e saída por meio de instruções SQL, para
c
r a
armazenar dados em tabelas de banco de dados ou consultar essas tabelas. Toda a entrada/saída
PL/SQL restante é feita por meio de APIs que interagem com outros programas. Por exemplo, o
O ly
pacote DBMS_OUTPUT possui procedures como PUT_LINE. Para ver o resultado fora do
a e
O SQL*Plus não exibirá os dados de DBMS_OUTPUT a não ser que você primeiro envie o
n
t e r
SET SERVEROUTPUT ON
U s
comando SET SERVEROUTPUT ON do SQL*Plus conforme a seguir:
Observação
I n
• SIZE define o número de bytes da saída, que pode ser armazenado em buffer no servidor
l e
do Oracle Database. O default é UNLIMITED. n não pode ser menor que 2000 ou mais
c
r a
que 1.000.000.
• Para obter informações adicionais sobre SERVEROUTPUT, consulte o Oracle Database
O PL/SQL User's Guide and Reference 11g.
Opção Descrição
file_name[.ext] Envia a saída para o nome de arquivo especificado
c
Usando o Comando SPOOL do SQL*Plus
e A
l
O comando SPOOL armazena os resultados da consulta em um arquivo ou, como opção, envia o
c
r a
arquivo para uma impressora. O comando SPOOL foi aprimorado. Você agora pode anexar ou
substituir um arquivo existente; anteriormente, só era possível usar o comando SPOOL para criar
O ly
(e substituir) um arquivo. REPLACE é o default.
l & On
Para enviar a saída gerada pelos comandos em um script sem exibir a saída na tela, use SET
TERMOUT OFF. SET TERMOUT OFF não afeta a saída de comandos executados de forma
interativa.
n a e
t e r U s
Você deve usar aspas nos nomes de arquivos que contêm espaço em branco. Para criar um
arquivo HTML válido usando os comandos SPOOL APPEND, você deve usar PROMPT ou um
I n
comando similar para criar o cabeçalho e o rodapé da página HTML. O comando SPOOL
APPEND não efetua parse de tags HTML. SET SQLPLUSCOMPAT[IBILITY] para 9,2 ou
l e
anterior para desativar os parâmetros CREATE, APPEND e SAVE.
c
r a
O
Oracle Database: Fundamentos de SQL I D - 16
Usando o Comando AUTOTRACE
SET AUTOTRACE ON
-- The AUTOTRACE report includes both the optimizer
-- execution path and the SQL statement execution
-- statistics
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Usando o Comando AUTOTRACE
e A
l
EXPLAIN mostra o caminho de execução da consulta executando EXPLAIN PLAN.
c
r a
STATISTICS exibe as estatísticas da instrução SQL. A formatação do relatório AUTOTRACE
poderá variar dependendo da versão do servidor ao qual você está conectado e da configuração
O ly
desse servidor. O pacote DBMS_XPLAN oferece uma maneira fácil de exibir o resultado do
Observação
l & On
comando EXPLAIN PLAN em vários formatos predefinidos.
a e
• Para obter informações adicionais sobre o pacote e os subprogramas, consulte o Oracle
n
t e r U s
Database PL/SQL Packages and Types Reference 11g.
• Para obter informações adicionais sobre EXPLAIN PLAN, consulte Oracle Database SQL
Reference 11g.
I n
• Para obter informações adicionais sobre Planos de Execução e estatísticas, consulte Oracle
l e
Database Performance Tuning Guide 11g.
c
r a
O
Oracle Database: Fundamentos de SQL I D - 17
Sumário
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Sumário
e A
l
O SQL*Plus é um ambiente de execução que pode ser usado para enviar comandos SQL para o
c
r a
servidor de banco de dados e para editar e salvar comandos SQL. Você pode executar comandos
no prompt do SQL ou em um arquivo de script.
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I D - 18
Usando o JDeveloper
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Objetivos
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Objetivos
e A
c l
Neste apêndice, você será apresentado ao JDeveloper. Você aprenderá a usar o JDeveloper nas
a
tarefas de desenvolvimento de seu banco de dados.
r
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I E - 2
Oracle JDeveloper
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Oracle JDeveloper
e A
l
O Oracle JDeveloper é um IDE (Integrated Development Environment) para o desenvolvimento
c
r a
e a disponibilização de aplicações Java e serviços Web. Ele suporta todos os estágios do SDLC
(Software Development Life Cycle), desde a modelagem até a implantação. Também dispõe dos
O ly
recursos que permitem usar os padrões mais recentes do setor para Java, XML e SQL no
desenvolvimento de aplicações.
l & On
O Oracle JDeveloper 11g introduz uma nova abordagem para o desenvolvimento em J2EE ao
a e
oferecer recursos que permitem desenvolvimento visual e declarativo. Essa abordagem
n
t e r U s
inovadora torna o desenvolvimento em J2EE simples e eficiente.
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I E - 3
Database Navigator
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Database Navigator
e A
l
Usando o Oracle JDeveloper, é possível armazenar em um objeto denominado “connection”
c
r a
(conexão) as informações necessárias para se conectar a um banco de dados. Uma conexão é
armazenada como parte das definições do IDE e pode ser exportada e importada, a fim de
O ly
facilitar o compartilhamento entre grupos de usuários. As conexões são usadas para várias
& On
finalidades, desde a navegação no banco de dados e a criação de aplicações até a implantação.
l
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I E - 4
Criando Conexão
4 Clique em OK.
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Criando Conexão
e A
l
Uma conexão é um objeto que especifica as informações necessárias para se conectar com um
c
r a
determinado banco de dados como um usuário específico desse banco de dados. Você pode criar
e testar conexões com vários bancos de dados e vários esquemas.
O ly
Para criar uma conexão de banco de dados, execute as seguintes etapas:
l & On
1. Clique no ícone New Connection no Database Navigator.
2. Na janela Create Database Connection, informe o nome da conexão. Informe o nome de
a e
usuário e a senha do esquema ao qual deseja se conectar. Informe o SID do Banco de
n
t e r U s
Dados com o qual deseja se conectar.
3. Clique em Test para garantir que a conexão foi definida corretamente.
4. Clique em OK.
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I E - 5
Navegando por Objetos de Banco de Dados
Use o Database Navigator para:
• Navegar por vários objetos em um esquema de banco de
dados
• Analisar rapidamente as definições de objetos
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Navegando por Objetos de Banco de Dados
e A
l
Após criar uma conexão de banco de dados, você poderá usar o Database Navigator para
c
r a
procurar dentre vários objetos em um esquema de banco de dados, incluindo Tabelas, Views,
Índices, Pacotes, Procedures, Triggers e Tipos.
O ly
Você pode visualizar a definição dos objetos dividida em tabs de informações que são obtidas do
l & On
dicionário de dados. Por exemplo, se você tiver selecionado uma tabela no Navigator, os
detalhes sobre colunas, restrições, grants, estatísticas, triggers e assim por diante serão exibidos
a e
em um Database Navigator fácil de ler.
n
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I E - 6
Executando Instruções SQL
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Executando Instruções SQL
e A
l
Para executar uma instrução SQL, siga estas etapas:
c
1. Clique no ícone Open SQL Worksheet.
2. Selecione a conexão. r a
3. Execute o comando SQL: O ly
& On
1. Clicando no botão Execute statement ou pressionando F9. A saída é a seguinte:
l
n a e
t e r U s
I n
c l e
2. Clicando no botão Run Script ou pressionando F5. A saída é a seguinte:
r a
O
Oracle Database: Fundamentos de SQL I E - 7
Criando Unidades de Programa
m y
Esqueleto da função
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Criando Unidades de Programa
e A
l
Para criar uma unidade de programa PL/SQL, faça o seguinte:
c
r a
1. Selecione View > Database Navigator. Selecione e expanda uma conexão com o banco de
dados. Clique com o botão direito do mouse na pasta correspondente ao tipo de objeto
O ly
(Procedures, Pacotes, Funções). Escolha “New [Procedures|Packages|Functions]”.
l & On
2. Informe um nome válido para a função, o pacote ou o procedure e clique em OK.
3. Uma definição de esqueleto é criada e aberta no Code Editor. Em seguida, você poderá
a e
editar o subprograma para adequá-lo às suas necessidades.
n
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I E - 8
Compilando
c
Compilando
e A
l
Após editar a definição de esqueleto, você precisa compilar a unidade de programa. Clique com
c
r a
o botão direito do mouse no objeto PL/SQL a ser compilado no Connection Navigator e
selecione Compile. Como alternativa, também é possível pressionar [Ctrl] + [Shift] + [F9] para
fazer a compilação.
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I E - 9
Executando uma Unidade de Programa
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Executando uma Unidade de Programa
e A
l
Para executar uma unidade de programa, clique com o botão direito do mouse no objeto e,
c
r a
depois, clique em Run. A caixa de diálogo Run PL/SQL será exibida. Talvez seja preciso alterar
os valores NULL para valores aceitáveis que serão especificados na unidade de programa. Após
O ly
alterar os valores, clique em OK. A saída será exibida na janela Message-Log.
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I E - 10
Eliminando uma Unidade de Programa
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Eliminando uma Unidade de Programa
e A
l
Para eliminar uma unidade de programa, clique com o botão direito do mouse no objeto e
c
será eliminado do banco de dados.
r a
selecione Drop. A caixa de diálogo Drop Confirmation será exibida. Clique em Apply. O objeto
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I E - 11
Janela Structure
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Janela Structure
e A
l
A janela Structure permite uma visão estrutural dos dados contidos no documento selecionado
c
r
modos de exibição e o Property Inspector.a
na janela ativa, que pode ser um dos elementos que formam a estrutura: navegadores, editores,
O ly
Clique na janela View > Structure para exibir a janela Structure.
l & On
Na janela Structure, é possível exibir os dados do documento de várias maneiras. As estruturas
disponíveis para exibição se baseiam no tipo do documento. No caso de um arquivo Java, é
n a e
possível exibir a estrutura de código, a estrutura da interface do usuário ou os dados de modelo
t e r U s
da interface do usuário. No caso de um arquivo XML, é possível exibir a estrutura XML, a
estrutura do projeto ou os dados de modelo da interface do usuário.
I n
A janela Structure é dinâmica, controlando sempre a seleção atual da janela ativa (a menos que
c l e
você congele o conteúdo da janela em uma view específica), como acontece com o editor ativo
no momento. Quando a seleção atual é um nó no navegador, o editor default é utilizado. Se
a
quiser alterar a view da estrutura para a seleção atual, clique em outra tab de estrutura.
r
O
Oracle Database: Fundamentos de SQL I E - 12
Janela Editor
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Janela Editor
e A
l
Quando você clica duas vezes no nome de uma unidade de programa, ela é aberta na janela
c
r a
Editor. É possível exibir todos os arquivos de projeto em apenas uma janela do editor, abrir
várias views do mesmo arquivo ou abrir várias views de arquivos diferentes.
O ly
Na parte superior da janela do editor, encontram-se as tabs de documentos. Clicar em uma tab de
editor atual.
l & On
documento coloca esse arquivo em destaque, trazendo-o para o primeiro plano da janela do
n a e
Na parte inferior da janela do editor referente a um determinado arquivo, estão as tabs de editor.
t e r U s
A seleção de uma dessas tabs abre o arquivo no editor correspondente.
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I E - 13
Application Navigator
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Application Navigator
e A
l
O Applications - Navigator oferece uma visão lógica da aplicação e dos dados contidos nela.
c
r a
Esse navegador fornece uma infraestrutura à qual as diversas extensões podem se conectar.
Essas extensões também podem usar a infraestrutura para organizar seus dados e menus de
O ly
forma consistente e abstrata. Embora o Applications - Navigator possa conter arquivos
l & On
individuais (como arquivos-fonte Java), ele foi projetado para consolidar dados complexos.
Nesse navegador, os tipos de dados complexos, como objetos de entidades, diagramas UML,
a e
EJB ou serviços Web, aparecem como nós únicos. Os arquivos brutos que compõem esses nós
n
t e r
abstratos são exibidos na janela Structure.
U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I E - 14
Implantando Procedures Java Armazenados
1 2 3
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Implantando Procedures Java Armazenados
e A
l
Crie um perfil de implantação para os procedures Java armazenados e implante as classes. Se
c
definições do perfil.
r a
quiser, você também poderá implantar métodos estáticos públicos no JDeveloper usando as
O ly
A implantação no banco de dados usa as informações fornecidas no Deployment Profile Wizard,
l & On
além de dois utilitários do Oracle Database:
loadjava carrega em um banco de dados Oracle a classe Java que contém os procedures
a e
•
armazenados.
•
r n s
publish gera os encapsuladores específicos de chamada PL/SQL para os métodos
t e U
estáticos públicos carregados. A publicação permite que os métodos Java sejam chamados
n
como funções ou procedures PL/SQL.
e I
c l
r a
O
Oracle Database: Fundamentos de SQL I E - 15
Publicando Java em PL/SQL
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Publicando Java em PL/SQL
e A
l
O slide mostra o código Java e ilustra como publicá-lo em um procedure PL/SQL.
c
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I E - 16
Como Posso Obter Mais Informações
sobre o JDeveloper 11g?
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I E - 17
Sumário
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I E - 18
Sintaxe Join do Oracle
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Objetivos
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Objetivos
e A
l
Esta lição explica como obter dados de mais de uma tabela. Uma join é usada para visualizar
c
de mais de uma tabela.
r a
informações de diversas tabelas. Portanto, você pode join as tabelas para visualizar informações
O ly
Observação: Informações sobre joins podem ser encontradas na seção “SQL Queries and
& On
Subqueries: Joins” em Oracle Database SQL Language Reference 11g, Release 1 (11.1).
l
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I F 2
Obtendo Dados de Várias Tabelas
EMPLOYEES DEPARTMENT
…
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Obtendo Dados de Várias Tabelas
e A
l
Em alguns casos, poderá ser necessário usar dados de mais de uma tabela. No exemplo do slide,
c
r a
o relatório exibe dados de duas tabelas separadas:
• IDs de Funcionários existem na tabela EMPLOYEES.
O ly
• IDs de Departamento existem tanto na tabela EMPLOYEES quanto na tabela
DEPARTMENTS.
l & On
• Nomes de Departmento existem na tabela DEPARTMENTS.
a e
Para produzir o relatório, será necessário vincular as tabelas EMPLOYEES e DEPARTMENTS e
n
acessar os dados de ambas.
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I F 3
Produtos Cartesianos
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Produtos Cartesianos
e A
l
Quando uma condição de join é inválida ou omitida completamente, o resultado é um Produto
c
r a
Cartesiano, no qual todas as combinações de linha são exibidas. Em outras palavras, todas as
linhas na primeira tabela são unidas a todas as linhas da segunda tabela.
O ly
Um Produto Cartesiano tende a gerar um grande número de linhas e o resultado raramente é útil.
l & On
Portanto, você deverá sempre incluir uma condição de join válida a não ser que você precise
especificamente combinar todas as linhas de todas as tabelas.
n a e
No entanto, os Produtos Cartesianos são úteis para alguns testes, quando você precisa gerar um
t e r U s
grande número de linhas para simular uma quantidade razoável de dados.
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I F 4
Gerando um Produto Cartesiano
Produto
Cartesiano:
20 x 8 = 160 linhas …
…
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Gerando um Produto Cartesiano
e A
c l
Um Produto Cartesiano é gerado quando uma condição de join é omitida. O exemplo do slide
exibe os sobrenomes e o departamento do funcionário das tabelas EMPLOYEES e
r a
DEPARTMENTS, respectivamente. Como uma condição de join não foi especificada, todas as
linhas (20 linhas) da tabela EMPLOYEES serão unidas a todas as linhas (8 linhas) da tabela
O ly
DEPARTMENTS, gerando, portanto 160 linhas no resultado.
& On
SELECT last_name, department_name dept_name
l
a e
FROM employees, departments;
n
t e r U s
I n
c l e
r a…
O
Oracle Database: Fundamentos de SQL I F 5
Tipos de Joins Proprietárias da Oracle
• Equijoin
• Não-equijoin
• Join externa
• Self-join
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Tipos de Joins
e A
l
Para unir tabelas, você pode usar a sintaxe de join da Oracle.
c
r a
Observação: Antes do lançamento do Oracle9i , a sintaxe de join era proprietária. A sintaxe join
compatível com SQL:1999– não oferece nenhum benefício de desempenho em relação à sintaxe
join proprietária da Oracle. O ly
l & On
A Oracle não possui uma sintaxe equivalente para oferecer suporte à FULL OUTER JOIN da
sintaxe join compatível com SQL:1999.
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I F 6
Unindo Tabelas Usando a Sintaxe Oracle
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Unindo Tabelas Usando a Sintaxe Oracle
e A
c l
Quando os dados de mais de uma tabela do banco de dados forem necessários, uma condição de
join será usada. As linhas em uma tabela podem ser unidas a linhas em outra tabela de acordo
r a
com valores comuns que existam nas colunas correspondentes (isto é, normalmente colunas de
chave principal e estrangeira).
O ly
Para exibir os dados de duas ou mais tabelas relacionadas, escreva uma condição de join simples
na cláusula WHERE.
l & On
Na sintaxe:
n a e
table1.column
table1.column1 =
t e r
Denota a tabela e a coluna das quais os dados são recuperados
s
É a condição que une (ou relaciona) as tabelas
U
table2.column2
Diretrizes I n
l e
• Ao escrever uma instrução SELECT que une tabelas, coloque o nome da tabela antes do
c
nome da coluna para fins de clareza e para aprimorar o acesso ao banco de dados.
r a
• Se o mesmo nome de coluna aparece em mais de uma tabela, o nome da coluna deverá ser
antecedido pelo nome da tabela.
O • Para unir n tabelas, será necessário um mínimo de n-1 condições de join. Por exemplo,
para unir quatro tabelas, será necessário um mínimo de três joins. Essa regra poderá não se
aplicar se sua tabela possuir uma chave principal concatenada. Nesse caso, mais de uma
coluna será necessária para identificar cada linha de forma exclusiva.
Oracle Database: Fundamentos de SQL I F 7
Qualificando Nomes de Coluna Ambíguos
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Qualificando Nomes de Coluna Ambíguos
e A
c l
Ao unir duas ou mais tabelas, será necessário qualificar s nomes das colunas com o nome da
tabela para evitar ambiguidade. Sem os prefixos de tabela, a coluna DEPARTMENT_ID na lista
r a
SELECT pode ser tanto da tabela DEPARTMENTS quanto da tabela EMPLOYEES. Portanto, é
necessário adicionar o prefixo de tabela para executar a consulta. Caso não haja nomes de coluna
O ly
em comum entre as duas tabelas, não há necessidade de qualificá-las. No entanto, o uso de um
prefixo de tabela melhora o desempenho, pois você informa ao servidor Oracle exatamente onde
as colunas deverão ser encontradas.
l & On
A qualificação de nomes de colunas com nomes de tabelas pode levar bastante tempo,
a e
particularmente se os nomes das tabelas forem grandes. Portanto, você poderá usar apelidos de
n
r s
tabela em vez de nomes de tabelas. Assim como um apelido de coluna dá outro nome à coluna,
e
o apelido de tabela dá outro nome à tabela. Os apelidos de tabela ajudam a manter o código SQL
t U
menor usando, portanto, menos memória.
I n
O nome da tabela é especificado na forma completa, seguido por um espaço e pelo apelido da
tabela. Por exemplo, a tabela EMPLOYEES pode receber o apelido e e a tabela DEPARTMENTS
l e
pode receber o apelido d.
Diretrizes
c
r a
• Os apelidos de tabela podem ter até 30 caracteres, mas apelidos menores são melhores do
que os maiores.
O • Se um apelido for usado para um determinado nome de tabela na cláusula FROM, o apelido
da tabela deverá ser substituído pelo nome da tabela durante a instrução SELECT.
• Apelidos de tabela devem ser significativos.
• Um apelido de tabela será válido apenas para a instrução SELECT atual.
Oracle Database: Fundamentos de SQL I F 8
Equijoins
EMPLOYEES DEPARTMENT
…
Chave primária
Chave estrangeira
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Equijoins
e A
l
Para determinar o nome do departamento de um funcionário, você compara o valor na coluna
c
r a
DEPARTMENT_ID na tabela EMPLOYEES aos valores DEPARTMENT_ID na tabela
DEPARTMENTS. O relacionamento entre as tabelas EMPLOYEES e DEPARTMENTS é uma
O ly
equijoin; ou seja, os valores nas colunas DEPARTMENT_ID em ambas as tabelas devem ser
estrangeiras.
l & On
iguais. Com frequência, esse tipo de join envolve complementos de chaves primárias e
a e
Observação: Equijoins também são chamadas de joins simples ou joins internas.
n
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I F 9
Recuperando Registros com Equijoins
…
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Recuperando Registros com Equijoins
e A
No exemplo do slide:
c l
r a
• A cláusula SELECT especifica os nomes de coluna a serem recuperados:
- O sobrenome do funcionário, o número do funcionário e o número do departamento,
O ly
que são colunas na tabela EMPLOYEES
DEPARTMENTS
l & On
- O número e o nome do departamento e o ID do local, que são colunas na tabela
a e
• A cláusula FROM especifica as duas tabelas que deverão ser acessadas pelo banco de
n
dados:
- Tabela EMPLOYEES
t e r U s
I n
- Tabela DEPARTMENTS
• A cláusula WHERE especifica como as tabelas deverão ser unidas:
c l e
e.department_id = d.department_id
Como a coluna DEPARTMENT_ID é comum a ambas as tabelas, ela deverá possuir um prefixo
r a
com o apelido da tabela para evitar ambiguidade. Outras colunas que não estão presentes em
O
ambas as tabelas não precisam ser qualificadas por um apelido de tabela, mas é recomendável
que isso seja feito para a obtenção de um melhor desempenho.
Observação: Quando você usa o ícone Execute Statement para executar a consulta, o SQL
Developer inclui um sufixo “_1” para diferenciar entre os dois DEPARTMENT_IDs.
Oracle Database: Fundamentos de SQL I F 10
Recuperando Registros com Equijoins: Exemplo
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Recuperando Registros com Equijoins: Exemplo
e A
l
No exemplo do slide, a tabela LOCATIONS está unida à tabela DEPARTMENTS pela coluna
c
r a
LOCATION_ID, que é a única coluna de mesmo nome em ambas as tabelas. Os apelidos de
tabela são usados para qualificar as colunas e evitar ambiguidade.
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I F 11
Condições Adicionais de Pesquisa
Usando o Operador AND
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Condições Adicionais de Pesquisa Usando o Operador AND
e A
l
Além da join, você poderá ter critérios em sua cláusula WHERE para restringir as linhas a serem
c
r a
analisadas em uma ou em mais tabelas da join. O exemplo no slide limita as linhas de resultado
àquelas nas quais o ID do departamento é igual a 20 ou 50:
O ly
Por exemplo, para exibir o número e o nome do departamento do funcionário Matos, você
& On
precisará adicionar uma condição adicional na cláusula WHERE.
l
d.department_name
n a e
SELECT e.last_name, e.department_id,
t e r
FROM employees e, departments d
U s
WHERE e.department_id = d.department_id
AND
I n
last_name = 'Matos';
c l e
r a
O
Oracle Database: Fundamentos de SQL I F 12
Unindo Mais de Duas Tabelas
c
Unindo Mais de Duas Tabelas
e A
l
Em alguns casos, você precisará unir mais de duas tabelas. Por exemplo, para exibir o
c
r a
sobrenome, o nome do departamento e a cidade de cada funcionário, você precisará unir as
tabelas EMPLOYEES, DEPARTMENTS e LOCATIONS.
O ly
SELECT e.last_name, d.department_name, l.city
FROM
& On
employees e, departments d, locations l
l
WHERE e.department_id = d.department_id
AND
a e
d.location_id = l.location_id;
n
t e r U s
I n
c l e
r a
O…
Oracle Database: Fundamentos de SQL I F 13
Não-equijoins
EMPLOYEE JOB_GRADES
c
Não-equijoins
e A
l
Uma não-equijoin é uma condição de join que contém algo além de um operador de igualdade.
c
r a
A relação entre as tabelas EMPLOYEES e JOB_GRADES é um exemplo de não-equijoin. A
coluna SALARY na tabela EMPLOYEES contém intervalos entre os valores nas colunas
O ly
LOWEST_SAL e HIGHEST_SAL da tabela JOB_GRADES. Portanto, cada funcionário poderá
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I F 14
Recuperando Registros com Não-equijoins
…
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Recuperando Registros com Não-equijoins
e A
l
O exemplo no slide cria uma não-equijoin para avaliar o grau do salário de um funcionário. O
c
r a
salário deverá estar entre qualquer par do intervalo do salário mais baixo e do salário mais alto.
É importante observar que todos os funcionários aparecem exatamente uma vez quando essa
O ly
consulta é executada. Nenhum funcionário é repetido na lista. Há duas razões para isso:
l & On
• Nenhuma das linhas na tabela de grau de cargo contém graus que se sobreponham. Ou
seja, o valor do salário de um funcionário poderá estar apenas entre os valores de salário
a e
baixo e de salário alto de uma das linhas na tabela de grau de salário.
n
t e r U s
• Os salários de todos os funcionários estão compreendidos entre os limites fornecidos pela
tabela de níveis de cargos. Ou seja, nenhum funcionário ganha menos do que o menor
HIGHEST_SAL. I n
valor presente na coluna LOWEST_SAL ou mais do que o maior valor presente na coluna
l e
Observação: Outras condições (como <= e >=) podem ser usadas, mas BETWEEN é a mais
c
r a
simples. Lembre-se de especificar o valor baixo antes do valor alto ao usar a condição
BETWEEN. O servidor Oracle converte a condição BETWEEN em um par de condições AND.
O
Portanto, usar BETWEEN não oferece benefícios de desempenho, mas deverá ser usada para fins
de simplicidade lógica.
Os apelidos de tabela foram especificados no exemplo do slide para fins de desempenho, não
porque representam uma possível ambiguidade.
Oracle Database: Fundamentos de SQL I F 15
Retornando Registros sem Correspondência
Direta com Joins Externas
DEPARTMENT EMPLOYEE
Não há funcionários no
departamento 190.
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Retornando Registros sem Correspondência Direta com Joins Externas
e A
l
Se uma linha não satisfizer uma condição de join, ela não será exibida no resultado da consulta.
c
r a
Por exemplo, na condição equijoin das tabelas EMPLOYEES e DEPARTMENTS, o ID de
departamento 190 não aparece, pois não há funcionários com esse ID registrados na tabela
O ly
EMPLOYEES. Da mesma forma, há um funcionário cuja DEPARTMENT_ID está definida como
l & On
NULL, sendo assim, essa linha também não será exibida no resultado da consulta de uma
equijoin. Para retornar o registro do departamento que não contém funcionários, ou para retornar
a e
o registro do funcionário que não pertence a nenhum departamento, você poderá usar a join
n
externa.
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I F 16
Joins Externas: Sintaxe
• Você usa uma join externa para ver linhas que não
atendem à condição de join.
• O operador de join externa é o sinal de mais (+).
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Joins Externas: Sintaxe
e A
l
Linhas ausentes poderão ser retornadas se um operador de join externa for usado na condição de
c
r a
join. O operador é um sinal de mais entre parênteses (+) e é colocado ao “lado” da join com
deficiência de informações. Esse operador tem o efeito de criar uma ou mais linhas nulas, às
O ly
quais uma ou mais linhas da tabela não deficiente poderão ser unidas.
Na sintaxe:
l & On
É a condição que une (ou relaciona) as tabelas
table1.column =
n a e
table2.column (+) É o símbolo de join externa, que pode ser colocado em qualquer lado
t e r s
da condição de cláusula WHERE, mas não nos dois lados (Coloque o
U
símbolo externo da joinapós o nome da coluna da tabela sem
I n as linhas correspondentes.)
c l e
r a
O
Oracle Database: Fundamentos de SQL I F 17
Usando Joins Externas
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Usando Joins Externas
e A
l
O exemplo do slide exibe o sobrenome, o ID de departamento e o nome de departamento do
c
resultado.
r a
funcionário. O departamento Contracting não possui funcionários. O valor vazio é mostrado no
n a e
correspondência direta na outra tabela.
t e r U s
• Uma condição que envolve uma join externa não pode usar o operador IN ou ser vinculada
a outra condição pelo operador OR
I n
.Observação: A sintaxe de join da Oracle não possui equivalentes para FULL OUTER JOIN da
c l e
sintaxe de join compatível com SQL:1999.
r a
O
Oracle Database: Fundamentos de SQL I F 18
Join Externa: Outro Exemplo
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Join Externa: Outro Exemplo
e A
l
A consulta no exemplo do slide recupera todas as linhas na tabela EMPLOYEES, mesmo que não
c
a
haja correspondência na tabela DEPARTMENTS.
r
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I F 19
Unindo uma Tabela a Ela Mesma
… …
c
Unindo uma Tabela a Ela Mesma
e A
l
Em alguns casos, você precisará unir uma tabela a ela mesma. Para localizar o nome do gerente
c
r a
de cada funcionário, será necessário unir a tabela EMPLOYEES a ela mesma ou executar uma
self-join. Por exemplo, para descobrir o nome do gerente de Lorentz, você precisa:
O ly
• Localizar Lorentz na tabela EMPLOYEES olhando a coluna LAST_NAME
a e
• Localizar o nome do gerente com o EMPLOYEE_ID 103 olhando na coluna LAST_NAME.
n
t e r
O número de funcionário de Hunold é 103, portanto, Hunold é o gerente de Lorentz.
U s
Nesse processo, você olhou a tabela duas vezes. A primeira vez, você olhou para localizar
I n
Lorentz na coluna LAST_NAME e o valor MANAGER_ID de 103. Na segunda vez, você olhou a
coluna EMPLOYEE_ID para localizar 103 e a coluna LAST_NAME para localizar Hunold.
c l e
r a
O
Oracle Database: Fundamentos de SQL I F 20
Self-Join: Exemplo
…
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Self-Join: Exemplo
e A
l
O exemplo do slide une a tabela EMPLOYEES a ela mesma. Para simular duas tabelas na
c
r a
cláusula FROM, há dois apelidos (worker e manager) na mesma tabela, EMPLOYEES.
Neste exemplo, a cláusula WHERE contém a join que significa “onde o número do gerente de um
O ly
trabalhador corresponde ao número de funcionário do gerente”.
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I F 21
Sumário
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Sumário
e A
Há várias maneiras de unir as tabelas.
c l
Tipos de Joins
• Equijoins r a
• Não-equijoins O ly
• Joins externas
• Self-joins
l & On
Produtos Cartesianos
n a e
e r s
Um Produto Cartesiano resulta na exibição de todas as combinações de linhas. Isso é feito pela
t
omissão da cláusula WHERE.
U
Apelidos de Tabela I n
l e
• Apelidos de tabela aceleram o acesso ao banco de dados.
c
• Os apelidos de tabela podem ajudar a manter o código SQL menor, poupando memória.
r a
O
Oracle Database: Fundamentos de SQL I F 22
Exercício F: Visão Geral
m y
d e
a
Copyright © 2011, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
c
Exercício F: Visão Geral
e A
l
Este exercício pretende proporcionar uma experiência prática de extração de dados de mais de
c
a
uma tabela usando a sintaxe de join da Oracle.
r
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I F 23
m y
d e
ca
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Índice
m y
d e
ca
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
A
ANSI (American National Standards Institute) 4-4, 6-5, I-30
Apelidos 1-3, 1-5, 1-9, 1-10, 1-16, 1-17, 1-18, 1-19, 1-20, 1-21,
1-25, 1-29, 2-5, 2-6, 2-8, 2-23, 2-24, 2-38, 4-25, 5-14, 5-27,
6-7, 6-14, 6-16, 6-24, 6-36, 8-28, 10-33, C-8, F-8, F-10, F-11,
F-15, F-21, F-22
Apelidos da coluna 1-3, 1-9, 1-10, 1-16, 1-17, 1-18, 1-19, 1-21, 1-25,
1-29, 2-6, 2-24, 4-25, 5-14, 5-27, 6-7, 10-33, F-8
Atributos I-22, I-23, I-24
AVG 5-3, 5-5, 5-7, 5-8, 5-11, 5-12, 5-15, 5-16, 5-20, 5-23,
5-25, 5-26, 5-28, 7-13
B
Banco de Dados Oracle 11g 3-24, 7-8, 10-10, 10-14, 10-36, 10-38, C-4,
I-2, I-3, I-4, I-8, I-9, I-10, I-11, I-14, I-15, I-29, I-32,
I-33, I-36, I-37, I-38, I-39
Banco de dados 1-2, 1-4, 1-14, 1-15, 1-29, 2-2, 2-7, 3-4, 3-5,
3-10, 3-12, 3-16, 3-21, 3-24, 3-25, 3-26, 4-4, 4-9, 4-28, 5-15,
5-18, 5-28, 6-2, 6-6, 6-36, 7-8, 9-3, 9-4, 9-9, 9-13, 9-15,
m y
9-19, 9-21, 9-25, 9-26, 9-27, 9-31, 9-33, 9-34, 9-39, 9-40, 9-41,
d e
9-42, 9-43, 9-44, 9-45, 9-47, 10-2, 10-3, 10-4, 10-5, 10-6, 10-7,
c a
e
10-38, 10-40, 10-41, B-2, C-2, C-3, C-4, C-5, C-6, C-7, C-8, A
10-8, 10-10, 10-11, 10-14, 10-15, 10-17, 10-31, 10-33, 10-34, 10-36, 10-37,
c l
C-9, C-10, C-12, C-13, C-15, C-16, C-17, C-19, C-26, C-29, C-31,
r a
D-3, D-4, D-5, D-6, D-15, D-17, D-18, E-2, E-4, E-5, E-6,
O ly
E-8, E-11, E-15, E-18, F-2, F-7, F-10, F-22, I-2, I-3, I-4,
l & On
I-8, I-9, I-10, I-11, I-12, I-13, I-14, I-15, I-16, I-17, I-18,
I-19, I-20, I-22, I-27, I-28, I-29, I-30, I-31, I-32, I-33, I-34,
n a e
I-36, I-37, I-38, I-39, I-40
e r s
Banco de Dados Realacional 9-43, I-2, I-3, I-4, I-8, I-15, I-16,
t U
BI Publisher I-14 I n
I-18, I-19, I-27, I-28, I-29, I-30, I-31, I-33, I-36, I-39
C
c l e
r a
Classificando 2-1, 2-3, 2-19, 2-22, 2-24, 2-25, 2-26, 2-34, 2-38,
2-39, I-5
O
Oracle Database: Fundamentos de SQL I Índice - 2
C
Cláusula GROUP BY 5-2, 5-3, 5-12, 5-13, 5-14, 5-15, 5-16, 5-18,
5-19, 5-22, 5-23, 5-25, 5-26, 5-27, 5-28, 7-14
Cláusula FOR UPDATE 9-3, 9-13, 9-19, 9-25, 9-39, 9-42, 9-43, 9-44,
9-45, 9-47
Cláusula HAVING 5-2, 5-3, 5-12, 5-20, 5-21, 5-22, 5-23, 5-24,
5-25, 5-28, 5-29, 7-3, 7-5, 7-9, 7-13, 7-16, 7-21, 7-25
Cláusula ON 6-3, 6-5, 6-6, 6-8, 6-15, 6-16, 6-17, 6-18, 6-19,
6-21, 6-22, 6-25, 6-27, 6-31, 8-17
Cláusula ORDER BY 2-3, 2-19, 2-22, 2-23, 2-24, 2-25, 2-26, 2-28,
2-34, 2-38, 2-39, 3-6, 5-15, 5-16, 5-18, 5-28, 8-3, 8-5, 8-7,
8-12, 8-18, 8-21, 8-24, 8-27, 8-28, 8-29, 8-30, 10-13
Cláusula USING 6-3, 6-5, 6-8, 6-11, 6-13, 6-14, 6-17, 6-19, 6-22, 6-25, 6-31
Cláusula WHERE 2-3, 2-4, 2-5, 2-6, 2-7, 2-8, 2-9, 2-11, 2-15,
2-19, 2-22, 2-26, 2-27, 2-28, 2-31, 2-32, 2-34, 2-37, 2-38, 2-39,
3-12, 5-9, 5-14, 5-15, 5-18, 5-20, 5-21, 5-22, 5-27, 5-28, 6-10,
6-14, 6-15, 6-18, 6-36, 7-2, 7-5, 7-13, 7-14, 7-15, 7-23, 8-5,
9-15, 9-16, 9-22, F-4, F-7, F-10, F-12, F-17, F-21, F-22
m y
Comando DESCRIBE 1-3, 1-10, 1-16, 1-19, 1-25, 1-26, 1-27, 9-8,
d e
10-10, 10-33, C-11, D-7
Comando VERIFY 2-3, 2-19, 2-22, 2-26, 2-34, 2-36 c a
A
COMPRIMENTO 3-9, 3-10, 3-13, 3-14, 3-32, 4-32, 6-7, 8-6, 10-7, 10-12,
e
10-18, D-15, F-8
c l
Condições NULL 2-3, 2-14
r a
O ly
Consistência de Leitura 9-3, 9-13, 9-19, 9-25, 9-33, 9-39, 9-40, 9-41, 9-42
Constraint UNIQUE 10-21, 10-22
l & On
Consulta 1-4, 1-8, 1-17, 1-18, 1-21, 1-24, 2-2, 2-5, 2-23, 2-25,
a e
2-27, 2-31, 2-33, 3-2, 3-6, 3-26, 3-33, 4-21, 4-35, 5-15, 6-6,
n
t e r U s
6-7, 6-14, 6-16, 6-24, 6-26, 6-28, 6-29, 6-30, 7-3, 7-4, 7-5,
7-6, 7-7, 7-8, 7-9, 7-10, 7-11, 7-12, 7-13, 7-14, 7-15, 7-16,
I n
7-17, 7-18, 7-19, 7-20, 7-21, 7-22, 7-23, 7-24, 7-25, 7-26, 8-2,
l e
8-5, 8-6, 8-13, 8-17, 8-19, 8-20, 8-22, 8-25, 8-26, 8-28, 8-29,
c
8-30, 9-12, 9-15, 9-17, 9-23, 9-33, 9-43, 9-44, 9-47, 10-3, 10-6,
r a 10-10, 10-11, 10-13, 10-15, 10-27, 10-31, 10-32, 10-33, 10-34, 10-37, 10-40,
O 10-41, C-18, C-27, D-3, D-5, D-13, D-14, D-15, D-16, D-17, F-7,
F-8, F-10, F-15, F-16, F-19, I-4, I-16, I-30
e A
c l
Esquema 10-2, 10-5, 10-7, 10-8, 10-18, 10-28, 10-40, B-2, C-3, C-5,
C-7, C-8, C-10, C-13, E-5, E-6, I-2, I-3, I-4, I-6, I-8,
r a
I-15, I-29, I-33, I-34, I-36, I-40
O ly
Equijoins 6-2, 6-3, 6-8, 6-12, 6-19, 6-22, 6-23, 6-24, 6-25,
l & On
6-35, 6-36, F-2, F-9, F-10, F-11, F-14, F-15, F-22
Expressões Aritméticas 1-3, 1-10, 1-11, 1-15, 1-16, 1-19, 1-20,
1-25, 2-5
n a e
e r s
Expressão CASE 4-32, 4-37, 4-38, 4-39, 4-40, 4-44
t U
n
Executar SQL C-2, C-15, C-17, C-31, D-2, D-5, D-18, E-2, E-18
I
F
c l e
Formato de Data 3-22, 3-23, 4-22
r a
Formatar Modelo 3-28, 3-30, 4-11, 4-12, 4-14, 4-15, 4-16, 4-19, 4-20, 4-43
l & On
Icone Execute Statement 1-8, 6-16, 10-41, F-10
n a e
Identificador Exclusivo I-23, I-24
e r s
Índice 10-4, 10-8, 10-10, 10-22, 10-23, 10-36, 10-38, C-4, C-10, E-6, I-38
t U
I n
Instrução ALTER TABLE 10-35, 10-36
Instruçaõ CREATE TABLE 9-12, 10-3, 10-6, 10-7, 10-11, 10-15, 10-31,
l e
10-32, 10-34, 10-37, 10-40, 10-41
c
r a
Instrução DELETE 9-3, 9-13, 9-19, 9-21, 9-22, 9-23, 9-24, 9-25,
9-39, 9-40, 9-42
O Instrução INSERT 9-3, 9-6, 9-8, 9-12, 9-13, 9-19, 9-25, 9-39,
9-42, 10-10, 10-18
e A
M
c l
MÁX 5-3, 5-4, 5-5, 5-7, 5-8, 5-12, 5-21, 5-23, 5-25, 5-26,
r a
5-28, 7-18, 7-19, B-2, B-3, I-10, I-34
O ly
MÍN 1-8, 1-24, 1-30, 2-7, 2-20, 2-27, 3-13, 3-19, 3-21, 3-23,
& On
3-33, 4-31, 4-35, 4-42, 5-3, 5-5, 5-7, 5-8, 5-12, 5-14, 5-25,
l
a e
5-28, 6-7, 6-12, 6-37, 7-4, 7-6, 7-12, 7-13, 7-14, 7-17, 7-18,
n
t e r
7-19, 7-24, 8-3, 8-4, 8-5, 8-6, 8-7, 8-12, 8-13, 8-14, 8-16,
U s
8-17, 8-18, 8-21, 8-22, 8-23, 8-24, 8-27, 8-30, 8-31, 9-9, 9-16,
I n
9-20, 9-31, 9-38, 9-43, 10-3, 10-5, 10-6, 10-7, 10-11, 10-14, 10-15,
c l e
10-17, 10-27, 10-31, 10-34, 10-37, B-2, B-3, C-7, C-8, C-23, C-25,
C-26, C-30, D-3, D-6, D-9, D-17, F-7, F-8, F-9, F-13, F-23,
r aI-3, I-4, I-8, I-10, I-12, I-13, I-15, I-16, I-20, I-27, I-28,
e
Operador MINUS 8-3, 8-5, 8-7, 8-12, 8-18, 8-21, 8-22, 8-23, A
8-24, 8-27, 8-30, 8-31
c l
r a
Operador NOT 2-3, 2-18, 2-19, 2-22, 2-26, 2-34, 2-38, 7-19
O ly
Operador OR 2-3, 2-15, 2-17, 2-19, 2-22, 2-26, 2-34, F-18
operador q 1-23
l & On
Operador Quote Alternativo (q) 1-23
n a e
Operador UNION 8-13, 8-14, 8-15, 8-25, 8-26, 8-30, 8-31
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I Índice - 7
O
Operadores Aritméticos 1-11, 1-12, 2-20, 3-25, 3-26, 3-32
Operadores de comparação 2-8, 2-9, 7-10, 7-17, 9-15, 9-21
Operadores Set 8-1, 8-2, 8-3, 8-4, 8-5, 8-6, 8-7, 8-12,
8-18, 8-21, 8-24, 8-27, 8-31, I-5
Oracle Enterprise Manager Grid Control I-13, I-39
Oracle Fusion Middleware i-12, i-13, i-39
Oracle Server 1-12, 2-11, 2-13, 2-23, 4-4, 4-5, 4-6, 4-19,
4-20, 4-38, 5-22, 5-28, 6-7, 6-24, 7-13, 7-17, 7-25, 8-4, 8-6,
9-4, 9-8, 9-26, 9-32, 9-33, 9-38, 9-41, 9-43, 9-47, 10-5, 10-16,
10-17, 10-22, 10-23, D-3, D-13, F-8, F-15, I-2, I-16, I-39
Oracle SQL Developer C-2, C-3, C-4, I-2, I-32, I-40
ORDBMS I-2, I-39
P
Palavra-chave DISTINCT 1-3, 1-10, 1-16, 1-19, 1-24, 1-25, 5-3, 5-10, 5-12, 5-25
Palavras-chaves 1-5, 1-8, 2-23, 6-9, 10-25, 10-26, C-22, D-4
Pedido 1-7, 1-13, 2-2, 2-3, 2-11, 2-19, 2-20, 2-22, 2-23, 2-24,
2-25, 2-26, 2-28, 2-32, 2-33, 2-34, 2-38, 2-39, 3-6, 4-25, 5-6,
m y
5-14, 5-15, 5-16, 5-17, 5-18, 5-22, 5-24, 5-27, 5-28, 8-2, 8-3,
d e
8-4, 8-5, 8-6, 8-7, 8-12, 8-13, 8-15, 8-17, 8-18, 8-19, 8-21,
c a
B-2, C-26, I-14, I-22, I-27
e A
8-24, 8-27, 8-28, 8-29, 8-30, 9-7, 9-8, 9-43, 9-44, 9-45, 10-13,
c l
Produto Cartesiano 6-2, 6-3, 6-6, 6-8, 6-19, 6-22, 6-25, 6-31,
r a
6-32, 6-33, 6-34, 6-35, 6-36, F-2, F-4, F-5, F-22
Projeção 1-4
O ly
R
Pseudocolunas 10-27
l & On
n a e
RDBMS 9-43, I-2, I-18, I-25, I-27, I-39
e r s
REFERÊNCIAS 1-14, 9-31, 10-24, 10-25, 10-26, 10-27, 10-28, C-5, C-6,
t U
I n
C-10, C-19, C-29
Regras de Precedência 1-12, 1-13, 2-3, 2-19, 2-20, 2-21, 2-22,
l e
2-26, 2-34
c
r a
Relacionamento entre Entidades B-3, I-21, I-22, I-23
Restrição CHECK 9-8, 10-3, 10-6, 10-11, 10-15, 10-27, 10-31, 10-34, 10-37
O
Oracle Database: Fundamentos de SQL I Índice - 8
R
Restrição NÃO NULA 1-26, 10-18, 10-20, 10-21, 10-32
Restrição PRIMARY KEY 9-8, 10-19, 10-20, 10-23
Restrições 1-14, 9-4, 9-8, 9-20, 9-24, 10-2, 10-3, 10-6, 10-11,
10-13, 10-15, 10-16, 10-17, 10-18, 10-19, 10-20, 10-21, 10-22, 10-25, 10-27,
10-29, 10-30, 10-31, 10-32, 10-34, 10-37, 10-39, 10-40, C-10, E-6, I-16, I-39
RPAD 3-9, 3-13
S
Seleção 1-4, 2-4, E-12
Self-join 6-35
SET VERIFY ON 2-36
Seqüências 2-24, 10-8
Sinônimo 1-24, 1-26, 7-18, 10-4, 10-8, 10-38, D-7, I-23, I-24
SQL Developer 1-6, 1-8, 1-9, 1-14, 1-17, 1-26, 2-28, 2-29,
2-30, 2-31, 2-33, 2-35, 2-36, 6-16, 9-4, 9-21, 9-27, 9-31, 9-32,
9-43, 10-9, 10-41, C-1, C-2, C-3, C-4, C-5, C-6, C-7, C-9,
m y
C-10, C-11, C-13, C-17, C-22, C-23, C-25, C-26, C-27, C-28, C-29,
C-30, C-31, F-10, I-2, I-7, I-9, I-32, I-37, I-40
d e
c
Strings de caractere 1-3, 1-10, 1-16, 1-19, 1-20, 1-21, 1-22, 1-25, a
2-7, 2-16, 3-11, 3-13, 4-14, 4-17, 4-43
e A
SUBSTR 3-9, 3-10, 3-13, 3-14, 3-32, 4-25
c l
Substituição do E comercial 2-2, 2-29, 2-30, 2-33, 2-38, 2-39, 3-13
r a
SUBSTITUIR 2-36, 3-9, 3-13, D-12, D-16
O ly
subconsulta 7-3, 7-4, 7-5, 7-6, 7-7, 7-8, 7-9, 7-10, 7-11,
l & On
7-12, 7-13, 7-14, 7-15, 7-16, 7-17, 7-18, 7-19, 7-20, 7-21, 7-22,
7-23, 7-24, 7-25, 9-12, 9-15, 9-17, 9-23, 10-3, 10-6, 10-11, 10-13,
n a e
10-15, 10-31, 10-32, 10-33, 10-34, 10-37, 10-40
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I Índice - 9
T
Tabela DUAL 3-17
Tabelas somente leitura 10-3, 10-6, 10-11, 10-15, 10-31, 10-34, 10-36, 10-37
Tipos de Dados 1-11, 1-26, 1-27, 3-4, 3-33, 4-4, 4-29, 4-31, 4-44,
5-6, 5-8, 6-9, 6-11, 8-13, 8-19, 8-22, 9-8, 9-12, 10-2, 10-3,
10-6, 10-11, 10-12, 10-13, 10-14, 10-15, 10-31, 10-34, 10-37, 10-40, C-11,
D-7, E-14, I-9, I-16
Tipos de Dados de Data/Horário 10-14
TO_CHAR 4-2, 4-3, 4-7, 4-8, 4-9, 4-10, 4-11, 4-16, 4-17,
4-18, 4-19, 4-22, 4-23, 4-25, 4-26, 4-27, 4-34, 4-36, 4-44, 4-45,
8-25
TO_DATE 4-2, 4-3, 4-7, 4-8, 4-9, 4-10, 4-20, 4-21, 4-22,
4-23, 4-27, 4-36, 4-44, 4-45, 9-10
TO_NUMBER 4-2, 4-3, 4-7, 4-8, 4-9, 4-10, 4-20, 4-21, 4-23,
4-27, 4-36, 4-43, 4-44
Transação 9-2, 9-3, 9-4, 9-13, 9-19, 9-25, 9-26, 9-27, 9-29,
9-30, 9-31, 9-32, 9-33, 9-34, 9-38, 9-39, 9-41, 9-42, 9-48, 10-38,
C-16, I-11, I-31
m y
Transações de bancos de dados 9-3, 9-13, 9-19, 9-25, 9-26, 9-27, 9-39,
d e
9-42
TRIM 3-9, 3-10, 3-13 c a
A
TRUNC 3-16, 3-18, 3-28, 3-30, 3-32, 4-42, 9-3, 9-13, 9-19, 9-24,
e
9-25, 9-39, 9-42, 9-46, 9-47, I-31
c l
U
r a
O ly
Unindo Tabelas 6-6, 6-27, 6-37, F-7, F-23
l
8-21, 8-24, 8-27, 8-29, 8-30& On
UNION ALL 8-3, 8-4, 8-5, 8-6, 8-7, 8-12, 8-16, 8-17, 8-18,
X
XML C-7, C-9, C-26, C-27, C-30, E-3, E-12, I-9, I-14, I-39
m y
d e
c a
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O
Oracle Database: Fundamentos de SQL I Índice - 11
m y
d e
ca
e A
c l
r a
O ly
l & On
n a e
t e r U s
I n
c l e
r a
O