Você está na página 1de 350

Volume I Guia do Aluno

D17108BP10
Produo 1.0
Junho 2004
D39572

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Banco de Dados Oracle 10g:


Fundamentos de SQL I

Autor

Copyright 2004, Oracle. Todos os direitos reservados.

Nancy Greenberg

Esta documentao contm informaes de propriedade da Oracle Corporation. Ela


fornecida sob um contrato de licena que contm restries quanto ao uso e
divulgao, alm de ser protegida pela legislao de direitos autorais. proibida a
engenharia reversa do software. Se esta documentao for distribuda a uma
Agncia Governamental subordinada ao Departamento de Defesa dos EUA, ela ter
direitos restritos e o seguinte aviso dever ser aplicado:

Wayne Abbott
Christian Bauwens
Perry Benson
Brian Boxx
Zarko Cesljas
Dairy Chan
Laszlo Czinkoczki
Marjolein Dekkers
Matthew Gregory
Stefan Grenstad
Joel Goodman
Rosita Hanoman
Sushma Jagannath
Angelika Krupp
Christopher Lawless
Marcelo Manzano
Isabelle Marchand
Malika Marghadi
Valli Pataballa
Elspeth Payne
Ligia Jasmin Robayo
Bryan Roberts
Helen Robertson
Lata Shivaprasad
John Soltani
Priya Vennapusa
Ken Woolfe

Aviso de Direitos Restritos


A utilizao, a duplicao ou a divulgao pelo governo estar sujeita s restries
impostas a um software comercial e devero ser aplicadas as leis federais relativas a
um software com direitos restritos, como definidos no subpargrafo (c)(1)(ii) de
DFARS 252.227-7013, Rights in Technical Data and Computer Software (Direitos
sobre Dados Tcnicos e Software de Computadores) (outubro de 1988).
Este material, ou parte dele, no poder ser copiado de qualquer forma ou por
qualquer meio sem a prvia permisso expressa por escrito da Oracle Corporation.
Qualquer outra cpia constituir uma violao da legislao de direitos autorais e
poder resultar em indenizaes civis e/ou criminais.
Se esta documentao for distribuda a uma Agncia Governamental que no
pertena ao Departamento de Defesa dos EUA, ela ter "direitos restritos", conforme
definido no FAR 52.227-14, Rights in Data-General (Direitos Gerais sobre Dados),
incluindo Alternate III (Alternativa III) (junho de 1987).
As informaes contidas neste documento esto sujeitas a alteraes sem aviso
prvio. Se voc encontrar algum problema na documentao, envie ao departamento
Worldwide Education Services uma descrio de tal problema por escrito. Oracle
Corporation, 500 Oracle Parkway, Box SB-6, Redwood Shores, CA 94065 - USA.
Distribuidor no Brasil: Oracle do Brasil Sistemas Ltda. Rua Jos Guerra, 127, So
Paulo, SP - 04719-030 - Brasil - CNPJ: 59.456.277/0001-76. A Oracle Corporation
no garante que esta documentao esteja isenta de erros.
Oracle e todas as referncias a produtos da Oracle so marcas comerciais ou
registradas da Oracle Corporation.
Todos os outros nomes de empresas e produtos so usados com o nico propsito
de identificao e podem ser marcas comerciais dos respectivos proprietrios.

Editor
Nita K. Brozowski

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Revisores e
Colaboradores Tcnicos

Contedo

Introduo
Objetivos da Lio I-2
Metas do Curso I-3
Oracle10g I-4
Banco de Dados Oracle 10g I-6
Oracle Application Server 10g I-7
Oracle Enterprise Manager 10g Grid Control I-8
Sistemas de Gerenciamento de Banco de Dados Relacional e Banco de Dados
Relacional de Objeto I-9
Plataforma Oracle para a Internet I-10
Ciclo de Vida de Desenvolvimento do Sistema I-11
Armazenamento de Dados em Diferentes Mdias I-13
Conceito de Banco de Dados Relacional I-14
Definio de um Banco de Dados Relacional I-15
Modelos de Dados I-16
Modelo de Relacionamento entre Entidades I-17
Convenes de Modelagem de Relacionamento entre Entidades I-19
Relacionando Vrias Tabelas I-21
Terminologia do Banco de Dados Relacional I-23
Propriedades do Banco de Dados Relacional I-25
Comunicando-se com um RDBMS por Meio de SQL I-26
Sistema de Gerenciamento de Banco de Dados Relacional da Oracle I-27
Instrues SQL I-28
Tabelas Usadas no Curso I-29
Sumrio I-30
1

Recuperando Dados com a Instruo SQL SELECT


Objetivos 1-2
Recursos de Instrues SQL SELECT 1-3
Instruo SELECT Bsica 1-4
Selecionando Todas as Colunas 1-5
Selecionando Colunas Especficas 1-6
Criando Instrues SQL 1-7
Defaults de Cabealhos de Colunas 1-8
Expresses Aritmticas 1-9
Usando Operadores Aritmticos 1-10
Precedncia de Operadores 1-11
Definindo um Valor Nulo 1-12
Valores Nulos em Expresses Aritmticas 1-13
Definindo um Apelido de Coluna 1-14
Usando Apelidos de Colunas 1-15
Operador de Concatenao 1-16
Strings de Caracteres Literais 1-17
Usando Strings de Caracteres Literais 1-18
iii

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Prefcio

Restringindo e Classificando Dados


Objetivos 2-2
Limitando Linhas por Seleo 2-3
Limitando as Linhas Selecionadas 2-4
Usando a Clusula WHERE 2-5
Strings de Caracteres e Datas 2-6
Condies de Comparao 2-7
Usando Condies de Comparao 2-8
Usando a Condio BETWEEN 2-9
Usando a Condio IN 2-10
Usando a Condio LIKE 2-11
Usando as Condies NULL 2-13
Condies Lgicas 2-14
Usando o Operador AND 2-15
Usando o Operador OR 2-16
Usando o Operador NOT 2-17
Regras de Precedncia 2-18
Usando a Clusula ORDER BY 2-20
Classificao 2-21
Variveis de Substituio 2-22
Usando a Varivel de Substituio & 2-24
Valores de Caractere e Data com Variveis de Substituio 2-26
Especificando Nomes de Colunas, Expresses e Texto 2-27
Usando a Varivel de Substituio && 2-28
Usando o Comando DEFINE do iSQL*Plus 2-29
Usando o Comando VERIFY 2-30
Sumrio 2-31
Exerccio 2: Viso Geral 2-32

iv
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Operador de Aspas (q) Alternativo 1-19


Linhas Duplicadas 1-20
Interao entre SQL e iSQL*Plus 1-21
Instrues SQL e Comandos iSQL*Plus 1-22
Viso Geral do iSQL*Plus 1-23
Efetuando Login no iSQL*Plus 1-24
Ambiente iSQL*Plus 1-25
Exibindo a Estrutura de Tabelas 1-26
Interagindo com Arquivos de Script 1-28
Pgina History do iSQL*Plus 1-32
Definindo Preferncias do iSQL*Plus 1-34
Definindo a Preferncia de Localizao da Sada 1-35
Sumrio 1-36
Exerccio 1: Viso Geral 1-37

Usando Functions de uma nica Linha para Personalizar a Sada


Objetivos 3-2
Functions SQL 3-3
Dois Tipos de Functions SQL 3-4
Functions de uma nica Linha 3-5
Functions de Caractere 3-7
Functions de Manipulao de Maisculas e Minsculas 3-9
Usando Functions de Manipulao de Maisculas e Minsculas 3-10
Functions de Manipulao de Caracteres 3-11
Usando as Functions de Manipulao de Caracteres 3-12
Functions de Nmero 3-13
Usando a Function ROUND 3-14
Usando a Function TRUNC 3-15
Usando a Function MOD 3-16
Trabalhando com Datas 3-17
Aritmtica com Datas 3-20
Usando Operadores Aritmticos com Datas 3-21
Functions de Data 3-22
Usando Functions de Data 3-23
Exerccio 3: Viso Geral da Parte 1 3-25
Functions de Converso 3-26
Converso Implcita de Tipos de Dados 3-27
Converso Explcita de Tipos de Dados 3-29
Usando a Function TO_CHAR com Datas 3-32
Elementos do Modelo de Formato de Data 3-33
Usando a Function TO_CHAR com Datas 3-37
Usando a Function TO_CHAR com Nmeros 3-38
Usando as Functions TO_NUMBER e TO_DATE 3-41
Formato de Data RR 3-43
Exemplo do Formato de Data RR 3-44
Aninhando Functions 3-45
Functions Gerais 3-47
Function NVL 3-48
Usando a Function NVL 3-49
Usando a Function NVL2 3-50
Usando a Function NULLIF 3-51
Usando a Function COALESCE 3-52
Expresses Condicionais 3-54
Expresso CASE 3-55
Usando a Expresso CASE 3-56
Function DECODE 3-57
Usando a Function DECODE 3-58
Sumrio 3-60
Exerccio 3: Viso Geral da Parte 2 3-61

v
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Gerando Relatrios de Dados Agregados com as Functions de Grupo


Objetivos 4-2
O Que So Functions de Grupo? 4-3
Tipos de Functions de Grupo 4-4
Functions de Grupo: Sintaxe 4-5
Usando as Functions AVG e SUM 4-6
Usando as Functions MIN e MAX 4-7
Usando a Function COUNT 4-8
Usando a Palavra-Chave DISTINCT 4-9
Functions de Grupo e Valores Nulos 4-10
Criando Grupos de Dados 4-11
Criando Grupos de Dados: Sintaxe da Clusula GROUP BY 4-12
Usando a Clusula GROUP BY 4-13
Agrupando por Mais de Uma Coluna 4-15
Usando a Clusula GROUP BY em Vrias Colunas 4-16
Consultas Invlidas Usando Functions de Grupo 4-17
Restringindo Resultados de Grupos 4-19
Restringindo Resultados de Grupos com a Clusula HAVING 4-20
Usando a Clusula HAVING 4-21
Aninhando Functions de Grupo 4-23
Sumrio 4-24
Exerccio 4: Viso Geral 4-25

Exibindo Dados de Vrias Tabelas


Objetivos 5-2
Obtendo Dados de Vrias Tabelas 5-3
Tipos de Joins 5-4
Unindo Tabelas com a Sintaxe SQL:1999 5-5
Criando Joins Naturais 5-6
Recuperando Registros com Joins Naturais 5-7
Criando Joins com a Clusula USING 5-8
Unindo Nomes de Colunas 5-9
Recuperando Registros com a Clusula USING 5-10
Qualificando Nomes de Colunas Ambguos 5-11
Usando Apelidos de Tabelas 5-12
Criando Joins com a Clusula ON 5-13
Recuperando Registros com a Clusula ON 5-14
Auto-Joins Usando a Clusula ON 5-15
Aplicando Outras Condies a uma Join 5-17
Criando Joins Tridimensionais com a Clusula ON 5-18
No-Equijoins 5-19
Recuperando Registros com No-Equijoins 5-20
Joins Externas 5-21
Joins Internas e Externas 5-22
LEFT OUTER JOIN 5-23
RIGHT OUTER JOIN 5-24
vi

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usando Subconsultas para Solucionar Consultas


Objetivos 6-2
Usando uma Subconsulta para Solucionar um Problema 6-3
Sintaxe da Subconsulta 6-4
Usando uma Subconsulta 6-5
Diretrizes de Uso de Subconsultas 6-6
Tipos de Subconsultas 6-7
Subconsultas de uma nica Linha 6-8
Executando Subconsultas de uma nica Linha 6-9
Usando Functions de Grupo em uma Subconsulta 6-10
A Clusula HAVING com Subconsultas 6-11
O Que Est Errado Nesta Instruo? 6-12
Esta Instruo Retornar Linhas? 6-13
Subconsultas de Vrias Linhas 6-14
Usando o Operador ANY em Subconsultas de Vrias Linhas 6-15
Usando o Operador ALL em Subconsultas de Vrias Linhas 6-16
Valores Nulos em uma Subconsulta 6-17
Sumrio 6-19
Exerccio 6: Viso Geral 6-20

Usando os Operadores de Conjunto


Objetivos 7-2
Operadores de Conjunto 7-3
Tabelas Usadas Nesta Lio 7-4
Operador UNION 7-8
Usando o Operador UNION 7-9
Operador UNION ALL 7-11
Usando o Operador UNION ALL 7-12
Operador INTERSECT 7-13
Usando o Operador INTERSECT 7-14
Operador MINUS 7-15
Diretrizes de Operadores de Conjunto 7-17
O Servidor Oracle e os Operadores de Conjunto 7-18
Correspondncia entre Instrues SELECT
7-19
Correspondncia entre Instrues SELECT: Exemplo 7-20
Controlando a Ordem das Linhas 7-21
Sumrio 7-23
Exerccio 7: Viso Geral 7-24

vii
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

FULL OUTER JOIN 5-25


Produtos Cartesianos 5-26
Gerando um Produto Cartesiano 5-27
Criando Joins Cruzadas 5-28
Sumrio 5-29
Exerccio 5: Viso Geral 5-30

Manipulando Dados
Objetivos 8-2
Data Manipulation Language 8-3
Adicionando uma Nova Linha a uma Tabela 8-4
Sintaxe da Instruo INSERT 8-5
Inserindo Novas Linhas 8-6
Inserindo Linhas com Valores Nulos 8-7
Inserindo Valores Especiais 8-8
Inserindo Valores de Data Especficos 8-9
Criando um Script 8-10
Copiando Linhas de Outra Tabela 8-11
Alterando Dados de uma Tabela 8-12
Sintaxe da Instruo UPDATE 8-13
Atualizando Linhas de uma Tabela 8-14
Atualizando Duas Colunas com uma Subconsulta 8-15
Atualizando Linhas com Base em Outra Tabela 8-16
Removendo uma Linha de uma Tabela 8-17
Instruo DELETE 8-18
Deletando Linhas de uma Tabela 8-19
Deletando Linhas com Base em Outra Tabela 8-20
Instruo TRUNCATE 8-21
Usando uma Subconsulta em uma Instruo INSERT 8-22
Transaes de Banco de Dados 8-24
Vantagens das Instrues COMMIT e ROLLBACK 8-26
Controlando Transaes 8-27
Fazendo Rollback de Alteraes at um Marcador 8-28
Processamento de Transao Implcita 8-29
Estado dos Dados antes de COMMIT ou ROLLBACK 8-31
Estado dos Dados aps COMMIT 8-32
Submetendo Dados a Commit 8-33
Estado dos Dados aps ROLLBACK 8-34
Rollback no Nvel de Instruo 8-36
Consistncia de Leitura 8-37
Implementao da Consistncia de Leitura 8-38
Sumrio 8-39
Exerccio 8: Viso Geral 8-40

Usando Instrues DDL para Criar e Gerenciar Tabelas


Objetivos 9-2
Objetos de Banco de Dados 9-3
Regras de Nomeao 9-4
Instruo CREATE TABLE 9-5
Fazendo Referncia a Tabelas de Outro Usurio 9-6
Opo DEFAULT 9-7
Criando Tabelas 9-8
Tipos de Dados 9-9
Tipos de Dados de Data/Horrio 9-11
viii

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

10 Criando Outros Objetos de Esquema


Objetivos 10-2
Objetos de Banco de Dados 10-3
O Que uma View? 10-4
Vantagens das Views 10-5
Views Simples e Complexas 10-6
Criando uma View 10-7
Recuperando Dados de uma View 10-10
Modificando uma View 10-11
Criando uma View Complexa 10-12
Regras para Executar Operaes DML em uma View 10-13
Usando a Clusula WITH CHECK OPTION 10-16
Negando Operaes DML 10-17
Removendo uma View 10-19
Exerccio 10: Viso Geral da Parte 1 10-20
Seqncias 10-21
Instruo CREATE SEQUENCE: Sintaxe 10-23
Criando uma Seqncia 10-24
Pseudocolunas NEXTVAL e CURRVAL 10-25
Usando uma Seqncia 10-27
Armazenando Valores de Seqncia em Cache 10-28
Modificando uma Seqncia 10-29
Diretrizes para Modificar uma Seqncia 10-30
ndices 10-31
Como Criar ndices? 10-33
Criando um ndice 10-34
Diretrizes para Criar ndices 10-35
Removendo um ndice 10-36

ix
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Incluindo Constraints 9-17


Diretrizes de Constraints 9-18
Definindo Constraints 9-19
Constraint NOT NULL 9-21
Constraint UNIQUE 9-22
Constraint PRIMARY KEY 9-24
Constraint FOREIGN KEY 9-25
Constraint FOREIGN KEY: Palavras-chave 9-27
Constraint CHECK 9-28
CREATE TABLE: Exemplo 9-29
Violando Constraints 9-30
Criando uma Tabela com uma Subconsulta 9-32
Instruo ALTER TABLE 9-34
Eliminando uma Tabela 9-35
Sumrio 9-36
Exerccio 9: Viso Geral 9-37

11 Gerenciando Objetos com Views de Dicionrio de Dados


Objetivos 11-2
O Dicionrio de Dados 11-3
Estrutura do Dicionrio de Dados 11-4
Como Usar as Views de Dicionrio 11-6
View USER_OBJECTS 11-7
Informaes sobre Tabelas 11-9
Informaes sobre Colunas 11-10
Informaes sobre Constraints 11-12
Informaes sobre Views 11-15
Informaes sobre Seqncias 11-16
Informaes sobre Sinnimos 11-18
Adicionando Comentrios a uma Tabela 11-19
Sumrio 11-20
Exerccio 11: Viso Geral 11-21
A Solues dos Exerccios
B Dados e Descries de Tabelas
C Sintaxe de Join Oracle
D Usando o SQL*Plus
ndice
Exerccios Adicionais
Exerccios Adicionais: Dados e Descries de Tabelas
Exerccios Adicionais: Solues

x
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Sinnimos 10-37
Criando e Removendo Sinnimos 10-39
Sumrio 10-40
Exerccio 10: Viso Geral da Parte 2 10-41

Oracle University and Impacta Tecnologia use only

Prefcio

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only


Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Perfil
Antes de Iniciar o Curso
Antes de iniciar este curso, voc dever ser capaz de usar uma GUI (interface grfica do
usurio). Como pr-requisito, necessrio que o aluno tenha familiaridade com os conceitos
e as tcnicas de processamento de dados.
Organizao deste Curso

Oracle University and Impacta Tecnologia use only

O curso Banco de Dados Oracle 10g: Fundamentos de SQL I orientado por instrutor e
inclui palestras e exerccios prticos. As sesses de demonstrao on-line e os exerccios
reforam as tcnicas e os conceitos apresentados.

Prefcio-3
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Publicaes Relacionadas
Publicaes Oracle
Ttulo

Part Number
(Nmero do Componente)

Oracle Database Reference 10g Release 1 (10.1)

B10755-01

Oracle Database SQL Reference 10g Release 1 (10.1) B10759-01


Oracle Database Concepts 10g Release 1 (10.1)

B10743-01

Oracle Database Application Developer's Guide - Fundamentals


10g Release 1 (10.1)
B10795-01
B12170-01

Publicaes Adicionais

Boletins de releases de sistemas

Guias de instalao e do usurio

Arquivos readme

Artigos do IOUG (International Oracle Users Group)

Oracle Magazine

Prefcio-4
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SQL*Plus User's Guide and Reference

Convenes Tipogrficas
A seguir, so fornecidas duas listas de convenes tipogrficas usadas especificamente
no texto ou no cdigo.
Convenes Tipogrficas do Texto
Objeto ou Termo

Letras maisculas Comandos,


functions,
nomes de colunas,
nomes de tabelas,
objetos PL/SQL,
esquemas

Exemplo
Use o comando SELECT para exibir
informaes armazenadas na coluna
LAST_NAME da tabela EMPLOYEES.

Letras minsculas, Nomes de arquivos, em que: role


itlico
variveis de sintaxe,
nomes de usurios,
senhas
Inicial maiscula Trigger e
nomes de boto

o nome da atribuio
a ser criada.

Designe um trigger When-Validate-Item


para o bloco ORD.
Escolha Cancel.

Itlico

Aspas

Livros, nomes de
cursos e
manuais,
palavras ou frases
enfatizadas

Para obter mais informaes sobre o


assunto, consulte o Oracle SQL Reference
Manual
No salve as alteraes no banco de dados.

Ttulos de mdulos Este assunto abordado na Lio 3,


da lio mencionados Trabalhando com Objetos.
em um curso

Prefcio-5
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Conveno

Convenes Tipogrficas (continuao)

Convenes Tipogrficas do Cdigo


Conveno

Objeto ou Termo Exemplo

Letras
maisculas

Comandos,
functions

SELECT employee_id
FROM employees;

Inicial maiscula Triggers de forms

Form module: ORD


Trigger level: S_ITEM.QUANTITY
item
Trigger name: When-Validate-Item
. . .

Letras minsculas Nomes de colunas,


nomes de tabelas,
nomes de arquivos,
objetos PL/SQL

. . .
OG_ACTIVATE_LAYER
(OG_GET_LAYER (prod_pie_layer))
. . .
SELECT last_name
FROM employees;

Negrito

Texto a ser
CREATE USER scott
especificado por um IDENTIFIED BY tiger;
usurio

Prefcio-6
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Letras minsculas, Variveis de sintaxe CREATE ROLE role;


itlico

Copyright 2004, Oracle. Todos os direitos reservados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Introduo

Objetivos da Lio
Ao concluir esta lio, voc ser capaz de:

Listar os recursos do Oracle10g

Descrever a implementao Oracle do RDBMS e do


ORDBMS

Compreender as metas do curso

Copyright 2004, Oracle. Todos os direitos reservados.

Objetivos
Nesta lio, voc compreender o RDBMS (Relational Database Management System) e o
ORDBMS (Object Relational Database Management System). Tambm sero apresentadas
informaes sobre:
Instrues SQL especficas do Oracle
O iSQL*Plus, que um ambiente usado para executar instrues SQL e para fins de
formatao e gerao de relatrios

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-2
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Discutir os aspectos tericos e fsicos de um banco


de dados relacional

Metas do Curso

Identificar os principais componentes estruturais


do Banco de Dados Oracle 10g

Recuperar dados contidos em linhas e colunas


de tabelas com a instruo SELECT

Criar relatrios de dados classificados e restritos

Executar instrues DML (data manipulation


language) para atualizar dados no Banco de Dados
Oracle 10g

Obter metadados por meio de consultas s views


de dicionrio

Utilizar functions SQL para gerar e recuperar dados


personalizados

Copyright 2004, Oracle. Todos os direitos reservados.

Metas do Curso
Este curso apresenta a tecnologia de banco de dados Oracle 10g. No curso, voc aprender
os conceitos bsicos de bancos de dados relacionais e a avanada linguagem de
programao SQL. O curso fornece as habilidades essenciais em SQL que permitem criar
consultas em uma ou mais tabelas, manipular dados em tabelas, criar objetos de banco de
dados e consultar metadados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-3
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Aps concluir este curso, voc ser capaz de:

Oracle10g

Confiabilidade

Modelo de
desenvolvimento
nico

Gerenciamento
unificado

Conjuntos de
recursos comuns

Copyright 2004, Oracle. Todos os direitos reservados.

Recursos do Oracle10g
A release Oracle10g oferece uma infra-estrutura completa e de alto desempenho
que inclui:
Escalabilidade de departamentos at sites de e-business da empresa
Arquitetura segura, disponvel, confivel e avanada
Um modelo de desenvolvimento; opes de disponibilizao fcil
Aproveitamento do conjunto de recursos atuais de uma organizao por meio da
plataforma Oracle (incluindo SQL, PL/SQL, Java e XML)
Uma interface de gerenciamento para todas as aplicaes
Tecnologias padro do setor; sem bloqueios proprietrios
Alm de oferecer as vantagens relacionadas acima, a release Oracle10g contm o banco de
dados para a grade. A computao em grade pode diminuir drasticamente o custo de
computao, aumentar a disponibilidade dos recursos de computao e proporcionar mais
produtividade e qualidade.
A idia bsica da computao em grade a noo de computao como um servio
pblico, em analogia rede de energia eltrica ou rede telefnica. Como cliente da
grade, voc no se importa com o local onde os dados so mantidos ou onde realizada a
computao. Voc deseja que a computao seja concluda e que as informaes sejam
fornecidas quando especificado. No lado servidor, a grade refere-se a virtualizao e
provisionamento. Voc agrupa todos os recursos, provisiona-os dinamicamente com base
nas necessidades da sua empresa e, como conseqncia, obtm maior eficincia na
utilizao desses recursos.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-4
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Um
fornecedor

Escalabilidade

Copyright 2004, Oracle. Todos os direitos reservados.

Oracle10g
Estes so os trs produtos da infra-estrutura em grade da release Oracle10g:
Oracle Database 10g
Oracle Application Server 10g
Oracle Enterprise Manager 10g Grid Control

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-5
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Oracle10g

Oracle Database 10g


Dados relacionais de objeto

Documentos

Mensagens

Copyright 2004, Oracle. Todos os direitos reservados.

Oracle Database 10g


O Oracle Database 10g foi projetado para armazenar e gerenciar informaes empresariais.
Alm de eliminar custos de gerenciamento, ele oferece um servio de alta qualidade. A
reduo dos requisitos de configurao e gerenciamento associada ao ajuste automtico de
SQL diminuram drasticamente o custo de manuteno do ambiente.
O Oracle Database 10g um dos produtos da infra-estrutura em grade da release Oracle
10g. A computao em grade est relacionada ao conceito de computao como um servio
pblico. Os clientes no precisam saber onde os dados so mantidos nem em qual
computador esto armazenados. Basta ser capaz de solicitar informaes ou a computao
dos dados e receb-los como desejado.
O Oracle Database 10g gerencia todos os seus dados. No so apenas os dados relacionais
de objeto que o banco de dados de uma empresa deve gerenciar. Ele tambm pode gerenciar
dados no estruturados como:
Planilhas
Documentos do Word
Apresentaes do PowerPoint
XML
Tipos de dados multimdia, como MP3, elementos grficos, vdeo e outros
Os dados nem precisam estar no banco de dados. O Oracle Database 10g contm servios
que permitem armazenar metadados sobre as informaes mantidas em sistemas de
arquivos. Voc pode usar o servidor de banco de dados para gerenciar e fornecer
informaes onde quer que ele esteja localizado.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-6
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Multimdia

Oracle Application Server 10g


Portais

Aplicaes transacionais

Integrao

Estrutura de
desenvolvimento
de aplicaes

Servidor de
aplicaes

Copyright 2004, Oracle. Todos os direitos reservados.

Oracle Application Server 10g


O Oracle Application Server 10g fornece uma plataforma de infra-estrutura completa para o
desenvolvimento e a disponibilizao de aplicaes empresariais. Ele integra vrias
funes, incluindo um ambiente de runtime de servios Web e J2EE, um portal empresarial,
um broker de integrao empresarial, business intelligence, armazenamento em cache na
Web e servios de gerenciamento de identidades.
O Oracle Application Server 10g contm novos recursos de computao em grade, que se
baseiam no sucesso do Oracle9i Application Server, com centenas de clientes que executam
aplicaes empresariais de produo.
O Oracle Application Server 10g o nico servidor de aplicaes que contm servios para
as diversas aplicaes de servidor que voc executar, incluindo:
Portais ou Web sites
Aplicaes transacionais Java
Aplicaes de business intelligence
Ele tambm possibilita a integrao entre usurios, aplicaes e dados em toda a
organizao.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-7
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Business intelligence

Oracle Enterprise Manager 10g


Grid Control
Provisionamento de software
Monitoramento no nvel de servios de aplicaes

Copyright 2004, Oracle. Todos os direitos reservados.

Oracle Enterprise Manager 10g Grid Control


O Oracle Enterprise Manager 10g Grid Control a console de gerenciamento completa,
integrada e central, bem como a estrutura subjacente que automatiza as tarefas
administrativas nos conjuntos de sistemas em um ambiente de grade. Com ele, possvel
agrupar vrios ns de hardware, bancos de dados, servidores de aplicaes e outros destinos
em entidades lgicas nicas. O Grid Control permite o escalonamento com uma grade em
crescimento por meio da execuo de jobs, da imposio de polticas padro, do
monitoramento do desempenho e da automao de vrias outras tarefas em um grupo de
destinos, e no em diversos sistemas individualmente.
Provisionamento de Software
Com o Grid Control, o Oracle 10g automatiza a instalao, a configurao e a clonagem do
Application Server 10g e do Database 10g em vrios ns. O Oracle Enterprise Manager
contm uma estrutura comum para provisionamento e gerenciamento de software,
permitindo aos administradores criar, configurar, disponibilizar e utilizar novos servidores
com novas instncias do servidor de aplicaes e do banco de dados conforme necessrio.
Monitoramento no Nvel de Servios de Aplicaes
Assim como um usurio, o Oracle Grid Control avalia a disponibilidade e o desempenho da
infra-estrutura de grade como um todo, e no como unidades de armazenamento, caixas de
processamento, bancos de dados e servidores de aplicaes isolados.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-8
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Sistemas de Gerenciamento de Banco de Dados


Relacional e Banco de Dados Relacional de Objeto

Modelo relacional e modelo relacional de objeto

Suporte a objetos grandes e multimdia

Tipos de dados e objetos definidos pelo usurio

Recursos de servidor de banco de dados de alta


qualidade

Copyright 2004, Oracle. Todos os direitos reservados.

Sobre o Servidor Oracle


O servidor Oracle suporta modelos relacionais e modelos relacionais de objeto.
O servidor estende os recursos de modelagem de dados para suportar um modelo de banco
de dados relacional de objeto que inclui programao orientada a objeto, tipos de dados
complexos, objetos de negcios complexos e compatibilidade integral com o mundo
relacional.
Ele contm vrios recursos para proporcionar melhor desempenho e funcionalidade de
aplicaes OLTP (On-Line Transaction Processing), como o compartilhamento mais
eficiente de estruturas de dados durante o runtime, caches de buffer maiores e constraints
adiveis. As aplicaes de data warehouse so beneficiadas por melhorias como a execuo
paralela de operaes de insero, atualizao e deleo; o particionamento; e a otimizao
de consultas em paralelo. Operando na estrutura da NCA (Network Computing
Architecture), o modelo Oracle suporta aplicaes cliente/servidor e aplicaes baseadas na
Web distribudas e com vrias camadas.
Para obter mais informaes sobre o modelo relacional e o modelo relacional de objeto,
consulte o manual Database Concepts.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-9
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Compatibilidade integral com o banco de dados


relacional

Plataforma Oracle para a Internet


Clientes

Lgica de
negcios
e dados
Bancos
de dados

Lgica de
apresentao
e negcios
Servidores de
aplicaes

Servios de rede

SQL
PL/SQL
Java

Copyright 2004, Oracle. Todos os direitos reservados.

Plataforma Oracle para a Internet


Para desenvolver uma aplicao de e-commerce, necessrio um produto que possa
armazenar e gerenciar dados, um produto que possa proporcionar um ambiente de runtime
para as aplicaes que implementam a lgica de negcios e um produto que possa monitorar
e diagnosticar a aplicao aps a sua integrao. Os produtos Oracle 10g abordados
fornecem todos os componentes necessrios ao desenvolvimento da sua aplicao.
A Oracle oferece uma plataforma completa para a Internet de alto desempenho que permite
desenvolver aplicaes de e-commerce e data warehouse. A Plataforma Oracle para a
Internet integrada contm todos os elementos necessrios ao desenvolvimento,
disponibilizao e ao gerenciamento de aplicaes para a Internet, incluindo estes trs
elementos principais:
Clientes baseados em browser para processar a apresentao
Servidores de aplicaes para executar a lgica de negcios e fornecer a lgica de
apresentao a clientes baseados em browser
Bancos de dados para executar a lgica de negcios com uso intensivo de banco de
dados e para fornecer dados
A Oracle oferece uma grande variedade de ferramentas avanadas de desenvolvimento
orientadas por GUI (interface grfica do usurio) para criar aplicaes de negcios, bem
como um amplo conjunto de aplicaes de software para diversos setores e reas de
negcios. O Oracle Developer Suite contm ferramentas para o desenvolvimento de forms e
relatrios, e para a criao de data warehouses. possvel criar stored procedures, functions
e packages com SQL, PL/SQL ou Java.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-10
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Aplicaes para a Internet

Ferramentas de desenvolvimento

Gerenciamento do sistema

Qualquer
Qualquer
Qualquer
browser cliente de e-mail cliente FTP

Ciclo de Vida de Desenvolvimento do Sistema

Estratgia
e anlise

Desenvolvimento
e documentao
Transio
Produo

Copyright 2004, Oracle. Todos os direitos reservados.

Ciclo de Vida de Desenvolvimento do Sistema


Do conceito produo, voc pode desenvolver um banco de dados usando o ciclo de vida
de desenvolvimento do sistema, que contm vrios estgios de desenvolvimento. Essa
abordagem sistemtica e completa do desenvolvimento de um banco de dados transforma
requisitos de informaes de negcios em um banco de dados operacional.
Fase de Estratgia e Anlise
Estude e analise os requisitos de negcios. Entreviste os usurios e os gerentes para
identificar os requisitos de informaes. Incorpore os objetivos das aplicaes e da
empresa, assim como as futuras especificaes do sistema.
Desenvolva modelos do sistema. Transforme a narrativa em uma representao grfica
das regras e necessidades de informaes de negcios. Confirme e refine o modelo
com os analistas e os especialistas.
Fase de Projeto
Projete o banco de dados com base no modelo desenvolvido na fase de estratgia e anlise.
Fase de Criao e Documentao
Desenvolva o prottipo do sistema. Crie e execute os comandos para produzir as
tabelas e os objetos de suporte do banco de dados.
Desenvolva a documentao do usurio, o texto da ajuda e os manuais de operao
para suportar o uso e a operao do sistema.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-11
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Projeto

Ciclo de Vida de Desenvolvimento do Sistema

Estratgia
e anlise

Desenvolvimento
e documentao
Transio
Produo

Copyright 2004, Oracle. Todos os direitos reservados.

Ciclo de Vida de Desenvolvimento do Sistema (continuao)


Fase de Transio
Refine o prottipo. Passe uma aplicao para a fase de produo com testes de aceitao
pelos usurios, converso dos dados existentes e operaes paralelas. Faa todas as
modificaes necessrias.
Fase de Produo
Apresente o sistema aos usurios. Opere o sistema de produo. Monitore seu desempenho
e, depois, aprimore e refine o sistema.
Observao: As diversas fases do ciclo de desenvolvimento do sistema podem ser
realizadas de forma iterativa. Este curso concentra-se na fase de criao do ciclo.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-12
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Projeto

Planilha
eletrnica

Armrio de arquivo

Banco de dados

Copyright 2004, Oracle. Todos os direitos reservados.

Armazenando Informaes
Toda organizao tem necessidades de informaes. Uma biblioteca mantm uma lista de
membros, livros, datas de vencimento e multas. Uma empresa precisa guardar informaes
sobre funcionrios, departamentos e salrios. Essas informaes so chamadas de dados.
As organizaes podem armazenar dados em vrias mdias e em formatos diferentes; por
exemplo, um documento impresso em um armrio de arquivo ou dados armazenados em
planilhas eletrnicas ou em bancos de dados.
Um banco de dados um conjunto organizado de informaes.
Para gerenciar bancos de dados, necessrio um DBMS (Database Management System).
Um DBMS um programa que armazena, recupera e modifica dados de bancos de dados
sob demanda. Existem quatro tipos principais de bancos de dados: hierrquico, de rede,
relacional e (recentemente) relacional de objeto.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-13
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Armazenamento de Dados
em Diferentes Mdias

Conceito de Banco de Dados Relacional

O Dr. E. F. Codd props o modelo relacional para


sistemas de banco de dados em 1970.

Ele a base para o RDBMS.

Um conjunto de objetos ou relaes


Um conjunto de operadores para agir sobre as
relaes

Integridade de dados para preciso e consistncia

Copyright 2004, Oracle. Todos os direitos reservados.

Modelo Relacional
Os princpios do modelo relacional foram descritos primeiramente pelo Dr. E. F. Codd em
um trabalho de junho de 1970 intitulado "A Relational Model of Data for Large Shared
Data Banks". Nesse trabalho, o Dr. Codd propunha o modelo relacional para sistemas de
banco de dados.
Os modelos comuns usados na poca eram o hierrquico e o de rede, ou at mesmo
estruturas de dados simples de flat files. Logo depois, o RDBMS (Relational Database
Management System) tornou-se muito popular, especialmente pela facilidade de uso e
flexibilidade em termos de estrutura. Alm disso, vrios fornecedores inovadores, como a
Oracle, complementaram o RDBMS com um conjunto de produtos eficientes para usurios
e desenvolvedores de aplicaes, que compunham uma soluo integral.
Componentes do Modelo Relacional
Conjuntos de objetos ou relaes que armazenam os dados
Um conjunto de operadores que age sobre as relaes para produzir outras relaes
Integridade de dados para preciso e consistncia
Para obter mais informaes, consulte An Introduction to Database Systems, Eighth Edition
(Addison-Wesley: 2004), escrito por Chris Date.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-14
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

O modelo relacional composto de:

Definio de um Banco de Dados Relacional


Um banco de dados relacional um conjunto de
relaes ou tabelas de duas dimenses.

Nome da tabela:
EMPLOYEES

Nome da tabela:
DEPARTMENTS

Copyright 2004, Oracle. Todos os direitos reservados.

Definio de um Banco de Dados Relacional


Um banco de dados relacional usa relaes ou tabelas de duas dimenses para armazenar
informaes.
Por exemplo, possvel armazenar informaes sobre todos os funcionrios de uma
empresa. Em um banco de dados relacional, voc cria diversas tabelas para armazenar
diferentes informaes sobre os funcionrios, como uma tabela de funcionrios, uma tabela
de departamentos e uma tabela de salrios.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-15
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Servidor
Oracle

Modelo de
sistema
imaginado
pelo cliente

Modelo de entidade
do modelo do cliente
Modelo de tabela
do modelo de entidade

Servidor
Oracle

Tabelas em disco
Copyright 2004, Oracle. Todos os direitos reservados.

Modelos de Dados
Os modelos constituem a base do projeto. Os engenheiros desenvolvem o modelo de um
carro para aperfeioar os detalhes antes de produzi-lo. Da mesma forma, os designers de
sistemas desenvolvem modelos para explorar idias e compreender melhor o projeto do
banco de dados.
Finalidade dos Modelos
Os modelos ajudam a comunicar os conceitos imaginados pelas pessoas. possvel us-los
com os seguintes objetivos:

Comunicar
Categorizar
Descrever
Especificar
Investigar
Desenvolver
Analisar
Imitar

O objetivo produzir um modelo que atenda a vrios desses usos, seja compreendido por
um usurio final e contenha detalhes suficientes para que um desenvolvedor crie um sistema
de banco de dados.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-16
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Modelos de Dados

Modelo de Relacionamento entre Entidades


Crie um diagrama de relacionamento entre entidades
a partir de especificaes de negcios ou narrativas:
EMPLOYEE
#*
number
*
name
o
job title

DEPARTMENT
#*
number
*
name
composto de o
location

designado a

Cenrio

". . . Designe um ou mais funcionrios a um


departamento. . ."

". . . Ainda no foram designados funcionrios a


alguns departamentos. . ."

Copyright 2004, Oracle. Todos os direitos reservados.

Modelagem de ER
Em um sistema eficiente, os dados so divididos em entidades ou categorias discretas. Um
modelo de ER (Entity Relationship) uma ilustrao de vrias entidades em uma empresa e
dos relacionamentos entre elas. Um modelo de ER derivado de especificaes de negcios
ou narrativas e criado durante a fase de anlise do ciclo de vida de desenvolvimento do
sistema. Os modelos de ER separam as informaes necessrias a uma empresa das
atividades realizadas por ela. Embora as empresas possam mudar de atividades, o tipo de
informaes tende a permanecer constante. Portanto, as estruturas de dados tambm tendem
a permanecer constantes.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-17
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Modelagem de ER (continuao)
Vantagens da Modelagem de ER

Documenta as informaes para a organizao em um formato simples e preciso


Possibilita uma viso clara do escopo dos requisitos de informaes
Fornece um mapa ilustrado e de fcil compreenso do projeto do banco de dados
Oferece uma estrutura eficiente para integrar vrias aplicaes

Entidade: Algo importante sobre o qual so necessrias informaes. Como exemplos,


podemos citar departamentos, funcionrios e pedidos.
Atributo: Algo que descreve ou qualifica uma entidade. Por exemplo, para a entidade
de funcionrio, os atributos sero o nmero, o nome, o cargo, a data de admisso, o
nmero do departamento e outros dados sobre o funcionrio. Cada um desses atributos
obrigatrio ou opcional. Esse estado denominado opcionalidade.
Relacionamento: Uma associao nomeada entre entidades que exibe a opcionalidade
e o grau. Como exemplos, podemos citar as associaes entre funcionrios e
departamentos, e entre pedidos e itens.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-18
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Componentes Principais

Convenes de Modelagem de
Relacionamento entre Entidades

Nome exclusivo, singular


Letras maisculas
Caixa editvel
Sinnimo entre parnteses

EMPLOYEE
#*
number
*
name
o
job title

Atributo

Nome singular
Letras minsculas
Obrigatrio marcado com *
Opcional marcado com "o"

DEPARTMENT
#*
number
*
name
composto de o
location

designado a

UID (Unique Identifier)


Principal marcado com "#"
Secundrio marcado com "(#)"
Copyright 2004, Oracle. Todos os direitos reservados.

Convenes da Modelagem de ER
Entidades
Para representar uma entidade em um modelo, use as seguintes convenes:
Nome de entidade exclusivo, singular
Nome de entidade em maisculas
Caixa editvel
Nomes de sinnimos opcionais em maisculas entre parnteses: ( )
Atributos
Para representar um atributo em um modelo, use as seguintes convenes:
Nome singular em minsculas
Tag de asterisco (*) para atributos obrigatrios (isto , valores que devem ser
conhecidos)
Tag de letra "o" para atributos opcionais (isto , valores que podem ser conhecidos)
Relacionamentos
Smbolo

Descrio

Linha tracejada
Linha slida
P-de-galinha

Elemento opcional que indica probabilidade


Elemento necessrio que indica obrigatoriedade
Elemento de grau que indica um ou mais

Linha nica

Elemento de grau que indica apenas um

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-19
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Entidade

Convenes de Modelagem de
Relacionamento entre Entidades

Nome exclusivo, singular


Letras maisculas
Caixa editvel
Sinnimo entre parnteses

EMPLOYEE
#*
number
*
name
o
job title

Atributo

Nome singular
Letras minsculas
Obrigatrio marcado com *
Opcional marcado com "o"

DEPARTMENT
#*
number
*
name
composto de o
location

designado a

UID (Unique Identifier)


Principal marcado com #
Secundrio marcado com (#)
Copyright 2004, Oracle. Todos os direitos reservados.

Convenes de Modelagem de ER (continuao)


Relacionamentos
Cada direo do relacionamento contm:
Um label: por exemplo, taught by ou assigned to
Uma opcionalidade: must be ou may be
Um grau: one and only one ou one or more
Observao: O termo cardinalidade sinnimo do termo grau.
Cada entidade de origem {may be | must be} nome de relacionamento {one and only one |
one or more} entidade de destino.
Observao: A conveno a leitura no sentido horrio.
Identificadores Exclusivos
Um UID (Unique Identifier, Identificador Exclusivo) uma combinao de atributos e/ou
relacionamentos utilizada para distinguir ocorrncias de uma entidade. Cada ocorrncia de
entidade deve ser identificada com exclusividade.
Marque cada atributo que compe o UID com um smbolo de nmero: #
Marque os UIDs secundrios com um smbolo de nmero entre parnteses: (#)

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-20
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Entidade

Relacionando Vrias Tabelas

Cada linha de dados de uma tabela identificada


com exclusividade por uma PK (Primary Key, Chave
Primria).

possvel relacionar logicamente dados de vrias


tabelas por meio de FKs (Foreign Keys, Chaves
Estrangeiras).

Nome da tabela: EMPLOYEES

Chave primria

Chave estrangeira

Chave primria

Copyright 2004, Oracle. Todos os direitos reservados.

Relacionando Vrias Tabelas


Cada tabela contm dados que descrevem exatamente uma entidade. Por exemplo, a tabela
EMPLOYEES contm informaes sobre funcionrios. As categorias de dados so listadas
na parte superior de cada tabela e, em casos especficos, na parte inferior. Com um formato
de tabela, voc pode visualizar imediatamente, compreender e usar as informaes.
Como os dados sobre entidades distintas so armazenados em tabelas diferentes, talvez seja
necessrio combinar duas ou mais tabelas para responder a determinada pergunta. Por
exemplo, talvez voc queira saber a localizao do departamento onde um funcionrio
trabalha. Nesse caso, voc precisar de informaes da tabela EMPLOYEES (que contm
dados sobre funcionrios) e da tabela DEPARTMENTS (que contm informaes sobre
departamentos). Um RDBMS permite relacionar os dados de uma tabela aos de outra por
meio das chaves estrangeiras. Uma chave estrangeira uma coluna (ou um conjunto de
colunas) que faz referncia a uma chave primria na mesma tabela ou em outra tabela.
Voc pode usar a capacidade de relacionar dados de uma tabela a dados de outra para
organizar informaes em unidades gerenciveis separadas. possvel manter os dados
sobre funcionrios logicamente separados dos dados sobre departamentos armazenando
estes ltimos em outra tabela.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-21
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Nome da tabela: DEPARTMENTS

Relacionando Vrias Tabelas (continuao)


Diretrizes de Chaves Primrias e Chaves Estrangeiras

Oracle University and Impacta Tecnologia use only

No possvel usar valores duplicados em uma chave primria.


Em geral, no possvel alterar chaves primrias.
As chaves estrangeiras baseiam-se em valores de dados e so ponteiros lgicos (e no
fsicos).
Um valor de chave estrangeira deve corresponder a um valor de chave primria
existente ou a um valor de chave exclusiva; ou ento, deve ser nulo.
Uma chave estrangeira deve fazer referncia a uma coluna de chave primria ou
exclusiva.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-22
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Terminologia do Banco de Dados Relacional


2

4
5

Copyright 2004, Oracle. Todos os direitos reservados.

Terminologia Usada em um Banco de Dados Relacional


Um banco de dados relacional pode conter uma ou muitas tabelas. A tabela a estrutura
bsica de armazenamento de um RDBMS. Ela pode conter todos os dados necessrios sobre
algo relativo ao mundo real, como funcionrios, NFFs ou clientes.
O slide mostra o contedo da relao ou da tabela EMPLOYEES. Os nmeros indicam:
1. Uma nica linha (ou tupla) que representa todos os dados necessrios a um
funcionrio especfico. Cada linha de uma tabela deve ser identificada por uma chave
primria, que impede linhas duplicadas. A ordem das linhas no importante;
especifique essa ordem quando os dados forem recuperados.
2. Uma coluna ou um atributo que contm o nmero do funcionrio. O nmero do
funcionrio identifica um funcionrio com exclusividade na tabela EMPLOYEES.
Neste exemplo, a coluna contendo o nmero do funcionrio designada como a chave
primria. Uma chave primria deve conter um valor, que deve ser exclusivo.
3. Uma coluna que no um valor-chave. Uma coluna representa um tipo de dados em
uma tabela; no exemplo, os dados representam os salrios de todos os funcionrios. A
ordem das colunas no importante durante o armazenamento de dados; especifique
essa ordem quando os dados forem recuperados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-23
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Terminologia Usada em um Banco de Dados Relacional (continuao)


4. Uma coluna com o nmero dos departamentos, que tambm uma chave
estrangeira. Uma chave estrangeira uma coluna que define o relacionamento entre
tabelas. Uma chave estrangeira faz referncia a uma chave primria ou exclusiva na
mesma tabela ou em outra. No exemplo, DEPARTMENT_ID identifica com
exclusividade um departamento na tabela DEPARTMENTS.

6. Um campo pode no conter um valor. Nesse caso, seu valor nulo. Na tabela
EMPLOYEES, somente os funcionrios com a atribuio de representante de vendas
possuem um valor no campo COMMISSION_PCT (comisso).

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-24
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

5. A localizao de um campo a interseo entre uma linha e uma coluna. Um campo


s pode conter um valor.

Propriedades do Banco de Dados Relacional

Pode ser acessado e modificado com a execuo de


instrues SQL (Structured Query Language)

Contm um conjunto de tabelas sem ponteiros


fsicos

Usa um conjunto de operadores

Copyright 2004, Oracle. Todos os direitos reservados.

Propriedades de um Banco de Dados Relacional


Em um banco de dados relacional, voc no especifica a rota de acesso s tabelas e no
precisa saber como os dados esto organizados fisicamente.
Para acessar o banco de dados, execute uma instruo SQL (Structured Query Language),
que a linguagem padro ANSI (American National Standards Institute) de operao de
bancos de dados relacionais. Essa linguagem contm um amplo conjunto de operadores para
particionar e combinar relaes. possvel usar instrues SQL para modificar o banco de
dados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-25
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Um banco de dados relacional:

Comunicando-se com um RDBMS


por Meio de SQL
A instruo SQL
informada.

A instruo enviada
ao servidor Oracle.

Servidor
Oracle

Copyright 2004, Oracle. Todos os direitos reservados.

SQL (Structured Query Language)


O uso de SQL permite a comunicao com o servidor Oracle. A linguagem SQL apresenta
estas vantagens:
Eficiente
Fcil de aprender e usar
Funcionalmente completa (permite definir, recuperar e manipular os dados das tabelas)

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-26
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT department_name
FROM
departments;

Sistema de Gerenciamento de Banco


de Dados Relacional da Oracle

Tabelas de usurios

Dicionrio
de dados

Copyright 2004, Oracle. Todos os direitos reservados.

Sistema de Gerenciamento de Banco de Dados Relacional da Oracle


A Oracle fornece um RDBMS flexvel denominado Banco de Dados Oracle 10g. Com os
recursos desse produto, voc pode armazenar e gerenciar dados com todas as vantagens de
uma estrutura relacional e de PL/SQL, um mecanismo que possibilita o armazenamento e a
execuo de unidades de programa. O Banco de Dados Oracle 10g tambm suporta Java e
XML. O servidor Oracle oferece opes de recuperao de dados com base em tcnicas de
otimizao. Ele contm recursos de segurana que controlam a forma como um banco de
dados acessado e usado. Outros recursos incluem a consistncia e a proteo de dados por
meio de mecanismos de bloqueio.
A release Oracle10g apresenta um mtodo aberto, completo e integrado para o
gerenciamento de informaes. Um servidor Oracle consiste em um banco de dados Oracle
e uma instncia de servidor Oracle. Sempre que um banco de dados iniciado, uma SGA
(System Global Area) alocada e os processos de background do Oracle so iniciados. A
SGA uma rea da memria usada para as informaes de banco de dados compartilhadas
pelos usurios de banco de dados. A combinao dos processos de background e dos buffers
de memria chamada de instncia Oracle.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-27
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Servidor
Oracle

SELECT
INSERT
UPDATE
DELETE
MERGE

DML (Data Manipulation Language)

CREATE
ALTER
DROP
RENAME
TRUNCATE
COMMENT

DDL (Data Definition Language)

COMMIT
ROLLBACK Controle de transaes
SAVEPOINT
GRANT
REVOKE

DCL (Data Control Language)

Copyright 2004, Oracle. Todos os direitos reservados.

Instrues SQL
O Oracle SQL adota os padres aceitos pelo setor. Para assegurar a compatibilidade
futura com os padres em desenvolvimento, a Oracle Corporation mantm ativamente
uma equipe especializada nos comits de padres SQL. Os comits aceitos pelo setor so
o ANSI (American National Standards Institute) e o ISO (International Standards
Organization). Os dois comits aceitam SQL como a linguagem padro para os bancos de
dados relacionais.
Instruo

Descrio

SELECT
INSERT
UPDATE
DELETE
MERGE
CREATE
ALTER
DROP
RENAME
TRUNCATE
COMMENT
COMMIT
ROLLBACK
SAVEPOINT
GRANT
REVOKE

Recupera dados do banco de dados, informa novas linhas, altera linhas


existentes e remove linhas indesejadas das tabelas do banco de dados,
respectivamente. Conhecida coletivamente como DML (Data Manipulation
Language).
Configura, altera e remove estruturas de dados das tabelas. Conhecida
coletivamente como DDL (Data Definition Language).

Gerencia as alteraes feitas por instrues DML. As alteraes nos dados


podem ser agrupadas em transaes lgicas.
Concede ou revoga direitos de acesso ao banco de dados Oracle e s estruturas
contidas nele. Conhecida coletivamente como DCL (Data Control Language).

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-28
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Instrues SQL

Tabelas Usadas no Curso

DEPARTMENTS

JOB_GRADES

Copyright 2004, Oracle. Todos os direitos reservados.

Tabelas Usadas no Curso


Estas so as principais tabelas usadas neste curso:
Tabela EMPLOYEES: Fornece detalhes de todos os funcionrios
Tabela DEPARTMENTS: Fornece detalhes de todos os departamentos
Tabela JOB_GRADES: Fornece detalhes de salrios para diversos nveis
Observao: A estrutura e os dados de todas as tabelas so fornecidos no Apndice B.0

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-29
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

EMPLOYEES

O Banco de Dados Oracle 10g o banco de dados


utilizado para a computao em grade.

Ele se baseia no sistema de gerenciamento de banco


de dados relacional de objeto.

Os bancos de dados relacionais so compostos de


relaes, gerenciados por operaes relacionais e
regidos por constraints de integridade de dados.

Com o servidor Oracle, voc pode armazenar e


gerenciar informaes com a linguagem SQL e o
mecanismo PL/SQL.

Copyright 2004, Oracle. Todos os direitos reservados.

Sumrio
Os sistemas de gerenciamento de banco de dados relacional so compostos de objetos
ou relaes. Eles so gerenciados por operaes e regidos por constraints de integridade de
dados.
A Oracle Corporation cria produtos e servios para atender s suas necessidades de
RDBMS. Os principais produtos so:
Oracle Database 10g, com o qual voc armazena e gerencia informaes por meio de
SQL
Oracle Application Server 10g, com o qual voc executa todas as aplicaes
Oracle Enterprise Manager 10g Grid Control, usado para gerenciar e automatizar
tarefas administrativas nos conjuntos de sistemas de um ambiente de grade.
SQL
O servidor Oracle suporta instrues SQL com o padro ANSI e contm extenses. Com a
linguagem SQL, possvel estabelecer comunicao com o servidor para acessar, manipular
e controlar dados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I I-30
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Sumrio

Copyright 2004, Oracle. Todos os direitos reservados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Recuperando Dados com


a Instruo SQL SELECT

Objetivos
Ao concluir esta lio, voc ser capaz de:
Listar os recursos das instrues SQL SELECT
Executar uma instruo SELECT bsica
Diferenciar instrues SQL de comandos iSQL*Plus

Copyright 2004, Oracle. Todos os direitos reservados.

Objetivos
Para extrair dados do banco de dados, necessrio usar a instruo SQL (Structured Query
Language) SELECT. Talvez voc precise restringir as colunas exibidas. Esta lio descreve
todas as instrues SQL necessrias para executar essas aes. Voc pode criar instrues
SELECT para usar mais de uma vez.
Esta lio tambm aborda o ambiente iSQL*Plus no qual as instrues SQL so executadas.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-2
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Projeo

Seleo

Tabela 1

Tabela 1
Join

Tabela 1

Tabela 2

Copyright 2004, Oracle. Todos os direitos reservados.

Recursos de Instrues SQL SELECT


Uma instruo SELECT recupera informaes do banco de dados. Com essa instruo,
possvel usar os seguintes recursos:
Projeo: Escolha as colunas de uma tabela a serem retornadas por uma consulta.
Escolha quantas colunas forem necessrias
Seleo: Escolha as linhas de uma tabela a serem retornadas por uma consulta.
possvel usar vrios critrios para restringir as linhas recuperadas.
Join: Una os dados armazenados em diferentes tabelas especificando o vnculo entre
elas. As joins SQL so abordadas com mais detalhes em uma lio posterior.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-3
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Recursos de Instrues SQL SELECT

Instruo SELECT Bsica


SELECT *|{[DISTINCT] column|expression [alias],...}
FROM
table;

SELECT identifica as colunas a serem exibidas


FROM identifica a tabela contendo essas colunas

Copyright 2004, Oracle. Todos os direitos reservados.

Instruo SELECT Bsica


Em sua forma mais simples, uma instruo SELECT deve incluir:
Uma clusula SELECT, que especifica as colunas a serem exibidas
Uma clusula FROM, que identifica a tabela com as colunas listadas na clusula
SELECT
Na sintaxe:
SELECT
*
DISTINCT
column|expression
alias
FROM table

uma lista de uma ou mais colunas


seleciona todas as colunas
suprime as colunas duplicadas
seleciona a coluna nomeada ou a expresso
fornece cabealhos distintos s colunas selecionadas
especifica a tabela que contm as colunas

Observao: Neste curso, os termos palavra-chave, clusula e instruo so usados da


seguinte maneira:
Uma palavra-chave um elemento individual de SQL.
Por exemplo, SELECT e FROM so palavras-chave.
Uma clusula uma parte de uma instruo SQL.
Por exemplo, SELECT employee_id, last_name, ... uma clusula.
Uma instruo uma combinao de duas ou mais clusulas.
Por exemplo, SELECT * FROM employees uma instruo SQL.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-4
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Selecionando Todas as Colunas

Copyright 2004, Oracle. Todos os direitos reservados.

Selecionando Todas as Colunas de Todas as Linhas


Voc pode exibir todas as colunas de dados de uma tabela inserindo um asterisco (*) aps a
palavra-chave SELECT. No exemplo do slide, a tabela departments contm quatro colunas:
DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID e LOCATION_ID. A tabela
contm sete linhas, uma para cada departamento.
Voc tambm pode exibir todas as colunas da tabela listando-as aps a palavra-chave
SELECT. Por exemplo, a instruo SQL a seguir (como o exemplo do slide) exibe todas as
colunas e linhas da tabela DEPARTMENTS:
SELECT
FROM

department_id, department_name, manager_id, location_id


departments;

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-5
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT *
FROM
departments;

Selecionando Colunas Especficas

Copyright 2004, Oracle. Todos os direitos reservados.

Selecionando Colunas Especficas de Todas as Linhas


Para exibir colunas especficas de uma tabela, voc pode usar a instruo SELECT com os
nomes das colunas separados por vrgulas. O exemplo do slide exibe todos os nmeros de
departamentos e locais da tabela DEPARTMENTS.
Na clusula SELECT, especifique as colunas desejadas na ordem em que devero aparecer
na sada. Por exemplo, para exibir o local antes do nmero do departamento da esquerda
para a direita, use a seguinte instruo:
SELECT location_id, department_id
FROM
departments;

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-6
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT department_id, location_id


FROM
departments;

Criando Instrues SQL

As instrues SQL no fazem distino entre


maisculas e minsculas.

As instrues SQL podem ocupar uma ou mais linhas.

As clusulas geralmente so colocadas em linhas


separadas.

Os recuos so usados para melhorar a legibilidade.

No SQL*Plus, voc dever encerrar cada instruo


SQL com ponto-e-vrgula (;).

No iSQL*Plus, o encerramento das instrues SQL


com ponto-e-vrgula (;) opcional. A utilizao de
ponto-e-vrgula ser obrigatria se voc executar
vrias instrues SQL.

Copyright 2004, Oracle. Todos os direitos reservados.

Criando Instrues SQL


Com estas diretrizes e regras simples, voc pode criar instrues vlidas de fcil leitura e
edio:
As instrues SQL no fazem distino entre maisculas e minsculas (a menos que
essa distino seja indicada).
possvel informar instrues SQL em uma ou vrias linhas.
No possvel dividir palavras-chave em duas linhas ou abrevi-las.
As clusulas normalmente so colocadas em linhas separadas por questes de
legibilidade e facilidade de edio.
Devem ser usados recuos para tornar o cdigo mais legvel.
Em geral, as palavras-chave so informadas em maisculas; todas as outras palavras,
como nomes de tabelas e colunas, so informadas em minsculas.
Executando Instrues SQL
No iSQL*Plus, clique no boto Execute para executar os comandos na janela de edio.
No SQL*Plus, encerre a instruo SQL com ponto-e-vrgula e pressione a tecla Enter para
executar o comando.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-7
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

No possvel abreviar palavras-chave ou dividi-las


em duas linhas.

Defaults de Cabealhos de Colunas

iSQL*Plus:

Alinhamento de cabealho default: centralizado


Exibio de cabealho default: letras maisculas

SQL*Plus:
alinhados esquerda

Os cabealhos das colunas de nmero so alinhados


direita

Exibio de cabealho default: letras maisculas

Copyright 2004, Oracle. Todos os direitos reservados.

Defaults de Cabealhos de Colunas


No iSQL*Plus, os cabealhos das colunas so exibidos em maisculas e centralizados.
SELECT last_name, hire_date, salary
FROM employees;

Voc pode substituir o cabealho da coluna por um apelido. Os apelidos de colunas so


abordados posteriormente nesta lio.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-8
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Os cabealhos das colunas de caractere e data so

Expresses Aritmticas
Crie expresses com dados de nmero e data usando
operadores aritmticos.
Descrio

Somar

Subtrair

Multiplicar

Dividir

Copyright 2004, Oracle. Todos os direitos reservados.

Expresses Aritmticas
Talvez voc precise modificar a forma como os dados so exibidos, realizar clculos ou
examinar cenrios hipotticos. Todas essas aes so possveis com o uso de expresses
aritmticas. Uma expresso aritmtica pode conter nomes de colunas, valores numricos
constantes e operadores aritmticos.
Operadores Aritmticos
O slide lista os operadores aritmticos disponveis em SQL. Voc pode usar operadores
aritmticos em qualquer clusula de uma instruo SQL (exceto na clusula FROM).
Observao: Nos tipos de dados DATE e TIMESTAMP, s possvel usar os operadores de
adio e subtrao.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-9
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Operador

Usando Operadores Aritmticos

Copyright 2004, Oracle. Todos os direitos reservados.

Usando Operadores Aritmticos


O exemplo do slide usa o operador de adio para calcular um aumento de salrio de US$
300 para todos os funcionrios. O slide tambm exibe uma coluna SALARY+300 na sada.
Observe que a coluna SALARY+300 calculada resultante no uma nova coluna da tabela
EMPLOYEES; ela existe apenas para fins de exibio. Por default, o nome de uma nova
coluna origina-se do clculo que a gerou neste caso, salary+300.
Observao: O servidor Oracle ignora os espaos em branco antes e depois do operador
aritmtico.
Precedncia de Operadores
Se uma expresso aritmtica contiver mais de um operador, a multiplicao e a diviso
sero avaliadas primeiro. Se os operadores de uma expresso tiverem a mesma prioridade, a
avaliao ser realizada da esquerda para a direita.
Voc pode usar parnteses para impor a avaliao da expresso entre parnteses primeiro.
Regras de Precedncia:
A multiplicao e a diviso ocorrem antes da adio e da subtrao.
Os operadores com a mesma prioridade so avaliados da esquerda para a direita.
So usados parnteses para sobrepor a precedncia default ou tornar a instruo mais
clara.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-10
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name, salary, salary + 300


FROM
employees;

Precedncia de Operadores
SELECT last_name, salary, 12*salary+100
FROM
employees;

SELECT last_name, salary, 12*(salary+100)


FROM
employees;

Copyright 2004, Oracle. Todos os direitos reservados.

Precedncia de Operadores (continuao)


O primeiro exemplo do slide exibe o sobrenome, o salrio e a remunerao anual dos
funcionrios. Para calcular a remunerao anual, ele multiplica o salrio mensal por 12 e
acrescenta um bnus nico de US$ 100. Observe que a multiplicao executada antes da
adio.
Observao: Use parnteses para reforar a ordem padro de precedncia e para tornar a
expresso mais clara. Por exemplo, a expresso do slide pode ter a forma
(12*salary)+100 sem alteraes no resultado.
Usando Parnteses
Voc pode sobrepor as regras de precedncia usando parnteses para especificar a ordem na
qual os operadores devem ser executados.
O segundo exemplo do slide exibe o sobrenome, o salrio e a remunerao anual dos
funcionrios. Ele calcula a remunerao anual da seguinte forma: adiciona um bnus
mensal de US$ 100 ao salrio mensal e multiplica esse subtotal por 12. Em funo dos
parnteses, a adio tem prioridade sobre a multiplicao.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-11
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Definindo um Valor Nulo

Um valor nulo no est disponvel nem designado


e no conhecido ou aplicvel.

Um valor nulo diferente de zero ou de um espao


em branco.

Copyright 2004, Oracle. Todos os direitos reservados.

Valores Nulos
Se, em uma coluna especfica, uma linha no contiver um valor de dados, o valor ser nulo
ou conter um valor nulo.
Um valor nulo no est disponvel nem designado e no conhecido ou aplicvel. Um valor
nulo diferente de zero ou de um espao. Zero um nmero e um espao um caractere.
As colunas de qualquer tipo de dados podem conter valores nulos. No entanto, algumas
constraints (NOT NULL e PRIMARY KEY) impedem o uso de valores nulos em colunas.
Na coluna COMMISSION_PCT da tabela EMPLOYEES, observe que apenas um gerente de
vendas ou um representante de vendas pode receber comisso. Os outros funcionrios no
tm direito a comisses. Um valor nulo representa essa situao.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-12
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name, job_id, salary, commission_pct


FROM
employees;

Valores Nulos
em Expresses Aritmticas
As expresses aritmticas que contm um valor nulo
so avaliadas como nulas.

Copyright 2004, Oracle. Todos os direitos reservados.

Valores Nulos em Expresses Aritmticas


Se o valor de uma coluna na expresso aritmtica for nulo, o resultado ser nulo. Por
exemplo, se voc tentar realizar uma diviso por zero, ser gerado um erro. Entretanto, se
voc dividir um nmero por um valor nulo, o resultado ser nulo ou desconhecido.
No exemplo do slide, o funcionrio King no recebe comisso. Como a coluna
COMMISSION_PCT na expresso aritmtica nula, o resultado ser nulo.
Para obter mais informaes, consulte "Basic Elements of SQL" no manual SQL Reference.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-13
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name, 12*salary*commission_pct


FROM
employees;

Definindo um Apelido de Coluna


Um apelido de coluna:

Renomeia um cabealho de coluna

Requer aspas duplas quando contm espaos ou


caracteres especiais, ou quando faz distino entre
maisculas e minsculas

Aparece imediatamente aps o nome da coluna


(Tambm possvel incluir a palavra-chave opcional
AS entre o nome e o apelido da coluna.)

Copyright 2004, Oracle. Todos os direitos reservados.

Apelidos de Colunas
Quando exibe o resultado de uma consulta, o iSQL*Plus geralmente usa o nome da coluna
selecionada como seu cabealho. Como esse cabealho pode no ser descritivo, talvez seja
difcil compreend-lo. Para alterar um cabealho de coluna, use um apelido.
Especifique o apelido aps a coluna na lista SELECT usando um espao como separador.
Por default, os cabealhos de apelidos aparecem em maisculas. Se o apelido contiver
espaos ou caracteres especiais (como # ou $), ou se fizer distino entre maisculas e
minsculas, delimite-o por aspas duplas (" ").

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-14
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

til em clculos

Usando Apelidos de Colunas


SELECT last_name AS name, commission_pct comm
FROM
employees;

SELECT last_name "Name" , salary*12 "Annual Salary"


FROM employees;

Copyright 2004, Oracle. Todos os direitos reservados.

Apelidos de Colunas (continuao)


O primeiro exemplo exibe os nomes e os percentuais de comisso de todos os funcionrios.
Observe que a palavra-chave opcional AS foi usada antes do apelido de coluna name. O
resultado da consulta ser o mesmo com ou sem a incluso da palavra-chave AS. Observe
tambm que, na instruo SQL, os apelidos das colunas, name e comm, esto em
minsculas, enquanto o resultado da consulta exibe os cabealhos das colunas em
maisculas. Como mencionado em um slide anterior, os cabealhos das colunas aparecem
em maisculas por default.
O segundo exemplo exibe os sobrenomes e os salrios anuais de todos os funcionrios.
Como Annual Salary contm um espao, ele foi delimitado por aspas duplas. Observe
que o cabealho da coluna na sada exatamente igual ao apelido da coluna.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-15
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Operador de Concatenao

Vincula colunas ou strings de caracteres a outras


colunas

representado por duas barras verticais (||)


Cria uma coluna resultante que uma expresso de
caracteres
SELECT
FROM

last_name||job_id AS "Employees"
employees;

Copyright 2004, Oracle. Todos os direitos reservados.

Operador de Concatenao
Voc pode vincular uma coluna a outras colunas, expresses aritmticas ou valores de
constantes para criar uma expresso de caracteres usando o operador de concatenao (||).
As colunas nos dois lados do operador so combinadas para formar uma nica coluna de
sada.
No exemplo, LAST_NAME e JOB_ID so concatenadas e recebem o apelido Employees.
Observe que o sobrenome do funcionrio e o cdigo do cargo so combinados para formar
uma nica coluna de sada.
A palavra-chave AS antes do apelido facilita a leitura da clusula SELECT.
Valores Nulos com o Operador de Concatenao
Se voc concatenar um valor nulo com uma string de caracteres, o resultado ser uma string
de caracteres. LAST_NAME || NULL resulta em LAST_NAME.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-16
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Um operador de concatenao:

Um literal um caractere, uma data ou um nmero


includo na instruo SELECT.

necessrio delimitar os valores dos literais de


caractere e data por aspas simples.

Cada string de caracteres da sada corresponde


a apenas uma linha retornada.

Copyright 2004, Oracle. Todos os direitos reservados.

Strings de Caracteres Literais


Um literal um caractere, uma data ou um nmero includo na lista SELECT que no
constitui um nome ou um apelido de coluna. Ele impresso para cada linha retornada.
possvel incluir strings de literais de texto em formato livre no resultado da consulta. Essas
strings so tratadas como uma coluna na lista SELECT.
Os literais de caractere e data devem ser delimitados por aspas simples (' '); em literais de
nmero, as aspas no so necessrias.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-17
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Strings de Caracteres Literais

Usando Strings de Caracteres Literais

Copyright 2004, Oracle. Todos os direitos reservados.

Strings de Caracteres Literais (continuao)


O exemplo do slide exibe os sobrenomes e os cdigos dos cargos de todos os funcionrios.
O cabealho da coluna Employee Details. Observe os espaos entre as aspas simples na
instruo SELECT. Esses espaos melhoram a legibilidade da sada.
No exemplo a seguir, o sobrenome e o salrio de cada funcionrio so concatenados com
um literal para que as linhas retornadas sejam mais significativas:
SELECT last_name ||': 1 Month salary = '||salary Monthly
FROM employees;

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-18
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name ||' is a '||job_id


AS "Employee Details"
FROM
employees;

Operador de Aspas (q) Alternativo


Especifique seu prprio delimitador de aspas
Escolha qualquer delimitador
Melhore a legibilidade e a utilizao
SELECT department_name ||
q'[, it's assigned Manager Id: ]'
|| manager_id
AS "Department and Manager"
FROM departments;

Copyright 2004, Oracle. Todos os direitos reservados.

Operador de Aspas (q) Alternativo


Vrias instrues SQL usam literais de caractere em expresses ou condies. Se o prprio
literal contiver aspas simples, voc poder usar o operador de aspas (q) e escolher o
delimitador de aspas que desejar.
Voc pode escolher qualquer delimitador conveniente, single-byte ou multi-byte, ou um
destes pares de caracteres: [ ], { }, ( ) ou < >.
No exemplo mostrado, a string contm aspas simples, que normalmente interpretada como
um delimitador de uma string de caracteres. Entretanto, o uso do operador q requer a
utilizao de colchetes [] como o delimitador de aspas. A string entre os delimitadores de
colchetes interpretada como uma string de caracteres literais.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-19
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Linhas Duplicadas
A exibio default de consultas mostra todas as linhas,
inclusive as linhas duplicadas.

SELECT DISTINCT department_id


FROM
employees;

Copyright 2004, Oracle. Todos os direitos reservados.

Linhas Duplicadas
A menos que seja feita outra especificao, o iSQL*Plus exibe os resultados de uma
consulta sem eliminar as linhas duplicadas. O primeiro exemplo do slide exibe todos os
nmeros de departamentos da tabela EMPLOYEES. Observe que os nmeros de
departamentos so repetidos.
Para eliminar linhas duplicadas do resultado, inclua a palavra-chave DISTINCT na clusula
SELECT logo aps a palavra-chave SELECT. No segundo exemplo do slide, a tabela
EMPLOYEES contm, na verdade, 20 linhas, mas existem apenas sete nmeros de
departamentos exclusivos na tabela.
Voc pode especificar vrias colunas aps o qualificador DISTINCT. Esse qualificador
afeta todas as colunas selecionadas e o resultado so todas as combinaes distintas das
colunas.
SELECT DISTINCT department_id, job_id
FROM employees;

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-20
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT department_id
FROM
employees;

Interao entre SQL e iSQL*Plus

Instrues SQL

Servidor
Oracle

Comandos
iSQL*Plus

Resultados de consultas
Relatrio formatado

Cliente

Copyright 2004, Oracle. Todos os direitos reservados.

SQL e iSQL*Plus
SQL uma linguagem de comandos para a comunicao com o servidor Oracle a partir de
qualquer ferramenta ou aplicao. O Oracle SQL contm vrias extenses.
iSQL*Plus uma ferramenta Oracle que reconhece e submete instrues SQL ao servidor
Oracle para execuo e contm sua prpria linguagem de comandos.
Recursos de SQL
Pode ser usada por vrios usurios, incluindo aqueles com pouca ou nenhuma
experincia em programao
uma linguagem no procedural
uma linguagem semelhante ao idioma ingls
Recursos de iSQL*Plus
acessado de um browser
Aceita instrues SQL
Possibilita a edio on-line para modificar instrues SQL
Controla definies de ambiente
Formata resultados de consultas em um relatrio bsico
Acessa bancos de dados locais e remotos

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-21
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Browser de
Internet

SQL
Uma linguagem
Padro ANSI
No possvel abreviar
palavras-chave.
As instrues
manipulam dados e
definies de tabelas no
banco de dados.

iSQL*Plus
Um ambiente
Propriedade Oracle
possvel abreviar palavraschave.
Os comandos no permitem
a manipulao de valores no
banco de dados.
Executado em um browser
Carregado centralmente; no
precisa ser implementado em
cada mquina

Instrues
SQL

Comandos
iSQL*Plus

Copyright 2004, Oracle. Todos os direitos reservados.

SQL e iSQL*Plus (continuao)


A seguinte tabela compara SQL e iSQL*Plus:
SQL

iSQL*Plus

uma linguagem para a comunicao com o


servidor Oracle a fim de acessar os dados
baseada no padro ANSI (American
National Standards Institute) SQL
Recupera dados; manipula dados e
definies de tabelas no banco de dados
No tem um caractere de continuao
No pode ser abreviada

Reconhece instrues SQL e as envia ao


servidor
a interface proprietria da Oracle para a
execuo de instrues SQL
No permite a manipulao de valores no
banco de dados
Utiliza um trao () como caractere de
continuao se o comando ultrapassa uma
linha
Pode ser abreviado

Utiliza functions para aplicar formatao

Utiliza comandos para formatar dados

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-22
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Instrues SQL e Comandos iSQL*Plus

Viso Geral do iSQL*Plus


Depois de efetuar login no iSQL*Plus, voc pode:
Descrever estruturas de tabelas
Informar, executar e editar instrues SQL
Salvar ou incluir instrues SQL em arquivos
Executar ou editar instrues armazenadas em
arquivos de script salvos

Copyright 2004, Oracle. Todos os direitos reservados.

iSQL*Plus
O iSQL*Plus um ambiente no qual voc pode:
Executar instrues SQL para recuperar, modificar, adicionar e remover dados no
banco de dados
Formatar, armazenar e imprimir resultados de consultas na forma de relatrios, bem
como realizar clculos com base nesses resultados
Criar arquivos de script a fim de armazenar instrues SQL para uso futuro
possvel dividir os comandos iSQL*Plus nestas principais categorias:
Categoria

Objetivo

Ambiente

Afeta o comportamento geral das instrues SQL na sesso

Formato

Formata os resultados da consulta

Manipulao de
arquivos
Execuo

Salva instrues em arquivos de script de texto e executa


instrues a partir desses arquivos
Envia instrues SQL do browser para o servidor Oracle

Edio

Modifica instrues SQL na janela Edit

Interao

Permite criar e especificar variveis para instrues SQL,


imprimir valores de variveis e imprimir mensagens na tela
Tem vrios comandos para estabelecer conexo com o banco de
dados, manipular o ambiente iSQL*Plus e exibir definies de
colunas

Diversos

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-23
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Efetuando Login no iSQL*Plus

Copyright 2004, Oracle. Todos os direitos reservados.

Efetuando Login no iSQL*Plus


Para efetuar login em um ambiente de browser:
1. Inicie o browser.
2. Informe o endereo URL do ambiente iSQL*Plus.
3. Na pgina Login, informe os valores apropriados nos campos Username, Password e
Connect Identifier.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-24
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

No ambiente de browser:

Ambiente iSQL*Plus

Copyright 2004, Oracle. Todos os direitos reservados.

Ambiente iSQL*Plus
No browser, a pgina Workspace do iSQL*Plus tem as seguintes reas principais:
1. Caixa de texto: rea em que voc digita os comandos iSQL*Plus e as instrues SQL
2. Boto Execute: Clique neste boto para executar os comandos e as instrues da caixa
de texto
3. Boto Load Script: Exibe um form que permite identificar um caminho e um nome de
arquivo, ou um URL, com os comandos SQL, PL/SQL ou SQL*Plus a serem inseridos
na caixa de texto
4. Boto Save Script: Salva o contedo da caixa de texto em um arquivo
5. Boto Cancel: Interrompe a execuo do comando na caixa de texto
6. Boto Clear Screen: Clique neste boto para remover o texto contido na caixa
7. cone Logout: Clique nele para encerrar a sesso do iSQL*Plus e retornar pgina
Login do iSQL*Plus
8. cone Preferences: Clique nele para alterar a configurao da interface, a
configurao do sistema ou a senha
9. cone Help: Permite acesso documentao de ajuda do iSQL*Plus

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-25
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Exibindo a Estrutura de Tabelas


Use o comando iSQL*Plus DESCRIBE para exibir a
estrutura de uma tabela:

Copyright 2004, Oracle. Todos os direitos reservados.

Exibindo a Estrutura de Tabelas


No iSQL*Plus, possvel exibir a estrutura de uma tabela com o comando DESCRIBE. O
comando exibe os nomes de colunas e os tipos de dados, alm de mostrar se uma coluna
deve conter dados (ou seja, se apresenta uma constraint NOT NULL).
Na sintaxe, tablename o nome de uma tabela, view ou sinnimo existente que esteja
acessvel ao usurio.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-26
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

DESC[RIBE] tablename

Exibindo a Estrutura de Tabelas

Copyright 2004, Oracle. Todos os direitos reservados.

Exibindo a Estrutura de Tabelas (continuao)


O exemplo do slide exibe as informaes sobre a estrutura da tabela DEPARTMENTS.
Na exibio resultante, Null? indica que os valores dessa coluna podem ser desconhecidos.
NOT NULL indica que uma coluna deve conter dados. Type exibe o tipo de dados de uma
coluna.
Os tipos de dados so descritos nesta tabela:
Tipo de Dados

Descrio

NUMBER(p,s)

Valor numrico com um nmero mximo de p dgitos e s


dgitos direita da vrgula decimal
Valor de caractere de tamanho varivel cujo tamanho mximo
igual a s
Valor de data e horrio entre 1 de janeiro de 4712 A.C. e 31
de dezembro de 9999 D.C.

VARCHAR2(s)
DATE

CHAR(s)

Valor de caractere de tamanho fixo cujo tamanho igual a s

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-27
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

DESCRIBE employees

SELECT last_name, hire_date, salary


FROM
employees;

Copyright 2004, Oracle. Todos os direitos reservados.

Interagindo com Arquivos de Script


Incluindo Instrues e Comandos em um Arquivo de Script de Texto
Voc pode salvar comandos e instrues da caixa de texto do iSQL*Plus em um arquivo de
script de texto da seguinte forma:
1. Digite as instrues SQL na caixa de texto do iSQL*Plus.
2. Clique no boto Save Script. Essa ao abre a caixa de dilogo File Save do Windows.
Identifique o nome do arquivo. A extenso .uix usada como default. possvel
alterar o tipo de arquivo para um arquivo de texto ou salv-lo como um arquivo .sql.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-28
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Interagindo com Arquivos de Script

Copyright 2004, Oracle. Todos os direitos reservados.

Interagindo com Arquivos de Script (continuao)


No exemplo mostrado, a instruo SQL SELECT especificada na caixa de texto salva no
arquivo emp_data.sql. Voc pode escolher o tipo do arquivo, o nome do arquivo e o
local em que deseja salvar o arquivo de script.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-29
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Interagindo com Arquivos de Script

Copyright 2004, Oracle. Todos os direitos reservados.

Interagindo com Arquivos de Script (continuao)


Usando Instrues e Comandos de um Arquivo de Script no iSQL*Plus
Voc pode usar os comandos e as instrues salvos anteriormente em um arquivo de script
do iSQL*Plus da seguinte forma:
1. Clique no boto Load Script. Essa ao abre um form que permite digitar o nome do
arquivo ou um URL com os comandos SQL, PL/SQL ou SQL*Plus a serem
informados na caixa de texto.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-30
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Interagindo com Arquivos de Script

D:\TEMP\emp_data.sql

Copyright 2004, Oracle. Todos os direitos reservados.

Interagindo com Arquivos de Script (continuao)


2. Informe o nome e o caminho do script ou a localizao do URL. Se preferir, voc
poder clicar no boto Browse para procurar o nome e a localizao do script.
3. Clique no boto Load para incluir o contedo do arquivo ou a localizao do URL na
caixa de texto.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-31
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Interagindo com Arquivos de Script

Pgina History do iSQL*Plus


3

Copyright 2004, Oracle. Todos os direitos reservados.

Executando Instrues Anteriores


A pgina History do iSQL*Plus permite executar instrues anteriores na sesso. Essa
pgina mostra as instrues SQL e os comandos iSQL*Plus executados mais recentemente.
Para reexecutar as instrues:
1. Selecione a instruo que deseja executar.
2. Clique no boto Load.
Observao
possvel controlar o nmero de instrues mostradas na pgina History com as
configuraes de Preferences.
Voc pode optar por deletar as instrues selecionadas clicando no boto Delete.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-32
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Pgina History do iSQL*Plus

Copyright 2004, Oracle. Todos os direitos reservados.

Executando Instrues Anteriores (continuao)


3. Retorne pgina Workspace.
4. Clique no boto Execute para executar os comandos especificados na caixa de texto.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-33
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Definindo Preferncias do iSQL*Plus

2
3

Copyright 2004, Oracle. Todos os direitos reservados.

Preferncias do iSQL*Plus
Para definir preferncias relativas sesso do iSQL*Plus, clique no cone Preferences.
As preferncias so divididas em categorias. possvel definir preferncias
relacionadas formatao e execuo de scripts, bem como administrao de banco
de dados. Voc tambm pode alterar sua senha.
Quando voc escolhe uma categoria de preferncia, um form exibido e permite
definir as preferncias dessa categoria.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-34
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Copyright 2004, Oracle. Todos os direitos reservados.

Alterando a Localizao da Sada


possvel enviar os resultados gerados por uma instruo SQL ou um comando iSQL*Plus
para a tela (default), um arquivo ou outra janela do browser.
Na pgina Preferences:
1. Selecione uma opo em Output Location.
2. Clique no boto Apply.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-35
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Definindo a Preferncia de
Localizao da Sada

Sumrio
Nesta lio, voc aprendeu a:
Criar uma instruo SELECT que:

descritivos

Usar o ambiente iSQL*Plus para criar, salvar e


executar instrues SQL e comandos iSQL*Plus
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table;

Copyright 2004, Oracle. Todos os direitos reservados.

Instruo SELECT
Nesta lio, voc aprendeu a recuperar dados de uma tabela do banco de dados com a
instruo SELECT.
SELECT
FROM

*|{[DISTINCT] column [alias],...}


table;

Na sintaxe:
SELECT
*
DISTINCT
column|expression
alias
FROM table

uma lista de uma ou mais colunas


seleciona todas as colunas
suprime as colunas duplicadas
seleciona a coluna nomeada ou a expresso
fornece cabealhos distintos s colunas selecionadas
especifica a tabela que contm as colunas

iSQL*Plus
iSQL*Plus um ambiente de execuo que permite enviar instrues SQL ao servidor de
banco de dados, bem como editar e salvar essas instrues. possvel executar as instrues
no prompt SQL ou em um arquivo de script.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-36
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Retorna todas as linhas e colunas de uma tabela


Retorna as colunas especificadas de uma tabela
Usa apelidos para exibir cabealhos de colunas mais

Exerccio 1: Viso Geral


Este exerccio aborda os seguintes tpicos:

Selecionando todos os dados de tabelas diferentes

Usando o iSQL*Plus

Descrevendo a estrutura de tabelas

Copyright 2004, Oracle. Todos os direitos reservados.

Exerccio 1: Viso Geral


Este o primeiro de vrios exerccios deste curso. As solues (se forem necessrias) esto
no Apndice A. Os exerccios tm como objetivo abordar todos os tpicos apresentados na
lio correspondente.
Observe o seguinte local dos arquivos de laboratrio:
E:\labs\\SQL1\labs
Se voc receber uma solicitao para salvar esses arquivos, salve-os nesse local.
Para iniciar o iSQL*Plus, inicie o browser. necessrio informar um URL para acessar o
iSQL*Plus. O URL requer o nome do host, que ser fornecido pelo instrutor. Informe o
comando a seguir, substituindo o nome do host pelo valor fornecido pelo instrutor:
http://<HOSTNAME:5561>/isqlplus

Alguns exerccios podem ser antecedidos pelas expresses "Se tiver tempo" ou "Se quiser
tomar parte em mais um desafio". Faa esses exerccios somente quando terminar todos os
outros no tempo designado e se desejar mais um desafio para testar suas habilidades.
Desenvolva os exerccios devagar e com preciso. Como teste, voc pode salvar e executar
arquivos de comandos Em caso de dvidas, consulte o instrutor.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-37
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Realizando clculos aritmticos e especificando


nomes de colunas

Exerccio 1
Parte 1

Verdadeiro/Falso
4. Esta instruo SELECT executada com xito:
SELECT *
FROM
job_grades;
Verdadeiro/Falso
5. H quatro erros de codificao na instruo a seguir. Voc consegue identific-los?
SELECT
sal x 12
FROM

employee_id, last_name
ANNUAL SALARY
employees;

Parte 2
Observe o seguinte local dos arquivos de laboratrio:
E:\labs\\SQL1\labs
Se voc receber uma solicitao para salvar esses arquivos, salve-os nesse local
Para iniciar o iSQL*Plus, inicie o browser. necessrio informar um URL para acessar o
iSQL*Plus. O URL requer o nome do host, que ser fornecido pelo instrutor. Informe o
comando a seguir, substituindo o nome do host pelo valor fornecido pelo instrutor:
http://<HOSTNAME:5561>/isqlplus

Voc foi admitido como programador SQL da Acme Corporation. Sua primeira tarefa
criar alguns relatrios com base nos dados das tabelas de recursos humanos.
6. Sua primeira tarefa determinar a estrutura da tabela DEPARTMENTS e seu
contedo.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-38
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Teste seu conhecimento:


1. Inicie uma sesso do iSQL*Plus com o ID de usurio e a senha fornecidos pelo
instrutor.
2. Os comandos iSQL*Plus acessam o banco de dados.
Verdadeiro/Falso
3. Esta instruo SELECT executada com xito:
SELECT last_name, job_id, salary AS Sal
FROM
employees;

7. Voc precisa determinar a estrutura da tabela EMPLOYEES.

O departamento de recursos humanos deseja executar uma consulta para exibir o


sobrenome, o cdigo do cargo, a data de admisso e o telefone de cada funcionrio,
com o nmero do funcionrio exibido primeiro. Fornea o apelido STARTDATE
para a coluna HIRE_DATE. Salve a instruo SQL no arquivo lab_01_07.sql
para encaminhar esse arquivo ao departamento de recursos humanos.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-39
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Exerccio 1 (continuao)


9. O departamento de recursos humanos precisa de uma consulta para exibir todos os
cdigos de cargo exclusivos da tabela EMPLOYEES.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-40
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Exerccio 1 (continuao)
8. Teste a consulta no arquivo lab_01_07.sql para verificar se executada
corretamente.


11. O departamento de recursos humanos solicitou um relatrio de todos os funcionrios
e os respectivos IDs de cargo. Exiba o sobrenome concatenado com o ID do cargo
(separado por uma vrgula e um espao) e nomeie a coluna como Employee and
Title.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-41
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Exerccio 1 (continuao)
Parte 3
Se tiver tempo, faa os seguintes exerccios:
10. O departamento de recursos humanos deseja cabealhos de coluna mais
descritivos em seu relatrio sobre funcionrios. Copie a instruo de
lab_01_07.sql para a caixa de texto do iSQL*Plus. Nomeie os cabealhos
de coluna como Emp #, Employee, Job e Hire Date, respectivamente.
Execute a consulta novamente.

Exerccio 1 (continuao)
Se quiser tomar parte em mais um desafio, faa este exerccio:

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 1-42
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

12. Para se familiarizar com os dados da tabela EMPLOYEES, crie uma consulta para
exibir todos os dados dessa tabela. Separe cada sada de coluna com uma vrgula.
Nomeie o ttulo da coluna como THE_OUTPUT.

Copyright 2004, Oracle. Todos os direitos reservados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Restringindo e Classificando Dados

Objetivos
Ao concluir esta lio, voc ser capaz de:
Limitar as linhas recuperadas por uma consulta
Classificar as linhas recuperadas por uma consulta
Usar a substituio com E comercial no iSQL*Plus
para restringir e classificar a sada em runtime

Copyright 2004, Oracle. Todos os direitos reservados.

Objetivos
Durante a recuperao de dados do banco de dados, talvez seja necessrio:
Restringir as linhas de dados a serem exibidas
Especificar a ordem de exibio das linhas
Esta lio explica as instrues SQL usadas para executar essas aes.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-2
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Limitando Linhas por Seleo

"recuperar todos
os funcionrios do
departamento 90"

Copyright 2004, Oracle. Todos os direitos reservados.

Limitando Linhas por Seleo


No exemplo do slide, suponha que voc queira exibir todos os funcionrios do
departamento 90. As linhas com o valor 90 na coluna DEPARTMENT_ID so as nicas
retornadas. Esse mtodo de restrio a base da clusula WHERE em SQL.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-3
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

EMPLOYEES

Limitando as Linhas Selecionadas

Restrinja as linhas retornadas com a clusula WHERE:

A clusula WHERE especificada aps a clusula FROM.

Copyright 2004, Oracle. Todos os direitos reservados.

Limitando as Linhas Selecionadas


possvel restringir as linhas retornadas por uma consulta com a clusula WHERE. Essa
clusula contm uma condio a ser atendida e inserida imediatamente aps a clusula
FROM. Se a condio for verdadeira, a linha que atender a essa condio ser retornada.
Na sintaxe:
WHERE

restringe a consulta s linhas que atendem a uma condio

composta de nomes de colunas, expresses, constantes


e um operador de comparao
A clusula WHERE pode comparar valores em colunas, valores literais, expresses
aritmticas ou functions. Ela consiste em trs elementos:
condition

Nome de coluna
Condio de comparao
Nome de coluna, constante ou lista de valores

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-4
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT *|{[DISTINCT] column|expression [alias],...}


FROM
table
[WHERE condition(s)];

Usando a Clusula WHERE

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Clusula WHERE


No exemplo, a instruo SELECT recupera o ID, o nome, o ID do cargo e o nmero do
departamento de todos os funcionrios do departamento 90.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-5
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT employee_id, last_name, job_id, department_id


FROM
employees
WHERE department_id = 90 ;

As strings de caracteres e os valores de data so


delimitados por aspas simples.

Os valores de caractere fazem distino entre


maisculas e minsculas, e os valores de data fazem
distino de formato.

O formato default de data DD-MON-RR.

SELECT last_name, job_id, department_id


FROM
employees
WHERE last_name = 'Whalen' ;

Copyright 2004, Oracle. Todos os direitos reservados.

Strings de Caracteres e Datas


Na clusula WHERE, as strings de caracteres e as datas devem ser delimitadas por aspas
simples (''), mas no as constantes numricas.
Todas as pesquisas de caracteres fazem distino entre maisculas e minsculas. No
exemplo a seguir, no so retornadas linhas, pois a tabela EMPLOYEES armazena todos os
sobrenomes em maisculas e minsculas:
SELECT last_name, job_id, department_id
FROM employees
WHERE last_name = 'WHALEN';

Os bancos de dados Oracle armazenam datas em um formato numrico interno, que


representa o sculo, o ano, o ms, o dia, as horas, os minutos e os segundos. A exibio
default de data DD-MON-RR.
Observao: Para obter detalhes sobre o formato RR e como alterar o formato de data
default, consulte a prxima lio.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-6
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Strings de Caracteres e Datas

Condies de Comparao
Significado

Igual a

>

Maior que

>=

Maior que ou igual a

<

Menor que

<=

Menor que ou igual a

<>

Diferente de

BETWEEN
...AND...

Entre dois valores (inclusivo)

IN(set)
LIKE

Corresponde a qualquer
valor
de uma lista
Corresponde
a um padro de

IS NULL

caractere
um valor nulo

Copyright 2004, Oracle. Todos os direitos reservados.

Condies de Comparao
As condies de comparao so usadas em condies que comparam uma expresso a
outro valor ou expresso. Elas so usadas na clusula WHERE no seguinte formato:
Sintaxe
... WHERE expr operator value

Exemplo
... WHERE hire_date='01-JAN-95'
... WHERE salary >=6000
... WHERE last_name='Smith'

No possvel usar um apelido na clusula WHERE.


Observao: Os smbolos != e ^= tambm podem representar a condio diferente de.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-7
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Operador

Usando Condies de Comparao

Copyright 2004, Oracle. Todos os direitos reservados.

Usando Condies de Comparao


No exemplo, a instruo SELECT recupera, com base na tabela EMPLOYEES, o sobrenome
e o salrio de todos os funcionrios cujo salrio menor que US$ 3.000 ou igual a esse
valor. Observe que foi fornecido um valor explcito na clusula WHERE. O valor explcito
3000 comparado ao valor do salrio na coluna SALARY da tabela EMPLOYEES.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-8
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name, salary


FROM
employees
WHERE salary <= 3000 ;

Usando a Condio BETWEEN


Use a condio BETWEEN para exibir linhas com base
em uma faixa de valores:

Limite inferior Limite superior

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Condio BETWEEN


possvel exibir linhas com base em uma faixa de valores usando a condio de faixa
BETWEEN. A faixa especificada contm os limites inferior e superior.
A instruo SELECT do slide retorna as linhas da tabela EMPLOYEES relativas aos
funcionrios cujo salrio est contido na faixa entre US$ 2.500 e US$ 3.500.
Os valores especificados com a condio BETWEEN so inclusivos. Especifique o limite
inferior primeiro.
Tambm possvel usar a condio BETWEEN em valores de caractere:
SELECT last_name
FROM
employees
WHERE last_name BETWEEN 'King' AND 'Smith';

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-9
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name, salary


FROM
employees
WHERE salary BETWEEN 2500 AND 3500 ;

Usando a Condio IN
Use a condio de associao IN para testar os valores
de uma lista:

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Condio IN
Para testar os valores de um conjunto de valores especificado, use a condio IN. Essa
condio tambm conhecida como condio de associao.
O exemplo do slide exibe nmeros de funcionrios, sobrenomes, salrios e nmeros de
funcionrio de gerentes relativos a todos os funcionrios cujo nmero de funcionrio do
gerente seja 100, 101 ou 201.
possvel usar a condio IN com qualquer tipo de dados. O exemplo a seguir retorna uma
linha da tabela EMPLOYEES para cada funcionrio cujo sobrenome est includo na lista de
nomes da clusula WHERE:
SELECT employee_id, manager_id, department_id
FROM employees
WHERE last_name IN ('Hartstein', 'Vargas');

Se forem usados caracteres ou datas na lista, eles devero ser delimitados por aspas simples
('').

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-10
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT employee_id, last_name, salary, manager_id


FROM
employees
WHERE manager_id IN (100, 101, 201) ;

Use a condio LIKE para executar pesquisas com


curinga de valores vlidos de strings de pesquisa.

As condies de pesquisa podem conter nmeros


ou caracteres literais:

% indica zero ou vrios caracteres.


_ indica um caractere.
SELECT
FROM
WHERE

first_name
employees
first_name LIKE 'S%' ;

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Condio LIKE


Nem sempre voc sabe o valor exato a ser pesquisado. possvel selecionar linhas que
correspondam a um padro de caracteres usando a condio LIKE. A operao de
correspondncia a um padro de caracteres conhecida como pesquisa com curinga.
possvel usar dois smbolos para criar a string de pesquisa.
Smbolo

Descrio

Representa qualquer seqncia de zero ou mais caracteres

Representa qualquer caractere simples

A instruo SELECT do slide retorna, com base na tabela EMPLOYEES, os nomes de todos
os funcionrios que comeam com a letra S. Observe o S maisculo. Os nomes que
comeam com s no so retornados.
possvel usar a condio LIKE como um atalho para algumas comparaes BETWEEN. O
exemplo a seguir exibe os sobrenomes e as datas de admisso de todos os funcionrios
admitidos entre janeiro de 1995 e dezembro de 1995:
SELECT last_name, hire_date
FROM employees
WHERE hire_date LIKE '%95';
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-11
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usando a Condio LIKE

Usando a Condio LIKE

Voc pode combinar caracteres com padres


correspondentes:

Voc pode usar o identificador ESCAPE para


pesquisar os smbolos % e _ verdadeiros.

Copyright 2004, Oracle. Todos os direitos reservados.

Combinando Caracteres Curinga


possvel usar os smbolos % e _ em qualquer combinao com caracteres literais. O
exemplo do slide exibe os nomes de todos os funcionrios cujo sobrenome inclui a letra o
como o segundo caractere.
Opo ESCAPE
Quando voc precisar de uma correspondncia exata para os caracteres % e _ verdadeiros,
use a opo ESCAPE. Essa opo especifica o que o caractere de escape. Para procurar
strings contendo 'SA_', voc poder usar a seguinte instruo SQL:
SELECT employee_id, last_name, job_id
FROM
employees WHERE job_id LIKE '%SA\_%' ESCAPE '\';

A opo ESCAPE identifica a barra invertida (\) como o caractere de escape. No padro, o
caractere de escape precede o sublinhado (_). Isso faz com que o Oracle Server interprete o
sublinhado literalmente.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-12
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name
FROM
employees
WHERE last_name LIKE '_o%' ;

Usando as Condies NULL


Teste valores nulos com o operador IS NULL.

Copyright 2004, Oracle. Todos os direitos reservados.

Usando as Condies NULL


As condies NULL incluem IS NULL e IS NOT NULL.
A condio IS NULL testa valores nulos. Um valor nulo aquele que no est disponvel
nem designado e no conhecido ou aplicvel. Portanto, no possvel test-lo com =, pois
no pode ser igual a um valor ou diferente dele. O exemplo do slide recupera os sobrenomes
e os gerentes de todos os funcionrios que no esto subordinados a um gerente.
Veja outro exemplo: Para exibir o sobrenome, o ID do cargo e a comisso de todos os
funcionrios sem direito a comisso, use a seguinte instruo SQL:
SELECT last_name, job_id, commission_pct
FROM employees
WHERE commission_pct IS NULL;

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-13
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name, manager_id


FROM
employees
WHERE manager_id IS NULL ;

Condies Lgicas
Significado

AND

Retornar TRUE se as duas condies


componentes forem verdadeiras

OR

Retornar TRUE se uma das condies


componentes for verdadeira

NOT

Retornar TRUE se a condio seguinte


for falsa

Copyright 2004, Oracle. Todos os direitos reservados.

Condies Lgicas
Uma condio lgica combina o resultado de duas condies componentes para produzir
um nico resultado com base nessas condies, ou inverte o resultado de uma nica
condio. S ser retornada uma linha se o resultado geral da condio for verdadeiro.
Trs operadores lgicos esto disponveis em SQL:
AND
OR
NOT
Todos os exemplos at ento especificaram apenas uma condio na clusula WHERE. Voc
pode usar vrias condies em uma clusula WHERE com os operadores AND e OR.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-14
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Operador

Usando o Operador AND


AND exige que as duas condies sejam verdadeiras:
employee_id, last_name, job_id, salary
employees
salary >=10000
job_id LIKE '%MAN%' ;

Copyright 2004, Oracle. Todos os direitos reservados.

Usando o Operador AND


No exemplo, as duas condies devero ser verdadeiras para que sejam selecionados
registros. Portanto, somente os funcionrios cujos cargos contiverem a string 'MAN' e que
receberem US$ 10.000 ou mais sero selecionados.
Todas as pesquisas de caracteres fazem distino entre maisculas e minsculas. No sero
retornadas linhas se a string 'MAN' no estiver em maisculas. As strings de caracteres
devem ser delimitadas por aspas.
Tabela de Valores Verdadeiros com AND
A tabela a seguir mostra os resultados da combinao de duas expresses com AND:
AND
TRUE
FALSE
NULL

TRUE
TRUE
FALSE
NULL

FALSE
FALSE
FALSE
FALSE

NULL
NULL
FALSE
NULL

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-15
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
FROM
WHERE
AND

Usando o Operador OR
OR exige que uma das condies seja verdadeira:
employee_id, last_name, job_id, salary
employees
salary >= 10000
job_id LIKE '%MAN%' ;

Copyright 2004, Oracle. Todos os direitos reservados.

Usando o Operador OR
No exemplo, uma das duas condies poder ser verdadeira para que sejam selecionados
registros. Portanto, os funcionrios cujos IDs de cargo contiverem a string 'MAN' ou que
receberem US$ 10.000 ou mais sero selecionados.
Tabela de Valores Verdadeiros com OR
A tabela a seguir mostra os resultados da combinao de duas expresses com OR:
OR
TRUE
FALSE
NULL

TRUE
TRUE
TRUE
TRUE

FALSE
TRUE
FALSE
NULL

NULL
TRUE
NULL
NULL

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-16
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
FROM
WHERE
OR

Usando o Operador NOT

Copyright 2004, Oracle. Todos os direitos reservados.

Usando o Operador NOT


O exemplo do slide exibe o sobrenome e o ID do cargo de todos os funcionrios cujo ID de
cargo diferente de IT_PROG, ST_CLERK ou SA_REP.
Tabela de Valores Verdadeiros com NOT
A tabela a seguir mostra o resultado da aplicao do operador NOT a uma condio:
NOT

TRUE
FALSE

FALSE
TRUE

NULL
NULL

Observao: Tambm possvel usar o operador NOT com outros operadores SQL, como
BETWEEN, LIKE e NULL.
...
...
...
...

WHERE
WHERE
WHERE
WHERE

job_id
NOT IN ('AC_ACCOUNT', 'AD_VP')
salary
NOT BETWEEN 10000 AND 15000
last_name NOT LIKE '%A%'
commission_pct IS
NOT NULL

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-17
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name, job_id


FROM
employees
WHERE job_id
NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ;

Regras de Precedncia

Operadores aritmticos

Operador de concatenao

Condies de comparao

IS [NOT] NULL, LIKE, [NOT] IN

[NOT] BETWEEN

Diferente de

Condio lgica NOT

Condio lgica AND

Condio lgica OR

Voc pode usar parnteses para sobrepor as regras de precedncia.

Copyright 2004, Oracle. Todos os direitos reservados.

Regras de Precedncia
As regras de precedncia determinam a ordem de avaliao e clculo das expresses. A
tabela relaciona a ordem de precedncia default. Voc pode sobrepor a ordem default
usando parnteses para delimitar as expresses a serem calculadas primeiro.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-18
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Operador Significado

Regras de Precedncia
last_name, job_id, salary
employees
job_id = 'SA_REP'
job_id = 'AD_PRES'
salary > 15000;

SELECT
FROM
WHERE
OR
AND

last_name, job_id, salary


employees
(job_id = 'SA_REP'
job_id = 'AD_PRES')
salary > 15000;

Copyright 2004, Oracle. Todos os direitos reservados.

1. Exemplo da Precedncia do Operador AND


Neste exemplo, existem duas condies:
A primeira condio que o ID do cargo seja AD_PRES e o salrio seja maior que
US$ 15.000.
A segunda condio que o ID do cargo seja SA_REP.
Portanto, a leitura da instruo SELECT ser esta:
"Selecione a linha se o funcionrio for presidente e receber mais de US$15.000, ou se ele
for representante de vendas".
2. Exemplo da Utilizao de Parnteses
Neste exemplo, existem duas condies:
A primeira condio que o ID do cargo seja AD_PRES ou SA_REP.
A segunda condio que o salrio seja maior que US$ 15.000.
Portanto, a leitura da instruo SELECT ser esta:
"Selecione a linha se o funcionrio for presidente ou representante de vendas e receber mais
de US$15.000".

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-19
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
FROM
WHERE
OR
AND

Usando a Clusula ORDER BY

Classifique as linhas recuperadas com a clusula


ORDER BY:

ASC: ordem crescente, default


DESC: ordem decrescente
A clusula ORDER BY inserida por ltimo na
instruo SELECT:
SELECT
last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date;

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Clusula ORDER BY


A ordem das linhas retornadas no resultado de uma consulta indefinida. possvel usar a
clusula ORDER BY para classificar as linhas. Se voc usar essa clusula, ela dever ser a
ltima da instruo SQL. Voc pode especificar uma expresso, um apelido ou uma posio
de coluna como a condio de classificao.
Sintaxe
SELECT
FROM
[WHERE
[ORDER BY

Na sintaxe:
ORDER BY
ASC
DESC

expr
table
condition(s)]
{column, expr, numeric_position} [ASC|DESC]];

especifica a ordem na qual as linhas recuperadas so exibidas


ordena as linhas em ordem crescente (essa a ordem default)
ordena as linhas em ordem decrescente

Se a clusula ORDER BY no for usada, a ordem de classificao ser indefinida e o


servidor Oracle poder no extrair (fetch) as linhas na mesma ordem para consultas
idnticas. Use a clusula ORDER BY para exibir as linhas em uma ordem especfica.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-20
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Classificao

Classificao em ordem decrescente:

SELECT
last_name, job_id, department_id, hire_date
FROM employees
1
ORDER BY hire_date DESC;

Classificao por apelido de coluna:

SELECT employee_id, last_name, salary*12 annsal


FROM
employees
ORDER BY annsal ;

Classificao por vrias colunas:

SELECT last_name, department_id, salary


FROM
employees
ORDER BY department_id, salary DESC;

Copyright 2004, Oracle. Todos os direitos reservados.

Ordenao de Dados Default


A ordem de classificao default crescente:
Os valores numricos so exibidos com os menores valores primeiro (por exemplo, 1 a
999).
Os valores de data so exibidos em ordem cronolgica (por exemplo, 01-JAN-92 antes
de 01-JAN-95).
Os valores de caractere so exibidos em ordem alfabtica (por exemplo, de A a Z).
Os valores nulos so exibidos por ltimo em seqncias crescentes e no incio em
seqncias decrescentes.
Voc pode classificar por uma coluna no includa na lista SELECT.
Exemplos
1. Para inverter a ordem de exibio das linhas, especifique a palavra-chave DESC aps o
nome da coluna na clusula ORDER BY. O exemplo do slide classifica o resultado de
acordo com o funcionrio admitido mais recentemente.
2. Voc pode usar um apelido de coluna na clusula ORDER BY. O exemplo do slide
classifica os dados por salrio anual.
3. Voc pode classificar resultados de consultas por mais de uma coluna. O limite de
classificao o nmero de colunas da tabela. Na clusula ORDER BY, especifique as
colunas e separe os nomes correspondentes por vrgulas. Para inverter a ordem de uma
coluna, especifique DESC aps seu nome.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-21
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Variveis de Substituio

Desejo
consultar
valores
diferentes.

Copyright 2004, Oracle. Todos os direitos reservados.

Variveis de Substituio
At o momento, foram apresentados exemplos codificados. Em uma aplicao concluda, o
usurio acionaria o relatrio, que seria executado sem outros prompts. A faixa de dados
seria predeterminada pela clusula WHERE fixa no arquivo de script do iSQL*Plus.
Com o iSQL*Plus, possvel criar relatrios que solicitam aos usurios seus prprios
valores para restringir a faixa de dados retornados com variveis de substituio. possvel
incorporar variveis de substituio a um arquivo de comandos ou a uma nica instruo
SQL. Uma varivel pode ser considerada como um container no qual os valores so
armazenados temporariamente. Quando a instruo executada, o valor substitudo.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-22
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

... salary = ?
department_id = ?
... last_name = ? ...

Variveis de Substituio

Use as variveis de substituio do iSQL*Plus para:

Armazenar temporariamente valores com substituio


de E comercial nico (&) e duplo (&&)

Use as variveis de substituio para complementar:

Condies WHERE
Clusulas ORDER BY
Expresses de coluna
Nomes de tabelas
Instrues SELECT inteiras

Copyright 2004, Oracle. Todos os direitos reservados.

Variveis de Substituio (continuao)


No iSQL*Plus, possvel usar variveis de substituio com E comercial nico (&) para
armazenar valores temporariamente.
Voc pode predefinir variveis no iSQL*Plus com o comando DEFINE. Esse comando cria
e designa um valor a uma varivel.
Exemplos de Faixas de Dados Restritas
Gerar relatrio sobre valores relativos apenas ao trimestre atual ou a uma faixa de datas
especificada
Gerar relatrio sobre dados relacionados apenas ao usurio que o solicitou
Exibir pessoal apenas de um departamento especfico
Outros Efeitos Interativos
Os efeitos interativos no se restringem interao direta do usurio com a clusula
WHERE. Os mesmos princpios podem ser usados para atingir outras metas, como:
Obteno de valores de entrada de um arquivo, e no de uma pessoa
Transmisso de valores de uma instruo SQL para outra
O iSQL*Plus no suporta verificaes de validao (exceto no caso de tipo de dados) na
entrada do usurio.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-23
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usando a Varivel de Substituio &


Use uma varivel que tenha como prefixo o smbolo E
comercial (&) para solicitar um valor ao usurio:

Copyright 2004, Oracle. Todos os direitos reservados.

Varivel de Substituio com E Comercial nico


Durante a execuo de um relatrio, os usurios geralmente desejam restringir os dados
retornados de forma dinmica. O iSQL*Plus permite essa flexibilidade com variveis de
usurio. Use o smbolo E comercial (&) para identificar cada varivel na instruo SQL.
No necessrio definir o valor de cada varivel.
Notao

Descrio

&user_variable

Indica uma varivel em uma instruo SQL; se a


varivel no existir, o iSQL*Plus solicitar um valor ao
usurio (o iSQL*Plus descartar uma nova varivel
depois que ela for utilizada.)

O exemplo do slide cria uma varivel de substituio do iSQL*Plus para um nmero de


funcionrio. Quando a instruo executada, o iSQL*Plus solicita ao usurio um nmero de
funcionrio e, em seguida, exibe o nmero, o sobrenome, o salrio e o nmero do
departamento desse funcionrio.
Com o smbolo E comercial nico, o usurio solicitado a especificar essa informao a
cada execuo do comando caso a varivel no exista.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-24
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT employee_id, last_name, salary, department_id


FROM
employees
WHERE employee_id = &employee_num ;

Usando a Varivel de Substituio &

1
2

Copyright 2004, Oracle. Todos os direitos reservados.

Varivel de Substituio com E Comercial nico (continuao)


Quando o iSQL*Plus detecta que a instruo SQL contm o smbolo de E comercial, voc
solicitado a informar um valor para a varivel de substituio citada na instruo SQL.
Depois que voc informa um valor e clica no boto Continue, os resultados so exibidos na
rea de sada da sesso do iSQL*Plus.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-25
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

101

Valores de Caractere e Data


com Variveis de Substituio
Use aspas simples para valores de data e caractere:

Copyright 2004, Oracle. Todos os direitos reservados.

Especificando Valores de Caractere e Data com Variveis de Substituio


Em uma clusula WHERE, necessrio delimitar os valores de data e caractere por aspas
simples. A mesma regra se aplica s variveis de substituio.
Delimite a varivel por aspas simples na prpria instruo SQL.
O slide mostra uma consulta para recuperar os nomes de funcionrios, os nmeros de
departamentos e os salrios anuais de todos os funcionrios com base no valor de cargo da
varivel de substituio do iSQL*Plus.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-26
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name, department_id, salary*12


FROM
employees
WHERE job_id = '&job_title' ;

Especificando Nomes de Colunas,


Expresses e Texto

salary

salary > 15000

last_name

Copyright 2004, Oracle. Todos os direitos reservados.

Especificando Nomes de Colunas, Expresses e Texto


Voc pode usar as variveis de substituio no apenas na clusula WHERE de uma
instruo SQL, mas tambm nos casos em que deseja substituir nomes de colunas,
expresses ou texto.
Exemplo
O exemplo do slide exibe o nmero, o nome e o cargo do funcionrio, bem como qualquer
outra coluna especificada pelo usurio durante o runtime, com base na tabela EMPLOYEES.
Para cada varivel de substituio na instruo SELECT, um valor ser solicitado. Aps
informar esse valor, clique no boto Continue para prosseguir.
Se voc no informar um valor para a varivel de substituio, receber um erro quando
executar a instruo anterior.
Observao: Uma varivel de substituio pode ser usada em qualquer local na instruo
SELECT, exceto como a primeira palavra especificada no prompt de comando.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-27
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT employee_id, last_name, job_id,&column_name


FROM
employees
WHERE &condition
ORDER BY &order_column ;

Usando a Varivel de Substituio &&


Use o smbolo de E comercial duplo (&&) para reutilizar
o valor da varivel sem solicitar sempre um valor ao
usurio.

Copyright 2004, Oracle. Todos os direitos reservados.

Varivel de Substituio com E Comercial Duplo


possvel usar a varivel de substituio com E comercial duplo (&&) para reutilizar o
valor da varivel sem solicitar sempre um valor ao usurio. O valor solicitado ao usurio
apenas uma vez. No exemplo do slide, o valor da varivel column_name solicitado
apenas uma vez ao usurio. O valor fornecido por ele (department_id) usado para
exibir e ordenar os dados.
O iSQL*Plus armazena o valor fornecido com o comando DEFINE e reutiliza esse valor
sempre que feita referncia ao nome da varivel. Aps a definio de uma varivel de
usurio, necessrio usar o comando UNDEFINE para delet-la da seguinte forma:
UNDEFINE column_name

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-28
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
employee_id, last_name, job_id, &&column_name
FROM
employees
ORDER BY &column_name ;

Usando o Comando DEFINE do iSQL*Plus

Use o comando DEFINE do iSQL*Plus para criar e


designar um valor a uma varivel.
Use o comando UNDEFINE do iSQL*Plus para
remover uma varivel.

SELECT employee_id, last_name, salary, department_id


FROM
employees
WHERE employee_id = &employee_num ;
UNDEFINE employee_num

Copyright 2004, Oracle. Todos os direitos reservados.

Usando o Comando DEFINE do iSQL*Plus


O exemplo mostrado cria uma varivel de substituio do iSQL*Plus para um nmero de
funcionrio com o comando DEFINE. Durante o runtime, so exibidos o nmero, o nome, o
salrio e o nmero do departamento desse funcionrio.
Como a varivel criada com o comando DEFINE do iSQL*Plus, no solicitado ao
usurio um valor relativo ao nmero de funcionrio. Nesse caso, o valor definido da
varivel substitudo automaticamente na instruo SELECT.
A varivel de substituio EMPLOYEE_NUM estar presente na sesso at que o usurio
remova sua definio ou saia da sesso do iSQL*Plus.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-29
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

DEFINE employee_num = 200

Usando o Comando VERIFY

SET VERIFY ON
SELECT employee_id, last_name, salary, department_id
FROM
employees
WHERE employee_id = &employee_num;

old
new

3: WHERE
3: WHERE

employee_id = &employee_num
employee_id = 200

Copyright 2004, Oracle. Todos os direitos reservados.

Usando o Comando VERIFY


Para confirmar as alteraes na instruo SQL, use o comando VERIFY do iSQL*Plus. A
definio de SET VERIFY ON fora o iSQL*Plus a exibir o texto de um comando antes e
depois de substituir as variveis por valores.
O exemplo do slide exibe os valores antigo e novo da coluna EMPLOYEE_ID.
Variveis de Sistema do iSQL*Plus
O iSQL*Plus usa diversas variveis de sistema que controlam o ambiente de trabalho. Uma
delas VERIFY. Para obter uma lista completa de todas as variveis de sistema, execute o
comando SHOW ALL.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-30
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Use o comando VERIFY para alternar a exibio da


varivel de substituio, antes e depois de o iSQL*Plus
substituir as variveis por valores:

Sumrio
Nesta lio, voc aprendeu a:
Usar a clusula WHERE para restringir as linhas
da sada:

Usar a clusula ORDER BY para classificar as linhas


da sada:
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM
table
[WHERE condition(s)]
[ORDER BY {column, expr, alias} [ASC|DESC]] ;

Usar a substituio com E comercial no iSQL*Plus


para restringir e classificar a sada durante o runtime
Copyright 2004, Oracle. Todos os direitos reservados.

Sumrio
Nesta lio, voc aprendeu a restringir e classificar as linhas retornadas pela instruo
SELECT. Voc tambm aprendeu a implementar diversos operadores e condies.
Com as variveis de substituio do iSQL*Plus, possvel obter mais flexibilidade nas
instrues SQL. Voc pode consultar usurios durante o runtime e permitir que
especifiquem critrios.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-31
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usar as condies de comparao


Usar as condies BETWEEN, IN, LIKE e NULL
Aplicar os operadores lgicos AND, OR e NOT

Exerccio 2: Viso Geral


Este exerccio aborda os seguintes tpicos:

Selecionando dados e alterando a ordem de


exibio das linhas
Restringindo linhas com a clusula WHERE
Classificando linhas com a clusula ORDER BY
Usando variveis de substituio para obter mais
flexibilidade nas instrues SQL SELECT

Copyright 2004, Oracle. Todos os direitos reservados.

Exerccio 2: Viso Geral


Neste exerccio, voc criar mais relatrios, inclusive instrues que utilizam as clusulas
WHERE e ORDER BY. Para tornar as instrues SQL mais reutilizveis e genricas, use a
substituio com o smbolo de E comercial.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-32
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Exerccio 2
O departamento de recursos humanos precisa da sua ajuda para criar algumas consultas.

2. Crie um relatrio que exiba o sobrenome e o nmero do departamento do funcionrio


176.

3. O departamento de recursos humanos precisa localizar funcionrios com altos


e baixos salrios. Modifique lab_02_01.sql para exibir o sobrenome e o salrio
de todos os funcionrios cuja faixa salarial no esteja entre US$ 5.000 e US$ 12.000.
Inclua a instruo SQL no arquivo de texto lab_02_03.sql.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-33
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

1. Em funo de questes oramentrias, o departamento precisa de um relatrio com


o sobrenome e o salrio dos funcionrios que ganham mais de US$ 12.000. Inclua
a instruo SQL no arquivo de texto lab_02_01.sql. Execute a consulta.

Exerccio 2 (continuao)

5. Exiba o sobrenome e o nmero do departamento de todos os funcionrios nos


departamentos 20 e 50 em ordem alfabtica crescente por nome.

6. Modifique lab_02_03.sql para exibir o sobrenome e o salrio dos funcionrios


que ganham entre US$ 5.000 e US$ 12.000 e esto no departamento 20 ou 50.
Atribua s colunas os labels Employee e Monthly Salary, respectivamente.
Salve novamente lab_02_03.sql como lab_02_06.sql. Execute a instruo
em lab_02_06.sql.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-34
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

4. Crie um relatrio para exibir o sobrenome, o ID do cargo e a data de admisso dos


funcionrios cujos sobrenomes sejam Matos e Taylor. Organize a consulta em
ordem crescente por data de admisso.

Exerccio 2 (continuao)
7. O departamento de recursos humanos precisa de um relatrio que exiba o sobrenome
e a data de admisso de todos os funcionrios admitidos em 1994.

9. Crie um relatrio para exibir o sobrenome, o salrio e a comisso de todos os


funcionrios que ganham comisso. Classifique os dados em ordem decrescente de
salrio e comisses.

10. Os membros do departamento de recursos humanos desejam ter mais flexibilidade


em relao s consultas criadas. Eles desejam um relatrio que exiba o sobrenome
e o salrio dos funcionrios que ganham mais do que uma quantia especificada
pelo usurio aps o prompt. (Voc pode usar a consulta criada no exerccio 1
e modific-la.) Salve essa consulta no arquivo lab_02_10.sql. Se voc
informar 12000 quando a quantia for solicitada, o relatrio exibir estes
resultados:

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-35
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

8. Crie um relatrio que exiba o sobrenome e o cargo de todos os funcionrios no


subordinados a um gerente.

Exerccio 2 (continuao)
11. O departamento de recursos humanos deseja executar relatrios baseados em um
gerente. Crie uma consulta que solicite um ID de gerente ao usurio e gere o ID de
funcionrio, o sobrenome, o salrio e o departamento dos funcionrios desse
gerente. O departamento de recursos humanos deseja ter permisso para classificar o
relatrio em uma coluna selecionada. Voc pode testar os dados com os seguintes
valores:

ID do gerente = 201, classificado pelo salrio:

ID do gerente = 124, classificado pelo ID do funcionrio:

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-36
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

ID do gerente = 103, classificado pelo sobrenome do funcionrio:

Exerccio 2 (continuao)
Se tiver tempo, faa os seguintes exerccios:
12. Exiba todos os sobrenomes dos funcionrios cuja terceira letra do nome seja a.

Se quiser tomar parte em mais um desafio, faa estes exerccios:


14. Exiba o sobrenome, o cargo e o salrio de todos os funcionrios cujo cargo seja
representante de vendas ou estoquista e cujo salrio seja diferente de US$ 2.500,
US$ 3.500 ou US$ 7.000.

15. Modifique lab_02_06.sql para exibir o sobrenome, o salrio e a comisso


de todos os funcionrios cuja comisso seja de 20%. Salve novamente
lab_02_06.sql como lab_02_15.sql. Reexecute a instruo em
lab_02_15.sql.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 2-37
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

13. Exiba o sobrenome de todos os funcionrios que contenha a e e.

Oracle University and Impacta Tecnologia use only


Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Copyright 2004, Oracle. Todos os direitos reservados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usando Functions de uma nica


Linha para Personalizar a Sada

Objetivos

Descrever vrios tipos de functions disponveis em


SQL

Usar functions de caractere, nmero e data em


instrues SELECT

Descrever o uso de functions de converso

Copyright 2004, Oracle. Todos os direitos reservados.

Objetivos
As functions tornam o bloco bsico da consulta mais eficiente e so usadas para manipular
valores de dados. Esta a primeira das duas lies que descrevem o uso de functions. Ela
concentra-se em functions de caractere, nmero e data de uma nica linha, bem como em
functions que convertem os dados de um tipo em outro (por exemplo, dados de caractere em
dados numricos).

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-2
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Ao concluir esta lio, voc ser capaz de:

Functions SQL
Entrada

Sada
Function

arg 2

Valor
resultante

arg n

Copyright 2004, Oracle. Todos os direitos reservados.

Functions SQL
As functions constituem um recurso eficiente de SQL. possvel us-las com os seguintes
objetivos:
Executar clculos em dados
Modificar itens individuais de dados
Manipular a sada de grupos de linhas
Formatar datas e nmeros para exibio
Converter tipos de dados de colunas
As functions SQL s vezes aceitam argumentos e sempre retornam um valor.
Observao: A maioria das functions descritas nesta lio so especficas da verso de
SQL do Oracle.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-3
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

A function
executa a ao

arg 1

Dois Tipos de Functions SQL

Functions de
uma nica linha

Functions de
vrias linhas

Retornam um resultado
por linha

Retornam um resultado
por conjunto de linhas

Copyright 2004, Oracle. Todos os direitos reservados.

Functions SQL (continuao)


H dois tipos de functions:
Functions de uma nica linha
Functions de vrias linhas
Functions de uma nica Linha
Estas functions s operam em linhas isoladas e retornam um resultado por linha. Existem
tipos diferentes de functions de uma nica linha. Esta lio aborda as seguintes functions:
Caractere
Nmero
Data
Converso
Geral
Functions de Vrias Linhas
As functions podem manipular grupos de linhas para fornecer um resultado por grupo. Essas
functions tambm so conhecidas como functions de grupo (e sero abordadas em uma lio
posterior).
Observao: Para obter mais informaes e uma lista completa das functions disponveis e
a sintaxe correspondente, consulte o manual Oracle SQL Reference.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-4
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Functions

Functions de uma nica Linha


Functions de uma nica linha:
Manipulam itens de dados
Aceitam argumentos e retornam um valor
Agem sobre cada linha retornada
Retornam um resultado por linha
Podem modificar o tipo de dados
Podem ser aninhadas
Aceitam argumentos, como uma coluna ou uma
expresso
function_name [(arg1, arg2,...)]

Copyright 2004, Oracle. Todos os direitos reservados.

Functions de uma nica Linha


As functions de uma nica linha so usadas para manipular itens de dados. Elas aceitam um
ou mais argumentos e retornam um valor para cada linha retornada pela consulta. Um
argumento pode ser:
Uma constante fornecida pelo usurio
Um valor varivel
Um nome de coluna
Uma expresso
Os recursos de functions de uma nica linha so:
Agir sobre cada linha retornada pela consulta
Retornar um resultado por linha
Possibilitar o retorno de um valor de dados de um tipo diferente do referenciado
Possibilitar a incluso de um ou mais argumentos
Ser usada em clusulas SELECT, WHERE e ORDER BY; ser aninhada
Na sintaxe:
function_name
arg1, arg2

o nome da function
um argumento a ser usado pela function. Pode ser
representado por um nome de coluna ou uma expresso.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-5
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Functions de uma nica Linha


Caractere

Functions de
uma nica linha

Converso

Nmero

Data

Copyright 2004, Oracle. Todos os direitos reservados.

Functions de uma nica Linha (continuao)


Esta lio aborda as seguintes functions de uma nica linha:
Functions de caractere: Aceitam a entrada de caracteres e podem retornar valores
numricos ou de caractere
Functions numricas: Aceitam a entrada numrica e retornam valores numricos
Functions de data: Operam em valores do tipo de dados DATE (Todas as functions de
data retornam um valor de tipo de dados DATE, com exceo da function
MONTHS_BETWEEN, que retorna um nmero.)
Functions de converso: Convertem um valor de um tipo de dados em outro
Functions gerais:
NVL
NVL2
NULLIF
COALESCE
CASE
DECODE

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-6
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Geral

Functions de Caractere

Functions de manipulao
de maisculas e minsculas

Functions de
manipulao de caracteres

LOWER
UPPER
INITCAP

CONCAT
SUBSTR
LENGTH
INSTR
LPAD | RPAD
TRIM
REPLACE

Copyright 2004, Oracle. Todos os direitos reservados.

Functions de Caractere
As functions de caractere de uma nica linha aceitam dados de caractere como entrada e
podem retornar valores numricos ou de caractere. possvel dividir as functions de
caractere em:
Functions de manipulao de maisculas e minsculas
Functions de manipulao de caracteres
Function

Objetivo

LOWER(column|expression)

Converte valores de caractere alfa em minsculas

UPPER(column|expression)

Converte valores de caractere alfa em maisculas

INITCAP(column|expression)

Converte valores de caractere alfa em maisculas (apenas a


primeira letra de cada palavra; todas as outras letras
permanecem minsculas)
Concatena o primeiro valor de caractere para o segundo valor
de caractere; equivalente ao operador de concatenao (||)
Retorna caracteres especificados a partir do valor de
caractere que inicia na posio m, n caracteres (Se m for
negativo, a contagem iniciar a partir do final do valor do
caractere. Se n for omitido, todos os caracteres do final da
string sero retornados.)

CONCAT(column1|expression1,
column2|expression2)
SUBSTR(column|expression,m[
,n])

Observao: Nesta lio, so abordadas apenas algumas functions disponveis.


Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-7
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Functions de
caractere

Functions de Caractere (continuao)


Function

Objetivo

LENGTH(column|expression)

Retorna o nmero de caracteres na expresso

Retorna a posio numrica de uma string nomeada. Como


opo, voc pode fornecer uma posio m para iniciar a
pesquisa e a ocorrncia n da string. O default de m e n 1,
ou seja, comear a pesquisa desde o incio e reportar a
primeira ocorrncia.
LPAD(column|expression, n,
Insere o valor de caractere justificado direita com uma
'string')
largura total de n posies de caractere
RPAD(column|expression, n,
Insere o valor do caractere justificado esquerda com uma
'string')
largura total de n posies de caractere
TRIM(leading|trailing|both, Permite reduzir os caracteres direita ou esquerda (ou nas
trim_character FROM
duas direes) de uma string de caracteres. Se
trim_source)
trim_character ou trim_source for um literal de
caractere, delimite-o com aspas simples.
Esse recurso est disponvel no Oracle8i e em verses
posteriores.
REPLACE(text,
Procura uma string de caracteres em uma expresso de texto
search_string,
e substitui essa string por uma string de substituio
replacement_string)
especificada quando a encontra

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-8
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

INSTR(column|expression,
string, [,m], [n] )

Functions de Manipulao
de Maisculas e Minsculas

Function

Resultado

LOWER('SQL Course')

sql course

UPPER('SQL Course')

SQL COURSE

INITCAP('SQL Course')

Sql Course

Copyright 2004, Oracle. Todos os direitos reservados.

Functions de Manipulao de Maisculas e Minsculas


LOWER, UPPER e INITCAP so as trs functions de converso entre maisculas e
minsculas.
LOWER: Converte strings de caracteres em maisculas ou em maisculas e minsculas
em strings de caracteres em minsculas
UPPER: Converte strings de caracteres em minsculas ou em maisculas e minsculas
em strings de caracteres em maisculas
INITCAP: Converte a primeira letra de cada palavra em maiscula e as letras restantes
em minsculas
SELECT 'The job id for '||UPPER(last_name)||' is '
||LOWER(job_id) AS "EMPLOYEE DETAILS"
FROM employees;

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-9
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Estas functions convertem letras maisculas em


minsculas e vice-versa em strings de caracteres:

Usando Functions de Manipulao


de Maisculas e Minsculas
Exiba o nmero, o nome e o nmero de departamento
do funcionrio Higgins:

SELECT employee_id, last_name, department_id


FROM
employees
WHERE LOWER(last_name) = 'higgins';

Copyright 2004, Oracle. Todos os direitos reservados.

Usando Functions de Manipulao de Maisculas e Minsculas


O exemplo do slide exibe o nmero, o nome e o nmero de departamento do funcionrio
Higgins.
A clusula WHERE da primeira instruo SQL especifica o nome do funcionrio como
higgins. Como todos os dados da tabela EMPLOYEES esto armazenados com as iniciais
das palavras em letras maisculas, o nome higgins no detecta uma correspondncia na
tabela e, como resultado, nenhuma linha selecionada.
A clusula WHERE da segunda instruo SQL especifica que o nome do funcionrio na
tabela EMPLOYEES seja comparado a higgins, convertendo a coluna LAST_NAME em
letras minsculas para fins de comparao. Como agora os dois nomes esto em letras
minsculas, uma correspondncia detectada e uma linha selecionada. possvel recriar a
clusula WHERE da seguinte maneira para produzir o mesmo resultado:
...WHERE last_name = 'Higgins'

O nome na sada aparece como foi armazenado no banco de dados. Para exibir o nome
apenas com a primeira letra maiscula, use a function UPPER na instruo SELECT.
SELECT employee_id, UPPER(last_name), department_id
FROM employees
WHERE INITCAP(last_name) = 'Higgins';

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-10
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT employee_id, last_name, department_id


FROM
employees
WHERE last_name = 'higgins';
no rows selected

Functions de Manipulao de Caracteres

Function

Resultado

CONCAT('Hello', 'World')

HelloWorld

SUBSTR('HelloWorld',1,5)

Hello

LENGTH('HelloWorld')

10

INSTR('HelloWorld', 'W')

LPAD(salary,10,'*')

*****24000

RPAD(salary, 10, '*')

24000*****

REPLACE
('JACK and JUE','J','BL')

BLACK and BLUE

TRIM('H' FROM 'HelloWorld')

elloWorld

Copyright 2004, Oracle. Todos os direitos reservados.

Functions de Manipulao de Caracteres


CONCAT, SUBSTR, LENGTH, INSTR, LPAD, RPAD e TRIM so as functions de
manipulao de caracteres abordadas nesta lio.
CONCAT: Une valores (Voc est limitado a usar dois parmetros com CONCAT.)
SUBSTR: Extrai uma string de tamanho determinado
LENGTH: Mostra o tamanho de uma string como um valor numrico
INSTR: Localiza a posio numrica de um caractere nomeado
LPAD: Preenche o valor do caractere direita
RPAD: Preenche o valor do caractere esquerda
TRIM: Reduz os caracteres direita ou esquerda (ou nas duas direes) de uma string
de caracteres (Se trim_character ou trim_source for um literal de caractere,
delimite-o por aspas simples.)
Observao: possvel usar functions como UPPER e LOWER com a substituio de E
comercial. Por exemplo, use UPPER('&job_title') para que o usurio no precise
especificar o cargo em letras maisculas ou minsculas.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-11
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Estas functions manipulam strings de caracteres:

Usando as Functions de
Manipulao de Caracteres
1

2
3

Copyright 2004, Oracle. Todos os direitos reservados.

Usando as Functions de Manipulao de Caracteres


O exemplo do slide exibe os nomes e os sobrenomes dos funcionrios unidos, o tamanho do
sobrenome do funcionrio e a posio numrica da letra a no sobrenome de todos os
funcionrios cujo ID de cargo contm a string REP a partir da quarta posio.
Exemplo
Modifique a instruo SQL no slide para exibir os dados relativos aos funcionrios cujos
sobrenomes terminam com a letra n.
SELECT employee_id, CONCAT(first_name, last_name) NAME,
LENGTH (last_name), INSTR(last_name, 'a') "Contains 'a'?"
FROM employees
WHERE SUBSTR(last_name, -1, 1) = 'n';

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-12
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT employee_id, CONCAT(first_name, last_name) NAME,


job_id, LENGTH (last_name),
INSTR(last_name, 'a') "Contains 'a'?"
FROM
employees
WHERE SUBSTR(job_id, 4) = 'REP';

Functions de Nmero
ROUND: Arredonda o valor at o decimal especificado
TRUNC: Trunca o valor at o decimal especificado
MOD: Retorna o resto da diviso

Function

Resultado

ROUND(45.926, 2)

45.93

TRUNC(45.926, 2)

45.92

MOD(1600, 300)

100

Copyright 2004, Oracle. Todos os direitos reservados.

Functions de Nmero
As functions de nmero aceitam a entrada numrica e retornam valores numricos. Esta
seo descreve algumas functions de nmero.
Function

Objetivo

ROUND(column|expression, n)

Arredonda a coluna, a expresso ou o valor para n


casas decimais; se n for omitido, no haver casas
decimais (Se n for negativo, os nmeros esquerda
da vrgula decimal sero arredondados.)
Trunca a coluna, a expresso ou o valor para n
casas decimais; se n for omitido, n assumir o
default zero
Retorna o restante de m dividido por n

TRUNC(column|expression, n)

MOD(m,n)

Observao: Esta lista contm somente algumas das functions de nmero disponveis.
Para obter mais informaes, consulte "Number Functions" no manual Oracle SQL
Reference.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-13
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usando a Function ROUND


1

DUAL uma tabela fictcia que pode ser usada para


exibir resultados de functions e clculos.

Copyright 2004, Oracle. Todos os direitos reservados.

Function ROUND
A function ROUND arredonda a coluna, a expresso ou o valor at n casas decimais. Se o
segundo argumento for 0 ou no estiver presente, o valor ser arredondado at zero casas
decimais. Se o segundo argumento for 2, o valor ser arredondado at duas casas decimais.
Por outro lado, se o segundo argumento for -2, o valor ser arredondado at duas casas
decimais esquerda (arredondado para a unidade mais prxima de 10).
Tambm possvel usar a function ROUND com functions de data. So fornecidos exemplos
posteriormente nesta lio.
Tabela DUAL
A tabela DUAL pertence ao usurio SYS e pode ser acessada por todos os usurios. Ela
contm uma coluna, DUMMY, e uma linha com o valor X. A tabela DUAL til quando voc
deseja retornar um valor apenas uma vez (por exemplo, o valor de uma constante, de uma
pseudocoluna ou de uma expresso no derivado de uma tabela com dados do usurio). A
tabela DUAL usada geralmente para completar a sintaxe da clusula SELECT, pois as
clusulas SELECT e FROM so obrigatrias e diversos clculos no precisam de selees
das tabelas reais.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-14
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT ROUND(45.923,2), ROUND(45.923,0),


ROUND(45.923,-1)
FROM
DUAL;

Usando a Function TRUNC


1

Copyright 2004, Oracle. Todos os direitos reservados.

Function TRUNC
A function TRUNC trunca a coluna, a expresso ou o valor at n casas decimais.
Essa function opera com argumentos semelhantes aos da function ROUND. Se o segundo
argumento for 0 ou no estiver presente, o valor ser truncado at zero casas decimais. Se o
segundo argumento for 2, o valor ser truncado at duas casas decimais. Por outro lado, se o
segundo argumento for -2, o valor ser truncado at duas casas decimais esquerda. Se o
segundo argumento for -1, o valor ser truncado at uma casa decimal esquerda.
Assim como a function ROUND, possvel usar a function TRUNC com functions de data.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-15
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT ROUND(45.923,2), ROUND(45.923),


ROUND(45.923,-1)
FROM
DUAL;

Usando a Function MOD


Para todos os funcionrios com o cargo de
representante de vendas, calcule o resto do salrio
aps dividi-lo por 5.000.

Copyright 2004, Oracle. Todos os direitos reservados.

Function MOD
A function MOD localiza o resto do primeiro argumento dividido pelo segundo argumento. O
exemplo do slide calcula o resto do salrio aps a diviso por 5.000 para todos os
funcionrios cujo ID de cargo SA_REP.
Observao: A function MOD usada com freqncia para determinar se o valor par ou
mpar.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-16
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name, salary, MOD(salary, 5000)


FROM
employees
WHERE job_id = 'SA_REP';

Trabalhando com Datas

O banco de dados Oracle armazena datas em um


formato numrico interno: sculo, ano, ms, dia,
horas, minutos e segundos.

O formato default de exibio de data DD-MON-RR.

Permite armazenar as datas do sculo XXI no


Permite armazenar as datas do sculo XX no
sculo XXI da mesma forma

SELECT last_name, hire_date


FROM employees
WHERE hire_date < '01-FEB-88';

Copyright 2004, Oracle. Todos os direitos reservados.

Formato de Datas do Oracle


O banco de dados Oracle armazena datas em um formato numrico interno, que representa
o sculo, o ano, o ms, o dia, as horas, os minutos e os segundos.
A exibio e o formato de entrada default de qualquer data correspondem a DD-MON-RR.
As datas vlidas no Oracle so de 1 de janeiro de 4712 A.C. a 31 de dezembro 9999 D.C.
No exemplo do slide, a sada da coluna HIRE_DATE exibida no formato default DDMON-RR. No entanto, as datas no so armazenadas no banco de dados nesse formato.
Todos os componentes da data e do horrio so armazenados. Portanto, embora um valor de
HIRE_DATE como 17-JUN-87 seja exibido no formato dia, ms e ano, tambm h
informaes sobre horrio e sculo associadas data. Os dados completos so 17 de junho
de 1987, 5:10:43 p.m.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-17
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

sculo XX especificando apenas os ltimos dois


dgitos do ano

Formato de Datas do Oracle (continuao)


Estes dados so armazenados internamente da seguinte maneira:
CENTURY
SECOND

YEAR

MONTH

DAY

HOUR

MINUTE

19
43

87

06

17

17

10

Sculos e o Ano 2000

O tipo de dados DATE sempre armazena internamente as informaes sobre o ano como um
nmero de quatro dgitos: dois dgitos para o sculo e dois para o ano. Por exemplo, o banco
de dados Oracle armazena o ano como 1987 ou 2004, e no apenas como 87 ou 04.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-18
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Quando um registro com uma coluna de data inserido em uma tabela, as informaes
sobre o sculo so obtidas da function SYSDATE. No entanto, quando a coluna de data
exibida na tela, o componente de sculo no mostrado (por default).

Trabalhando com Datas


SYSDATE uma function que retorna:
Data
Horrio

Copyright 2004, Oracle. Todos os direitos reservados.

Function SYSDATE
SYSDATE uma function de data que retorna a data e o horrio atuais do servidor de banco
de dados. Voc pode usar SYSDATE como qualquer outro nome de coluna. Por exemplo,
para exibir a data atual, selecione SYSDATE em uma tabela. comum selecionar
SYSDATE em uma tabela fictcia denominada DUAL.
Exemplo
Exiba a data atual usando a tabela DUAL.
SELECT SYSDATE
FROM
DUAL;

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-19
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Some um nmero a uma data ou subtraia-o dessa


data para obter um valor de data resultante.

Subtraia uma data de outra para descobrir o nmero


de dias entre elas.

Some horas a uma data dividindo o nmero de horas


por 24.

Copyright 2004, Oracle. Todos os direitos reservados.

Aritmtica com Datas


Como o banco de dados armazena datas como nmeros, voc pode realizar clculos usando
operadores aritmticos como os de adio e subtrao. possvel somar e subtrair
constantes de nmeros e datas.
Voc pode executar as seguintes operaes:
Operao

Resultado

Descrio

data + nmero
data nmero

Data
Data

Adiciona um nmero de dias a uma data


Subtrai um nmero de dias de uma data

data data
data + nmero/24

Nmero de dias
Data

Subtrai uma data de outra


Adiciona um nmero de horas a uma data

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-20
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Aritmtica com Datas

Usando Operadores Aritmticos com Datas

Copyright 2004, Oracle. Todos os direitos reservados.

Aritmtica com Datas (continuao)


O exemplo do slide exibe o sobrenome e o nmero de semanas desde a admisso de todos
os funcionrios do departamento 90. Ele subtrai a data na qual o funcionrio foi admitido da
data atual (SYSDATE) e divide o resultado por 7 para calcular h quantas semanas a pessoa
est admitida.
Observao: SYSDATE uma function SQL que retorna a data e o horrio atuais. Os
resultados podem diferir do exemplo.
Se uma data mais recente for subtrada de uma data mais antiga, a diferena ser um
nmero negativo.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-21
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS


FROM
employees
WHERE department_id = 90;

Functions de Data
Function
MONTHS_BETWEEN

Resultado

ADD_MONTHS

Adiciona meses do calendrio data

NEXT_DAY
LAST_DAY

Dia seguinte ao da data especificada

ROUND

Arredonda a data

TRUNC

Trunca a data

Nmero de meses entre duas datas

Copyright 2004, Oracle. Todos os direitos reservados.

Functions de Data
As functions de data operam em datas Oracle. Todas as functions de data retornam um valor
do tipo de dados DATE, com exceo de MONTHS_BETWEEN, que retorna um valor
numrico.
MONTHS_BETWEEN(date1, date2): Obtm o nmero de meses entre date1 e
date2. O resultado pode ser positivo ou negativo. Se date1 for posterior a date2,
o resultado ser positivo; caso contrrio, o resultado ser negativo. A parte decimal do
resultado representa uma parte do ms.
ADD_MONTHS(date, n): Adiciona n meses do calendrio data. O valor n deve
ser inteiro e pode ser negativo.
NEXT_DAY(date, 'char'): Obtm a data do prximo dia especificado da
semana ('char') aps a data em questo. O valor de char pode ser um nmero
que represente um dia ou uma string de caracteres.
LAST_DAY(date): Obtm a data do ltimo dia do ms que contm a data em
questo.
ROUND(date[,'fmt']): Retorna a data arredondada at a unidade especificada
pelo modelo de formato fmt. Se o modelo de formato fmt for omitido, a data ser
arredondada at o dia mais prximo.
TRUNC(date[, 'fmt']): Retorna a data com a parte do horrio do dia truncada
at a unidade especificada pelo modelo de formato fmt. Se o modelo de formato fmt
for omitido, a data ser truncada at o dia mais prximo.
A lista um subconjunto de functions de data disponveis. Os modelos de formato so
abordados posteriormente nesta lio. Os exemplos de modelos de formato so month e
year.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-22
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

ltimo dia do ms

Function

Resultado

MONTHS_BETWEEN
('01-SEP-95','11-JAN-94')

19.6774194

ADD_MONTHS ('11-JAN-94',6)

'11-JUL-94'

NEXT_DAY

('01-SEP-95','FRIDAY')

'08-SEP-95'

LAST_DAY

('01-FEB-95')

'28-FEB-95'

Copyright 2004, Oracle. Todos os direitos reservados.

Functions de Data (continuao)


Por exemplo, exiba o nmero de funcionrio, a data de admisso, o nmero de meses desde
a admisso, a data da reviso semestral, a primeira sexta-feira aps a data de admisso e o
ltimo dia do ms da admisso relativos a todos os funcionrios admitidos h menos de 36
meses.
SELECT employee_id, hire_date,
MONTHS_BETWEEN (SYSDATE, hire_date) TENURE,
ADD_MONTHS (hire_date, 6) REVIEW,
NEXT_DAY (hire_date, 'FRIDAY'), LAST_DAY(hire_date)
FROM employees
WHERE MONTHS_BETWEEN (SYSDATE, hire_date) < 36;

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-23
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usando Functions de Data

Usando Functions de Data

Function
ROUND(SYSDATE,'MONTH')

Resultado
01-AUG-03

ROUND(SYSDATE ,'YEAR')

01-JAN-04

TRUNC(SYSDATE ,'MONTH')
TRUNC(SYSDATE ,'YEAR')

01-JUL-03
01-JAN-03

Copyright 2004, Oracle. Todos os direitos reservados.

Functions de Data (continuao)


possvel usar as functions ROUND e TRUNC para valores de nmero e data. Quando
usadas com datas, essas functions arredondam ou truncam o valor at o modelo de formato
especificado. Portanto, voc pode arredondar as datas at o ms ou o ano mais prximo.
Exemplo
Compare as datas de admisso de todos os funcionrios admitidos em 1997. Exiba o nmero
do funcionrio, a data de admisso e o ms da admisso usando as functions ROUND e
TRUNC.
SELECT employee_id, hire_date,
ROUND(hire_date, 'MONTH'), TRUNC(hire_date, 'MONTH')
FROM employees
WHERE hire_date LIKE '%97';

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-24
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Suponha que SYSDATE = '25-JUL-03':

Exerccio 3: Viso Geral da Parte 1


Este exerccio aborda os seguintes tpicos:

Criao de uma consulta para exibir a data atual

Clculo do nmero de anos e meses de servio de


um funcionrio

Copyright 2004, Oracle. Todos os direitos reservados.

Exerccio 3: Viso Geral da Parte 1


A Parte 1 do exerccio desta lio contm vrias atividades que utilizam diferentes functions
disponveis para os tipos de dados de caractere, nmero e data.
Para a Parte 1, faa as questes de 1 a 6 no final desta lio.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-25
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Criao de consultas que exigem o uso de functions


numricas, de caractere e de data

Functions de Converso
Converso de
tipos de dados

Converso explcita
de tipos de dados

Copyright 2004, Oracle. Todos os direitos reservados.

Functions de Converso
Alm dos tipos de dados do Oracle, possvel definir as colunas das tabelas de um banco de
dados Oracle usando os tipos de dados ANSI, DB2 e SQL/DS. No entanto, o servidor
Oracle converte internamente esses tipos de dados nos tipos de dados do Oracle.
Em alguns casos, ele usa dados de um tipo diferente do esperado. Quando isso acontece, o
servidor Oracle pode convert-los automaticamente no tipo de dados esperado. Essa
converso de tipo de dados pode ser efetuada implicitamente pelo servidor Oracle ou
explicitamente pelo usurio.
As converses implcitas de tipos de dados funcionam de acordo com as regras explicadas
nos prximos dois slides.
As converses explcitas de tipos de dados so feitas por meio das functions de converso.
As functions de converso convertem um valor de um tipo de dados em outro. Em geral, a
forma dos nomes das functions segue a conveno tipo de dados TO tipo de
dados. O primeiro tipo de dados o da entrada, e o segundo, o da sada.
Observao: Embora a converso implcita de tipos de dados esteja disponvel,
recomendvel usar a converso explcita para garantir a confiabilidade das instrues SQL.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-26
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Converso implcita
de tipos de dados

Converso Implcita de Tipos de Dados

De
VARCHAR2 ou CHAR

Em
NUMBER

VARCHAR2 ou CHAR

DATE

NUMBER

VARCHAR2

DATE

VARCHAR2

Copyright 2004, Oracle. Todos os direitos reservados.

Converso Implcita de Tipos de Dados


A designao ser bem-sucedida se o servidor Oracle conseguir converter o tipo de dados
do valor usado na designao no tipo de dados de destino da designao.
Por exemplo, a expresso hire_date > '01-JAN-90' resulta na converso implcita
da string '01-JAN-90' em uma data.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-27
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

No caso de designaes, o servidor Oracle pode


converter automaticamente:

Converso Implcita de Tipos de Dados

De
VARCHAR2 ou CHAR

Em
NUMBER

VARCHAR2 ou CHAR

DATE

Copyright 2004, Oracle. Todos os direitos reservados.

Converso Implcita de Tipos de Dados (continuao)


Em geral, o servidor Oracle usa a regra para expresses quando necessria uma converso
de tipos de dados em casos no previstos por uma regra para converses de designaes.
Por exemplo, a expresso salary = '20000' resulta na converso implcita da string
'20000' no nmero 20000.
Observao: As converses de CHAR em NUMBER s sero bem-sucedidas se a string de
caracteres representar um nmero vlido.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-28
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

No caso de avaliao de expresses, o Oracle Server


pode converter automaticamente:

Converso Explcita de Tipos de Dados

NUMBER

TO_DATE

CHARACTER

TO_CHAR

DATE

TO_CHAR

Copyright 2004, Oracle. Todos os direitos reservados.

Converso Explcita de Tipos de Dados


O SQL fornece trs functions para converter um valor de um tipo de dados em outro:
Function

Objetivo

TO_CHAR(number|date,[ fmt], Converte um valor de nmero ou data em uma


[nlsparams])
string de caracteres VARCHAR2 com o modelo de
formato fmt
Converso de nmero: O parmetro
nlsparams especifica os seguintes caracteres,
que so retornados pelos elementos de formato
numrico:
Caractere decimal
Separador de grupos
Smbolo de moeda local
Smbolo de moeda internacional
Se nlsparams ou qualquer outro parmetro for
omitido, esta function utilizar os valores de
parmetro default para a sesso.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-29
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

TO_NUMBER

Converso Explcita de Tipos de Dados


TO_DATE

CHARACTER

NUMBER

TO_CHAR

DATE

TO_CHAR

Copyright 2004, Oracle. Todos os direitos reservados.

Converso Explcita de Tipos de Dados (continuao)


Function

Objetivo

TO_CHAR(number|date,[
fmt], [nlsparams])

Converso de data: O parmetro nlsparams especifica o


idioma em que so retornados as abreviaes e os nomes de dias
e meses. Se esse parmetro for omitido, esta function usar os
idiomas de data default para a sesso.

TO_NUMBER(char,[fmt],
[nlsparams])

Converte uma string de caracteres com dgitos em um nmero


no formato especificado pelo modelo de formato opcional fmt.
Nesta function, o parmetro nlsparams desempenha o mesmo
papel que na function TO_CHAR no que diz respeito converso
de nmero.

TO_DATE(char,[fmt],[nls
params])

Converte uma string de caracteres que representa uma data em


um valor de data de acordo com o fmt especificado. Se o fmt
for omitido, o formato ser DD-MON-YY.
Nesta function, o parmetro nlsparams desempenha o mesmo
papel que na function TO_CHAR no que diz respeito converso
de data.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-30
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

TO_NUMBER

Converso Explcita de Tipos de Dados (continuao)


Observao: A lista de functions mencionada nesta lio contm apenas algumas das
functions de converso disponveis.

Oracle University and Impacta Tecnologia use only

Para obter mais informaes, consulte "Conversion Functions" no manual Oracle SQL
Reference.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-31
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Usando a Function TO_CHAR com Datas


TO_CHAR(date, 'format_model')

O modelo de formato:
Deve ser delimitado por aspas simples
Faz distino entre maisculas e minsculas

Pode incluir qualquer elemento de formato de data


vlido
Tem um elemento fm para remover os espaos
vazios preenchidos ou para suprimir os zeros
esquerda

separado do valor da data por vrgula

Copyright 2004, Oracle. Todos os direitos reservados.

Exibindo uma Data em um Formato Especfico


Anteriormente, todos os valores de data do Oracle eram exibidos no formato DD-MS-AA.
Voc pode usar a function TO_CHAR para converter uma data desse formato default em um
formato especificado.
Diretrizes
O modelo de formato deve ser delimitado por aspas simples e fazer distino entre
maisculas e minsculas.
O modelo de formato pode incluir qualquer elemento de formato de data vlido. Separe
o valor da data do modelo de formato por vrgula.
Os espaos vazios em nomes de dias e meses na sada sero preenchidos
automaticamente.
Para remover os espaos vazios preenchidos ou suprimir os zeros esquerda, use o
elemento fm do modo de preenchimento.
Voc pode formatar o campo de caracteres resultante com o comando iSQL*Plus
COLUMN (abordado em uma lio posterior).
SELECT employee_id, TO_CHAR(hire_date, 'MM/YY') Month_Hired
FROM employees
WHERE last_name = 'Higgins';

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-32
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Elementos do Modelo de Formato de Data


Elemento
YYYY

Resultado

YEAR

Ano por extenso (em ingls)

MM
MONTH

Valor de dois dgitos para o ms

MON

Abreviao de trs letras do ms

DY

Abreviao de trs letras do dia da


semana

DAY

Nome completo do dia da semana

DD

Dia numrico do ms

Ano completo em nmeros

Copyright 2004, Oracle. Todos os direitos reservados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-33
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Nome completo do ms

Exemplo de Elementos de Formatos de Data Vlidos


Elemento

Descrio

SCC ou CC

Sculo; o servidor prefixa a data A.C. com -

YYY ou YY ou Y

ltimos trs ou dois dgitos do ano, ou apenas o ltimo dgito

Y.YYY

Ano com ponto nesta posio

IYYY, IYY, IY, I

Ano de quatro, trs, dois ou um dgito baseado no padro ISO

SYEAR ou YEAR

Ano por extenso; o servidor prefixa a data A.C. com -

BC ou AD

Indica o ano A.C. ou D.C.

B.C. ou A.D.

Indica o ano A.C. ou D.C. usando pontos

Trimestre do ano

MM

Ms: valor de dois dgitos

MONTH

Nome do ms preenchido com espaos em branco (at nove


caracteres)

MON

Nome do ms; abreviao de trs letras

RM

Ms em numeral romano

WW ou W

Semana do ano ou ms

DDD ou DD ou D

Dia do ano, do ms ou da semana

DAY

Nome do dia preenchido com espaos em branco (at nove


caracteres)

DY

Nome do dia; abreviao de trs letras

Dia juliano; o nmero de dias desde 31 de dezembro de 4713


A.C.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-34
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Anos em datas YYYY ou Ano; o servidor prefixa a data A.C. com SYYYY

Elementos do Modelo de Formato de Data


Os elementos de horrio formatam a parte relativa
ao horrio da data:
HH24:MI:SS AM

15:45:32 PM

Adicione strings de caracteres delimitando-as por


aspas duplas:
DD "of" MONTH

12 of OCTOBER

Os sufixos de nmeros exibem os nmeros por


extenso:
ddspth

fourteenth

Copyright 2004, Oracle. Todos os direitos reservados.

Elementos de Formato de Data: Formatos de Horrio


Use os formatos listados nas tabelas a seguir para exibir informaes sobre horrio e literais,
bem como alterar numerais para nmeros por extenso.
Elemento

Descrio

AM or PM

Indicador de meridiano

A.M. or P.M.

Indicador de meridiano com pontos

HH or HH12 or HH24

Hora do dia, hora (112) ou hora (023)

MI

Minuto (059)

SS

Segundo (059)

SSSSS

Segundos aps meia-noite (086399)

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-35
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Outros Formatos
Elemento

Descrio

/ . ,

Pontuao reproduzida no resultado.

Elemento

Descrio

TH

Nmero ordinal (por exemplo, DDTH para 4TH)

SP

Nmeros por extenso (por exemplo, DDSP para FOUR)

SPTH or THSP

Nmero ordinal por extenso (por exemplo, DDSPTH para


FOURTH)

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-36
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

of the
String entre aspas reproduzida no resultado.
Especificando Sufixos para Influenciar a Exibio de Nmeros

Usando a Function TO_CHAR com Datas

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Function TO_CHAR com Datas


A instruo SQL do slide exibe os sobrenomes e as datas de admisso de todos os
funcionrios. A data de admisso aparece como 17 June 1987.
Exemplo
Modifique o exemplo do slide para exibir as datas em um formato que aparea como
"Seventeenth of June 1987 12:00:00 AM".
SELECT
last_name,
TO_CHAR(hire_date,
'fmDdspth "of" Month YYYY fmHH:MI:SS AM')
HIREDATE
FROM employees;

Observe que o ms segue o modelo de formato especificado, ou seja, a primeira letra


maiscula e as outras so minsculas.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-37
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name,
TO_CHAR(hire_date, 'fmDD Month YYYY')
AS HIREDATE
FROM
employees;

Usando a Function TO_CHAR com Nmeros


TO_CHAR(number, 'format_model') ddspth

Elemento
9

Resultado

Impe a exibio de um zero

Insere um sinal de dlar flutuante

Usa o smbolo da moeda local flutuante

Imprime uma casa decimal

Imprime uma vrgula como indicador de milhar

Representa um nmero

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Function TO_CHAR com Nmeros


Quando estiver trabalhando com valores de nmeros como strings de caracteres, converta
esses nmeros no tipo de dados de caractere usando a function TO_CHAR, que converte um
valor do tipo de dados NUMBER no tipo de dados VARCHAR2. Essa tcnica especialmente
til com a concatenao.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-38
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Estes so alguns dos elementos de formato que voc


pode usar com a function TO_CHAR para exibir um valor
de nmero como um caractere:

Usando a Function TO_CHAR com Nmeros (continuao)


Elementos de Formato de Nmero

Elemento

Descrio

Exemplo

Resultado

Posio numrica (o nmero de 9s determina a


largura da exibio)

999999

1234

Exibe zeros esquerda

099999

001234

Smbolo de dlar flutuante

$999999

$1234

Smbolo de moeda local flutuante

L999999

FF1234

Retorna o caractere decimal na posio


especificada. O default uma vrgula (,).

99,99

99D99

Vrgula decimal na posio especificada

999999,99

1234,00

9.999
Retorna o separador de grupos na posio
especificada. Voc pode especificar vrios
separadores de grupos em um modelo de formato
numrico.

9G999

Ponto na posio especificada

999.999

1.234

MI

Sinal de subtrao direita (valores negativos)

999999MI

1234-

PR

Nmeros negativos entre colchetes

999999PR

<1234>

EEEE

Notao cientfica (o formato deve especificar


quatro Es)

99,999EEEE

1,234E+03

Retorna o smbolo monetrio dual "Euro" (ou


outro) na posio especificada

U9999

1234

Multiplica por 10 n vezes (n = nmero de 9s


aps V)

9999V99

123400

Retorna o valor negativo ou positivo

S9999

-1234 ou
+1234

Exibe valores zero em branco, e no 0

B9999,99

1234,00

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-39
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Se voc estiver convertendo um nmero no tipo de dados de caractere, poder usar os


seguintes elementos de formato:

Usando a Function TO_CHAR com Nmeros

Copyright 2004, Oracle. Todos os direitos reservados.

Diretrizes

O servidor Oracle exibe uma string de smbolos de nmero (#) no lugar de um nmero
inteiro cujos dgitos ultrapassam o nmero de dgitos fornecido no modelo de formato.
O servidor Oracle arredonda o valor decimal armazenado at o nmero de casas
decimais do modelo de formato.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-40
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT TO_CHAR(salary, '$99,999.00') SALARY


FROM
employees
WHERE last_name = 'Ernst';

Usando as Functions TO_NUMBER e TO_DATE

Converta uma string de caracteres em um formato


de nmero usando a function TO_NUMBER:

Converta uma string de caracteres em um formato


de data usando a function TO_DATE:
TO_DATE(char[, 'format_model'])

Estas functions tm um modificador fx. Esse


modificador especifica a correspondncia exata para
o argumento de caractere e o modelo de formato de
data de uma function TO_DATE.
Copyright 2004, Oracle. Todos os direitos reservados.

Usando as Functions TO_NUMBER e TO_DATE

possvel converter uma string de caracteres em um nmero ou uma data. Para realizar essa
tarefa, use a function TO_NUMBER ou TO_DATE. O modelo de formato escolhido baseia-se
nos elementos de formato demonstrados anteriormente.
O modificador fx especifica a correspondncia exata para o argumento de caractere e o
modelo de formato de data de uma function TO_DATE:
A pontuao e o texto no argumento de caractere devem corresponder exatamente
(exceto em relao a maisculas e minsculas) s partes associadas do modelo de
formato.
O argumento de caractere no pode conter espaos em branco adicionais. Sem fx, o
Oracle ignora os espaos em branco adicionais.
Os dados numricos no argumento de caractere devem ter o mesmo nmero de dgitos
do elemento correspondente no modelo de formato. Sem fx, os nmeros no argumento
de caractere podem omitir os zeros esquerda.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-41
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

TO_NUMBER(char[, 'format_model'])

Usando as Functions TO_NUMBER e TO_DATE (continuao)

Exemplo
Exiba o nome e a data de admisso de todos os funcionrios admitidos em 24 de maio de
1999. Como o modificador fx usado, uma correspondncia exata necessria e os
espaos aps a palavra May no so reconhecidos:

Oracle University and Impacta Tecnologia use only

SELECT last_name, hire_date


FROM employees
WHERE hire_date = TO_DATE('May 24, 1999', 'fxMonth DD, YYYY');

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-42
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Formato de Data RR
Ano Atual
1995
1995
2001
2001

Data Especificada
27.10.95
27.10.17
27.10.17
27.10.95

Formato RR
1995
2017
2017
1995

Formato YY
1995
1917
2017
2095

Se o ano de dois dgitos especificado for:

Se os dois
A data retornada
dgitos do
estar contida no
049 sculo atual
ano atual
forem:
A data retornada
estar contida no
5099 sculo imediatamente
posterior ao atual

5099
A data retornada
estar contida no
sculo imediatamente
anterior ao atual
A data retornada
estar contida no
sculo atual

Copyright 2004, Oracle. Todos os direitos reservados.

Elemento de Formato de Data RR

O formato de data RR semelhante ao elemento YY, mas pode ser usado para especificar
sculos diferentes. Use o elemento de formato de data RR, em vez de YY, para que o
sculo do valor retornado varie de acordo com o ano de dois dgitos especificado e com
os ltimos dois dgitos do ano atual. A tabela do slide resume o comportamento do
elemento RR.
Ano Atual

Data Especificada

Interpretao (RR)

Interpretao (YY)

1994

27-OUT-95

1995

1995

1994

27-OUT-17

2017

1917

2001

27-OUT-17

2017

2017

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-43
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

049

Exemplo do Formato de Data RR

SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY')


FROM employees
WHERE hire_date < TO_DATE('01-Jan-90','DD-Mon-RR');

Copyright 2004, Oracle. Todos os direitos reservados.

Exemplo do Formato de Data RR

Para localizar os funcionrios admitidos antes de 1990, voc poder usar o formato RR.
Como o ano atual maior que 1999, o formato RR interpretar a parte da data relativa ao
ano de 1950 a 1999.
O comando a seguir, por outro lado, no resultar na seleo de linhas porque o formato YY
interpretar a parte da data relativa ao ano de acordo com o sculo atual (2090).
SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-yyyy')
FROM employees
WHERE TO_DATE(hire_date, 'DD-Mon-yy') < '01-Jan-1990';
no rows selected

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-44
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Para localizar os funcionrios admitidos antes de 1990,


use o formato de data RR, que produz os mesmos
resultados quer o comando seja executado em 1999
ou agora:

Aninhando Functions

possvel aninhar as functions de uma nica linha


em quantos nveis forem necessrios.

As functions aninhadas so avaliadas do nvel mais


profundo para o nvel mais superficial.

Etapa 1 = Resultado 1
Etapa 2 = Resultado 2
Etapa 3 = Resultado 3

Copyright 2004, Oracle. Todos os direitos reservados.

Aninhando Functions

possvel aninhar as functions de uma nica linha em quantos nveis forem necessrios. As
functions aninhadas so avaliadas do nvel mais interno para o nvel mais externo. Veja a
seguir alguns exemplos que mostram a flexibilidade dessas functions.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-45
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

F3(F2(F1(col,arg1),arg2),arg3)

Aninhando Functions

Copyright 2004, Oracle. Todos os direitos reservados.

Aninhando Functions (continuao)

O exemplo do slide exibe os sobrenomes dos funcionrios do departamento 60. A avaliao


da instruo SQL abrange trs etapas:
1. A function interna recupera os oito primeiros caracteres do sobrenome.
Result1 = SUBSTR (LAST_NAME, 1, 8)
2. A function externa concatena o resultado com _US.
Result2 = CONCAT(Result1, '_US')
3. A function mais externa converte os resultados em letras maisculas.
A expresso inteira torna-se o cabealho da coluna, pois no foi fornecido um apelido para
essa coluna.
Exemplo
Exiba a data da prxima sexta-feira que est a seis meses da data de admisso. A data
resultante dever aparecer como Friday, August 13th, 1999. Ordene os resultados por data
de admisso.
SELECT

TO_CHAR(NEXT_DAY(ADD_MONTHS
(hire_date, 6), 'FRIDAY'),
'fmDay, Month DDth, YYYY')
"Next 6 Month Review"
FROM employees
ORDER BY hire_date;
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-46
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name,
UPPER(CONCAT(SUBSTR (LAST_NAME, 1, 8), '_US'))
FROM
employees
WHERE department_id = 60;

Functions Gerais
As functions a seguir agem com qualquer tipo de
dados e esto relacionadas ao uso de valores nulos:
NVL (expr1, expr2)
NVL2 (expr1, expr2, expr3)
NULLIF (expr1, expr2)
COALESCE (expr1, expr2, ..., exprn)

Copyright 2004, Oracle. Todos os direitos reservados.

Functions Gerais

Essas functions agem com qualquer tipo de dados e esto relacionadas ao uso de valores
nulos na lista de expresses.
Function

Descrio

NVL

Converte um valor nulo em um valor real

NVL2

Se expr1 no for nulo, NVL2 retornar expr2. Se expr1 for nulo,


NVL2 retornar expr3. possvel expressar o argumento expr1 em
qualquer tipo de dados.

NULLIF

Compara duas expresses; se elas forem iguais, retornar um valor


nulo e, se forem diferentes, retornar a primeira expresso

COALESCE

Retorna a primeira expresso no nula da lista de expresses

Observao: Para obter mais informaes sobre as centenas de functions disponveis,


consulte "Functions" no manual Oracle SQL Reference.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-47
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Function NVL

possvel usar os tipos de dados de data, caractere


e nmero.

A correspondncia entre os tipos de dados


necessria:

NVL(commission_pct,0)
NVL(hire_date,'01-JAN-97')
NVL(job_id,'No Job Yet')

Copyright 2004, Oracle. Todos os direitos reservados.

Function NVL

Para converter um valor nulo em um valor real, use a function NVL.


Sintaxe
NVL (expr1, expr2)

Na sintaxe:
expr1 o valor de origem ou a expresso que poder conter um valor nulo
expr2 o valor de destino para a converso do valor nulo

Voc pode usar a function NVL para converter qualquer tipo de dados, mas o valor
retornado sempre igual ao do tipo de dados de expr1.
Converses NVL de Vrios Tipos de Dados
Tipo de Dados

Exemplo de Converso

NUMBER

NVL(number_column,9)

DATE

NVL(date_column, '01-JAN-95')

CHAR or VARCHAR2

NVL(character_column, 'Unavailable')

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-48
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Converte um valor nulo em um valor real:

Usando a Function NVL

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Function NVL

Para calcular a remunerao anual de todos os funcionrios, voc precisa multiplicar o


salrio mensal por 12 e adicionar o percentual de comisso ao resultado:
SELECT last_name, salary, commission_pct,
(salary*12) + (salary*12*commission_pct) AN_SAL
FROM employees;

Observe que a remunerao anual calculada apenas para os funcionrios que recebem
comisso. Se o valor de uma coluna da expresso for nulo, o resultado ser nulo. Para
calcular valores relativos a todos os funcionrios, converta o valor nulo em um nmero
antes de aplicar o operador aritmtico. No exemplo do slide, a function NVL usada para
converter valores nulos em zero.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-49
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

1
SELECT last_name, salary, NVL(commission_pct, 0),
(salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL
FROM employees;

Usando a Function NVL2

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Function NVL2

A function NVL2 examina a primeira expresso. Se a primeira expresso no for nula, a


function NVL2 retornar a segunda expresso. Se a primeira expresso for nula, a terceira
expresso ser retornada.
Sintaxe
NVL2 (expr1, expr2, expr3)

Na sintaxe:
expr1 o valor de origem ou a expresso que poder conter um valor nulo
expr2 o valor retornado quando expr1 no nulo
expr3 o valor retornado quando expr2 nulo
No exemplo mostrado no slide, a coluna COMMISSION_PCT examinada. Se for
detectado um valor, a segunda expresso SAL+COMM ser retornada. Se a coluna
COMMISSION_PCT contiver um valor nulo, a terceira expresso SAL ser retornada.
possvel expressar o argumento expr1 em qualquer tipo de dados. Os argumentos
expr2 e expr3 podem ser expressos em qualquer tipo de dados, exceto LONG. Se os tipos
de dados de expr2 e expr3 forem diferentes, o servidor Oracle converter expr3 no
tipo de dados de expr2 antes de compar-los, a menos que expr3 seja uma constante
nula. No ltimo caso, no ser necessria uma converso de tipo de dados. O tipo de dados
do valor retornado ser sempre igual ao tipo de dados de expr2, a menos que expr2 seja
expresso em dados de caractere; nesse caso, o tipo de dados do valor retornado ser
VARCHAR2.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-50
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name, salary, commission_pct,


1
NVL2(commission_pct,
2
'SAL+COMM', 'SAL') income
FROM
employees WHERE department_id IN (50, 80);

Usando a Function NULLIF


1
3

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Function NULLIF

A function NULLIF compara duas expresses. Se elas forem iguais, a function retornar um
valor nulo. Se elas forem diferentes, a function retornar a primeira expresso. No
possvel especificar o literal NULL para a primeira expresso.
Sintaxe
NULLIF (expr1, expr2)

Na sintaxe:
expr1 o valor de origem comparado a expr2
expr2 o valor de origem comparado a expr1 (Se ele no for igual a expr1,
expr1 ser retornado.)

No exemplo do slide, o tamanho do nome na tabela EMPLOYEES comparado ao tamanho


do sobrenome nessa mesma tabela. Quando os tamanhos dos nomes so iguais, um valor
nulo exibido. Quando eles so diferentes, exibido o tamanho do nome.
Observao: A function NULLIF equivale logicamente expresso CASE a seguir. A
expresso CASE ser abordada em uma pgina adiante:
CASE WHEN expr1 = expr 2 THEN NULL ELSE expr1 END

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-51
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT first_name, LENGTH(first_name) "expr1",


2
last_name, LENGTH(last_name) "expr2",
NULLIF(LENGTH(first_name), LENGTH(last_name)) result
FROM
employees;

A vantagem da function COALESCE em relao


function NVL que a primeira pode assumir diversos
valores alternativos.

Se a primeira expresso no for nula, a function


COALESCE retornar essa expresso; caso contrrio,
ser usada a function COALESCE para as expresses
restantes.

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Function COALESCE

A function COALESCE retorna a primeira expresso no nula da lista.


Sintaxe
COALESCE (expr1, expr2, ... exprn)

Na sintaxe:
expr1 retornar essa expresso se ela no for nula
expr2 retornar essa expresso se ela no for nula e a primeira expresso for nula
exprn retornar essa expresso se as expresses anteriores forem nulas
Todas as expresses devem ter o mesmo tipo de dados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-52
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usando a Function COALESCE

Usando a Function COALESCE

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Function COALESCE (continuao)

No exemplo mostrado no slide, se o valor de MANAGER_ID no for nulo, ele ser exibido.
Se o valor de MANAGER_ID for nulo, COMMISSION_PCT ser exibido. Se os valores de
MANAGER_ID e COMMISSION_PCT forem nulos, ser exibido o valor 1.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-53
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name,
COALESCE(manager_id,commission_pct, -1) comm
FROM
employees
ORDER BY commission_pct;

Expresses Condicionais

Permitem usar a lgica IF-THEN-ELSE em uma


instruo SQL

Usam dois mtodos:

Copyright 2004, Oracle. Todos os direitos reservados.

Expresses Condicionais

Os dois mtodos usados para implementar o processamento condicional (a lgica IF-THENELSE) em uma instruo SQL so a expresso CASE e a function DECODE.
Observao: A expresso CASE est de acordo com o padro ANSI SQL. A function
DECODE especfica da sintaxe do Oracle.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-54
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Expresso CASE
Function DECODE

Expresso CASE

CASE expr WHEN


[WHEN
WHEN
ELSE
END

comparison_expr1 THEN return_expr1


comparison_expr2 THEN return_expr2
comparison_exprn THEN return_exprn
else_expr]

Copyright 2004, Oracle. Todos os direitos reservados.

Expresso CASE

As expresses CASE permitem usar a lgica IF-THEN-ELSE em instrues SQL sem


acionar procedures.
Em uma expresso CASE simples, o servidor Oracle pesquisa o primeiro par WHEN ...
THEN no qual expr igual a comparison_expr e retorna return_expr. Se nenhum
par WHEN ... THEN atender a essa condio e existir uma clusula ELSE, o servidor
Oracle retornar else_expr. Caso contrrio, ele retornar um valor nulo. No possvel
especificar o literal NULL para todos os valores de return_exprs e else_expr.
Todas as expresses (expr, comparison_expr e return_expr) devem ter o mesmo
tipo de dados, que pode ser CHAR, VARCHAR2, NCHAR ou NVARCHAR2.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-55
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Facilita consultas condicionais executando o trabalho


de uma instruo IF-THEN-ELSE:

Usando a Expresso CASE

SELECT last_name, job_id, salary,


CASE job_id WHEN 'IT_PROG' THEN 1.10*salary
WHEN 'ST_CLERK' THEN 1.15*salary
WHEN 'SA_REP'
THEN 1.20*salary
ELSE
salary END
"REVISED_SALARY"
FROM
employees;

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Expresso CASE

Na instruo SQL do slide, o valor de JOB_ID decodificado. Se o valor de JOB_ID for


IT_PROG, o aumento de salrio ser de 10%; se esse valor for ST_CLERK, o aumento de
salrio ser de 15%; se o valor for SA_REP, o aumento de salrio ser de 20%. Para todos
os outros cargos, no haver aumento de salrio.
possvel criar a mesma instruo com a function DECODE.
Este um exemplo de uma expresso CASE pesquisada. Nessa expresso, a pesquisa feita
da esquerda para a direita at que seja localizada uma ocorrncia da condio listada. Em
seguida, obtm-se a expresso de retorno. Se nenhuma condio for considerada verdadeira
e existir uma clusula ELSE, a expresso de retorno nessa clusula ser exibida; caso
contrrio, ser retornado NULL.
SELECT last_name,salary,
(CASE WHEN salary<5000 THEN 'Low'
WHEN salary<10000 THEN 'Medium'
WHEN salary<20000 THEN 'Good'
ELSE 'Excellent'
END) qualified_salary
FROM employees;

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-56
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Facilita consultas condicionais executando o trabalho


de uma instruo IF-THEN-ELSE:

Function DECODE

DECODE(col|expression, search1, result1


[, search2, result2,...,]
[, default])

Copyright 2004, Oracle. Todos os direitos reservados.

Function DECODE

A function DECODE decodifica uma expresso de maneira semelhante lgica IF-THENELSE usada em vrias linguagens. Essa function decodifica a expresso depois de
compar-la a cada valor da pesquisa. Se a expresso for igual da pesquisa, o
resultado ser retornado.
Se o valor default for omitido, um valor nulo ser retornado quando um valor da pesquisa
no corresponder a nenhum dos valores do resultado.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-57
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Facilita consultas condicionais executando o trabalho


de uma expresso CASE ou de uma instruo
IF-THEN-ELSE:

Usando a Function DECODE

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Function DECODE

Na instruo SQL do slide, o valor de JOB_ID testado. Se o valor de JOB_ID for


IT_PROG, o aumento de salrio ser de 10%; se esse valor for ST_CLERK, o aumento de
salrio ser de 15%; se o valor for SA_REP, o aumento de salrio ser de 20%. Para todos
os outros cargos, no haver aumento de salrio.
possvel expressar a mesma instruo em pseudocdigo como uma instruo IF-THENELSE:
IF job_id =
IF job_id =
IF job_id =
ELSE salary

'IT_PROG'
'ST_CLERK'
'SA_REP'
= salary

THEN
THEN
THEN

salary = salary*1.10
salary = salary*1.15
salary = salary*1.20

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-58
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name, job_id, salary,


DECODE(job_id, 'IT_PROG', 1.10*salary,
'ST_CLERK', 1.15*salary,
'SA_REP',
1.20*salary,
salary)
REVISED_SALARY
FROM
employees;

Usando a Function DECODE

SELECT last_name, salary,


DECODE (TRUNC(salary/2000, 0),
0, 0.00,
1, 0.09,
2, 0.20,
3, 0.30,
4, 0.40,
5, 0.42,
6, 0.44,
0.45) TAX_RATE
FROM
employees
WHERE department_id = 80;

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a function DECODE (continuao)

Este slide mostra outro exemplo com a function DECODE. Nesse exemplo, determinamos a
alquota de imposto de cada funcionrio do departamento 80 com base no salrio mensal.
As alquotas de imposto so as seguintes:
Faixa de Salrio Mensal

Alquota de Imposto

US$ 0,00 1.999,99

00%

US$ 2.000,00 3.999,99

09%

US$ 4.000,00 5.999,99

20%

US$ 6.000,00 7.999,99

30%

US$ 8.000,00 9.999,99

40%

US$ 10.000,00 11.999,99

42%

US$ 12.200,00 13.999,99

44%

US$14.000,00 ou mais

45%

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-59
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Exiba a alquota de imposto aplicvel para cada


funcionrio do departamento 80:

Sumrio
Nesta lio, voc aprendeu a:

Executar clculos em dados usando functions

Alterar os formatos de data para exibio usando


functions

Converter tipos de dados de colunas usando functions


Usar functions NVL

Modificar itens de dados individuais usando functions

Usar a lgica IF-THEN-ELSE

Copyright 2004, Oracle. Todos os direitos reservados.

Sumrio

possvel aninhar as functions de uma nica linha em quantos nveis forem necessrios. As
functions de uma nica linha podem manipular:
Dados de caractere: LOWER, UPPER, INITCAP, CONCAT, SUBSTR, INSTR,
LENGTH
Dados de nmero: ROUND, TRUNC, MOD
Dados de data: MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY,
ROUND, TRUNC
Lembre-se do seguinte:
Os valores de data tambm podem usar operadores aritmticos.
As functions de converso podem converter valores numricos, de caractere e data:
TO_CHAR, TO_DATE, TO_NUMBER
Vrias functions esto relacionadas ao uso de valores nulos, incluindo NVL, NVL2,
NULLIF e COALESCE.
possvel aplicar a lgica IF-THEN-ELSE em uma instruo SQL com a expresso
CASE ou a function DECODE.
SYSDATE e DUAL
SYSDATE uma function de data que retorna a data e o horrio atuais. comum selecionar
SYSDATE em uma tabela fictcia denominada DUAL.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-60
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Manipular a sada de grupos de linhas usando


functions

Exerccio 3: Viso Geral da Parte 2

Criao de consultas que exigem o uso de functions


numricas, de caractere e data

Uso de concatenao com functions

Clculos dos anos e meses de servio de um


funcionrio

Obteno da data de reviso de um funcionrio

Criao de consultas sem distino entre


maisculas e minsculas para testar a utilidade das
functions de caractere

Copyright 2004, Oracle. Todos os direitos reservados.

Exerccio 3: Viso Geral da Parte 2

A Parte 2 do exerccio desta lio contm vrias atividades que utilizam diferentes functions
disponveis para os tipos de dados de caractere, nmero e data. Faa as questes de 7 a 14
relativas a essa parte.
Lembre-se de que, nas functions aninhadas, os resultados so avaliados da function mais
interna para a mais externa.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-61
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Este exerccio aborda os seguintes tpicos:

Exerccio 3

2. O departamento de recursos humanos precisa de um relatrio para exibir


o nmero do funcionrio, o sobrenome, o salrio e o salrio com 15,5%
de aumento (especificado como um nmero inteiro) de cada funcionrio.
Atribua o label New Salary coluna. Inclua a instruo SQL no arquivo
de texto lab_03_02.sql.
3. Execute a consulta no arquivo lab_03_02.sql.

4. Modifique a consulta lab_03_02.sql para adicionar uma coluna que subtraia


o salrio antigo do novo salrio. Atribua o label Increase coluna. Salve o
contedo do arquivo como lab_03_04.sql. Execute a consulta revisada.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-62
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Parte 1
1. Crie uma consulta para exibir a data atual. Atribua o label Date coluna.

Exerccio 3 (continuao)

Recrie a consulta para que o usurio seja solicitado a informar a letra inicial do
sobrenome. Por exemplo, se o usurio informar H quando uma letra for solicitada, a
sada dever mostrar todos os funcionrios cujos sobrenomes comeam com a letra
H.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-63
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

5. Crie uma consulta que exiba o sobrenome (com a primeira letra maiscula e todas as
outras minsculas) e o tamanho do sobrenome de todos os funcionrios cujos nomes
comecem com a letra J, A ou M. Atribua um label apropriado a cada coluna.
Classifique os resultados pelos sobrenomes dos funcionrios.

Exerccio 3 (continuao)

6. O departamento de recursos humanos deseja saber qual o tempo de emprego de


cada funcionrio. Para cada funcionrio, exiba o sobrenome e calcule o nmero de
meses entre hoje e a data de admisso do funcionrio. Atribua o label
MONTHS_WORKED coluna. Ordene os resultados pelo nmero de meses em que o
funcionrio est empregado. Arredonde o nmero de meses para o nmero inteiro
mais prximo.

Oracle University and Impacta Tecnologia use only

Observao: Os resultados sero diferentes.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-64
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Exerccio 3 (continuao)

Parte 2

Se tiver tempo, faa os seguintes exerccios:


8. Crie uma consulta que exiba o sobrenome e o salrio de todos os funcionrios.
Formate o salrio para defini-lo com um tamanho de 15 caracteres e preench-lo
esquerda com o smbolo $. Atribua o label SALARY coluna.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-65
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

7. Crie um relatrio que produza estas informaes para cada funcionrio:


<sobrenome do funcionrio> recebe <salrio> mensalmente,
mas deseja <3 vezes o salrio>. Atribua o label Dream Salaries
coluna.

Exerccio 3 (continuao)

10. Exiba o sobrenome, a data de admisso e o dia da semana em que o funcionrio


comeou a trabalhar. Atribua o label DAY coluna. Ordene os resultados pelo dia da
semana, comeando por segunda-feira.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-66
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

9. Exiba o sobrenome, a data de admisso e a data de reviso de salrio de cada


funcionrio, que a primeira segunda-feira aps seis meses de servio. Atribua o
label REVIEW coluna. Formate as datas para que sejam exibidas no formato
semelhante a "Monday, the Thirty-First of July, 2000".

Exerccio 3 (continuao)

Se quiser tomar parte em mais um desafio, faa estes exerccios:

12. Crie uma consulta que exiba os oito primeiros caracteres dos sobrenomes dos
funcionrios e indique os valores dos salrios com asteriscos. Cada asterisco
representa mil dlares. Classifique os dados em ordem decrescente de salrio.
Atribua o label EMPLOYEES_AND_THEIR_SALARIES coluna.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-67
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

11. Crie uma consulta que exiba os sobrenomes e as comisses dos funcionrios. Se um
funcionrio no ganhar comisso, a informao "No Commission" dever ser
exibida. Atribua o label COMM coluna.

Oracle University and Impacta Tecnologia use only

Exerccio 3 (continuao)
13. Com a function DECODE, crie uma consulta que exiba o nvel de todos os
funcionrios com base no valor da coluna JOB_ID. Use estes dados:
Cargo
Nvel
AD_PRES
A
ST_MAN
B
IT_PROG
C
SA_REP
D
ST_CLERK
E
Nenhuma das opes anteriores 0

14. Recrie a instruo no exerccio anterior usando a sintaxe CASE.


Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 3-68
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Copyright 2004, Oracle. Todos os direitos reservados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Gerando Relatrios de Dados


Agregados com as Functions de Grupo

Objetivos
Ao concluir esta lio, voc ser capaz de:
Identificar as functions de grupo disponveis
Descrever o uso de functions de grupo
Agrupar dados com a clusula GROUP BY
Incluir ou excluir linhas agrupadas com a clusula
HAVING

Copyright 2004, Oracle. Todos os direitos reservados.

Objetivos
Esta lio aborda o uso de functions com mais detalhes. Ela concentra-se na obteno de
informaes sumariadas (como mdias) relativas a grupos de linhas. A lio mostra como
agrupar as linhas de uma tabela em conjuntos menores e como especificar critrios de
pesquisa para grupos de linhas.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-2
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

O Que So Functions de Grupo?


As functions de grupo operam em conjuntos de linhas
para fornecer um resultado por grupo.

Salrio mximo na
tabela EMPLOYEES

Copyright 2004, Oracle. Todos os direitos reservados.

Functions de Grupo
Diferentemente das functions de uma nica linha, as functions de grupo operam em
conjuntos de linhas para fornecer um resultado por grupo. Esses conjuntos podem abranger
a tabela inteira ou a tabela dividida em grupos.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-3
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

EMPLOYEES

Tipos de Functions de Grupo


AVG
COUNT
MAX

Functions
de Grupo

MIN
STDDEV
SUM
VARIANCE

Copyright 2004, Oracle. Todos os direitos reservados.

Tipos de Functions de Grupo


Cada function aceita um argumento. Esta tabela identifica as opes que voc pode usar na
sintaxe:
Function
AVG([DISTINCT|ALL]n)

Descrio

COUNT({*|[DISTINCT|ALL]expr
})

MAX([DISTINCT|ALL]expr)

Nmero de linhas, em que expr avaliado


como um valor diferente de nulo (conta todas
as linhas selecionadas usando *, inclusive
valores duplicados e linhas com valores nulos)
Valor mximo de expr; ignora valores nulos

MIN([DISTINCT|ALL]expr)

Valor mnimo de expr; ignora valores nulos

STDDEV([DISTINCT|ALL]x)

Desvio padro de n; ignora valores nulos

SUM([DISTINCT|ALL]n)

Valores somados de n; ignora valores nulos

VARIANCE([DISTINCT|ALL]x)

Variao de n; ignora valores nulos

Valor mdio de n; ignora valores nulos

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-4
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Functions de Grupo: Sintaxe


[column,] group_function(column), ...
table
condition]
column]
column];

Copyright 2004, Oracle. Todos os direitos reservados.

Diretrizes para a Utilizao de Functions de Grupo


Com DISTINCT, a function considera apenas valores no duplicados; com ALL, ela
considera todos os valores, inclusive os duplicados. Como o default, ALL no precisa
ser especificado.
Os tipos de dados das functions com um argumento expr podem ser CHAR,
VARCHAR2, NUMBER ou DATE.
Todas as functions de grupo ignoram valores nulos. Para substituir um valor por
valores nulos, use as functions NVL, NVL2 ou COALESCE.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-5
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
FROM
[WHERE
[GROUP BY
[ORDER BY

Usando as Functions AVG e SUM


possvel usar as functions AVG e SUM para dados
numricos.

Copyright 2004, Oracle. Todos os direitos reservados.

Usando as Functions de Grupo


possvel usar as functions AVG, SUM, MIN e MAX em colunas que podem armazenar dados
numricos. O exemplo do slide mostra os salrios mdio, mximo e mnimo, bem como a
soma dos salrios mensais, de todos os representantes de vendas.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-6
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT AVG(salary), MAX(salary),


MIN(salary), SUM(salary)
FROM
employees
WHERE job_id LIKE '%REP%';

Usando as Functions MIN e MAX


possvel usar MIN e MAX para tipos de dados
numricos, de caractere e de data.

Copyright 2004, Oracle. Todos os direitos reservados.

Usando as Functions de Grupo (continuao)


possvel usar as functions MAX e MIN para os tipos de dados numricos, de caractere e de
data. O exemplo do slide mostra o funcionrio mais recente e o mais antigo.
O exemplo a seguir mostra o primeiro e o ltimo sobrenome de funcionrio em uma lista
em ordem alfabtica de todos os funcionrios:
SELECT MIN(last_name), MAX(last_name)
FROM employees;

Observao: S possvel usar as functions AVG, SUM, VARIANCE e STDDEV com tipos
de dados numricos. MAX e MIN no podem ser usadas com o tipo de dados LOB ou LONG.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-7
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT MIN(hire_date), MAX(hire_date)


FROM
employees;

Usando a Function COUNT


COUNT(*) retorna o nmero de linhas de uma tabela:

COUNT(expr) retorna o nmero de linhas com valores


no nulos para expr:

SELECT COUNT(commission_pct)
FROM
employees
WHERE department_id = 80;

Copyright 2004, Oracle. Todos os direitos reservados.

Function COUNT
A function COUNT tem trs formatos:
COUNT(*)
COUNT(expr)
COUNT(DISTINCT expr)
COUNT(*) retorna o nmero de linhas de uma tabela que atendem aos critrios da
instruo SELECT, incluindo as linhas duplicadas e as linhas com valores nulos de qualquer
uma das colunas. Se uma clusula WHERE estiver includa na instruo SELECT,
COUNT(*) retornar o nmero de linhas que atendem condio especificada nessa
clusula.
Por outro lado, COUNT(expr) retorna o nmero de valores no nulos na coluna
identificada por expr.
COUNT(DISTINCT expr) retorna o nmero de valores exclusivos e no nulos na coluna
identificada por expr.
Exemplos
1. O exemplo do slide mostra o nmero de funcionrios do departamento 50.
2. O exemplo do slide mostra o nmero de funcionrios do departamento 80 que podem
receber comisso.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-8
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT COUNT(*)
FROM
employees
WHERE department_id = 50;

COUNT(DISTINCT expr) retorna o nmero de


valores no nulos e distintos de expr.

Para exibir os valores de nmeros de departamentos


distintos da tabela EMPLOYEES:

SELECT COUNT(DISTINCT department_id)


FROM
employees;

Copyright 2004, Oracle. Todos os direitos reservados.

Palavra-chave DISTINCT
Use a palavra-chave DISTINCT para suprimir a contagem de valores duplicados em uma
coluna.
O exemplo do slide mostra os valores de nmeros de departamentos distintos da tabela
EMPLOYEES.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-9
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usando a Palavra-Chave DISTINCT

Functions de Grupo e Valores Nulos

FROM

employees;

A function NVL determina que as functions de grupo


incluam valores nulos:

SELECT AVG(NVL(commission_pct, 0))


FROM
employees;

Copyright 2004, Oracle. Todos os direitos reservados.

Functions de Grupo e Valores Nulos


Todas as functions de grupo ignoram valores nulos na coluna.
A function NVL determina que as functions de grupo incluam valores nulos.
Exemplos
1. A mdia calculada com base apenas nas linhas da tabela com valores vlidos
armazenados na coluna COMMISSION_PCT. A mdia calculada como a comisso
total paga a todos os funcionrios dividida pelo nmero de funcionrios que recebem
comisso (quatro).
2. A mdia calculada com base em todas as linhas da tabela, mesmo que valores nulos
estejam armazenados na coluna COMMISSION_PCT. A mdia calculada como a
comisso total paga a todos os funcionrios dividida pelo nmero total de funcionrios
da empresa (20).

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-10
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

As functions de grupo ignoram valores nulos na


coluna:
SELECT AVG(commission_pct)

Criando Grupos de Dados


EMPLOYEES
4400

3500

6400

Salrio mdio
na tabela
EMPLOYEES
para cada
departamento

10033

Copyright 2004, Oracle. Todos os direitos reservados.

Criando Grupos de Dados


At esta etapa do nosso estudo, todas as functions de grupo trataram a tabela como um
grande grupo de informaes.
Entretanto, s vezes necessrio dividir a tabela de informaes em grupos menores.
possvel efetuar essa diviso com a clusula GROUP BY.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-11
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

9500

Criando Grupos de Dados:


Sintaxe da Clusula GROUP BY

possvel dividir as linhas de uma tabela em grupos


menores com a clusula GROUP BY.

Copyright 2004, Oracle. Todos os direitos reservados.

Clusula GROUP BY
Voc pode usar a clusula GROUP BY para dividir as linhas de uma tabela em grupos.
Depois, pode usar as functions de grupo para retornar informaes sumariadas de cada
grupo.
Na sintaxe:
group_by_expression

especifica colunas cujos valores determinam a base


do agrupamento de linhas

Diretrizes
Se incluir uma function de grupo em uma clusula SELECT, voc no poder
selecionar resultados individuais, a menos que a coluna individual aparea na clusula
GROUP BY. Se no conseguir incluir a lista de colunas na clusula GROUP BY, voc
receber uma mensagem de erro.
Com uma clusula WHERE, voc poder excluir linhas antes de dividi-las em grupos.
Inclua as colunas na clusula GROUP BY.
No possvel usar um apelido de coluna na clusula GROUP BY.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-12
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
column, group_function(column)
FROM
table
[WHERE
condition]
[GROUP BY group_by_expression]
[ORDER BY column];

Usando a Clusula GROUP BY


Todas as colunas da lista SELECT que no so
functions de grupo devem estar includas na clusula
GROUP BY.

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Clusula GROUP BY


Ao usar a clusula GROUP BY, verifique se todas as colunas da lista SELECT que no so
functions de grupo esto includas nessa clusula. O exemplo do slide mostra o nmero e o
salrio mdio de cada departamento. A instruo SELECT com uma clusula GROUP BY
avaliada da seguinte maneira:
A clusula SELECT especifica as colunas a serem recuperadas da seguinte forma:
A coluna de nmero de departamento da tabela EMPLOYEES
A mdia de todos os salrios no grupo especificado na clusula GROUP BY
A clusula FROM especifica as tabelas que o banco de dados deve acessar: a tabela
EMPLOYEES.
A clusula WHERE especifica as linhas a serem recuperadas. Como no h clusula
WHERE, todas as linhas so recuperadas por default.
A clusula GROUP BY especifica como as linhas devem ser agrupadas. As linhas so
agrupadas por nmero de departamento, portanto, a function AVG aplicada coluna de
salrio calcular o salrio mdio de cada departamento.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-13
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
department_id, AVG(salary)
FROM
employees
GROUP BY department_id ;

Usando a Clusula GROUP BY


A clusula GROUP BY seguida pelo nome da coluna no
precisa estar na lista SELECT.

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Clusula GROUP BY (continuao)


A clusula GROUP BY seguida pelo nome da coluna no precisa estar na clusula SELECT.
Por exemplo, a instruo SELECT do slide mostra os salrios mdios de cada departamento
sem exibir os respectivos nmeros de departamento. No entanto, sem os nmeros de
departamento, os resultados parecem no fazer sentido.
possvel usar a function de grupo na clusula ORDER BY:
SELECT department_id, AVG(salary)
FROM employees
GROUP BY department_id
ORDER BY AVG(salary);

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-14
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
AVG(salary)
FROM
employees
GROUP BY department_id ;

Agrupando por Mais de Uma Coluna

Adicione os
salrios tabela
EMPLOYEES
para cada cargo,
agrupados por
departamento

Copyright 2004, Oracle. Todos os direitos reservados.

Grupos Contidos em Outros Grupos


s vezes, voc precisa ver os resultados de grupos contidos em outros grupos. O slide
mostra um relatrio que exibe o salrio total pago a cada cargo, em cada departamento.
A tabela EMPLOYEES agrupada primeiro por nmero de departamento e, nesse
agrupamento, por cargo. Por exemplo, os quatro estoquistas do departamento 50 so
agrupados e um nico resultado (salrio total) fornecido para todos os estoquistas do
grupo.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-15
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

EMPLOYEES

Usando a Clusula GROUP BY


em Vrias Colunas

Copyright 2004, Oracle. Todos os direitos reservados.

Grupos Contidos em Outros Grupos (continuao)


possvel obter resultados sumariados de grupos e subgrupos listando mais de uma coluna
na clusula GROUP BY. Voc pode determinar a ordem de classificao default dos
resultados pela ordem das colunas na clusula GROUP BY. No exemplo do slide, a
instruo SELECT com uma clusula GROUP BY avaliada da seguinte maneira:
A clusula SELECT especifica a coluna a ser recuperada:
O nmero do departamento na tabela EMPLOYEES
O ID do cargo na tabela EMPLOYEES
A soma de todos os salrios no grupo especificado na clusula GROUP BY
A clusula FROM especifica as tabelas que o banco de dados deve acessar: a tabela
EMPLOYEES.
A clusula GROUP BY especifica como voc deve agrupar as linhas:
Primeiro, as linhas so agrupadas por nmero de departamento.
Depois, as linhas so agrupadas por ID de cargo nos grupos de nmeros de
departamento.
Portanto, a function SUM aplicada coluna de salrio para todos os IDs de cargo em cada
grupo de nmeros de departamento.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-16
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
department_id dept_id, job_id, SUM(salary)
FROM
employees
GROUP BY department_id, job_id ;

Consultas Invlidas
Usando Functions de Grupo
Qualquer coluna ou expresso da lista SELECT que no
seja uma function agregada dever estar na clusula
GROUP BY:

SELECT department_id, COUNT(last_name)


*
ERROR at line 1:
ORA-00937: not a single-group group function

Coluna ausente na clusula GROUP BY

Copyright 2004, Oracle. Todos os direitos reservados.

Consultas Invlidas Usando Functions de Grupo


Sempre que usar uma combinao de itens individuais (DEPARTMENT_ID) e functions de
grupo (COUNT) na mesma instruo SELECT, inclua uma clusula GROUP BY que
especifique os itens individuais (neste caso, DEPARTMENT_ID). Se a clusula GROUP BY
no for includa, a mensagem de erro "not a single-group group function" ser exibida e um
asterisco (*) indicar a coluna afetada. Para corrigir o erro no slide, adicione a clusula
GROUP BY:
SELECT
department_id, count(last_name)
FROM employees
GROUP BY department_id;

Qualquer coluna ou expresso da lista SELECT que no seja uma function agregada dever
estar na clusula GROUP BY.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-17
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT department_id, COUNT(last_name)


FROM
employees;

Consultas Invlidas
Usando Functions de Grupo

No possvel usar a clusula WHERE para restringir


grupos.

Use a clusula HAVING para restringir grupos.

SELECT
FROM
WHERE
GROUP BY

department_id, AVG(salary)
employees
AVG(salary) > 8000
department_id;

WHERE

AVG(salary) > 8000


*
ERROR at line 3:
ORA-00934: group function is not allowed here

No possvel usar a clusula WHERE para restringir grupos


Copyright 2004, Oracle. Todos os direitos reservados.

Consultas Invlidas Usando Functions de Grupo (continuao)


No possvel usar a clusula WHERE para restringir grupos. A instruo SELECT do
exemplo do slide resulta em erro, pois utiliza a clusula WHERE para restringir a exibio
dos salrios mdios dos departamentos cujo salrio mdio superior a US$ 8.000.
Para corrigir o erro do exemplo, use a clusula HAVING para restringir grupos:
SELECT department_id, AVG(salary)
FROM employees
HAVING
AVG(salary) > 8000
GROUP BY department_id;

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-18
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

No possvel usar functions de grupo na clusula


WHERE.

Restringindo Resultados de Grupos

O salrio
mximo por
departamento
quando for
maior que
US$ 10.000

Copyright 2004, Oracle. Todos os direitos reservados.

Restringindo Resultados de Grupos


Da mesma maneira que voc utiliza a clusula WHERE para restringir as linhas selecionadas,
use a clusula HAVING para restringir grupos. Para obter o salrio mximo de cada
departamento cujo salrio mximo superior a US$ 10.000, voc precisa fazer o seguinte:
1. Obtenha o salrio mdio de cada departamento agrupando por nmero de
departamento.
2. Restrinja os grupos aos departamentos com um salrio mximo maior que US$10.000.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-19
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

EMPLOYEES

Restringindo Resultados de Grupos


com a Clusula HAVING
Quando a clusula HAVING utilizada, o servidor
Oracle restringe os grupos da seguinte forma:
2. A function de grupo aplicada.
3. Os grupos que correspondem clusula HAVING
so exibidos.
SELECT
FROM
[WHERE
[GROUP BY
[HAVING
[ORDER BY

column, group_function
table
condition]
group_by_expression]
group_condition]
column];

Copyright 2004, Oracle. Todos os direitos reservados.

Restringindo Resultados de Grupos com a Clusula HAVING


Use a clusula HAVING para especificar quais grupos devem ser exibidos e, dessa forma,
restringir ainda mais os grupos com base nas informaes agregadas.
Na sintaxe, group_condition restringe os grupos de linhas retornados aos grupos cuja
condio especificada verdadeira.
Quando voc usa a clusula HAVING, o servidor Oracle executa as seguintes etapas:
1. As linhas so agrupadas.
2. A function de grupo aplicada ao grupo.
3. Os grupos que correspondem aos critrios na clusula HAVING so exibidos.
A clusula HAVING pode anteceder a clusula GROUP BY, mas recomendvel usar a
clusula GROUP BY primeiro por razes lgicas. Os grupos so formados e as functions de
grupo so calculadas antes de a clusula HAVING ser aplicada aos grupos na lista SELECT.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-20
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

1. As linhas so agrupadas.

Usando a Clusula HAVING


department_id, MAX(salary)
employees
department_id
MAX(salary)>10000 ;

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Clusula HAVING


O exemplo do slide mostra os nmeros e os salrios mximos dos departamentos cujo
salrio mximo maior que US$ 10.000.
possvel usar a clusula GROUP BY sem uma function de grupo na lista SELECT.
Se voc restringir as linhas com base no resultado de uma function de grupo, especifique as
clusulas GROUP BY e HAVING.
Este exemplo mostra os nmeros e os salrios mdios dos departamentos cujo salrio
mximo ultrapassa US$ 10.000:
SELECT department_id, AVG(salary)
FROM employees
GROUP BY department_id
HAVING
max(salary)>10000;

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-21
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
FROM
GROUP BY
HAVING

Usando a Clusula HAVING

Copyright 2004, Oracle. Todos os direitos reservados.

Usando a Clusula HAVING (continuao)


O exemplo do slide mostra o ID do cargo e o salrio mensal total de cada cargo com uma
folha de pagamento total que ultrapassa US$ 13.000. O exemplo exclui representantes de
vendas e classifica a lista pelo salrio mensal total.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-22
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
job_id, SUM(salary) PAYROLL
FROM employees
WHERE
job_id NOT LIKE '%REP%'
GROUP BY job_id
HAVING
SUM(salary) > 13000
ORDER BY SUM(salary);

Aninhando Functions de Grupo


Exiba a mdia de salrio mximo:

Copyright 2004, Oracle. Todos os direitos reservados.

Aninhando Functions de Grupo


possvel aninhar at duas functions de grupo. O exemplo do slide mostra a mdia de
salrio mximo.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-23
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
MAX(AVG(salary))
FROM
employees
GROUP BY department_id;

Sumrio
Nesta lio, voc aprendeu a:
Usar as functions de grupo COUNT, MAX, MIN e AVG
Criar consultas que utilizam a clusula GROUP BY
Criar consultas que utilizam a clusula HAVING
SELECT
FROM
[WHERE
[GROUP BY
[HAVING
[ORDER BY

column, group_function
table
condition]
group_by_expression]
group_condition]
column];

Copyright 2004, Oracle. Todos os direitos reservados.

Sumrio
Vrias functions de grupo esto disponveis em SQL, como estas:
AVG, COUNT, MAX, MIN, SUM, STDDEV e VARIANCE
Para criar subgrupos, use a clusula GROUP BY. possvel restringir grupos com a
clusula HAVING.
Especifique as clusulas HAVING e GROUP BY aps a clusula WHERE em uma instruo.
A ordem na qual voc especifica essas clusulas aps a clusula WHERE no importante.
Informe a clusula ORDER BY por ltimo.
O servidor Oracle avalia as clusulas na seguinte ordem:
1. Se a instruo contiver uma clusula WHERE, o servidor estabelecer as linhas
candidatas.
2. O servidor identifica os grupos especificados na clusula GROUP BY.
3. A clusula HAVING restringe os grupos de resultados que no atendem aos critrios de
grupo especificados na clusula HAVING.
Observao: Para obter uma lista completa das functions de grupo, consulte o manual
Oracle SQL Reference.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-24
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Exerccio 4: Viso Geral

Criao de consultas que utilizam as functions


de grupo

Agrupamento por linhas para obter mais de um


resultado
Restrio de grupos usando a clusula HAVING

Copyright 2004, Oracle. Todos os direitos reservados.

Exerccio 4: Viso Geral


No final deste exerccio, voc dever estar familiarizado com a utilizao de functions de
grupo e a seleo de grupos de dados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-25
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Este exerccio aborda os seguintes tpicos:

Exerccio 4
Determine a validade das trs instrues a seguir. Circule Verdadeiro ou Falso.
1. As functions de grupo trabalham com vrias linhas para produzir um resultado por
grupo.
Verdadeiro/Falso

O departamento de RH necessita dos seguintes relatrios:


4. Obtenha o salrio mximo, o salrio mnimo, a soma dos salrios e o salrio
mdio de todos os funcionrios. Atribua os labels Maximum, Minimum, Sum
e Average, respectivamente, s colunas. Arredonde os resultados para o nmero
inteiro mais prximo. Inclua a instruo SQL no arquivo de texto
lab_04_04.sql.

5. Modifique a consulta em lab_04_04.sql para exibir o salrio mnimo,


o salrio mximo, a soma dos salrios e o salrio mdio de cada tipo de cargo.
Salve novamente lab_04_04.sql como lab_04_05.sql. Execute a
instruo em lab_04_05.sql.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-26
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

2. As functions de grupo incluem valores nulos em clculos.


Verdadeiro/Falso
3. A clusula WHERE restringe as linhas antes da incluso em um clculo de grupo.
Verdadeiro/Falso

Exerccio 4 (continuao)

Generalize a consulta para que o usurio do departamento de RH seja solicitado


a informar um cargo. Salve o script no arquivo lab_04_06.sql.
7. Determine o nmero de gerentes sem list-los. Atribua o label Number of
Managers coluna. Dica: Use a coluna MANAGER_ID para determinar
o nmero de gerentes.

8. Descubra a diferena entre o salrio mais alto e o mais baixo. Atribua o label
DIFFERENCE coluna.

Se tiver tempo, faa os seguintes exerccios:


9. Crie um relatrio para exibir o nmero do gerente e o salrio do funcionrio com
menor remunerao desse gerente. Exclua todas as pessoas cujo gerente seja
desconhecido. Exclua todos os grupos em que o salrio mnimo seja US$ 6.000 ou
inferior. Classifique a sada em ordem decrescente de salrio.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-27
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

6. Crie uma consulta para exibir o nmero de pessoas com o mesmo cargo.

Exerccio 4 (continuao)
Se quiser tomar parte em mais um desafio, faa estes exerccios:

11. Crie uma consulta matriz que exiba o cargo, o salrio relativo a esse cargo com base
no nmero do departamento e o salrio total desse cargo para os departamentos 20,
50, 80 e 90, atribuindo um cabealho apropriado a cada coluna.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 4-28
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

10. Crie uma consulta que exiba o nmero total de funcionrios e, desse total, mostre o
nmero de funcionrios admitidos em 1995, 1996, 1997 e 1998. Crie cabealhos de
colunas apropriados.

Copyright 2004, Oracle. Todos os direitos reservados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Exibindo Dados
de Vrias Tabelas

Objetivos

Juntar uma tabela a si prpria com uma auto-join

Gerar um produto cartesiano de todas as linhas de


duas ou mais tabelas

Exibir dados que normalmente no atendem a uma


condio de join usando joins externas

Copyright 2004, Oracle. Todos os direitos reservados.

Objetivos
Esta lio explica como obter dados de mais de uma tabela. Uma join usada para exibir
informaes de vrias tabelas. Portanto, voc pode juntar tabelas para exibir informaes de
mais de uma tabela.
Observao: Para obter informaes sobre joins, consulte "SQL Queries and Subqueries:
Joins" no manual Oracle SQL Reference.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-2
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Ao concluir esta lio, voc ser capaz de:


Criar instrues SELECT para acessar dados de mais
de uma tabela com equijoins e no-equijoins

Obtendo Dados de Vrias Tabelas


EMPLOYEES

DEPARTMENTS

Copyright 2004, Oracle. Todos os direitos reservados.

Obtendo Dados de Vrias Tabelas


s vezes, necessrio usar dados de mais de uma tabela. No exemplo do slide, o relatrio
exibe dados de duas tabelas distintas:
Os IDs de funcionrio esto na tabela EMPLOYEES.
Os IDs de departamento esto nas tabelas EMPLOYEES e DEPARTMENTS.
Os nomes de departamento esto na tabela DEPARTMENTS.
Para gerar o relatrio, voc precisa vincular as tabelas EMPLOYEES e DEPARTMENTS e
acessar os dados dessas duas tabelas.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-3
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Tipos de Join
Estas so as joins compatveis com o padro
SQL:1999:
Joins cruzadas
Joins naturais
Clusula USING
Joins externas integrais (ou de dois lados)
Condies arbitrrias de join para joins externas

Copyright 2004, Oracle. Todos os direitos reservados.

Tipos de Join
Para juntar tabelas, voc pode usar a sintaxe de join compatvel com o padro SQL:1999.
Observao: Antes da release Oracle9i, a sintaxe de join era diferente dos padres ANSI. A
sintaxe de join compatvel com o SQL:1999 no oferece benefcios de desempenho em
relao sintaxe de join de propriedade Oracle existente nas releases anteriores. Para obter
informaes detalhadas sobre a sintaxe de join proprietria, consulte o Apndice C.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-4
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Unindo Tabelas com a Sintaxe SQL:1999

SELECT
table1.column, table2.column
FROM
table1
[NATURAL JOIN table2] |
[JOIN table2 USING (column_name)] |
[JOIN table2
ON (table1.column_name = table2.column_name)]|
[LEFT|RIGHT|FULL OUTER JOIN table2
ON (table1.column_name = table2.column_name)]|
[CROSS JOIN table2];

Copyright 2004, Oracle. Todos os direitos reservados.

Definindo Joins
Na sintaxe:
table1.column indica a tabela e a coluna das quais os dados so recuperados
NATURAL JOIN junta duas tabelas com base no mesmo nome de coluna
JOIN table USING column_name executa uma operao de equijoin com base no
nome da coluna
JOIN table ON table1.column_name executa uma operao de equijoin com
base na condio da clusula ON, = table2.column_name
LEFT/RIGHT/FULL OUTER executa joins externas
CROSS JOIN retorna um produto cartesiano das duas tabelas
Para obter mais informaes, consulte "SELECT" no manual Oracle SQL Reference.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-5
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Use uma join para consultar dados de mais de


uma tabela:

A clusula NATURAL JOIN baseia-se em todas as


colunas das duas tabelas que tm o mesmo nome.

Ela seleciona linhas das duas tabelas que tm


valores iguais em todas as colunas
correspondentes.

Se as colunas com nomes idnticos tiverem tipos de


dados distintos, ser retornado um erro.

Copyright 2004, Oracle. Todos os direitos reservados.

Criando Joins Naturais


possvel unir tabelas automaticamente com base nas colunas das duas tabelas com tipos
de dados e nomes correspondentes. Para uni-las, use as palavras-chave NATURAL JOIN.
Observao: A operao de join s pode ocorrer em colunas com os mesmos nomes e tipos
de dados nas duas tabelas. Se as colunas tiverem nomes idnticos, mas tipos de dados
distintos, a sintaxe NATURAL JOIN causar um erro.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-6
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Criando Joins Naturais

Recuperando Registros com Joins Naturais

Copyright 2004, Oracle. Todos os direitos reservados.

Recuperando Registros com Joins Naturais


No exemplo do slide, a tabela LOCATIONS unida tabela DEPARTMENT pela coluna
LOCATION_ID, que a nica coluna com o mesmo nome nas duas tabelas. Se houvesse
outras colunas comuns, a join usaria todas elas.
Joins Naturais com uma Clusula WHERE
Para implementar outras restries a uma join natural, use uma clusula WHERE. O exemplo
a seguir limita as linhas da sada quelas com um ID de departamento igual a 20 ou 50:
SELECT

department_id, department_name,
location_id, city
FROM
departments
NATURAL JOIN locations
WHERE
department_id IN (20, 50);

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-7
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT department_id, department_name,


location_id, city
FROM
departments
NATURAL JOIN locations ;

Se diversas colunas tiverem os mesmos nomes, mas


os tipos de dados no forem coincidentes, a
clusula NATURAL JOIN poder ser modificada com
a clusula USING para especificar as colunas a
serem usadas em uma equijoin.
Use a clusula USING para estabelecer uma
correspondncia com apenas uma coluna quando
houver correspondncia com mais de uma coluna.
No use um nome ou apelido de tabela nas colunas
referenciadas.
As clusulas NATURAL JOIN e USING so
mutuamente exclusivas.
Copyright 2004, Oracle. Todos os direitos reservados.

Clusula USING
As joins naturais usam todas as colunas com nomes e tipos de dados correspondentes para
unir as tabelas. possvel usar a clusula USING para especificar apenas as colunas que
devero ser usadas em uma equijoin. As colunas referenciadas na clusula USING no
devem ter um qualificador (nome ou apelido de tabela) em qualquer ponto da instruo
SQL.
Por exemplo, esta instruo vlida:
SELECT l.city, d.department_name
FROM
locations l JOIN departments d USING (location_id)
WHERE location_id = 1400;

A instruo a seguir invlida, pois LOCATION_ID qualificado na clusula WHERE:


SELECT l.city, d.department_name
FROM locations l JOIN departments d USING (location_id)
WHERE d.location_id = 1400;
ORA-25154: column part of USING clause cannot have qualifier

A mesma restrio tambm aplicada s joins naturais. Portanto, as colunas com o


mesmo nome nas duas tabelas devem ser usadas sem qualificadores.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-8
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Criando Joins com a Clusula USING

Unindo Nomes de Colunas


DEPARTMENTS

Chave estrangeira

Chave primria

Copyright 2004, Oracle. Todos os direitos reservados.

A Clusula USING para Equijoins


Para determinar o nome do departamento de um funcionrio, compare o valor da coluna
DEPARTMENT_ID na tabela EMPLOYEES com os valores de DEPARTMENT_ID na tabela
DEPARTMENTS. O relacionamento entre as tabelas EMPLOYEES e DEPARTMENTS uma
equijoin, isto , os valores da coluna DEPARTMENT_ID nas duas tabelas devem ser iguais.
Com freqncia, esse tipo de join abrange complementos de chave primria e estrangeira.
Observao: As equijoins tambm so chamadas de joins simples ou joins internas.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-9
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

EMPLOYEES

Recuperando Registros com a Clusula USING

Copyright 2004, Oracle. Todos os direitos reservados.

Recuperando Registros com a Clusula USING


O exemplo do slide une a coluna DEPARTMENT_ID das tabelas EMPLOYEES e
DEPARTMENTS e indica o local de trabalho de um funcionrio.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-10
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT employees.employee_id, employees.last_name,


departments.location_id, department_id
FROM
employees JOIN departments
USING (department_id) ;

Use prefixos de tabela para qualificar nomes de


colunas presentes em vrias tabelas.

Use prefixos de tabela para melhorar o desempenho.

No use apelidos em colunas identificadas na


clusula USING e listadas em alguma parte da
instruo SQL.

Use apelidos de coluna para distinguir as colunas


com nomes idnticos, mas que residem em tabelas
diferentes.

Copyright 2004, Oracle. Todos os direitos reservados.

Qualificando Nomes de Colunas Ambguos


necessrio qualificar os nomes das colunas com o nome da tabela para evitar
ambigidades. Sem os prefixos das tabelas, a coluna DEPARTMENT_ID na lista SELECT
poder ser da tabela DEPARTMENTS ou EMPLOYEES. necessrio adicionar o prefixo da
tabela para executar a consulta:
SELECT employees.employee_id, employees.last_name,
departments.department_id, departments.location_id
FROM
employees JOIN departments
ON
employees.department_id = departments.department_id;

Se no houver nomes de colunas comuns entre as duas tabelas, no ser preciso qualificar as
colunas. No entanto, o uso do prefixo da tabela melhora o desempenho, pois voc informa
ao servidor Oracle exatamente onde localizar as colunas.
Observao: Ao efetuar uma operao de join com a clusula USING, voc no poder
qualificar uma coluna usada nessa prpria clusula. Alm disso, se essa coluna for usada em
alguma parte da instruo SQL, ela no poder ser utilizada como apelido.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-11
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Qualificando Nomes de Colunas Ambguos

Usando Apelidos de Tabelas


Use apelidos de tabelas para simplificar consultas.
Use apelidos de tabelas para melhorar o desempenho.
SELECT e.employee_id, e.last_name,
d.location_id, department_id
FROM
employees e JOIN departments d
USING (department_id) ;

Copyright 2004, Oracle. Todos os direitos reservados.

Usando Apelidos de Tabelas


A qualificao dos nomes de colunas com nomes de tabelas pode consumir muito tempo,
especialmente se os nomes das tabelas forem longos. Voc pode usar os apelidos das
tabelas em vez dos nomes. Assim como um apelido de coluna fornece outro nome a uma
coluna, um apelido de tabela fornece outro nome a uma tabela. Os apelidos de tabelas
ajudam a reduzir o tamanho do cdigo SQL, utilizando menos memria.
Observe como os apelidos de tabelas so identificados na clusula FROM do exemplo. O
nome da tabela especificado por inteiro, seguido por um espao e, depois, o apelido da
tabela. A tabela EMPLOYEES recebeu o apelido e, e a tabela DEPARTMENTS, o apelido d.
Diretrizes
Um apelido de tabela pode conter at 30 caracteres, mas recomendvel especificar o
menor nome possvel.
Se um apelido de tabela for usado para um nome de tabela especfico na clusula
FROM, ele dever ser substitudo pelo nome da tabela em toda a instruo SELECT.
Os apelidos de tabelas devem ser significativos.
O apelido de tabela vlido somente para a instruo SELECT atual.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-12
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

A condio de join para a join natural


basicamente uma equijoin de todas as colunas
com o mesmo nome.
Use a clusula ON para especificar condies
arbitrrias ou colunas a serem utilizadas em
operaes de join.
A condio de join separada de outras condies
de pesquisa.
A clusula ON facilita a compreenso do cdigo.

Copyright 2004, Oracle. Todos os direitos reservados.

Clusula ON
Use a clusula ON para especificar uma condio de join. Assim, voc pode especificar
condies de join separadas de condies de filtro e pesquisa na clusula WHERE.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-13
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Criando Joins com a Clusula ON

Recuperando Registros com a Clusula ON

Copyright 2004, Oracle. Todos os direitos reservados.

Criando Joins com a Clusula ON


Neste exemplo, as colunas DEPARTMENT_ID das tabelas EMPLOYEES e DEPARTMENTS
so unidas com a clusula ON. Sempre que um ID de departamento na tabela EMPLOYEES
for igual ao ID de departamento na tabela DEPARTMENTS, a linha ser retornada.
Tambm possvel usar a clusula ON para unir colunas com nomes distintos.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-14
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT e.employee_id, e.last_name, e.department_id,


d.department_id, d.location_id
FROM
employees e JOIN departments d
ON
(e.department_id = d.department_id);

EMPLOYEES (WORKER)

EMPLOYEES (MANAGER)

MANAGER_ID na tabela WORKER igual a


EMPLOYEE_ID na tabela MANAGER.
Copyright 2004, Oracle. Todos os direitos reservados.

Unindo uma Tabela a Ela Prpria


s vezes, necessrio unir uma tabela a ela prpria. Para descobrir o nome do gerente de
cada funcionrio, voc precisa unir a tabela EMPLOYEES a ela prpria ou executar uma
auto-join. Por exemplo, para descobrir o nome do gerente de Lorentz, voc precisa:
Localizar Lorentz na tabela EMPLOYEES examinando a coluna LAST_NAME.
Localizar o nmero do gerente de Lorentz examinando a coluna MANAGER_ID. O
nmero do gerente de Lorentz 103.
Localizar o nome do gerente com o valor de EMPLOYEE_ID 103 examinando a
coluna LAST_NAME. O nmero de funcionrio de Hunold 103, portanto, Hunold o
gerente de Lorentz.
Nesse processo, voc examinar a tabela duas vezes. Na primeira vez, voc examinar a
tabela para localizar Lorentz na coluna LAST_NAME e o valor 103 relativo a
MANAGER_ID. Na segunda vez, voc examinar a coluna EMPLOYEE_ID para localizar
103 e a coluna LAST_NAME para localizar Hunold.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-15
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Auto-Joins Usando a Clusula ON

Auto-Joins Usando a Clusula ON

Copyright 2004, Oracle. Todos os direitos reservados.

Unindo uma Tabela a Ela Prpria (continuao)


Tambm possvel usar a clusula ON para unir colunas com nomes distintos na mesma
tabela ou em uma tabela diferente.
O exemplo mostrado uma auto-join da tabela EMPLOYEES, com base nas colunas
EMPLOYEE_ID e MANAGER_ID.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-16
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT e.last_name emp, m.last_name mgr


FROM
employees e JOIN employees m
ON
(e.manager_id = m.employee_id);

Aplicando Outras Condies a uma Join

Copyright 2004, Oracle. Todos os direitos reservados.

Aplicando Outras Condies a uma Join


Voc pode aplicar outras condies join.
O exemplo mostrado executa uma operao de join nas tabelas EMPLOYEES e
DEPARTMENTS, alm de exibir apenas os funcionrios com o ID de gerente 149. Para
adicionar outras condies clusula ON, especifique clusulas AND. Como opo, voc
pode usar uma clusula WHERE para aplicar outras condies:
SELECT e.employee_id, e.last_name, e.department_id,
d.department_id, d.location_id
FROM
employees e JOIN departments d
ON
(e.department_id = d.department_id)
WHERE e.manager_id = 149;

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-17
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT e.employee_id, e.last_name, e.department_id,


d.department_id, d.location_id
FROM
employees e JOIN departments d
ON
(e.department_id = d.department_id)
AND
e.manager_id = 149 ;

Criando Joins Tridimensionais com a


Clusula ON
employee_id, city, department_name
employees e
departments d
d.department_id = e.department_id
locations l
d.location_id = l.location_id;

Copyright 2004, Oracle. Todos os direitos reservados.

Joins Tridimensionais
Uma join tridimensional uma join de trs tabelas. Na sintaxe compatvel com o padro
SQL:1999, as joins so executadas da esquerda para a direita. Portanto, a primeira join a ser
executada EMPLOYEES JOIN DEPARTMENTS. A primeira condio de join pode fazer
referncia a colunas de EMPLOYEES e DEPARTMENTS, mas no a colunas de
LOCATIONS. A segunda condio de join pode fazer referncia a colunas de todas as trs
tabelas.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-18
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
FROM
JOIN
ON
JOIN
ON

No-Equijoins

JOB_GRADES

O salrio na tabela EMPLOYEES


deve estar compreendido entre
o menor e o maior salrio na
tabela JOB_GRADES.

Copyright 2004, Oracle. Todos os direitos reservados.

No-Equijoins
Uma no-equijoin uma condio de join que contm algo diferente de um operador de
igualdade.
O relacionamento entre as tabelas EMPLOYEES e JOB_GRADES um exemplo de uma
no-equijoin. Em um relacionamento entre as duas tabelas, os valores da coluna SALARY
da tabela EMPLOYEES devem estar compreendidos entre os valores das colunas
LOWEST_SALARY e HIGHEST_SALARY da tabela JOB_GRADES. O relacionamento
obtido com um operador diferente de igualdade (=).

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-19
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

EMPLOYEES

Recuperando Registros com No-Equijoins

Copyright 2004, Oracle. Todos os direitos reservados.

No-Equijoins (continuao)
O exemplo do slide cria uma no-equijoin para avaliar o nvel salarial de um funcionrio. O
salrio deve estar compreendido entre qualquer par de faixas de salrio mais baixo e mais
alto.
importante observar que todos os funcionrios aparecem uma nica vez quando essa
consulta executada. Os funcionrios no so repetidos na lista. Existem dois motivos para
isso:
Nenhuma das linhas da tabela de nveis de cargos contm nveis sobrepostos. Isto , o
valor do salrio de um funcionrio somente pode estar entre os valores de salrio mais
alto e mais baixo de uma das linhas da tabela de nveis salariais.
Os salrios de todos os funcionrios esto compreendidos entre os limites fornecidos
pela tabela de nveis de cargos. Isto , nenhum funcionrio recebe menos que o valor
mais baixo contido na coluna LOWEST_SAL ou mais que o valor mais alto contido na
coluna HIGHEST_SAL.
Observao: possvel usar outras condies (como <= e >=), mas BETWEEN a mais
simples. Quando usar BETWEEN, lembre-se de informar primeiro o valor mais baixo e
depois o valor mais alto.
Foram especificados apelidos de tabelas no exemplo do slide por questes de desempenho,
e no para evitar uma possvel ambigidade.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-20
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT e.last_name, e.salary, j.grade_level


FROM
employees e JOIN job_grades j
ON
e.salary
BETWEEN j.lowest_sal AND j.highest_sal;

Joins Externas
EMPLOYEES

No h funcionrios no
departamento 190.
Copyright 2004, Oracle. Todos os direitos reservados.

Retornando Registros sem Correspondncia Direta com Joins Externas


Se no atender a uma condio de join, a linha no aparecer no resultado da consulta. Por
exemplo, na condio de equijoin das tabelas EMPLOYEES e DEPARTMENTS, o ID de
departamento 190 no exibido, pois no existem funcionrios com esse ID registrado na
tabela EMPLOYEES. Em vez de conter 20 funcionrios, o conjunto de resultados conter 19
registros.
Para retornar o registro de um departamento sem funcionrios, use uma join externa.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-21
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

DEPARTMENTS

No padro SQL:1999, a join de duas tabelas que


retorna apenas as linhas correspondentes uma
join interna.

Uma join entre duas tabelas que retorna os


resultados da join interna, bem como as linhas no
correspondentes da tabela esquerda (ou direita),
chamada de join externa esquerda (ou direita).

Uma join entre duas tabelas que retorna os


resultados de uma join interna, bem como os
resultados de uma join esquerda e direita, uma join
externa integral.

Copyright 2004, Oracle. Todos os direitos reservados.

Joins Internas e Externas


A unio de tabelas com as clusulas NATURAL JOIN, USING ou ON resulta em uma join
interna. As linhas no correspondentes no so exibidas na sada. Para retornar as linhas no
correspondentes, use uma join externa. Uma join externa retorna todas as linhas que
atendem condio de join, bem como algumas ou todas as linhas de uma tabela para as
quais nenhuma linha da outra tabela atende condio de join.
H trs tipos de joins externas:
Externa Esquerda (LEFT OUTER JOIN)
Externa Direita (RIGHT OUTER JOIN)
Externa Integral (FULL OUTER JOIN)

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-22
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Joins Internas e Externas

LEFT OUTER JOIN

Copyright 2004, Oracle. Todos os direitos reservados.

Exemplo de Join Externa Esquerda (LEFT OUTER JOIN)


Esta consulta recupera todas as linhas da tabela EMPLOYEES, que a tabela esquerda,
mesmo quando no h correspondncia na tabela DEPARTMENTS.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-23
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT e.last_name, e.department_id, d.department_name


FROM
employees e LEFT OUTER JOIN departments d
ON
(e.department_id = d.department_id) ;

RIGHT OUTER JOIN

Copyright 2004, Oracle. Todos os direitos reservados.

Exemplo de Join Externa Direita (RIGHT OUTER JOIN)


Esta consulta recupera todas as linhas da tabela DEPARTMENTS, que a tabela direita,
mesmo quando no h correspondncia na tabela EMPLOYEES.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-24
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT e.last_name, e.department_id, d.department_name


FROM
employees e RIGHT OUTER JOIN departments d
ON
(e.department_id = d.department_id) ;

FULL OUTER JOIN

Copyright 2004, Oracle. Todos os direitos reservados.

Exemplo de Join Externa Integral (FULL OUTER JOIN)


Esta consulta recupera todas as linhas da tabela EMPLOYEES, mesmo quando no h
correspondncia na tabela DEPARTMENTS. Ela tambm recupera todas as linhas da tabela
DEPARTMENTS, mesmo quando no h correspondncia na tabela EMPLOYEES.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-25
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT e.last_name, d.department_id, d.department_name


FROM
employees e FULL OUTER JOIN departments d
ON
(e.department_id = d.department_id) ;

Produtos Cartesianos

Um produto cartesiano ser formado quando:

Uma condio de join for omitida


Uma condio de join for invlida
Todas as linhas da primeira tabela se unirem a todas

Para evitar um produto cartesiano, inclua sempre


uma condio de join vlida.

Copyright 2004, Oracle. Todos os direitos reservados.

Produtos Cartesianos
Quando uma condio de join invlida ou completamente omitida, o resultado um
produto cartesiano, no qual todas as combinaes de linhas so exibidas. Todas as linhas da
primeira tabela so unidas a todas as linhas da segunda tabela.
Um produto cartesiano tende a gerar um grande nmero de linhas e o resultado raramente
til. Inclua sempre uma condio de join vlida, a menos que exista uma necessidade
especfica de combinar todas as linhas de todas as tabelas.
Os produtos cartesianos so teis em alguns testes quando necessrio gerar muitas linhas
para simular um volume razovel de dados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-26
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

as linhas da segunda tabela

Gerando um Produto Cartesiano


EMPLOYEES (20 linhas)

DEPARTMENTS (8 linhas)

Produto cartesiano:
20 x 8 = 160 linhas

Copyright 2004, Oracle. Todos os direitos reservados.

Produtos Cartesianos (continuao)


Um produto cartesiano ser gerado se uma condio de join for omitida. O exemplo do slide
exibe o sobrenome e o nome do departamento dos funcionrios com base nas tabelas
EMPLOYEES e DEPARTMENTS. Como no foi especificada uma condio de join, todas as
linhas (20) da tabela EMPLOYEES so unidas a todas as linhas (8) da tabela
DEPARTMENTS, gerando 160 linhas na sada.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-27
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

A clusula CROSS JOIN gera o produto cruzado de


duas tabelas.

Ele tambm chamado de produto cartesiano entre


as duas tabelas.
SELECT last_name, department_name
FROM
employees
CROSS JOIN departments ;

Copyright 2004, Oracle. Todos os direitos reservados.

Criando Joins Cruzadas


O exemplo do slide resulta em um produto cartesiano das tabelas EMPLOYEES e
DEPARTMENTS.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-28
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Criando Joins Cruzadas

Sumrio
Nesta lio, voc aprendeu a usar joins para exibir
dados de vrias tabelas por meio de:
Equijoins
No-equijoins
Joins externas
Auto-joins
Joins cruzadas
Joins naturais
Joins externas integrais (ou de dois lados)

Copyright 2004, Oracle. Todos os direitos reservados.

Sumrio
H vrias maneiras de unir tabelas.
Tipos de Join

Equijoins
No-equijoins
Joins externas
Auto-joins
Joins cruzadas
Joins naturais
Joins externas integrais (ou de dois lados)

Produtos Cartesianos
Um produto cartesiano resulta na exibio de todas as combinaes de linhas. Para obter
esse resultado, omita a clusula WHERE ou especifique a clusula CROSS JOIN.
Apelidos de Tabelas
Os apelidos de tabelas aceleram o acesso ao banco de dados.
Eles podem ajudar a reduzir o cdigo SQL, preservando a memria.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-29
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Exerccio 5: Viso Geral


Este exerccio aborda os seguintes tpicos:
Unio de tabelas com uma equijoin
Execuo de auto-joins e joins externas
Incluso de condies

Copyright 2004, Oracle. Todos os direitos reservados.

Exerccio 5: Viso Geral


Este exerccio tem como objetivo proporcionar a voc um treinamento prtico de como
extrair dados de mais de uma tabela com joins compatveis com o padro SQL:1999.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-30
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Exerccio 5

2. O departamento de recursos humanos precisa de um relatrio de todos os


funcionrios. Crie uma consulta para exibir o sobrenome, o nmero do departamento
e o nome do departamento de todos os funcionrios.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-31
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

1. Crie uma consulta para o departamento de recursos humanos a fim de gerar os


endereos de todos os departamentos. Use as tabelas LOCATIONS e COUNTRIES.
Mostre o ID do local, o endereo, a cidade, o estado e o pas na sada. Use
NATURAL JOIN para gerar os resultados.

Exerccio 5 (continuao)

4. Crie um relatrio para exibir o sobrenome e o nmero dos funcionrios, bem como o
sobrenome e o nmero dos respectivos gerentes. Atribua s colunas os labels
Employee, Emp#, Manager e Mgr#, respectivamente. Inclua a instruo SQL no
arquivo de texto lab_05_04.sql.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-32
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

3. O departamento de recursos humanos precisa de um relatrio dos funcionrios em


Toronto. Exiba o sobrenome, o cargo, o nmero do departamento e o nome do
departamento de todos os funcionrios que trabalham em Toronto.


6. Crie um relatrio para o departamento de recursos humanos que exiba os
sobrenomes e os nmeros de departamento dos funcionrios, bem como todos os
funcionrios que trabalham no mesmo departamento como um funcionrio
especfico. Atribua um label apropriado a cada coluna. Salve o script no arquivo
lab_05_06.sql.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-33
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Exerccio 5 (continuao)
5. Modifique lab_05_04.sql para exibir todos os funcionrios, inclusive King, que
no possui gerente. Ordene os resultados pelo nmero do funcionrio. Inclua a
instruo SQL no arquivo de texto lab_05_05.sql. Execute a consulta em
lab_05_05.sql.

Exerccio 5 (continuao)

Se quiser tomar parte em mais um desafio, faa estes exerccios:


8. O departamento de recursos humanos deseja determinar os nomes de todos os
funcionrios admitidos aps Davies. Crie uma consulta para exibir o nome e a data
de admisso de todos os funcionrios admitidos aps Davies.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-34
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

7. O departamento de recursos humanos precisa de um relatrio sobre nveis de cargos


e salrios. Para se familiarizar com a tabela JOB_GRADES, primeiro mostre a
estrutura dessa tabela. Em seguida, crie uma consulta que exiba o nome, o cargo, o
nome do departamento, o salrio e o nvel de todos os funcionrios.

Exerccio 5 (continuao)

Oracle University and Impacta Tecnologia use only

9. O departamento de recursos humanos precisa obter os nomes e as datas de


admisso de todos os funcionrios admitidos antes dos respectivos gerentes,
alm dos nomes e das datas de admisso desses gerentes. Salve o script no
arquivo lab5_09.sql.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 5-35
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only


Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Copyright 2004, Oracle. Todos os direitos reservados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usando Subconsultas
para Solucionar Consultas

Objetivos
Ao concluir esta lio, voc ser capaz de:

Definir subconsultas

Listar os tipos de subconsultas


Criar subconsultas de uma nica linha e de
vrias linhas

Copyright 2004, Oracle. Todos os direitos reservados.

Objetivos
Nesta lio, voc conhecer os recursos mais avanados da instruo SELECT. possvel
criar subconsultas na clusula WHERE de outra instruo SQL para obter valores baseados
em um valor condicional desconhecido. Esta lio aborda subconsultas de uma nica linha e
de vrias linhas.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-2
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Descrever os tipos de problemas que as


subconsultas podem solucionar

Usando uma Subconsulta


para Solucionar um Problema
Quem tem um salrio maior que o salrio de Abel?
Consulta principal:

Subconsulta:

Qual o salrio de Abel?

Copyright 2004, Oracle. Todos os direitos reservados.

Usando uma Subconsulta para Solucionar um Problema


Suponha que voc queira criar uma consulta para saber quem ganha um salrio maior que o
salrio de Abel.
Para solucionar esse problema, so necessrias duas consultas: uma para saber quanto Abel
ganha e outra para saber quem ganha uma quantia maior.
Voc pode solucionar esse problema com a combinao das duas consultas, inserindo uma
na outra.
A consulta interna (ou subconsulta) retorna um valor usado pela consulta externa (ou
consulta principal). Usar uma subconsulta o mesmo que executar duas consultas em
seqncia e utilizar o resultado da primeira como o valor de pesquisa na segunda.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-3
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Quais funcionrios tm um salrio maior


que o salrio de Abel?

Sintaxe da Subconsulta
select_list
table
expr operator
(SELECT
FROM

select_list
table);

A subconsulta (consulta interna) executada uma


vez antes da consulta principal (consulta externa).

O resultado da subconsulta usado pela consulta


principal.

Copyright 2004, Oracle. Todos os direitos reservados.

Sintaxe da Subconsulta
Uma subconsulta uma instruo SELECT incorporada a uma clusula de outra instruo
SELECT. possvel criar instrues complexas a partir de instrues simples usando
subconsultas. Elas podero ser muito teis quando for necessrio selecionar linhas de uma
tabela com uma condio que dependa dos dados da prpria tabela.
possvel inserir a subconsulta em vrias clusulas SQL, inclusive nestas:
Clusula WHERE
Clusula HAVING
Clusula FROM
Na sintaxe:
operator inclui uma condio de comparao, como >, = ou IN
Observao: As condies de comparao esto includas em duas classes: operadores
de uma nica linha (>, =, >=, <, <>, <=) e de vrias linhas (IN, ANY, ALL).
Em geral, a subconsulta denominada instruo SELECT interna, sub-SELECT ou
SELECT aninhada. A subconsulta normalmente executada primeiro e o seu resultado
usado para concluir a condio da consulta principal (ou externa).

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-4
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
FROM
WHERE

Usando uma Subconsulta

Copyright 2004, Oracle. Todos os direitos reservados.

Usando uma Subconsulta


No slide, a consulta interna determina o salrio do funcionrio Abel. A consulta externa
recebe o resultado da consulta interna e o utiliza para exibir todos os funcionrios que
ganham mais que essa quantia.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-5
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name
11000
FROM
employees
WHERE salary >
(SELECT salary
FROM
employees
WHERE last_name = 'Abel');

Diretrizes de Uso de Subconsultas

Delimite subconsultas por parnteses.


Posicione subconsultas direita da condio de
comparao.
A clusula ORDER BY no ser necessria na
subconsulta, a menos que uma anlise Top-N seja
executada.
Use operadores de uma nica linha com
subconsultas de uma nica linha e operadores de
vrias linhas com
subconsultas de vrias linhas.

Copyright 2004, Oracle. Todos os direitos reservados.

Diretrizes de Uso de Subconsultas


Uma subconsulta deve ser delimitada por parnteses.
Posicione a subconsulta direita da condio de comparao para fins de legibilidade.
No Oracle8i e em releases mais recentes, uma clusula ORDER BY pode ser usada,
alm de ser obrigatria na subconsulta para executar uma anlise Top-N.
Entretanto, antes do Oracle8i, as subconsultas no podiam conter uma clusula
ORDER BY. Apenas uma clusula ORDER BY era permitida em uma instruo
SELECT e, se fosse especificada, deveria ser a ltima clusula na instruo
SELECT principal.
Duas classes de condies de comparao so usadas em subconsultas: operadores de
uma nica linha e operadores de vrias linhas.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-6
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Tipos de Subconsultas

Subconsulta de uma nica linha


Consulta principal

retorna

ST_CLERK

Subconsulta de vrias linhas


Consulta principal
Subconsulta

retorna

ST_CLERK
SA_MAN

Copyright 2004, Oracle. Todos os direitos reservados.

Tipos de Subconsultas
Subconsultas de uma nica linha: consultas que retornam somente uma linha da
instruo SELECT interna
Subconsultas de vrias linhas: consultas que retornam mais de uma linha da instruo
SELECT interna
Observao: H tambm subconsultas de vrias colunas, ou seja, consultas que retornam
mais de uma coluna da instruo SELECT interna. Elas so abordadas no curso Banco de
Dados Oracle 10g: Fundamentos de SQL II.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-7
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Subconsulta

Subconsultas de uma nica Linha

Retornam somente uma linha


Usam operadores de comparao de uma nica linha

Igual a

>

Maior que

>=

Maior que ou igual a

<

Menor que

<=

Menor que ou igual a

<>

Diferente de

Copyright 2004, Oracle. Todos os direitos reservados.

Subconsultas de uma nica Linha


Uma subconsulta de uma nica linha retorna uma linha da instruo SELECT interna. Esse
tipo de subconsulta usa um operador de uma nica linha. O slide fornece uma lista de
operadores de uma nica linha.
Exemplo
Exiba os funcionrios cujo ID de cargo igual ao do funcionrio 141:
SELECT last_name, job_id
FROM employees
WHERE job_id =
(SELECT job_id
FROM employees
WHERE employee_id = 141);

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-8
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Operador Significado

SELECT last_name, job_id, salary


FROM
employees
ST_CLERK
WHERE job_id =
(SELECT job_id
FROM
employees
WHERE employee_id = 141)
AND
salary >
2600
(SELECT salary
FROM
employees
WHERE employee_id = 143);

Copyright 2004, Oracle. Todos os direitos reservados.

Executando Subconsultas de uma nica Linha


Uma instruo SELECT pode ser considerada um bloco de consulta. O exemplo do slide
mostra os funcionrios cujo ID de cargo igual ao do funcionrio 141 e cujo salrio maior
que o do funcionrio 143.
O exemplo consiste em trs blocos de consulta: a consulta externa e duas consultas internas.
Os blocos de consulta interna so executados primeiro, produzindo os resultados
ST_CLERK e 2600, respectivamente. O bloco de consulta externa processado depois e
usa os valores retornados pelas consultas internas para concluir suas condies de pesquisa.
As duas consultas internas retornam valores nicos (ST_CLERK e 2600, respectivamente);
por isso, essa instruo SQL denominada subconsulta de uma nica linha.
Observao: As consultas internas e externas podem obter dados de tabelas distintas.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-9
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Executando Subconsultas de uma nica Linha

Usando Functions de
Grupo em uma Subconsulta

Copyright 2004, Oracle. Todos os direitos reservados.

Usando Functions de Grupo em uma Subconsulta


possvel exibir dados de uma consulta principal usando uma function de grupo em uma
subconsulta para retornar uma nica linha. A subconsulta delimitada por parnteses e
posicionada aps a condio de comparao.
O exemplo do slide mostra o sobrenome, o ID do cargo e o salrio de todos os funcionrios
cujo salrio igual ao salrio mnimo. A function de grupo MIN retorna um nico valor
(2500) para a consulta externa.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-10
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name, job_id, salary


2500
FROM
employees
WHERE salary =
(SELECT MIN(salary)
FROM
employees);

A Clusula HAVING com Subconsultas


O servidor Oracle executa primeiro as subconsultas.
Ele retorna os resultados para a clusula HAVING da
consulta principal.
SELECT
FROM
GROUP BY
HAVING

department_id, MIN(salary)
employees
department_id
2500
MIN(salary) >
(SELECT MIN(salary)
FROM
employees
WHERE department_id = 50);

Copyright 2004, Oracle. Todos os direitos reservados.

A Clusula HAVING com Subconsultas


possvel usar subconsultas tanto na clusula WHERE como na clusula HAVING. O
servidor Oracle executa a subconsulta, e os resultados so retornados para a clusula
HAVING da consulta principal.
A instruo SQL do slide mostra todos os departamentos cujo salrio mnimo maior
que o do departamento 50.

Exemplo
Localize o cargo com o menor salrio mdio.
SELECT
job_id, AVG(salary)
FROM employees
GROUP BY job_id
HAVING
AVG(salary) = (SELECT
MIN(AVG(salary))
FROM employees
GROUP BY job_id);
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-11
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

O Que Est Errado Nesta Instruo?

ERROR at line 4:
ORA-01427: single-row subquery returns more than
one row

Operador de uma nica linha com


uma subconsulta de vrias linhas

Copyright 2004, Oracle. Todos os direitos reservados.

Erros com Subconsultas


Um erro comum com subconsultas ocorre quando mais de uma linha retornada para uma
subconsulta de uma nica linha.
Na instruo SQL do slide, a subconsulta contm uma clusula GROUP BY, o que significa
que ela retornar vrias linhas, uma para cada grupo localizado. Nesse caso, os resultados da
subconsulta so 4400, 6000, 2500, 4200, 7000, 17000 e 8300.
A consulta externa recebe esses resultados e os utiliza em sua clusula WHERE. A clusula
WHERE contm um operador de igual a (=), que um operador de comparao de uma
nica linha que espera apenas um valor. Esse operador no pode aceitar mais de um valor
da subconsulta e, portanto, gera o erro.
Para corrigir esse erro, altere o operador = para IN.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-12
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT employee_id, last_name


FROM
employees
WHERE salary =
(SELECT
MIN(salary)
FROM
employees
GROUP BY department_id);

Esta Instruo Retornar Linhas?

no rows selected

A subconsulta no retorna nenhum valor.

Copyright 2004, Oracle. Todos os direitos reservados.

Problemas com Subconsultas


Um problema comum com subconsultas ocorre quando nenhuma linha retornada pela
consulta interna.
Na instruo SQL do slide, a subconsulta contm uma clusula WHERE. Presumivelmente, o
objetivo localizar o funcionrio cujo nome Haas. A instruo est correta, mas no
seleciona nenhuma linha quando executada.
No h nenhum funcionrio com esse nome. Por isso, a subconsulta no retorna nenhuma
linha. A consulta externa recebe o resultado da subconsulta (nulo) e o utiliza em sua
clusula WHERE. Ela no encontra nenhum funcionrio com o ID de cargo igual a nulo e,
portanto, no retorna nenhuma linha. Se existisse um cargo com o valor nulo, a linha no
seria retornada porque a comparao de dois valores nulos resulta em um valor nulo; assim,
a condio WHERE no verdadeira.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-13
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT last_name, job_id


FROM
employees
WHERE job_id =
(SELECT job_id
FROM
employees
WHERE last_name = 'Haas');

Subconsultas de Vrias Linhas


Retornam mais de uma linha
Usam operadores de comparao de vrias linhas
Operador

Significado

IN

Igual a qualquer membro da lista

ANY

Compara o valor com cada valor retornado


pela subconsulta

ALL

Compara o valor com todos os valores


retornados pela subconsulta

Copyright 2004, Oracle. Todos os direitos reservados.

Subconsultas de Vrias Linhas


As subconsultas que retornam mais de uma linha so denominadas subconsultas de vrias
linhas. Com uma subconsulta de vrias linhas, voc usa um operador de vrias linhas, em
vez de um operador de uma nica linha. O operador de vrias linhas espera um ou mais
valores:
SELECT last_name, salary, department_id
FROM employees
WHERE salary IN (SELECT
MIN(salary)
FROM employees
GROUP BY department_id);

Exemplo
Localize os funcionrios cujo salrio igual ao salrio mnimo em cada departamento.
A consulta interna executada primeiro e produz um resultado. O bloco de consulta
principal processado depois e usa os valores retornados pela consulta interna para concluir
sua condio de pesquisa. Na verdade, a consulta principal aparece para o servidor Oracle
da seguinte forma:
SELECT last_name, salary, department_id
FROM employees
WHERE salary IN (2500, 4200, 4400, 6000, 7000, 8300,
8600, 17000);
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-14
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usando o Operador ANY


em Subconsultas de Vrias Linhas

Copyright 2004, Oracle. Todos os direitos reservados.

Subconsultas de Vrias Linhas (continuao)


O operador ANY (e seu sinnimo, o operador SOME) compara um valor a cada valor
retornado por uma subconsulta. O exemplo do slide mostra os funcionrios que no so
programadores de computao e cujo salrio menor que o de qualquer programador de
computao. O salrio mximo de um programador US$9.000.
<ANY significa menor que o mximo. >ANY significa maior que o mnimo. =ANY equivale a
IN.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-15
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT employee_id, last_name, job_id, salary


FROM
employees
9000, 6000, 4200
WHERE salary < ANY
(SELECT salary
FROM
employees
WHERE job_id = 'IT_PROG')
AND
job_id <> 'IT_PROG';

Usando o Operador ALL


em Subconsultas de Vrias Linhas

Copyright 2004, Oracle. Todos os direitos reservados.

Subconsultas de Vrias Linhas (continuao)


O operador ALL compara um valor com todos os valores retornados por uma subconsulta. O
exemplo do slide mostra os funcionrios cujo salrio menor que o salrio de todos os
funcionrios com o ID de cargo IT_PROG e cujo cargo no IT_PROG.
>ALL significa maior que o mximo e <ALL significa menor que o mnimo.
possvel usar o operador NOT com os operadores IN, ANY e ALL.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-16
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT employee_id, last_name, job_id, salary


FROM
employees
9000, 6000, 4200
WHERE salary < ALL
(SELECT salary
FROM
employees
WHERE job_id = 'IT_PROG')
AND
job_id <> 'IT_PROG';

Valores Nulos em uma Subconsulta


SELECT emp.last_name
FROM
employees emp
WHERE emp.employee_id NOT IN
(SELECT mgr.manager_id
FROM
employees mgr);

Copyright 2004, Oracle. Todos os direitos reservados.

Retornando Valores Nulos no Conjunto Resultante de uma Subconsulta


A instruo SQL do slide tenta exibir todos os funcionrios sem subordinados.
Logicamente, essa instruo deveria ter retornado 12 linhas. No entanto, ela no retorna
nenhuma linha. Um dos valores retornados pela consulta interna um valor nulo e, por isso,
a consulta inteira no retorna nenhuma linha.
O motivo que todas as condies que comparam um valor nulo resultam em um valor
nulo. Dessa forma, sempre que houver a possibilidade de valores nulos integrarem o
conjunto de resultados de uma subconsulta, no use o operador NOT IN. Esse operador
corresponde a <> ALL.
Observe que o valor nulo como parte do conjunto de resultados de uma subconsulta no
representa um problema se voc usa o operador IN. Esse operador corresponde a =ANY. Por
exemplo, para exibir os funcionrios com subordinados, use a seguinte instruo SQL:
SELECT emp.last_name
FROM
employees emp
WHERE emp.employee_id

IN
(SELECT mgr.manager_id
FROM
employees mgr);

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-17
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

no rows selected

Retornando Valores Nulos no Conjunto Resultante de uma Subconsulta


(continuao)
Como alternativa, possvel incluir uma clusula WHERE na subconsulta para exibir todos
os funcionrios sem subordinados:

Oracle University and Impacta Tecnologia use only

SELECT last_name FROM


employees
WHERE employee_id NOT IN
(SELECT manager_id
FROM employees
WHERE manager_id IS NOT NULL);

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-18
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Sumrio

Identificar quando uma subconsulta pode ajudar a


solucionar um problema

Criar subconsultas quando uma consulta se basear


em valores desconhecidos
SELECT
FROM
WHERE

select_list
table
expr operator
(SELECT select_list
FROM
table);

Copyright 2004, Oracle. Todos os direitos reservados.

Sumrio
Nesta lio, voc aprendeu a usar subconsultas. Uma subconsulta uma instruo SELECT
incorporada a uma clusula de outra instruo SQL. As subconsultas so teis quando uma
consulta se baseia em um critrio de pesquisa com valores intermedirios desconhecidos.
As subconsultas apresentam as seguintes caractersticas:
Podem passar uma linha de dados para uma instruo principal que contm um
operador de uma nica linha, como =, <>, >, >=, < ou <=
Podem passar vrias linhas de dados para uma instruo principal que contm um
operador de vrias linhas, como IN
So processadas primeiro pelo servidor Oracle. Em seguida, a clusula WHERE ou
HAVING utiliza os resultados
Podem conter functions de grupo

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-19
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Nesta lio, voc aprendeu a:

Exerccio 6: Viso Geral

Criao de subconsultas para consultar valores


baseados em critrios desconhecidos

Utilizao de subconsultas para descobrir os valores


existentes em um conjunto de dados, e no em outro

Copyright 2004, Oracle. Todos os direitos reservados.

Exerccio 6: Viso Geral


Neste exerccio, voc criar consultas complexas com instrues SELECT aninhadas.
Perguntas Impressas
Convm criar a consulta interna primeiro para estas perguntas. Certifique-se de que ela seja
executada e gere os dados previstos antes de voc codificar a consulta externa.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-20
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Este exerccio aborda os seguintes tpicos:

Exerccio 6

2. Crie um relatrio que exiba o nmero e o sobrenome de todos os funcionrios cujo


salrio maior que o salrio mdio. Classifique os resultados em ordem crescente de
salrio.

3. Crie uma consulta que exiba o nmero e o sobrenome de todos os funcionrios que
trabalham em um departamento com funcionrios cujos sobrenomes contm a letra
u. Inclua a instruo SQL no arquivo de texto lab_06_03.sql. Execute a
consulta.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-21
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

1. O departamento de recursos humanos precisa de uma consulta que solicite ao


usurio o sobrenome de um funcionrio. A consulta exibe o sobrenome e a data de
admisso de todos os funcionrios no mesmo departamento do funcionrio cujo
nome foi fornecido (excluindo esse funcionrio). Por exemplo, se o usurio informar
Zlotkey, sero exibidos todos os funcionrios que trabalham com Zlotkey
(excluindo ele prprio).

Exerccio 6 (continuao)

Modifique a consulta para que um ID de local seja solicitado ao usurio. Salve-a no


arquivo lab_06_04.sql.
5. Crie um relatrio para o departamento de recursos humanos que exiba o sobrenome
e o salrio de todos os funcionrios subordinados a King.

6. Crie um relatrio para o departamento de recursos humanos que exiba o nmero do


departamento, o sobrenome e o ID do cargo de todos os funcionrios no
departamento executivo.

Se tiver tempo, faa o seguinte exerccio:


7. Modifique a consulta em lab_06_03.sql para exibir o nmero, o sobrenome,
bem como o salrio de todos os funcionrios que ganham mais que o salrio mdio e
trabalham em um departamento com funcionrios cujos sobrenomes contm a letra
u. Salve novamente lab_06_03.sql como lab_06_07.sql. Execute a
instruo em lab_06_07.sql.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 6-22
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

4. O departamento de recursos humanos precisa de um relatrio que exiba o


sobrenome, o nmero do departamento e o ID do cargo de todos os funcionrios
cujo ID de local do departamento 1700.

Copyright 2004, Oracle. Todos os direitos reservados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usando os Operadores de Conjunto

Objetivos
Ao concluir esta lio, voc ser capaz de:

Descrever os operadores de conjunto

Controlar a ordem das linhas retornadas

Copyright 2004, Oracle. Todos os direitos reservados.

Objetivos
Nesta lio, voc aprender a criar consultas com os operadores de conjunto.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-2
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usar um operador de conjunto para combinar vrias


consultas em uma s

Operadores de Conjunto
A

UNION/UNION ALL

INTERSECT

MINUS

Copyright 2004, Oracle. Todos os direitos reservados.

Operadores de Conjunto
Os operadores de conjunto combinam os resultados de duas ou mais consultas componentes
em um resultado. As consultas que contm operadores de conjunto so denominadas
consultas compostas.
Operador

Retorna

UNION

Todas as linhas distintas selecionadas por qualquer uma das consultas

UNION ALL

Todas as linhas selecionadas por qualquer uma das consultas, inclusive


as linhas duplicadas

INTERSECT

Todas as linhas distintas selecionadas pelas duas consultas

MINUS

Todas as linhas distintas selecionadas pela primeira instruo SELECT


e no selecionadas na segunda instruo SELECT

Todos os operadores de conjunto tm a mesma precedncia. Se uma instruo SQL contiver


vrios operadores de conjunto, o servidor Oracle os avaliar da esquerda (superior) para a
direita (inferior) caso no haja parnteses especificando explicitamente outra ordem. Use
parnteses para especificar explicitamente a ordem de avaliao nas consultas que utilizam
o operador INTERSECT com outros operadores de conjunto.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-3
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

As tabelas usadas nesta lio so:


EMPLOYEES: Fornece detalhes sobre todos os
funcionrios atuais
JOB_HISTORY: Registra os detalhes relativos s
datas inicial e final do cargo antigo, ao nmero de
identificao do cargo e ao departamento quando
um funcionrio muda de cargo

Copyright 2004, Oracle. Todos os direitos reservados.

Tabelas Usadas Nesta Lio


Duas tabelas so usadas nesta lio: EMPLOYEES e JOB_HISTORY.
A tabela EMPLOYEES armazena detalhes dos funcionrios. Nos registros de recursos
humanos, essa tabela armazena um nmero de identificao exclusivo e um endereo de email para cada funcionrio. Tambm so armazenados os detalhes do nmero de
identificao de cargo, salrio e gerente do funcionrio. Alm do salrio, alguns
funcionrios recebem comisso, e essa informao tambm rastreada. A empresa organiza
as atribuies dos funcionrios em cargos. Alguns funcionrios trabalham h muito tempo
na empresa e passaram por cargos diferentes. Essas informaes so monitoradas com a
tabela JOB_HISTORY. Quando um funcionrio muda de cargo, os detalhes relativos s
datas inicial e final do cargo antigo, ao nmero de identificao do cargo e ao departamento
so registrados na tabela JOB_HISTORY.
A estrutura e os dados das tabelas EMPLOYEES e JOB_HISTORY so mostrados nas
pginas seguintes.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-4
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Tabelas Usadas Nesta Lio

Tabelas Usadas Nesta Lio (continuao)


Houve casos na empresa de pessoas que ocuparam o mesmo cargo mais de uma vez durante
a sua permanncia nesse estabelecimento. Por exemplo, considere o funcionrio Taylor,
admitido na empresa em 24-MAR-1998. Taylor ocupou o cargo SA_REP de 24-MAR-98 a
31-DEC-98 e o cargo SA_MAN de 01-JAN-99 a 31-DEC-99. Ele voltou para o cargo
SA_REP, que o seu cargo atual.
Da mesma forma, considere o funcionrio Whalen, admitido na empresa em 17-SEP-1987.
Whalen ocupou o cargo AD_ASST de 17-SEP-87 a 17-JUN-93 e o cargo AC_ACCOUNT de
01-JUL-94 a 31-DEC-98. Ele voltou para o cargo AD_ASST, que o seu cargo atual.

Oracle University and Impacta Tecnologia use only

DESCRIBE employees

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-5
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Tabelas Usadas Nesta Lio (continuao)


SELECT employee_id, last_name, job_id, hire_date, department_id

DESCRIBE job_history

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-6
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

FROM employees;

Tabelas Usadas Nesta Lio (continuao)

Oracle University and Impacta Tecnologia use only

SELECT * FROM job_history;

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-7
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Operador UNION
B

O operador UNION retorna resultados das duas


consultas aps eliminar os valores duplicados.
Copyright 2004, Oracle. Todos os direitos reservados.

Operador UNION
O operador UNION retorna todas as linhas selecionadas pelas consultas. Utilize-o para
retornar todas as linhas de vrias tabelas e eliminar linhas duplicadas.
Diretrizes
O nmero de colunas e os tipos de dados das colunas selecionadas devem ser idnticos
em todas as instrues SELECT usadas na consulta. Os nomes das colunas no
precisam ser idnticos.
UNION opera em todas as colunas selecionadas.
Os valores nulos no so ignorados durante a verificao de valores duplicados.
O operador IN tem precedncia em relao ao operador UNION.
Por default, a sada classificada em ordem crescente da primeira coluna da clusula
SELECT.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-8
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usando o Operador UNION


Exiba os detalhes dos cargos atual e anterior de todos
os funcionrios. Exiba cada funcionrio apenas uma vez.
employee_id, job_id
employees
employee_id, job_id
job_history;

Copyright 2004, Oracle. Todos os direitos reservados.

Usando o Operador UNION


O operador UNION elimina registros duplicados. Se houver registros idnticos nas tabelas
EMPLOYEES e JOB_HISTORY, eles sero exibidos apenas uma vez. Na sada mostrada no
slide, observe que o registro para o funcionrio com EMPLOYEE_ID 200 aparece duas
vezes, j que o valor em JOB_ID diferente em cada linha.
Considere o seguinte exemplo:
SELECT employee_id, job_id, department_id
FROM employees
UNION
SELECT employee_id, job_id, department_id
FROM
job_history;

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-9
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
FROM
UNION
SELECT
FROM

Usando o Operador UNION (continuao)

Oracle University and Impacta Tecnologia use only

Na sada anterior, o funcionrio 200 aparece trs vezes. Por qu? Observe os valores de
DEPARTMENT_ID relativos a esse funcionrio. O valor de DEPARTMENT_ID em uma
linha 90, em outra 10 e na terceira 90. Em funo dessas combinaes exclusivas de
IDs de cargo e IDs de departamento, cada linha relativa ao funcionrio 200 exclusiva e,
por isso, no considerada duplicada. Observe que a sada classificada em ordem
crescente da primeira coluna da clusula SELECT (nesse caso, EMPLOYEE_ID).

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-10
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Operador UNION ALL


B

O operador UNION ALL retorna resultados das duas


consultas, inclusive todos os valores duplicados.
Copyright 2004, Oracle. Todos os direitos reservados.

Operador UNION ALL


Use o operador UNION ALL para retornar todas as linhas de vrias consultas.
Diretrizes
As diretrizes para UNION e UNION ALL so as mesmas, apenas com duas excees
relativas a UNION ALL:
Ao contrrio de UNION, as linhas duplicadas no so eliminadas e, por default, a sada
no classificada.
A palavra-chave DISTINCT no pode ser usada.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-11
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usando o Operador UNION ALL

SELECT employee_id, job_id, department_id


FROM
employees
UNION ALL
SELECT employee_id, job_id, department_id
FROM
job_history
ORDER BY employee_id;

Copyright 2004, Oracle. Todos os direitos reservados.

Operador UNION ALL (continuao)


No exemplo, so selecionadas 30 linhas. A combinao das duas tabelas totaliza 30 linhas.
O operador UNION ALL no elimina linhas duplicadas. UNION retorna todas as linhas
distintas selecionadas pelas consultas. UNION ALL retorna todas as linhas selecionadas
pelas consultas, inclusive todas as duplicadas. Considere a consulta do slide, criada agora
com a clusula UNION:
SELECT employee_id, job_id,department_id
FROM
employees
UNION
SELECT employee_id, job_id,department_id
FROM
job_history
ORDER BY employee_id;

A consulta anterior retorna 29 linhas. Isso porque ela elimina a seguinte linha (j que ela
duplicada):

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-12
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Exiba os departamentos anterior e atual de todos os


funcionrios.

Operador INTERSECT
B

O operador INTERSECT retorna linhas


comuns s duas consultas.
Copyright 2004, Oracle. Todos os direitos reservados.

Operador INTERSECT
Use o operador INTERSECT para retornar todas as linhas comuns a vrias consultas.
Diretrizes
O nmero de colunas e os tipos de dados das colunas selecionadas pelas instrues
SELECT nas consultas devem ser idnticos em todas as instrues SELECT usadas na
consulta. Os nomes das colunas no precisam ser idnticos.
O resultado no alterado quando invertida a ordem das tabelas de interseo.
INTERSECT no ignora valores nulos.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-13
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usando o Operador INTERSECT

SELECT employee_id, job_id


FROM
employees
INTERSECT
SELECT employee_id, job_id
FROM
job_history;

Copyright 2004, Oracle. Todos os direitos reservados.

Operador INTERSECT (continuao)


No exemplo do slide, a consulta retorna apenas os registros com os mesmos valores nas
colunas selecionadas das duas tabelas.
Quais sero os resultados se voc adicionar a coluna DEPARTMENT_ID instruo
SELECT da tabela EMPLOYEES, adicionar a coluna DEPARTMENT_ID instruo
SELECT da tabela JOB_HISTORY e executar essa consulta? Os resultados podero ser
diferentes em funo da incluso de outra coluna cujos valores podem ou no ser
duplicados.
Exemplo
SELECT employee_id, job_id, department_id
FROM employees
INTERSECT
SELECT employee_id, job_id, department_id
FROM
job_history;

O funcionrio 200 no est mais includo nos resultados, pois o valor de


EMPLOYEES.DEPARTMENT_ID diferente do valor de
JOB_HISTORY.DEPARTMENT_ID.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-14
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Exiba os IDs de funcionrio e os IDs de cargo dos


funcionrios que, no momento, esto no mesmo cargo
que ocupavam quando foram admitidos pela empresa
(ou seja, eles mudaram de cargo, mas agora voltaram
para o cargo original).

Operador MINUS
B

O operador MINUS retorna as linhas da primeira consulta


que no esto presentes na segunda consulta.
Copyright 2004, Oracle. Todos os direitos reservados.

Operador MINUS
Use o operador MINUS para exibir as linhas retornadas pela primeira consulta que no esto
presentes na segunda consulta (a primeira instruo SELECT subtrada da segunda instruo
SELECT).
Diretrizes
O nmero de colunas e os tipos de dados das colunas selecionadas pelas instrues
SELECT nas consultas devem ser idnticos em todas as instrues SELECT usadas na
consulta. Os nomes das colunas no precisam ser idnticos.
Todas as colunas da clusula WHERE devem estar presentes na clusula SELECT para
que o operador MINUS seja executado.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-15
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Operador MINUS
Exiba os IDs dos funcionrios que nunca mudaram
de cargo.
employee_id,job_id
employees
employee_id,job_id
job_history;

Copyright 2004, Oracle. Todos os direitos reservados.

Operador MINUS (continuao)


No exemplo do slide, os IDs de funcionrio e os IDs de cargo na tabela JOB_HISTORY so
subtrados dos IDs correspondentes na tabela EMPLOYEES. O conjunto de resultados exibe
os funcionrios restantes aps a subtrao; eles so representados pelas linhas existentes na
tabela EMPLOYEES, mas que no esto presentes na tabela JOB_HISTORY. Esses registros
so relativos aos funcionrios que nunca mudaram de cargo.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-16
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
FROM
MINUS
SELECT
FROM

As expresses das listas SELECT devem


corresponder em nmero e tipo de dados.

possvel usar parnteses para alterar a seqncia


de execuo.
A clusula ORDER BY:

S pode aparecer no final da instruo


Aceitar o nome da coluna, os apelidos da primeira
instruo SELECT ou a notao posicional

Copyright 2004, Oracle. Todos os direitos reservados.

Diretrizes de Operadores de Conjunto


As expresses nas listas de seleo das consultas devem corresponder em nmero e
tipo de dados. As consultas que usam operadores UNION, UNION ALL, INTERSECT
e MINUS na clusula WHERE devem ter o mesmo nmero e tipo das colunas da lista
SELECT. Por exemplo:
SELECT employee_id, department_id
FROM employees
WHERE (employee_id, department_id)
IN (SELECT employee_id, department_id
FROM employees
UNION
SELECT employee_id, department_id
FROM
job_history);

A clusula ORDER BY:


S pode aparecer no final da instruo
Aceitar o nome da coluna, um apelido ou a notao posicional
O nome ou o apelido da coluna, se usado em uma clusula ORDER BY, dever
originar-se da primeira lista SELECT.
possvel usar operadores de conjunto em subconsultas.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-17
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Diretrizes de Operadores de Conjunto

As linhas duplicadas so eliminadas


automaticamente, exceto em UNION ALL.

Os nomes das colunas da primeira consulta


aparecem no resultado.

Por default, a sada classificada em ordem


crescente, exceto em UNION ALL.

Copyright 2004, Oracle. Todos os direitos reservados.

O Servidor Oracle e os Operadores de Conjunto


Quando uma consulta usa operadores de conjunto, o servidor Oracle elimina as linhas
duplicadas automaticamente, exceto no caso do operador UNION ALL. Os nomes das
colunas na sada so decididos pela lista de colunas da primeira instruo SELECT. Por
default, a sada classificada em ordem crescente da primeira coluna da clusula SELECT.
As expresses correspondentes nas listas de seleo das consultas componentes de uma
consulta composta devem coincidir em nmero e tipo de dados. Se as consultas
componentes selecionarem dados de caractere, o tipo de dados dos valores retornados ser
determinado da seguinte maneira:
Se as duas consultas selecionarem valores do tipo de dados CHAR, os valores
retornados tero esse tipo de dados.
Se uma ou as duas consultas selecionarem valores do tipo de dados VARCHAR2, os
valores retornados tero esse tipo de dados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-18
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

O Servidor Oracle e os Operadores de Conjunto

Correspondncia entre Instrues SELECT

SELECT department_id, TO_NUMBER(null)


location, hire_date
FROM
employees
UNION
SELECT department_id, location_id, TO_DATE(null)
FROM
departments;

Copyright 2004, Oracle. Todos os direitos reservados.

Correspondncia entre Instrues SELECT


Como as expresses nas listas de seleo das consultas devem corresponder em nmero,
voc pode usar colunas fictcias e as functions de converso de tipos de dados para seguir
essa regra. No slide, a localizao do nome fornecida como o cabealho da coluna
fictcia. A function TO_NUMBER usada na primeira consulta para corresponder ao tipo de
dados NUMBER da coluna LOCATION_ID recuperada pela segunda consulta. Da mesma
forma, a function TO_DATE na segunda consulta usada para corresponder ao tipo de
dados DATE da coluna HIRE_DATE recuperada pela primeira consulta.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-19
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Com o operador UNION, exiba o ID de departamento, a


localizao e a data de admisso de todos os funcionrios.

Correspondncia entre Instrues SELECT:


Exemplo
Com o operador UNION, exiba o ID de funcionrio, o ID
do cargo e o salrio de todos os funcionrios.
employee_id, job_id,salary
employees
employee_id, job_id,0
job_history;

Copyright 2004, Oracle. Todos os direitos reservados.

Correspondncia entre Instrues SELECT: Exemplo


As tabelas EMPLOYEES e JOB_HISTORY tm vrias colunas em comum (por exemplo,
EMPLOYEE_ID, JOB_ID e DEPARTMENT_ID). Mas e se voc quiser que a consulta
exiba o ID de funcionrio, o ID de cargo e o salrio com o operador UNION, sabendo que o
salrio existe apenas na tabela EMPLOYEES?
O exemplo de cdigo do slide estabelece a correspondncia entre as colunas
EMPLOYEE_ID e JOB_ID das tabelas EMPLOYEES e JOB_HISTORY. Um valor literal 0
adicionado instruo SELECT de JOB_HISTORY para corresponder coluna numrica
SALARY na instruo SELECT de EMPLOYEES.
Nos resultados anteriores, cada linha da sada que corresponde a um registro da tabela
JOB_HISTORY contm 0 na coluna SALARY.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-20
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT
FROM
UNION
SELECT
FROM

Controlando a Ordem das Linhas

COLUMN a_dummy NOPRINT


SELECT 'sing' AS "My dream", 3 a_dummy
FROM dual
UNION
SELECT 'I''d like to teach', 1 a_dummy
FROM dual
UNION
SELECT 'the world to', 2 a_dummy
FROM dual
ORDER BY a_dummy;

Copyright 2004, Oracle. Todos os direitos reservados.

Controlando a Ordem das Linhas


Por default, a sada classificada em ordem crescente na primeira coluna. Voc pode usar a
clusula ORDER BY para alterar essa classificao.
S possvel usar a clusula ORDER BY uma vez em uma consulta composta. Se usada,
essa clusula dever ser inserida no final da consulta. A clusula ORDER BY aceita o nome
da coluna ou um apelido. Sem a clusula ORDER BY, o exemplo de cdigo do slide produz
a seguinte sada na ordem alfabtica da primeira coluna:

Observao: Considere uma consulta composta em que o operador de conjunto UNION


usado mais de uma vez. Nesse caso, a clusula ORDER BY s pode usar posies em vez de
expresses explcitas.
O Comando iSQL*Plus COLUMN
possvel usar o comando iSQL*Plus COLUMN para personalizar cabealhos de colunas.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-21
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Produza uma frase em ingls usando dois operadores


UNION.

O Comando iSQL*Plus COLUMN (continuao)


Sintaxe:
COL[UMN] [{column|alias} [option]]

Em que OPTION :

A instruo a seguir suprime os dados e o cabealho da coluna A_DUMMY. Observe que a


primeira clusula SELECT do slide anterior cria uma coluna fictcia denominada
A_DUMMY.
COLUMN a_dummy NOPRINT

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-22
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

CLE[AR]: Remove todos os formatos de coluna


HEA[DING] texto: Define o cabealho da coluna
FOR[MAT] formato: Altera a exibio da coluna usando um modelo de formato
NOPRINT | PRINT: Suprime ou exibe os dados e os cabealhos de colunas
NULL

Sumrio

Usar UNION ALL para retornar todas as linhas,


inclusive as duplicadas
Usar INTERSECT para retornar todas as linhas
compartilhadas pelas duas consultas
Usar MINUS para retornar todas as linhas distintas
selecionadas pela primeira consulta, mas no pela
segunda
Usar ORDER BY somente no final da instruo

Copyright 2004, Oracle. Todos os direitos reservados.

Sumrio
O operador UNION retorna todas as linhas selecionadas pelas consultas. Utilize-o para
retornar todas as linhas de vrias tabelas e eliminar linhas duplicadas.
Use o operador UNION ALL para retornar todas as linhas de vrias consultas. Ao
contrrio do que ocorre com o operador UNION, as linhas duplicadas no so
eliminadas e, por default, a sada no classificada.
Use o operador INTERSECT para retornar todas as linhas comuns a vrias consultas.
Use o operador MINUS para exibir as linhas retornadas pela primeira consulta que no
esto presentes na segunda consulta.
Lembre-se de usar a clusula ORDER BY somente no final da instruo composta.
Certifique-se de que as expresses correspondentes nas listas SELECT coincidem em
nmero e tipo de dados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-23
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Nesta lio, voc aprendeu a:


Usar UNION para retornar todas as linhas distintas

Exerccio 7: Viso Geral


Neste exerccio, voc usar os operadores de conjunto
para criar relatrios:
Usando o operador UNION
Usando o operador INTERSECTION
Usando o operador MINUS

Copyright 2004, Oracle. Todos os direitos reservados.

Exerccio 7: Viso Geral


Neste exerccio, voc criar consultas com os operadores de conjunto.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-24
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Exerccio 7

2. O departamento de recursos humanos precisa de uma lista de pases nos quais no h


departamentos. Exiba o ID e o nome dos pases. Use os operadores de conjunto para
criar esse relatrio.

3.

Produza uma lista de cargos dos departamentos 10, 50 e 20, nessa ordem. Exiba o ID
de cargo e o ID de departamento usando operadores de conjunto.

4. Crie um relatrio que liste os IDs de funcionrio e os IDs de cargo dos funcionrios
que, no momento, esto no mesmo cargo que ocupavam quando foram admitidos
pela empresa (ou seja, eles mudaram de cargo, mas agora voltaram para o cargo
original).

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-25
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

1. O departamento de recursos humanos precisa de uma lista de IDs dos departamentos


que no contm o ID de cargo ST_CLERK. Use os operadores de conjunto para criar
esse relatrio.

Oracle University and Impacta Tecnologia use only

Exerccio 7 (continuao)
5. O departamento de recursos humanos precisa de um relatrio com as seguintes
especificaes:
Sobrenome e ID do departamento de todos os funcionrios da tabela
EMPLOYEES, mesmo que no pertenam a um departamento
ID e nome de todos os departamentos da tabela DEPARTMENTS, mesmo que no
tenham funcionrios
Crie uma consulta composta para isso.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 7-26
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Copyright 2004, Oracle. Todos os direitos reservados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Manipulando Dados

Objetivos
Ao concluir esta lio, voc ser capaz de:

Descrever cada instruo DML (Data Manipulation


Language)

Inserir linhas em uma tabela


Deletar linhas de uma tabela
Controlar transaes

Copyright 2004, Oracle. Todos os direitos reservados.

Objetivo
Nesta lio, voc aprender a usar instrues DML para inserir linhas em uma tabela,
atualizar as linhas existentes em uma tabela e deletar as linhas existentes de uma tabela.
Voc tambm aprender a controlar transaes com as instrues COMMIT, SAVEPOINT e
ROLLBACK.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-2
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Atualizar linhas em uma tabela

Data Manipulation Language

Uma instruo DML executada quando voc:

Uma transao consiste em um conjunto de


instrues DML que formam uma unidade lgica de
trabalho.

Copyright 2004, Oracle. Todos os direitos reservados.

Data Manipulation Language


A DML (Data Manipulation Language) uma parte essencial de SQL. Para adicionar,
atualizar ou deletar dados no banco de dados, execute uma instruo DML. Um conjunto de
instrues DML que formam uma unidade lgica de trabalho chamado de transao.
Considere um banco de dados de uma instituio bancria. Quando um cliente do banco
transfere dinheiro da poupana para a conta corrente, a transao pode consistir em trs
operaes distintas: diminuio da poupana, aumento da conta corrente e registro da
transao no dirio de transaes. O servidor Oracle deve garantir a execuo de todas as
trs instrues SQL para manter as contas com os saldos corretos. Quando algo impedir a
execuo de uma das instrues da transao, ser necessrio desfazer as outras.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-3
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Adiciona novas linhas a uma tabela


Modifica as linhas existentes de uma tabela
Remove as linhas existentes de uma tabela

Adicionando uma Nova Linha a uma Tabela


Nova
linha

DEPARTMENTS

Copyright 2004, Oracle. Todos os direitos reservados.

Adicionando uma Nova Linha a uma Tabela


O slide mostra a adio de um novo departamento tabela DEPARTMENTS.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-4
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Insira uma nova


linha na tabela
DEPARTMENTS

Sintaxe da Instruo INSERT


Adicione novas linhas a uma tabela usando a
instruo INSERT:

INSERT INTO
VALUES

table [(column [, column...])]


(value [, value...]);

Com esta sintaxe, apenas uma linha inserida


por vez.

Copyright 2004, Oracle. Todos os direitos reservados.

Adicionando uma Nova Linha a uma Tabela (continuao)


possvel adicionar novas linhas a uma tabela executando a instruo INSERT.
Na sintaxe:
table
column
value

o nome da tabela
o nome da coluna da tabela a ser preenchida
o valor correspondente da coluna

Observao: Esta instruo com a clusula VALUES adiciona somente uma linha por vez a
uma tabela.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-5
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Inserindo Novas Linhas

Insira uma nova linha com valores para cada coluna.

Como alternativa, liste as colunas na clusula


INSERT.

INSERT INTO departments(department_id,


department_name, manager_id, location_id)
VALUES (70, 'Public Relations', 100, 1700);
1 row created.

Delimite os valores de caractere e data com aspas


simples.

Copyright 2004, Oracle. Todos os direitos reservados.

Adicionando uma Nova Linha a uma Tabela (continuao)


Como possvel inserir uma nova linha com valores para cada coluna, a lista de colunas
no necessria na clusula INSERT. No entanto, se voc no usar a lista de colunas, os
valores devero ser listados de acordo com a ordem default das colunas na tabela e um valor
dever ser fornecido para cada coluna.
DESCRIBE

departments

Para fins de clareza, use a lista de colunas na clusula INSERT.


Delimite os valores de caractere e data com aspas simples; no recomendvel delimitar
valores numricos com aspas simples.
Os valores numricos no devem ser delimitados com aspas simples, j que poder ocorrer
converso implcita dos valores numricos designados s colunas com o tipo de dados
NUMBER se forem includas aspas simples.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-6
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Liste os valores na ordem default das colunas na


tabela.

Inserindo Linhas com Valores Nulos

Mtodo implcito: omita a coluna da lista de colunas.

INSERT INTO

Mtodo explcito: especifique a palavra-chave NULL


na clusula VALUES.

INSERT INTO departments


VALUES
(100, 'Finance', NULL, NULL);
1 row created.

Copyright 2004, Oracle. Todos os direitos reservados.

Mtodos para Inserir Valores Nulos


Mtodo

Descrio

Implcito

Omita a coluna da
lista de colunas.
Especifique a palavra-chave NULL na lista VALUES;
especifique a string vazia ('') na lista VALUES para strings de
caracteres e datas.

Explcito

Certifique-se de que a coluna de destino permita valores nulos verificando o status Null?
com o comando DESCRIBE do iSQL*Plus.
O servidor Oracle impe automaticamente todos os tipos de dados, faixas de dados e
constraints de integridade de dados. Todas as colunas no listadas explicitamente obtm um
valor nulo na nova linha.
Erros comuns que podem ocorrer durante a entrada do usurio:
Valor obrigatrio ausente para uma coluna NOT NULL
Constraint de exclusividade violada por valor duplicado
Constraint de chave estrangeira violada
Constraint CHECK violada
Incompatibilidade de tipo de dados
Valor muito extenso para caber na coluna
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-7
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

departments (department_id,
department_name
VALUES
(30, 'Purchasing');
1 row created.

Inserindo Valores Especiais

INSERT INTO employees (employee_id,


first_name, last_name,
email, phone_number,
hire_date, job_id, salary,
commission_pct, manager_id,
department_id)
VALUES
(113,
'Louis', 'Popp',
'LPOPP', '515.124.4567',
SYSDATE, 'AC_ACCOUNT', 6900,
NULL, 205, 100);
1 row created.

Copyright 2004, Oracle. Todos os direitos reservados.

Inserindo Valores Especiais com Functions SQL


possvel usar functions para especificar valores especiais em uma tabela.
O exemplo do slide registra informaes sobre o funcionrio Popp na tabela EMPLOYEES.
So fornecidos a data e o horrio atuais na coluna HIRE_DATE. A function SYSDATE
usada para a data e o horrio atuais.
Voc tambm pode usar a function USER ao inserir linhas em uma tabela. Essa function
registra o nome do usurio atual.
Confirmando Adies Tabela
SELECT employee_id, last_name, job_id, hire_date, commission_pct
FROM
employees
WHERE employee_id = 113;

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-8
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

A function SYSDATE registra a data e o horrio atuais.

Inserindo Valores de Data Especficos


Adicione um novo funcionrio.

INSERT INTO employees


VALUES
(114,
'Den', 'Raphealy',
'DRAPHEAL', '515.127.4561',
TO_DATE('FEB 3, 1999', 'MON DD, YYYY'),
'AC_ACCOUNT', 11000, NULL, 100, 30);
1 row created.

Verifique a adio.

Copyright 2004, Oracle. Todos os direitos reservados.

Inserindo Valores Especficos de Data e Horrio


O formato DD-MON-YY normalmente usado para inserir um valor de data. Com esse
formato, lembre-se de que o sculo usado como default o atual. Como a data tambm
contm informaes sobre horrio, o horrio default meia-noite (00:00:00).
Se for necessrio informar uma data em um formato diferente do default (por exemplo, com
outro sculo ou um horrio especfico), use a function TO_DATE.
O exemplo do slide registra informaes sobre o funcionrio Raphealy na tabela
EMPLOYEES. Ele define a coluna HIRE_DATE como February 3, 1999. Se voc usar a
instruo a seguir em vez da mostrada no slide, o ano de admisso ser interpretado como
2099.
INSERT INTO employees
VALUES
(114,
'Den', 'Raphealy',
'DRAPHEAL', '515.127.4561',
'03-FEB-99',
'AC_ACCOUNT', 11000, NULL, 100, 30);

Se o formato RR for usado, o sistema fornecer o sculo correto automaticamente, mesmo


que no seja o atual.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-9
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Criando um Script

Use a varivel de substituio & em uma instruo


SQL para solicitar valores.
& um marcador de espao para o valor da varivel.

INSERT INTO departments


(department_id, department_name, location_id)
(&department_id, '&department_name',&location);

1 row created.

Copyright 2004, Oracle. Todos os direitos reservados.

Criando um Script para Manipular Dados


possvel salvar comandos com variveis de substituio em um arquivo e executar os
comandos no arquivo. O exemplo do slide registra informaes de um departamento na
tabela DEPARTMENTS.
Ao executar o arquivo de script, voc ser solicitado a especificar informaes para as
variveis de substituio &. Os valores especificados sero aplicados instruo. Isso
permite executar vrias vezes o mesmo arquivo de script, mas fornecer um conjunto de
valores diferente a cada execuo.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-10
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

VALUES

Copiando Linhas de Outra Tabela

Crie a instruo INSERT com uma subconsulta:

INSERT INTO sales_reps(id, name, salary, commission_pct)


SELECT employee_id, last_name, salary, commission_pct
FROM
employees
WHERE job_id LIKE '%REP%';

No use a clusula VALUES.


Estabelea uma correspondncia entre o nmero de
colunas na clusula INSERT e o nmero de colunas
na subconsulta.

Copyright 2004, Oracle. Todos os direitos reservados.

Copiando Linhas de Outra Tabela


possvel usar a instruo INSERT para adicionar linhas a uma tabela cujos valores so
provenientes de tabelas existentes. No lugar da clusula VALUES, use uma subconsulta.
Sintaxe
INSERT INTO table [ column (, column) ] subquery;

Na sintaxe:
table
column
subquery

o nome da tabela
o nome da coluna da tabela a ser preenchida
a subconsulta que retorna linhas para a tabela

O nmero de colunas e os respectivos tipos de dados na lista de colunas da clusula


INSERT devem corresponder ao nmero de valores e aos respectivos tipos de dados na
subconsulta. Para criar uma cpia das linhas de uma tabela, use SELECT * na subconsulta:
INSERT INTO copy_emp
SELECT *
FROM
employees;

Para obter mais informaes, consulte "SELECT" (seo "subqueries") no manual Oracle
Database SQL Reference.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-11
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

4 rows created.

Alterando os Dados de uma Tabela

Atualize as linhas da tabela EMPLOYEES:

Copyright 2004, Oracle. Todos os direitos reservados.

Alterando os Dados de uma Tabela


O slide mostra a alterao do nmero de departamento dos funcionrios do departamento 60
para o departamento 30.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-12
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

EMPLOYEES

Sintaxe da Instruo UPDATE


Modifique as linhas existentes com a instruo
UPDATE:

UPDATE
SET
[WHERE

table
column = value [, column = value, ...]
condition];

Atualize mais de uma linha por vez (se necessrio).

Copyright 2004, Oracle. Todos os direitos reservados.

Atualizando Linhas
possvel modificar linhas existentes com a instruo UPDATE.
Na sintaxe:
table
column
value
condition

o nome da tabela
o nome da coluna da tabela a ser preenchida
o valor correspondente ou a subconsulta da coluna
identifica as linhas a serem atualizadas e composta de nomes
de colunas, expresses, constantes, subconsultas e operadores
de comparao

Para confirmar a operao de atualizao, consulte a tabela para exibir as linhas atualizadas.
Para obter mais informaes, consulte "UPDATE" no manual Oracle Database SQL
Reference.
Observao: Em geral, use a chave primria para identificar uma nica linha. O uso de
outras colunas pode resultar na atualizao inesperada de vrias linhas. Por exemplo,
identificar uma nica linha da tabela EMPLOYEES por nome perigoso, pois mais de um
funcionrio pode ter o mesmo nome.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-13
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Atualizando Linhas em uma Tabela

Uma ou mais linhas especficas so modificadas


quando a clusula WHERE especificada:

Se voc omitir a clusula WHERE, todas as linhas da


tabela sero modificadas:

UPDATE
copy_emp
SET
department_id = 110;
22 rows updated.

Copyright 2004, Oracle. Todos os direitos reservados.

Atualizando Linhas (continuao)


A instruo UPDATE modifica linhas especficas quando a clusula WHERE especificada.
O exemplo do slide transfere o funcionrio 113 (Popp) para o departamento 70.
Se voc omitir a clusula WHERE, todas as linhas da tabela sero modificadas.
SELECT last_name, department_id
FROM
copy_emp;

Observao: A tabela COPY_EMP tem os mesmos dados que a tabela EMPLOYEES.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-14
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

UPDATE employees
SET
department_id = 70
WHERE employee_id = 113;
1 row updated.

Atualizando Duas Colunas


com uma Subconsulta
Atualize o cargo e o salrio do funcionrio 114 para que
correspondam aos do funcionrio 205.
employees
job_id = (SELECT job_id
FROM
employees
WHERE
employee_id = 205),
salary = (SELECT salary
FROM
employees
WHERE
employee_id = 205)
WHERE
employee_id
= 114;
1 row updated.

Copyright 2004, Oracle. Todos os direitos reservados.

Atualizando Duas Colunas com uma Subconsulta


possvel atualizar diversas colunas na clusula SET de uma instruo UPDATE criando
vrias subconsultas.
Sintaxe
UPDATE table
SET
column

=
(SELECT
column
FROM table
WHERE condition)

[ ,
column

[WHERE

(SELECT
column
FROM table
WHERE condition)]
condition] ;

Observao: Se nenhuma linha for atualizada, a mensagem "0 rows updated" ser
exibida.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-15
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

UPDATE
SET

Atualizando Linhas com Base em Outra Tabela

UPDATE
SET

copy_emp
department_id

WHERE

job_id

(SELECT department_id
FROM employees
WHERE employee_id = 100)
(SELECT job_id
FROM employees
WHERE employee_id = 200);

1 row updated.

Copyright 2004, Oracle. Todos os direitos reservados.

Atualizando Linhas com Base em Outra Tabela


possvel usar subconsultas em instrues UPDATE para atualizar as linhas de uma tabela.
O exemplo do slide atualiza a tabela COPY_EMP com base nos valores da tabela
EMPLOYEES. Ele altera o nmero do departamento de todos os funcionrios com o ID de
cargo do funcionrio 200 para o nmero do departamento atual do funcionrio 100.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-16
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Use subconsultas em instrues UPDATE para atualizar


as linhas de uma tabela com base nos valores de outra
tabela:

Removendo uma Linha de uma Tabela

Delete uma linha da tabela DEPARTMENTS:

Copyright 2004, Oracle. Todos os direitos reservados.

Removendo uma Linha de uma Tabela


O exemplo do slide remove o departamento Finance da tabela DEPARTMENTS
(pressupondo que no haja constraints definidas nessa tabela).

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-17
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

DEPARTMENTS

Instruo DELETE
possvel remover as linhas existentes de uma tabela
com a instruo DELETE:
table
condition];

Copyright 2004, Oracle. Todos os direitos reservados.

Deletando Linhas
possvel remover linhas existentes com a instruo DELETE.
Na sintaxe:
table
condition

o nome da tabela
identifica as linhas a serem deletadas e composta de nomes
de colunas, expresses, constantes, subconsultas e operadores
de comparao

Observao: Se nenhuma linha for deletada, a mensagem "0 rows deleted" ser
exibida.
Para obter mais informaes, consulte "DELETE" no manual Oracle Database SQL
Reference.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-18
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

DELETE [FROM]
[WHERE

Deletando Linhas de uma Tabela

Se voc usar a clusula WHERE, as linhas especficas


sero deletadas:

Se voc omitir a clusula WHERE, todas as linhas da


tabela sero deletadas:

DELETE FROM copy_emp;


22 rows deleted.

Copyright 2004, Oracle. Todos os direitos reservados.

Deletando Linhas (continuao)


possvel deletar linhas especficas usando a clusula WHERE na instruo DELETE. O
exemplo do slide deleta o departamento Finance da tabela DEPARTMENTS. Para confirmar
a operao de deleo, exiba as linhas deletadas com a instruo SELECT.
SELECT *
FROM
departments
WHERE department_name = 'Finance';
no rows selected.

Se voc omitir a clusula WHERE, todas as linhas da tabela sero deletadas. O segundo
exemplo do slide deleta todas as linhas da tabela COPY_EMP porque nenhuma clusula
WHERE foi especificada.
Exemplo
Remova as linhas identificadas na clusula WHERE.
DELETE FROM employees WHERE employee_id = 114;
1 row deleted.
DELETE FROM departments WHERE department_id IN (30, 40);
2 rows deleted.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-19
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

DELETE FROM departments


WHERE department_name = 'Finance';
1 row deleted.

Deletando Linhas com Base em Outra Tabela

DELETE FROM employees


WHERE department_id =
(SELECT department_id
FROM
departments
WHERE department_name
LIKE '%Public%');
1 row deleted.

Copyright 2004, Oracle. Todos os direitos reservados.

Deletando Linhas com Base em Outra Tabela


possvel usar subconsultas para deletar linhas de uma tabela com base nos valores de
outra tabela. O exemplo do slide deleta todos os funcionrios que trabalham em um
departamento cujo nome contm a string Public. A subconsulta pesquisa a tabela
DEPARTMENTS para localizar o nmero do departamento com base no nome do
departamento que contm essa string. Em seguida, a subconsulta informa o nmero do
departamento para a consulta principal, que deleta as linhas de dados da tabela
EMPLOYEES com base nesse nmero de departamento.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-20
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Use subconsultas em instrues DELETE para remover


linhas de uma tabela com base nos valores de outra
tabela:

Remove todas as linhas de uma tabela, esvaziando a


tabela e mantendo a estrutura intacta

uma instruo DDL (Data Definition Language), e


no DML; no pode ser desfeita facilmente

Sintaxe:

TRUNCATE TABLE table_name;

Exemplo:

TRUNCATE TABLE copy_emp;

Copyright 2004, Oracle. Todos os direitos reservados.

Instruo TRUNCATE
Um mtodo mais eficiente de esvaziar uma tabela a utilizao da instruo TRUNCATE.
possvel usar essa instruo para remover rapidamente todas as linhas de uma tabela ou
cluster. A remoo de linhas com a instruo TRUNCATE mais rpida do que com a
instruo DELETE pelos seguintes motivos:
A instruo TRUNCATE uma instruo DDL (Data Definition Language) e no gera
informaes de rollback. As informaes de rollback so abordadas posteriormente
nesta lio.
Truncar uma tabela no dispara os triggers de deleo dessa tabela.
Se a tabela for me de uma constraint de integridade referencial, voc no poder
trunc-la. necessrio desativar a constraint antes de executar a instruo TRUNCATE.
A desativao de constraints abordada em uma lio posterior.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-21
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Instruo TRUNCATE

INSERT INTO
(SELECT employee_id, last_name,
email, hire_date, job_id, salary,
department_id
FROM
employees
WHERE department_id = 50)
VALUES (99999, 'Taylor', 'DTAYLOR',
TO_DATE('07-JUN-99', 'DD-MON-RR'),
'ST_CLERK', 5000, 50);
1 row created.

Copyright 2004, Oracle. Todos os direitos reservados.

Usando uma Subconsulta em uma Instruo INSERT


possvel usar uma subconsulta no lugar do nome da tabela na clusula INTO da instruo
INSERT.
A lista de seleo da subconsulta deve ter o mesmo nmero de colunas que a lista de
colunas da clusula VALUES. Para a execuo bem-sucedida da instruo INSERT, todas
as regras nas colunas da tabela-base devem ser cumpridas. Por exemplo, no possvel
especificar um ID de funcionrio duplicado ou omitir um valor de uma coluna no nula
obrigatria.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-22
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Usando uma Subconsulta


em uma Instruo INSERT

Usando uma Subconsulta em uma


Instruo INSERT
Verifique os resultados:

Copyright 2004, Oracle. Todos os direitos reservados.

Usando uma Subconsulta em uma Instruo INSERT (continuao)


O exemplo mostra os resultados da subconsulta usada a fim de identificar a tabela para a
instruo INSERT.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-23
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

SELECT employee_id, last_name, email, hire_date,


job_id, salary, department_id
FROM
employees
WHERE department_id = 50;

Transaes de Banco de Dados

Instrues DML que constituem uma alterao


consistente nos dados

Uma instruo DDL


Uma instruo DCL (Data Control Language)

Copyright 2004, Oracle. Todos os direitos reservados.

Transaes de Banco de Dados


O servidor Oracle garante a consistncia de dados com base em transaes. As transaes
permitem mais flexibilidade e controle durante a alterao de dados e garantem a
consistncia de dados em caso de falha de processo do usurio ou falha do sistema.
As transaes consistem em instrues DML que formam uma alterao consistente dos
dados. Por exemplo, uma transferncia de fundos entre duas contas deve incluir o dbito em
uma conta e o crdito em outra conta no mesmo valor. As duas aes devero apresentar
falha ou ser bem-sucedidas; o crdito no dever ser submetido a commit sem o dbito.
Tipos de Transao
Tipo

Descrio

DML (Data
Manipulation
Language)
(Data Definition
Language)
DCL (Data Control
Language)

Consiste em qualquer nmero de instrues DML que o


servidor Oracle trata como uma entidade nica ou uma
unidade de trabalho lgica
Consiste em uma nica instruo DDL
Consiste em uma nica instruo DCL

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-24
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Uma transao de banco de dados consiste em uma


das seguintes instrues:

Transaes de Banco de Dados

Comeam quando a primeira instruo SQL DML


executada

Terminam com um destes eventos:

automtico).

O usurio sai do iSQL*Plus.


Ocorre uma falha do sistema.

Copyright 2004, Oracle. Todos os direitos reservados.

Quando uma Transao Comea e Termina?


Uma transao comea quando a primeira instruo DML encontrada e termina quando
uma destas aes ocorre:

Uma instruo COMMIT ou ROLLBACK executada.


Uma instruo DDL, como CREATE, executada.
Uma instruo DCL executada.
O usurio sai do iSQL*Plus.
Ocorre uma falha de mquina ou do sistema.

Aps o trmino de uma transao, a prxima instruo SQL executvel inicia


automaticamente a transao seguinte.
Uma instruo DDL ou DCL submetida a commit automaticamente e, portanto, encerra
uma transao de forma implcita.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-25
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Uma instruo COMMIT ou ROLLBACK executada.


Uma instruo DDL ou DCL executada (commit

Vantagens de Instrues COMMIT e ROLLBACK


Com as instrues COMMIT e ROLLBACK, possvel:

Garantir a consistncia de dados

Agrupar operaes relacionadas logicamente

Copyright 2004, Oracle. Todos os direitos reservados.

Vantagens de COMMIT e ROLLBACK


As instrues COMMIT e ROLLBACK permitem controlar as alteraes permanentes nos
dados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-26
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Visualizar alteraes de dados antes de torn-las


permanentes

Controlando Transaes
Horrio COMMIT

Transao
DELETE
SAVEPOINT A

ROLLBACK

UPDATE
SAVEPOINT B
INSERT

ROLLBACK at o
PONTO DE SALVAMENTO A

ROLLBACK at o
PONTO DE SALVAMENTO B
Copyright 2004, Oracle. Todos os direitos reservados.

Instrues de Controle de Transao Explcita


possvel controlar a lgica de transaes com as instrues COMMIT, SAVEPOINT e
ROLLBACK.
Instruo

Descrio

COMMIT

Termina a transao atual, tornando permanentes todas as


alteraes de dados pendentes

SAVEPOINT name

Marca um ponto de salvamento na transao atual

ROLLBACK

ROLLBACK termina a transao atual e descarta todas as


alteraes de dados pendentes.
ROLLBACK TO SAVEPOINT efetua rollback da transao
atual para o ponto de salvamento especificado e, como
conseqncia, descarta todas as alteraes e/ou pontos de
salvamento criados aps o ponto de salvamento do rollback
atual. Se voc omitir a clusula TO SAVEPOINT, a instruo
ROLLBACK efetuar rollback de toda a transao. Como os
pontos de salvamento so lgicos, no h como listar os
pontos de salvamento criados.

ROLLBACK TO
SAVEPOINT name

Observao: SAVEPOINT no uma instruo SQL que segue o padro ANSI.


Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-27
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

INSERT

Crie um marcador em uma transao atual usando a


instruo SAVEPOINT.

Faa rollback at esse marcador usando a instruo


ROLLBACK TO SAVEPOINT.

UPDATE...
SAVEPOINT update_done;
Savepoint created.
INSERT...
ROLLBACK TO update_done;
Rollback complete.

Copyright 2004, Oracle. Todos os direitos reservados.

Fazendo Rollback de Alteraes at um Marcador


possvel criar um marcador na transao atual usando a instruo SAVEPOINT, que
divide a transao em sees menores. Depois, possvel descartar as alteraes pendentes
at esse marcador usando a instruo ROLLBACK TO SAVEPOINT.
Se voc criar um segundo ponto de salvamento com o mesmo nome do ponto de salvamento
anterior, o ponto de salvamento anterior ser deletado.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-28
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Fazendo Rollback de
Alteraes at um Marcador

Processamento de Transao Implcita

Um commit automtico ocorre nas seguintes


circunstncias:

de instrues COMMIT ou ROLLBACK

Um rollback automtico ocorre em decorrncia do


encerramento anormal do iSQL*Plus ou de uma falha
do sistema.

Copyright 2004, Oracle. Todos os direitos reservados.

Processamento de Transao Implcita


Status
Automatic commit

Automatic rollback

Circunstncias
A instruo DDL ou DCL executada.
O iSQL*Plus foi encerrado normalmente, sem a execuo
explcita dos comandos COMMIT ou ROLLBACK.
Encerramento anormal do iSQL*Plus ou falha do sistema.

Observao: Um terceiro comando est disponvel no iSQL*Plus. possvel alternar o


comando AUTOCOMMIT entre os estados ativado e desativado. Se ele for ativado, cada
instruo DML ser submetida a commit logo aps sua execuo. No possvel fazer
rollback das alteraes. Se ele for desativado, a instruo COMMIT ainda poder ser
executada explicitamente. Alm disso, a instruo COMMIT ser executada quando uma
instruo DDL for executada ou quando voc sair do iSQL*Plus.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-29
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Uma instruo DDL executada


Uma instruo DCL executada
Sada normal do iSQL*Plus, sem a execuo implcita

Processamento de Transao Implcita (continuao)


Falhas do Sistema
Quando uma transao for interrompida por uma falha do sistema, ser feito rollback
automaticamente de toda a transao. Isso impede que o erro cause alteraes indesejadas
nos dados e retorna as tabelas para o estado em que se encontravam no momento do ltimo
commit. Dessa forma, o servidor Oracle protege a integridade das tabelas.

Oracle University and Impacta Tecnologia use only

No iSQL*Plus, para sair normalmente da sesso, voc deve clicar no boto Exit. No
SQL*Plus, para executar essa mesma ao, voc deve digitar o comando EXIT no prompt.
O fechamento da janela interpretado como uma sada anormal.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-30
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Estado dos Dados antes de


COMMIT ou ROLLBACK

possvel recuperar o estado anterior dos dados.

Outros usurios no podem visualizar os resultados


das instrues DML executadas pelo usurio atual.

As linhas afetadas so bloqueadas; outros usurios


no podem alterar os dados nessas linhas.

Copyright 2004, Oracle. Todos os direitos reservados.

Submetendo Alteraes a Commit


Todas as alteraes de dados feitas durante a transao sero temporrias at que ela seja
submetida a commit.
O estado dos dados antes da execuo da instruo COMMIT ou ROLLBACK pode ser
descrito da seguinte forma:
As operaes de manipulao de dados afetam principalmente o buffer de banco de
dados; portanto, possvel recuperar o estado anterior dos dados.
O usurio atual pode visualizar os resultados das operaes de manipulao de dados
consultando as tabelas.
Outros usurios no podem visualizar os resultados das operaes de manipulao de
dados executadas pelo usurio atual. O servidor Oracle institui a consistncia de leitura
para garantir que cada usurio veja os dados da forma como se encontravam no ltimo
commit.
As linhas afetadas so bloqueadas; outros usurios no podem alterar os dados nessas
linhas.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-31
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

O usurio atual pode verificar os resultados das


operaes DML usando a instruo SELECT.

As alteraes de dados tornam-se permanentes no


banco de dados.

O estado anterior dos dados perdido


permanentemente.

Todos os usurios podem visualizar os resultados.

Todos os pontos de salvamento so apagados.

Os bloqueios nas linhas afetadas so liberados;


essas linhas esto disponveis para manipulao
por outros usurios.

Copyright 2004, Oracle. Todos os direitos reservados.

Submetendo Alteraes a Commit (continuao)


Use a instruo COMMIT para tornar permanentes todas as alteraes pendentes. Veja o que
acontece aps uma instruo COMMIT:
As alteraes de dados so gravadas no banco de dados.
O estado anterior dos dados no est mais disponvel nas consultas SQL comuns.
Todos os usurios podem visualizar os resultados da transao.
Os bloqueios nas linhas afetadas so liberados; agora, as linhas esto disponveis para
que outros usurios efetuem novas alteraes de dados.
Todos os pontos de salvamento so apagados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-32
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Estado dos Dados aps COMMIT

Submetendo Dados a Commit

Efetue as alteraes:

INSERT INTO departments


VALUES (290, 'Corporate Tax', NULL, 1700);
1 row created.

Submeta as alteraes a commit:

COMMIT;
Commit complete.

Copyright 2004, Oracle. Todos os direitos reservados.

Submetendo Alteraes a Commit (continuao)


O exemplo do slide deleta uma linha da tabela EMPLOYEES e insere uma nova linha na
tabela DEPARTMENTS. Em seguida, ele torna a alterao permanente executando a
instruo COMMIT.
Exemplo
Remova os departamentos 290 e 300 da tabela DEPARTMENTS e atualize uma linha da
tabela COPY_EMP. Torne a alterao de dados permanente.
DELETE FROM departments
WHERE department_id IN (290, 300);
1 row deleted.
UPDATE employees
SET department_id = 80
WHERE employee_id = 206;
1 row updated.
COMMIT;
Commit Complete.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-33
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

DELETE FROM employees


WHERE employee_id = 99999;
1 row deleted.

Estado dos Dados aps ROLLBACK


Descarte todas as alteraes pendentes com a
instruo ROLLBACK:
As alteraes de dados so desfeitas.
O estado anterior dos dados restaurado.
Os bloqueios nas linhas afetadas so liberados.

DELETE FROM copy_emp;


22 rows deleted.
ROLLBACK ;
Rollback complete.

Copyright 2004, Oracle. Todos os direitos reservados.

Fazendo Rollback de Alteraes


Descarte todas as alteraes pendentes com a instruo ROLLBACK. O resultado ser:
As alteraes de dados so desfeitas.
O estado anterior dos dados restaurado.
Os bloqueios nas linhas afetadas so liberados.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-34
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Estado dos Dados aps ROLLBACK


DELETE FROM test;
25,000 rows deleted.
ROLLBACK;
Rollback complete.
id = 100;

SELECT * FROM
test WHERE
No rows selected.

id = 100;

COMMIT;
Commit complete.

Copyright 2004, Oracle. Todos os direitos reservados.

Exemplo
Ao tentar remover um registro da tabela TEST, voc poder esvaziar a tabela
acidentalmente. possvel corrigir o erro, reexecutar a instruo correta e tornar a alterao
de dados permanente.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-35
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

DELETE FROM test WHERE


1 row deleted.

Se houver falha de uma nica instruo DML durante


a execuo, ser feito rollback somente dessa
instruo.

O servidor Oracle implementa um ponto de


salvamento implcito.

Todas as outras alteraes so retidas.


O usurio deve encerrar as transaes
explicitamente executando uma instruo COMMIT
ou ROLLBACK.

Copyright 2004, Oracle. Todos os direitos reservados.

Rollback no Nvel de Instruo


Parte de uma transao poder ser descartada por um rollback implcito se for detectado um
erro de execuo de instruo. Se houver falha de uma nica instruo DML durante a
execuo de uma transao, seu efeito ser anulado por um rollback no nvel de instruo,
mas as alteraes feitas pelas instrues DML anteriores na transao no sero descartadas.
Elas podero ser submetidas a commit ou rollback explicitamente pelo usurio.
O servidor Oracle executa um commit implcito antes e depois de qualquer instruo DDL.
Portanto, mesmo que a instruo DDL no seja executada com xito, voc no poder fazer
rollback da instruo anterior porque o servidor executou um commit.
Encerre as transaes explicitamente executando uma instruo COMMIT ou ROLLBACK.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-36
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Rollback no Nvel de Instruo

A consistncia de leitura garante uma view


consistente dos dados em todos os momentos.

As alteraes feitas por um usurio no entram em


conflito com as alteraes feitas por outro usurio.

A consistncia de leitura garante que nos mesmos


dados:

Os usurios que efetuam operaes de leitura no

precisem aguardar os usurios que efetuam operaes


de gravao

Os usurios que efetuam operaes de gravao no

precisem aguardar os usurios que efetuam operaes


de leitura

Copyright 2004, Oracle. Todos os direitos reservados.

Consistncia de Leitura
Os usurios acessam o banco de dados de duas maneiras:
Operaes de leitura (instruo SELECT)
Operaes de gravao (instrues INSERT, UPDATE, DELETE)
A consistncia de leitura necessria para permitir que:
Os usurios que efetuam operaes de leitura e gravao no banco de dados tenham
uma view consistente dos dados.
Os usurios que efetuam operaes de leitura no vejam dados que esto sendo
alterados.
Os usurios que efetuam operaes de gravao tenham certeza de que as alteraes no
banco de dados so feitas de maneira consistente.
As alteraes feitas por usurios que efetuam operaes de gravao no interrompam
umas s outras nem sejam conflitantes.
O objetivo da consistncia de leitura garantir que cada usurio veja os dados no estado em
que se encontravam no momento do ltimo commit, antes de ser iniciada uma operao
DML.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-37
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Consistncia de Leitura

Implementao da Consistncia de Leitura


Usurio A
UPDATE employees
SET
salary = 7000
WHERE last_name = 'Goyal';

Blocos
de dados

SELECT *
FROM userA.employees; Imagem

com leitura
consistente

Usurio B

Dados
alterados e
inalterados
Antes da
alterao
(dados
antigos)

Copyright 2004, Oracle. Todos os direitos reservados.

Implementao da Consistncia de Leitura


A implementao da consistncia de leitura automtica. Ela mantm uma cpia parcial do
banco de dados em segmentos de undo. A imagem com leitura consistente criada a partir
dos dados submetidos a commit da tabela e dos dados antigos que esto sendo alterados e
ainda no foram submetidos a commit do segmento de undo.
Quando ocorre uma operao de insero, atualizao ou deleo no banco de dados, o
servidor Oracle obtm uma cpia dos dados antes da sua alterao e grava essa cpia em um
segmento de undo.
Todos os usurios que esto efetuando uma operao de leitura, exceto o usurio que
executou a alterao, ainda vem o banco de dados no estado em que se encontrava antes do
incio das alteraes; eles vem um snapshot dos dados no segmento de undo.
Antes do commit das alteraes no banco de dados, somente o usurio que est modificando
os dados v o banco de dados com as alteraes. Todos os outros usurios vem o snapshot
no segmento de undo. Isso garante que os usurios leiam dados consistentes que no esto
sendo alterados no momento.
Quando uma instruo DML for submetida a commit, a alterao feita no banco de dados se
tornar visvel a todos os usurios que executarem uma instruo select aps o commmit. O
espao ocupado pelos dados antigos no arquivo de segmento de undo estar liberado para
reutilizao.
Se a transao for submetida a rollback, as alteraes sero desfeitas:
A verso mais antiga original dos dados no segmento de undo ser gravada novamente
na tabela.
Todos os usurios vero o banco de dados no estado em que se encontrava antes do
incio da transao.
Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-38
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Segmentos
de undo

Sumrio

Function

Descrio

INSERT

Adiciona uma nova linha tabela

UPDATE

Modifica as linhas existentes da tabela

DELETE

Remove as linhas existentes da tabela

COMMIT

Torna permanentes todas as alteraes pendentes

SAVEPOINT

Usada para efetuar rollback at o marcador de


ponto de salvamento

ROLLBACK

Descarta todas as alteraes de dados pendentes

Copyright 2004, Oracle. Todos os direitos reservados.

Sumrio
Nesta lio, voc aprendeu a manipular dados no banco de dados Oracle com as instrues
INSERT, UPDATE e DELETE, bem como controlar alteraes nos dados com as instrues
COMMIT, SAVEPOINT e ROLLBACK.
O servidor Oracle garante uma view consistente dos dados em todos os momentos.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-39
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Nesta lio, voc aprendeu a usar as seguintes


instrues:

Exerccio 8: Viso Geral


Este exerccio aborda os seguintes tpicos:
Insero de linhas nas tabelas
Atualizao e deleo de linhas na tabela
Controle de transaes

Copyright 2004, Oracle. Todos os direitos reservados.

Exerccio 8: Viso Geral


Neste exerccio, voc adicionar linhas tabela MY_EMPLOYEE, atualizar e deletar dados
na tabela e controlar as transaes.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-40
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

Exerccio 8
O departamento de recursos humanos deseja criar instrues SQL para inserir, atualizar
e deletar dados de funcionrios. Como prottipo, use a tabela MY_EMPLOYEE antes de
fornecer as instrues ao departamento de recursos humanos.
Insira dados na tabela MY_EMPLOYEE.
1. Execute a instruo no script lab_08_01.sql para criar a tabela MY_EMPLOYEE
a ser usada no exerccio.

3. Crie uma instruo INSERT para adicionar a primeira linha de dados tabela
MY_EMPLOYEE usando estes dados de amostra. No liste as colunas na clusula
INSERT. No informe todas as linhas ainda.
ID

LAST_NAME

FIRST_NAME

USERID

SALARY

Patel

Ralph

rpatel

895

Dancs

Betty

bdancs

860

Biri

Ben

bbiri

1100

Newman

Chad

cnewman

750

Ropeburn

Audrey

aropebur

1550

4. Preencha a tabela MY_EMPLOYEE com a segunda linha de dados de amostra da lista


anterior. Desta vez, liste as colunas explicitamente na clusula INSERT.
5. Confirme a adio tabela.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-41
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

2. Descreva a estrutura da tabela MY_EMPLOYEE para identificar os nomes de colunas.

Exerccio 8 (continuao)
6. Crie uma instruo insert no arquivo de script dinmico reutilizvel loademp.sql
para carregar linhas na tabela MY_EMPLOYEE. Concatene a primeira letra do
primeiro nome e os sete primeiros caracteres do sobrenome para gerar o ID do
usurio. Salve esse script no arquivo lab_08_06.sql.
7. Para preencher a tabela com as prximas duas linhas dos dados de amostra, execute
a instruo insert no script criado.

9. Torne as adies de dados permanentes.


Atualize e delete dados na tabela MY_EMPLOYEE.
10. Altere o sobrenome do funcionrio 3 para Drexler.
11. Altere o salrio de todos os funcionrios com salrio inferior a US$ 900 para US$
1.000.
12. Verifique as alteraes na tabela.

13. Delete Betty Dancs da tabela MY_EMPLOYEE.


14. Confirme as alteraes na tabela.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-42
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

8. Confirme as adies tabela.

Exerccio 8 (continuao)
15. Submeta todas as alteraes pendentes a commit.
Controle a transao de dados na tabela MY_EMPLOYEE.
16. Preencha a tabela com a ltima linha dos dados de amostra usando as instrues no
script criado na etapa 6. Execute as instrues no script.

18. Marque um ponto intermedirio no processamento da transao.


19. Esvazie a tabela inteira.
20. Confirme se a tabela est vazia.
21. Descarte a operao DELETE mais recente sem descartar a operao INSERT
anterior.
22. Confirme se a nova linha permanece intacta.

23. Torne a adio de dados permanente.

Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
Banco de Dados Oracle 10g: Fundamentos de SQL I 8-43
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Oracle University and Impacta Tecnologia use only

17. Confirme a adio tabela.

Oracle University and Impacta Tecnologia use only


Development Program (WDP) eKit materials are provided for WDP in-class use only. Copying eKit materials is strictly prohibited and is in
violation of Oracle copyright. All WDP students must receive an eKit watermarked with their name and email. Contact
OracleWDP_ww@oracle.com if you have not received your personalized eKit.

Você também pode gostar