SQL Plus
SQL Plus
SQL Plus
SQL*Plus
– Este curso foi preparado na
Gerência de Informática da
Diretoria de Pesquisa e
Desenvolvimento da Telebras;
– Ele foi desenvolvido com base
num material da própria Oracle,
inclusive utilizando-se dos dados
do esquema exemplo fornecido
na mídia de instalação;
– A versão do Oracle referência é
a V.6;
– A última atualização deste
material foi realizada no ano de
1990.
TELEBRÁS
1
I - INTRODUÇÃO
3. TERMINOLOGIA RELACIONAL
5. ARQUITETURA DO ORACLE
TELEBRÁS
2
1. CONCEITOS BÁSICOS DE BANCO DE
DADOS
BANCO DE DADOS
É uma coleção organizada de informações.
MODELOS DE SGBD
Hierárquico
– representação dos dados na forma de árvore.
– cada ocorrência de um objeto possui, associada a ela, um
conjunto de ocorrências de outro tipo de objeto.
– cada ocorrência de um objeto pode ter somente um “pai”.
– possui linguagens diferentes para manipulação de dados e
das ligações entre eles.
– ex: IMS da IBM
TELEBRÁS
3
1. CONCEITOS BÁSICOS DE BANCO DE
DADOS (cont.)
Rede
– proposto pela CODASYL em 1971.
– os dados são apresentados por dois elementos básicos: o
record type que define um objeto e o set type que define o
relacionamento entre objetos.
– as ligações entre tipos de dados diferentes são físicas e
implementadas através de cadeias de apontadores.
– cada ocorrência de um objeto pode ter vários “pais”.
– possui linguagens diferentes para manipulação de dados e
de apontadores.
– exs: IDS da Honeywell
IDMS da Computer Associates
DBMS/VAX da Digital
Relacional
– proposto por E. F. Codd da IBM Research em 1970,
através da publicação de um artigo na revista Journal of the
ACM.
– baseado num modelo matemático sólido que envolve teoria
de conjunto, álgebra relacional e cálculo relacional.
– os dados são organizados na forma de tabelas (relações).
TELEBRÁS
4
1. CONCEITOS BÁSICOS DE BANCO DE
DADOS (cont.)
Orientado a objetos
– novo modelo emergente nos últimos anos.
– simplificadamente, permite que cada elemento de
dado seja tratado como um objeto único, com sua
própria identificação e características.
– a informação é localizada pela identidade do
objeto e não pelos valores associados a ele.
– exs: O2 da Altair
G-Base da Graphael
Iris da HP
ObjectStore da Object Design
TELEBRÁS
5
2. VANTAGENS DO MODELO
RELACIONAL
SIMPLICIDADE
As estruturas de dados e operações empregadas
são fáceis de serem entendidas e usadas.
A estrutura da base de dados é simples, sem
relacionamentos pré-definidos entre tipos de
registros.
FLEXIBILIDADE
Consultas ad hoc podem ser facilmente
expressas em SQL, pois não existem
“navegações” a serem realizadas.
Modificações estruturais na base de dados podem
ser feitas sem impactar toda a base de dados; é
fácil adicionar campos ou modificar tabelas.
INDEPENDÊNCIA DE DADOS
Modificações nas definições das tabelas podem
ser realizadas sem impactar os programas
existentes.
TELEBRÁS
6
3. TERMINOLOGIA RELACIONAL
TABELA
estrutura de armazenamento de dados em um modelo
relacional.
pode representar uma entidade simples ou um
relacionamento entre entidades.
constituída de linhas e colunas.
conjunto de ocorrências de um mesmo tipo de objeto.
formalmente denominada “relação”.
aproximadamente análoga a um arquivo.
LINHA
Representa uma ocorrência de uma entidade ou
relacionamento representado por uma tabela.
Aproximadamente análoga a um registro de arquivo.
Não devem existir duas linhas idênticas em uma tabela.
Cada linha possui, no máximo, um valor para cada
coluna.
Todas as linhas de uma tabela possui o mesmo número
de colunas - grau da tabela.
A ordem interna das linhas de uma tabela é irrelevante;
não existe “primeira linha” ou “última linha”.
TELEBRÁS
7
3. TERMINOLOGIA RELACIONAL (cont.)
COLUNA
Representa um único atributo de uma entidade.
Aproximadamente análoga a um campo de um registro.
Cada coluna possui um conjunto de valores pertencentes
a um domínio.
A ordem interna das colunas é irrelevante, para efeito de
manipulação das mesmas.
VISÃO
representação lógica dos dados de uma tabela ou
combinação de tabelas.
utilizada da mesma forma que uma tabela.
não armazena dados; é uma tabela “virtual”.
CHAVE PRIMÁRIA
É a coluna (ou grupo de colunas) que identifica cada linha
de uma tabela.
Um valor específico para a(s) coluna(s) da chave primária
identifica univocamente uma linha de uma tabela.
Nenhuma coluna da chave primária pode ser nula.
Não tem nada a ver com índices ou caminhos de acesso.
TELEBRÁS
8
3. TERMINOLOGIA RELACIONAL (cont.)
CHAVE ESTRANGEIRA
coluna (ou grupo de colunas) que representa um
relacionamento entre tabelas.
um valor específico para a(s) coluna(s) da chave
estrangeira depende do valor de uma chave
primária de outra tabela.
uma chave estrangeira pode referenciar a chave
primária da própria tabela.
uma chave estrangeira pode ser nula.
uma chave estrangeira pode ter valores
duplicados.
RESTRIÇÕES DE INTEGRIDADE
regras aplicadas às informações de um banco de
dados para garantir a integridade das mesmas.
podem indicar a obrigatoriedade de uma coluna, a
unicidade de coluna, o domínio da coluna, uma
chave primária, uma chave estrangeira, ações a
serem tomadas quando da atualização de chaves
referenciadas e regras de negócio.
TELEBRÁS
9
4. PROJETO DE BANCO DE DADOS
PROJETO LÓGICO
É a extração dos dados do mundo real e modelagem dos
mesmos a nível conceitual, sem preocupação com o
modelo físico de implementação.
A representação mais comumente utilizada é na forma de
diagrama de entidades e seus relacionamentos,
denominado Modelo de Entidades e Relacionamentos
(MER). As notações mais conhecidas são Chen,
Bachman, Martin.
PROJETO FÍSICO
É o mapeamento das informações refletidas no projeto
lógico para o SGBD utilizado. No caso de um modelo
relacional, o projeto físico consiste em criar-se as
estruturas relacionais compostas por tabelas, linhas,
colunas, etc. Existem notações para representação de
um modelo físico, sendo o mais conhecido o Diagrama
de Binder.
TELEBRÁS
10
5. ARQUITETURA DO ORACLE
Aplicações
Ferramentas
SQL
RDBMS
S.O.
Dados
TELEBRÁS
11
II - SQL*Plus
1. O QUE É SQL?
2. O QUE É SQL*Plus
4. COMANDOS SQL
5. COMANDOS SQL*Plus
6. EDIÇÃO DE COMANDOS
TELEBRÁS
12
1. O QUE É SQL?
TELEBRÁS
13
1. O QUE É SQL? (cont.)
TELEBRÁS
14
2. O QUE É SQL*Plus?
TELEBRÁS
15
3. ENTRANDO E SAINDO DO SQL*Plus
ENTRANDO
TELEBRÁS
16
3. ENTRANDO E SAINDO DO SQL*Plus
(cont.)
PROMPT
O prompt SQL> significa que o SQL*Plus está disponível para
aceitar um comando.
SAINDO
Para sair do SQL*Plus, o usuário pode usar o comando EXIT ou
QUIT. Ex:
SQL> EXIT
$
ou
SQL> QUIT
$
TELEBRÁS
17
4. COMANDOS SQL
FORMATO
O formato é livre, podendo ocupar uma ou mais linhas. Se o
comando for escrito em mais de uma linha, o SQL*Plus emite
um prompt a cada nova linha, que é o número da mesma. Ex :
SQL> select
2 *
3 from
4 emp;
é equivalente a
TELEBRÁS
18
4. COMANDOS SQL (cont.)
SINTAXE
Um comando SQL é composto de cláusulas, algumas
opcionais e outras obrigatórias. Para maior
inteligibilidade é conveniente iniciar uma cláusula em
uma linha, mas isso não é obrigatório.
As palavras que compõem um comando devem ser
separadas por espaços ou TABs.
Comandos SQL são armazenados no buffer de
comandos.
CAIXA (Maiúsculas/Minúsculas)
A caixa de uma palavra em um comando é significativa
para:
– Valores alfanuméricos de colunas:
“ RIO DE JANEIRO ” é diferente de “ Rio
de Janeiro ”.
A caixa de uma palavra não é significativa para:
– Nomes de objetos da base de dados (tabelas,
colunas, etc.): “EMP” e “emp” são a mesma tabela.
– Palavras reservadas:”SELECT” e “select” são
equivalentes
TELEBRÁS
19
5. COMANDOS SQL*Plus
FUNÇÕES
Controlar o modo como os resultados das consultas são
apresentados.
Armazenar comandos SQL no disco e recuperá-los para serem
executados.
Definir opções que influenciarão o comportamento do SQL*Plus.
SINTAXE
Normalmente, os comandos devem caber numa única linha. Se
um comando necessitar mais de uma linha, pode-se digitá-lo até
o fim, sem se preocupar com o avanço para a próxima linha, e
só então, pressionar <CR>. Ex :
SQL>ttitle center ‘CPqD-TELEBRAS’ skip 1 center ‘Relatorio Anual de
Andamento de Projetos’ skip 3
TELEBRÁS
20
6. EDIÇÃO DE COMANDOS
BUFFER
Quando você digita um comando SQL, ele fica
armazenado em um buffer de edição.
Quando um novo comando é digitado, ele substitui o
antigo no buffer. Se a última linha do campo for
uma linha em branco, isto é, o comando não for
terminado por “;”, ele não será executado, mas
permanecerá armazenado no buffer.
EDITOR DE LINHAS
COMANDO DESCRIÇÃO
L Lista todas as linhas do buffer
Ln Lista a linha n do buffer que
passa a ser a linha corrente
Lm n Lista da linha m à linha n do
buffer
c/texto1/texto2/ Substitui, na linha corrente, texto1
por texto2
TELEBRÁS
21
6. EDIÇÃO DE COMANDOS (cont.)
TELEBRÁS
22
III - CONSULTANDO A SUA BASE DE
DADOS
3. JUNÇÃO DE TABELAS
8. USO DE SUBQUERIES
TELEBRÁS
23
1. SELEÇÃO DE COLUNAS DE UMA
TABELA
O COMANDO SELECT
Usado para fazer consultas à base de dados.
Forma básica :
SELECT <colunas>
FROM <tabela>
Ex :
SELECT ENAME , SAL
FROM EMP
TELEBRÁS
24
1. SELEÇÃO DE COLUNAS DE UMA
TABELA (cont.)
EVITANDO DUPLICAÇÕES
Como as colunas selecionadas podem ser um subconjunto
das colunas de uma tabela, poderão ocorrer linhas
duplicadas em uma consulta. Isso pode ser evitado com
a cláusula DISTINCT no comando SELECT :
SELECT DISTINCT <colunas>
FROM <tabela>
PSEUDÔNIMOS
Ao apresentar os resultados de uma consulta, o SQL*Plus
normalmente utiliza o nome de uma coluna como seu
cabeçalho. É possível definir um pseudônimo para uma
coluna que aparecerá no cabeçalho no lugar do nome da
coluna e que poderá também ser utilizado em outras
cláusulas do comando.
SELECT <coluna> <pseudônimo>, <coluna>
FROM <tabela>
TELEBRÁS
25
EXERCÍCIOS - 1
TELEBRÁS
26
2. SELEÇÃO DE LINHAS DE UMA
TABELA
A CLÁUSULA WHERE
Utilizada para selecionar um subconjunto das linhas de
uma tabela.
Deve seguir sempre a cláusula FROM
Forma Básica
SELECT <colunas>
FROM <tabela>
WHERE <condição>
TELEBRÁS
27
2. SELEÇÃO DE LINHAS DE UMA
TABELA (cont.)
OPERADORES
SÍMBOLO DESCRIÇÃO
= igual a
!= ou <> ou ^= diferente de
> maior que
>= maior ou igual a
< menor que
<= menor ou igual a
BETWEEN...AND... entre dois valores
IN (lista) qualquer valor da lista
LIKE corresponde a um gabarito
IS NULL é um valor nulo
CONJUNÇÃO DE CONDIÇÕES
Várias condições podem ser conectadas na cláusula WHERE
através do operador AND. Ex :
WHERE JOB=‘MANAGER’ AND DEPTNO>10
TELEBRÁS
28
2. SELEÇÃO DE LINHAS DE UMA
TABELA (cont.)
DISJUNÇÃO DE CONDIÇÕES
PRECEDÊNCIA DE OPERADORES
Uma cláusula WHERE pode combinar vários operadores
AND e OR.
O operador AND tem maior precedência que o operador OR.
Os operadores de comparação têm maior precedência que
os conectivos AND e OR.
Todos os operadores de comparação têm a mesma
precedência.
Operadores de igual precedência são calculados da
esquerda para a direita.
A precedência de operadores pode ser cancelada através
de parênteses:
WHERE SAL>150 AND (JOB=‘MANAGER’
OR JOB=‘SALESMAN’)
TELEBRÁS
29
2. SELEÇÃO DE LINHAS DE UMA
TABELA (cont.)
NEGAÇÃO DE CONDIÇÕES
Uma expressão composta de conjunções e disjunções de
condições pode ser negada se for colocada entre parênteses e
precedida pelo operador NOT. Ex :
NOT (JOB=‘MANAGER’ OR SAL>1500)
Ex :
WHERE ENAME LIKE ‘M%’
WHERE ENAME LIKE ‘LUI_’
TELEBRÁS
30
2. SELEÇÃO DE LINHAS DE UMA
TABELA (cont.)
A CLÁUSULA ORDER BY
Você pode controlar a ordem pela qual as linhas selecionadas
são apresentadas, adicionando a cláusula ORDER BY ao
comando SELECT.
SELECT <colunas>
FROM <tabela>
WHERE <condições>
ORDER BY <colunas>
TELEBRÁS
31
2. SELEÇÃO DE LINHAS DE UMA
TABELA (cont.)
TELEBRÁS
32
EXERCÍCIOS - 2
TELEBRÁS
34
3. JUNÇÃO DE TABELAS
JOIN
As linhas de uma tabela podem ser juntadas às
linhas de outra tabela através de valores comuns
em colunas correspondentes.
Tabela EMP Tabela DEPT
EMPNO ENAME JOB M SAL COMM DEPTNO DEPTNO DNAME LOC
TELEBRÁS
35
3. JUNÇÃO DE TABELAS (cont.)
SELECT <colunas>
FROM <tabela 1,tabela 2,...,tabela
n>
WHERE <condições>
Exemplo:
TELEBRÁS
36
3. JUNÇÃO DE TABELAS (cont.)
DISTINÇÃO DE COLUNAS
Se as colunas que definem a junção tiverem o mesmo nome, elas
devem ser diferenciadas na cláusula WHERE, prefixando-as com
o nome da tabela a que pertencem seguido de um ‘.’. Se os
nomes forem diferentes, não é necessário prefixá-las:
WHERE EMP.DEPTNO=DEPT.DEPTNO
TELEBRÁS
37
JUNÇÃO DE TABELAS (4)
EQUI-JOINS E NON-EQUI-JOINS
Quando o operador de comparação utilizado na condição da
cláusula WHERE é o de igualdade (‘=‘) diz-se que a junção é do
tipo EQUI-JOIN. Se o operador for de qualquer outro tipo, diz-se
que a junção é do tipo NON-EQUI-JOIN.
Exemplos:
WHERE EMP.DEPTNO = DEPT.DEPTNO (EQUI)
WHERE EMP.DEPTNO != DEPT.DEPTNO (NON-EQUI)
OUTER JOIN
Quando uma linha em uma tabela não satisfaz a condição de junção,
aquela linha, normalmente, não aparece no resultado da consulta.
Para que as linhas que não satisfazem a condição apareçam, é
necessário utilizar o operador outer-join, representado por (+):
WHERE DEPT.DEPTNO=EMP.DEPTNO(+)
TELEBRÁS
38
EXERCÍCIOS - 3
APRESENTAÇÃO DE NÚMEROS
TELEBRÁS
40
4. MANIPULAÇÃO DE VALORES
NUMÉRICOS (cont.)
TELEBRÁS
41
4. MANIPULAÇÃO DE VALORES
NUMÉRICOS (cont.)
EXPRESSÕES ARITMÉTICAS
TELEBRÁS
42
4. MANIPULAÇÃO DE VALORES
NUMÉRICOS (cont.)
TELEBRÁS
43
4. MANIPULAÇÃO DE VALORES
NUMÉRICOS (cont.)
FUNÇÕES ARITMÉTICAS
FUNÇÃO RESULTADO
TELEBRÁS
44
4. MANIPULAÇÃO DE VALORES
NUMÉRICOS (cont.)
FUNÇÕES DE GRUPO
FUNÇÃO RESULTADO
AVG([distinct]n) Média de n
COUNT ({*|[distinct]<exp>}) Número de vezes que a
expressão retorna qualquer
coisa
diferente de NULL. * conta as
linhas selecionadas
MAX([distinct]<exp>) Máximo da expressão
MIN([distinct]<exp>) Mínimo da expressão
STDDEV([distinct]<exp>) Desvio padrão da
expressão
SUM([distinct]<exp>) Soma dos valores
da expressão
VARIANCE([distinct]<exp>) Variância da
expressão
TELEBRÁS
45
4. MANIPULAÇÃO DE VALORES
NUMÉRICOS (cont.)
SELECT AVG(SAL)+AVG(COMM),STDDEV(SAL)
FROM EMP
WHERE DEPTNO=30
TELEBRÁS
46
4. MANIPULAÇÃO DE VALORES
NUMÉRICOS (cont.)
A CLÁUSULA DISTINCT
A cláusula DISTINCT é utilizada nas funções de grupo para
eliminar valores duplicados antes do cálculo das
funções.
A FUNÇÃO COUNT
A função COUNT é utilizada para contar:
TELEBRÁS
47
4. MANIPULAÇÃO DE VALORES
NUMÉRICOS (cont.)
A CLÁUSULA GROUP BY
A cláusula GROUP BY é usada para dividir as linhas de
uma tabela em grupos menores. O SQL*Plus
recupera cada grupo de linhas de acordo com os
valores da(s) expressão(ões) especificada(s) na
cláusula GROUP BY.
Sintaxe:
GROUP BY <exp1>,< exp2>, ..., <expn>
TELEBRÁS
48
4. MANIPULAÇÃO DE VALORES
NUMÉRICOS (cont.)
A CLÁUSULA HAVING
HAVING <condição>
SELECT JOB,COUNT(*),12*AVG(SAL)
FROM EMP
GROUP BY JOB
HAVING COUNT(*)>2
TELEBRÁS
49
EXERCÍCIOS - 4
EXPRESSÕES ALFANUMÉRICAS
TELEBRÁS
52
5. MANIPULAÇÃO DE VALORES
ALFANUMÉRICOS (cont.)
FUNÇÕES ALFANUMÉRICAS
CHR(n)
Retorna o caractere correspondente ao valor ASCII n.
INITCAP(alfa)
Retorna a cadeia alfa com cada inicial maiúscula e as demais
letras minúsculas.
LOWER(alfa)
Retorna a cadeia alfa com todas as letras em minúsculo.
LPAD(alfa1,n[,alfa2])
Retorna a cadeia alfa1 com a cadeia alfa2 concatenada à
esquerda, tantas vezes quantas forem necessárias para
completar o comprimento n. O default de alfa2 é o espaço.
LTRIM(alfa[,S])
Retorna a cadeia alfa com os caracteres iniciais removidos até o
primeiro caractere não contido no conjunto S.
REPLACE(alfa,sde[,spara])
Retorna a cadeia alfa com todas as ocorrências da cadeia sde
substituídas pela cadeia spara. O default de S é o espaço.
RPAD(alfa1,n[,alfa2])
Retorna a cadeia alfa1 com a cadeia alfa2 concatenada à direita,
tantas vezes quantas forem necessárias para completar o
comprimento n. O default de alfa2 é o espaço.
RTRIM(alfa[,S])
Retorna a cadeia alfa com os caracteres finais removidos depois
do último caractere não contido no conjunto S. O default de S é
o espaço.
TELEBRÁS
53
5. MANIPULAÇÃO DE VALORES
ALFANUMÉRICOS (cont.)
SOUNDEX(alfa)
Retorna um valor alfanumérico representando o som das palavras
em alfa.
SUBSTR(alfa,m[,n])
Retorna uma sub-cadeia de alfa, começando no m-ésimo caractere,
e de comprimento n (default de n é 1).
INSTR(alfa,cadeia)
Retorna a posição dentro de alfa onde se encontra a cadeia.
TRANSLATE(alfa,sde,spara)
Retorna a cadeia alfa traduzida do conjunto de caracteres sde para o
conjunto de caracteres spara.
UPPER(alfa)
Retorna a cadeia alfa com todas as letras em maiúsculo.
TO_CHAR(n[,fmt])
Retorna a cadeia resultante de transformação do número ou data n
segundo o modelo fmt.
DECODE (expressão,val1,cod1,val2,cod2,...,[default])
Retorna cod i se a expressão for igual a val i; caso contrário, retorna
default. Se default for omitido, retorna NULL.
A expressão deve ser do mesmo tipo de dado de val i.
GREATEST,LEAST
Iguais às funções aritméticas.
LENGHT(alfa)
Retorna o comprimento da cadeia alfa.
TELEBRÁS
54
EXERCÍCIOS - 5
APRESENTAÇÃO DE DATAS
A FUNÇÃO TO_CHAR
TELEBRÁS
56
6. MANIPULAÇÃO DE DATAS (cont.)
ELEMENTO SIGNIFICADO
TELEBRÁS
57
6. MANIPULAÇÃO DE DATAS (cont.)
ELEMENTO SIGNIFICADO
TELEBRÁS
58
6. MANIPULAÇÃO DE DATAS (cont.)
SUFIXOS
Os seguintes sufixos podem ser adicionados aos elementos de
formatação:
TH-Número ordinal (DDTH 4th)
SP-Número escrito(DDSP Four)
SPTH ou THSP- Número ordinal por escrito
(DDSPTH Fourth)
PONTUAÇÃO
O modelo de formatação pode incluir também caracteres de
pontuação como ‘-’ , ’/’ e ‘,’.
Constantes alfanuméricas podem ser incluídas delimitadas por
aspas (“). Esses caracteres serão reproduzidos na saída.
EXEMPLO - To_char(‘12-Jan-86’,modelo)
MODELO RESULTADO
(nenhum) 12-JAN-86
‘MM/DD/YY’ 01/12/86
‘DD.MM.YYYY’ 12.01.1986
‘Month DD,YYYY’ January 12,1986
‘DY DD MON YY’ WED 12 JAN 86
‘Day Mon DD’ Wednesday Jan 12
TELEBRÁS
59
6. MANIPULAÇÃO DE DATAS (cont.)
ARITMÉTICA DE DADOS
SYSDATE
TELEBRÁS
60
6. MANIPULAÇÃO DE DATAS (cont.)
FUNÇÕES DE DATA
ADD_MONTHS(d,n)
Retorna a data d mais n meses. n deve ser inteiro e pode ser
negativo.
LAST- DAY(d)
Retorna a data do último dia do mês que contém d.
MONTHS_BETWEEN(d1,d2)
Retorna o número de meses entre as datas d1 e d2.
NEW_TIME(d,a,b)
Retorna a data e a hora na zona b quando d é a data e a hora
na zona a.
NEXT_DAY(d,alfa)
Retorna a data do primeiro dia da semana nomeada por alfa
que posterior à data d.
TO_DATE(alfa[,fmt])
Simétrica à função TO_CHAR.
GREATEST(d1, d2)
Retorna a data mais recente entre d1 e d2.
LEAST(d1, d2)
Retorna a data mais antiga entre d1 e d2.
ROUND(d)
Arredonda a data d para o dia inteiro mais próximo.
TRUNC(d)
Retorna a data d com a hora zerada.
TELEBRÁS
61
EXERCÍCIOS - 6
TELEBRÁS
O VALOR NULO
TELEBRÁS
64
7. MANIPULAÇÃO DE VALORES NULOS
(cont.)
A FUNÇÃO NVL
TELEBRÁS
65
EXERCÍCIOS - 7
TELEBRÁS
66
8. USO DE SUBQUERIES
SUBQUERIES
TELEBRÁS
67
8. USO DE SUBQUERIES (cont.)
OS OPERADORES IN E NOT IN
Os operadores IN e NOT IN são adequadas para subqueries que
retornam uma lista de valores de uma coluna já que o segundo
argumento deles deve ser uma lista:
JOB IN <subquery>
TELEBRÁS
68
8. USO DE SUBQUERIES (cont.)
SUBQUERIES MÚLTIPLOS
OPERADORES DE CONJUNTOS
TELEBRÁS
69
8. USO DE SUBQUERIES (cont.)
TELEBRÁS
70
8. USO DE SUBQUERIES (cont.)
SUBQUERIES CORRELACIONADOS
No exemplo de subquery apresentado, o subquery era executado
uma vez e o valor resultante era usado pela cláusula WHERE
do query principal. Você pode compor um subquery que é
executado repetidamente, uma vez para cada linha candidata
considerada para seleção pelo query principal. Isso acontece
quando o subquery faz referência a uma coluna das linhas
selecionadas no query principal.
SQL> SELECT DEPTNO,ENAME,SAL
2 FROM EMP X
3 WHERE SAL >
4 (SELECT AVG(SAL)
5 FROM EMP
6 WHERE X.DEPTNO=DEPTNO)
Observe que um subquery correlacionado exige que se defina um
pseudônimo para a tabela do query principal, se ela for a
mesma do subquery.
O OPERADOR EXISTS
O operador lógico EXISTS retorna o valor verdadeiro se um
determinado subquery retornar ao menos uma linha e falso
caso contrário:
WHERE EXISTS <subquery>
Conforme mostra o exemplo, o operador EXISTS, juntamente com
um subquery, substitui uma condição na cláusula WHERE.
TELEBRÁS
71
EXERCÍCIOS - 8
KING
ADAMS SMITH
TELEBRÁS
73
9. ESTRUTURAS HIERÁRQUICAS EM
TABELAS (cont.)
TELEBRÁS
74
9. ESTRUTURAS HIERÁRQUICAS EM
TABELAS (cont.)
A CLÁUSULA CONNECT BY
A cláusula CONNECT BY define o relacionamento que conecta os
nós da árvore, a direção de inspeção e os ramos que deverão ser
podados.
Forma:
CONNECT BY PRIOR <coluna1>=<coluna2>
{AND <condição> } onde:
- <coluna1> e <coluna2> definem a conexão dos nós da árvore.
Devem ser entendidas como:
“A coluna1 do nó pai é igual à coluna2 do nó fiho”
- a posição do operador PRIOR define a direção de inspeção:
PRIOR <coluna1> : da raiz para as folhas
PRIOR <coluna2> : das folhas para a raiz
- <condição> define os nós que serão podados juntamente com
seus descendentes.
NÍVEIS DE NÓS
O nome LEVEL identifica uma pseudo-coluna pré-definida no
SQL*Plus (assim como SYSDATE). Seu valor em uma
determinada linha corresponde ao nível do nó na árvore, cuja raiz
é determinada pela cláusula START WITH. A pseudo-coluna
LEVEL pode ser usada em qualquer cláusula onde um nome de
coluna pode aparecer.
TELEBRÁS
76
EXERCÍCIOS - 9
TELEBRÁS
77
EXERCÍCIOS - 9 (cont.)
TELEBRÁS
78
IV - CRIAÇÃO, REVISÃO E
ATUALIZAÇÃO DE TABELAS
1. CRIAÇÃO DE TABELAS
TELEBRÁS
79
1. CRIAÇÃO DE TABELAS
NOMES DE TABELAS
TELEBRÁS
80
1. CRIAÇÃO DE TABELAS (cont.)
NOMES DE COLUNAS
As regras são as mesmas que as regras para nomes de tabelas.
TIPOS DE DADOS
CHAR(w) - valores alfanuméricos consistindo
ou de letras, dígitos e caracteres
VARCHAR(w) especiais. w é o tamanho
máximo permitido. Não pode
exceder 255.
NUMBER - valores numéricos constituídos de
dígitos, um sinal (+ ou -) opcional e
um ponto decimal. O número máximo
de dígitos é 38.
NUMBER(w) - o mesmo que NUMBER mas com
tamanho limitado a w dígitos, que não pode
ser maior que 38. Representa um número inteiro.
TELEBRÁS
81
1. CRIAÇÃO DE TABELAS (cont.)
INICIALIZAÇÃO DE TABELAS
Você pode criar e inicializar uma tabela simultaneamente através
de um subquery.
CREATE TABLE BONUS(ENAME,JOB,SAL,COMM)
AS(SELECT ENAME,JOB,SAL,COMM
FROM EMP
WHERE JOB=‘MANAGER’
OR COMM>0,25*SAL)
TELEBRÁS
82
2. MANIPULAÇÃO DE LINHAS
INSERÇÃO DE LINHAS
TELEBRÁS
83
2. MANIPULAÇÃO DE LINHAS (cont.)
CONFIRMAÇÃO DE MODIFICAÇÕES
TELEBRÁS
84
2. MANIPULAÇÃO DE LINHAS (cont.)
O COMANDO ROLLBACK
O comando ROLLBACK cancela todas as modificações
que não foram confirmadas.
O COMANDO COMMIT
O comando COMMIT torna permanentes todas as
modificações pendentes.
TELEBRÁS
85
2. MANIPULAÇÃO DE LINHAS (cont.)
ELIMINAÇÃO DE LINHAS
O comando DELETE permite a eliminação de linhas em uma
determinada tabela :
DELETE FROM <tabela>
WHERE <condição>
A condição da cláusula WHERE define quais linhas serão
eliminadas. Ela pode conter um subquery.
A CHAVE AUTOCOMMIT
Existe uma “chave” com o nome de AUTOCOMMIT cujo estado
(LIGADA/DESLIGADA) faz com que as modificações realizadas
na Base de Dados sejam imediatamente executadas (ligadas) ou
deferidas até que um comando COMMIT seja executado
(desligado):
SET AUTOCOMMIT ON - liga a chave
SET AUTOCOMMIT OFF - desliga a chave
TELEBRÁS
86
3. MODIFICAÇÃO DE TABELAS
AUMENTANDO COLUNAS
TELEBRÁS
87
3. MODIFICAÇÃO DE TABELAS (cont.)
ADICIONANDO COLUNAS
TELEBRÁS
88
EXERCÍCIOS - 10
TELEBRÁS
90
EXERCÍCIOS - 10 (cont.)
TELEBRÁS
92
EXERCÍCIOS - 10 (cont.)
VISÕES
TELEBRÁS
94
4. CRIAÇÃO E USO DE VISÕES (cont.)
CRIAÇÃO DE VISÕES
CONSULTAS DE VISÕES
Você pode consultar uma visão do mesmo modo que uma tabela.
Quando uma modificação é efetuada numa tabela, ela é refletida
nas visões da tabela.
TELEBRÁS
95
4. CRIAÇÃO E USO DE VISÕES (cont.)
ATUALIZAÇÕES DE VISÕES
TELEBRÁS
96
4. CRIAÇÃO E USO DE VISÕES (cont.)
TELEBRÁS
97
EXERCÍCIOS - 11
TELEBRÁS
99
EXERCÍCIOS - 11 (cont.)
TELEBRÁS
100
V - GERAÇÃO DE RELATÓRIOS
2. ARMAZENANDO RESULTADOS
3. FORMATAÇÃO DE RESULTADOS
4. VARIÁVEIS DO SISTEMA
5. VARIÁVEIS DO USUÁRIO
TELEBRÁS
101
1. SALVANDO E RECUPERANDO
COMANDOS
O COMANDO SET BUFFER
O último comando SQL digitado fica armazenado num buffer
(buffer SQL), onde pode ser editado e executado.
Comandos de formatação de consultas, isto é, comandos
SQL*Plus, não são armazenados no buffer SQL.
Para inserir comandos num buffer, que não o SQL, deve-se usar
o comando I do editor de linhas. Os comandos serão inseridos no
buffer corrente.
TELEBRÁS
102
1. SALVANDO E RECUPERANDO
COMANDOS (cont.)
O COMANDO SAVE
O COMANDO GET
TELEBRÁS
103
1. SALVANDO E RECUPERANDO
COMANDOS (cont.)
O COMANDO START
Exemplo:
Suponha o arquivo PROMOTE com o seguinte conteúdo :
SELECT * FROM EMP
WHERE MGR = &1 AND JOB = ‘&2’
AND SAL>&3
A chamada :
SQL> START PROMOTE 7280 CLERK 950;
executaria o comando :
SELECT*FROM EMP
WHERE MGR=7280 AND JOB=‘CLERK’
AND SAL >950;
TELEBRÁS
104
2. ARMAZENANDO RESULTADOS
O COMANDO SPOOL
TELEBRÁS
105
3. FORMATAÇÃO DE RESULTADOS
O COMANDO COLUMN
Forma
COLUMN {<coluna>|<expressão>}
[<lista de cláusulas>]
TELEBRÁS
106
3. FORMATAÇÃO DE RESULTADOS
(cont.)
O COMANDO COLUMN (cont.)
Exemplo:
COLUMN REMARKS FORMAT A20 WRAP;
Cláusulas:
ALIAS <pseudônimo> : atribui um pseudônimo à coluna que poderá
mais tarde ser utilizado em outros comandos de formatação.
TELEBRÁS
108
3. FORMATAÇÃO DE RESULTADOS
(cont.)
O COMANDO TTITLE
Forma:
TTITLE [ON|OFF|<lista de cláusulas>]
ON/OFF: suprime ou restaura a apresentação do título sem
afetar sua definição
<lista de cláusulas> : define o título.
Exemplo:
SQL> TTITLE LEFT ‘Análise Mensal’ RIGHT ‘Page’ SQL.PNO SKIP
CENTER ‘Dados em Milhares’
Cláusulas:
COLUMN <n> : salta para a coluna n.
SKIP <n> : salta n linhas. O default de n é 1.
TAB <n> : salta n colunas.
LEFT|RIGHT|CENTER : alinha qualquer texto que venha depois desta
cláusula, até a próxima cláusula do mesmo tipo ou COLUMN.
TELEBRÁS
109
3. FORMATAÇÃO DE RESULTADOS
(cont.)
O COMANDO BTITLE
Força a apresentação de um título após o final de cada
página do resultado de uma consulta.
Forma:
BTITLE [ON|OF|lista de cláusulas]
Funciona de maneira análoga ao comando TTITLE.
TELEBRÁS
110
3. FORMATAÇÃO DE RESULTADOS
(cont.)
O COMANDO BREAK
Uma quebra é um evento que ocorre sempre que um comando
SELECT está sendo processado: fim de uma página, mudança no
valor de uma expressão, etc. Uma quebra faz com que algum tipo
de ação seja tomada.
Forma:
BREAK ON <evento1> <ação1>[{on evento2 acão2}...]
TELEBRÁS
111
3. FORMATAÇÃO DE RESULTADOS
(cont.)
Tipos de eventos
ON<expressão> : causa uma quebra quando o valor de <expressão>
muda. <expressão> pode envolver colunas e pseudônimos. Vários
eventos do tipo <expressão> são hierarquizados pela ordem de
definição.
ON ROW : causa uma quebra cada vez que uma linha é selecionada.
Vai para o fim da hierarquia.
ON PAGE : causa uma quebra no fim de página. Independe da
hierarquia.
ON REPORT : causa uma quebra no fim do relatório. Vai para o início
da hierarquia.
Ações:
SKIP <n> : salta n linhas antes de imprimir a linha associada ao
evento.
SKIP PAGE : salta uma página antes de imprimir a linha associada ao
evento.
DUPLICATES : normalmente o valor de uma coluna (ou expressão) de
um evento de quebra só é exibido quando ele muda de valor. Essa
ação força a exibição da coluna.
Exemplo :
BREAK ON DEPTNO SKIP2 ON EMPNO
SKIP1 DUPLICATES
TELEBRÁS
112
3. FORMATAÇÃO DE RESULTADOS
(cont.)
O COMANDO COMPUTE
Lista de funções
– AVG
– COUNT
– MAX
– MIN NÃO SEPARAR POR (,)
– NUM COMPUTE AVG MAX MIN
– STD
– SUM
– VAR
TELEBRÁS
113
3. FORMATAÇÃO DE RESULTADOS
(cont.)
O COMANDO COMPUTE (cont.)
A CLÁUSULA OF
Define as expressões sobre as quais serão computadas as
funções de grupo. As colunas desta cláusula devem ser
mencionadas no comando SELECT. As expressões devem
ser separadas por (,).
OF SAL, COMM, SAL + COMM
A CLÁUSULA ON
Especifica o evento que determinará a quebra equivalente ao
comando BREAK.
ON JOB
A CLÁUSULA INTO
Se incluída, define as variáveis que receberão os valores
computados das funções de grupo. As variáveis devem ser
separadas por vírgulas.
Se omitida, os resultados serão exibidos no relatório.
INTO SALAVG, SALMAX
TELEBRÁS
114
3. FORMATAÇÃO DE RESULTADOS
(cont.)
Exemplo:
CLEAR BREAKS
CLEAR BUFFER
CLEAR COLUMNS
CLEAR COMPUTES
CLEAR SCREEN
TELEBRÁS
115
4. VARIÁVEIS DO SISTEMA
AUTOCOMMIT (ON|OFF)
Define se a confirmação de modificações na base de dados
deve ser automática (ON) ou não (OFF). O default é OFF.
BUFFER (nome)
Define o buffer corrente.
TELEBRÁS
116
4. VARIÁVEIS DO SISTEMA (cont.)
ECHOSET (ON|OFF)
Define se comandos SQL executados a partir de um arquivo
devem ser exibidos na tela (ON) ou não (OFF).
HEADING (ON|OFF)
Define se os cabeçalhos de colunas devem ser apresentados
(ON) ou não (OFF).
FEEDBACK (n|ON|OFF)
Mostra o número de registros retornados por uma consulta
quando a consulta seleciona pelo menos n registros. O
default de n é 6
LINESIZE (n)
Define o número máximo de caracteres de uma linha de
relatório. O default é 80.
NEWPAGE (n)
Define o número de linhas em branco a serem colocadas
entre o fim de uma página e o início de outra. O valor “0”
faz com que um FORMFEED seja emitido.
NULL (texto)
Define o texto que deve aparecer como valor de uma coluna
nula. O default é brancos.
TELEBRÁS
117
4. VARIÁVEIS DO SISTEMA (cont.)
NUMFORMAT (formato)
Define o formato default para apresentação de valores
numéricos.
NUMWIDTH (n)
Define o tamanho default de apresentação de valores
numéricos.
PAGESIZE (n)
Define o número de linhas por página do relatório.
PAUSE (ON|OFF|texto)
Define se, a cada página de relatório, deve ser feita uma
pausa e solicitada a digitação de <CR> para que a
apresentação continue. texto define o prompt a ser emitido.
SPACE (n)
Define o número de espaços entre colunas.
VERIFY (ON|OFF)
Mostra (ON) o texto de uma linha de comando antes e depois
de substituir uma variável com seu valor.
TIMING (ON|OFF)
Mostra (ON) a estatística de tempo de cada comando SQL
que está sendo executado.
TELEBRÁS
118
4. VARIÁVEIS DO SISTEMA (cont.)
TAB (ON|OFF)
Define se o caractere <TAB> deve ou não ser utilizado para
formatar a saída. O default é ON.
TERMOUT (ON|OFF)
Suprime (ON) da tela a apresentação dos resultados de
comandos executados a partir de arquivos.
TIME (ON|OFF)
Apresenta (ON) a hora corrente antes de cada prompt.
TRIMOUT (ON|OFF)
Elimina os caracteres em branco no fim das linhas do relatório
(ON).
TRUNCATE (ON|OFF)
Trunca a apresentação do valor de uma coluna se não couber
dentro da especificação da coluna (ON).
LNO
Número da linha do relatório. Seu valor não pode ser modificado
pelo comando SET.
PNO
Página corrente do relatório. Seu valor não pode ser modificado
pelo comando SET.
TELEBRÁS
119
4. VARIÁVEIS DO SISTEMA (cont.)
O COMANDO SET
Permite a definição de um valor para uma variável do
sistema.
Forma:
SET <variável> <valor>
O COMANDO SHOW
Apresenta na tela o valor atual de uma variável do
sistema.
Forma:
SHOW <opção>
<variável do sistema>
Variáveis que são definidas pelo comando SET.
ALL
Lista todas as variáveis definidas.
BTITLE
Mostra o valor corrente de BTITLE.
LNO
Mostra o valor corrente da linha.
PNO
Mostra o valor corrente da página.
TELEBRÁS
120
4. VARIÁVEIS DO SISTEMA (cont.)
RELEASE
Mostra a versão do ORACLE RDBMS ao qual o
SQL*Plus está conectado.
SQLCODE
Mostra o valor do código da mais recente
operação.
TTITLE
Mostra o valor corrente de TTITLE.
USER
Mostra o usuário corrente que está acessando
o SQL*Plus.
TELEBRÁS
121
5. VARIÁVEIS DO USUÁRIO
TELEBRÁS
122
5. VARIÁVEIS DO USUÁRIO (cont.)
TELEBRÁS
124
EXERCÍCIOS - 12 (cont.)
TELEBRÁS
125
EXERCÍCIOS - 12 (cont.)
(f) Junte a visão do item (e) à tabela EMP e à visão do item (b),
adicionando assim ao resultado do item (d) uma coluna ‘PCT
DEPTO’ que contém o percentual do salário de cada empregado
em relação ao total de seu departamento.
(g) Adicione uma primeira coluna ao resultado em (f), que contém o
nome do departamento.
(h) Defina uma quebra no nome do departamento, totalizando as
colunas numéricas. Salte 2 linhas por departamento.
(i) Acrescente títulos como no exercício 1.
(j) Defina um espaçamento de 3 entre colunas.
(k) Defina o tamanho da página como 32.
(l) Formate as colunas da seguinte maneira:
DNAME NOME DO
DEPARTAMENTO
(CENTRALIZADO)
ENAME A9 NOME DO
EMPREGADO
SAL $99,999.99 SALÁRIO
MENSAL
PCT DEPTO 999.99 PERCENT.
DEPTO
PCT COMP 999.99 PERCENT.
COMP
TELEBRÁS
126
VI - GERÊNCIA DA BASE DE DADOS
1. COMPARTILHAMENTO DE DADOS
2. INDEXAÇÃO DE TABELAS
3. ELIMINAÇÃO DE TABELAS
4. O DICIONÁRIO DE DADOS
TELEBRÁS
127
1. COMPARTILHAMENTO DE DADOS
SINÔNIMOS
Você pode evitar a repetição da prefixação de uma tabela de
outro usuário, criando um sinônimo para ela:
CREATE SYNONYM EMP1
FOR ALUNO1.EMP;
SELECT *
FROM EMP1;
PRIVILÉGIOS
Você possui cada tabela, visão ou sinônimo que criou. A menos
que você queira compartilhar um desses objetos com outros
usuários, somente você pode acessá-lo.
Para permitir a outro usuário o acesso a um objeto seu, use o
comando GRANT:
GRANT <lista de privilégios>
ON <objeto>
TO <lista de usuários>
[WITH GRANT OPTION]
TELEBRÁS
128
1. COMPARTILHAMENTO DE DADOS
(cont.)
Os privilégios são:
SELECT
INSERT
UPDATE
DELETE
ALTER
INDEX
REFERENCES
ALL
Exemplo:
GRANT INSERT,UPDATE
ON DEPT
TO ALUNO1, ALUNO2
Existe um usuário chamado PUBLIC que inclui todos os usuários
do sistema:
GRANT SELECT
ON DEPT
TO PUBLIC
Além de garantir a um usuário um ou mais privilégios, você pode
lhe dar o direito de transferí-los a outrem:
GRANT SELECT
ON EMP
TO ADAMS
WITH GRANT OPTION
TELEBRÁS
129
1. COMPARTILHAMENTO DE DADOS
(cont.)
VIOLAÇÕES DE ACESSO
Se você tentar fazer algum tipo de acesso que não lhe é permitido,
a seguinte mensagem lhe será emitida:
Table or view does not exit
Observe que a mensagem é propositalmente ambígua.
RETIRANDO PRIVILÉGIOS
Exemplo
REVOKE ALL
ON DEPT
FROM ALUNO1;
TELEBRÁS
130
1. COMPARTILHAMENTO DE DADOS
(cont.)
GRANT SELECT
ON EMP20
TO ALUNO1;
TELEBRÁS
131
1. COMPARTILHAMENTO DE DADOS
(cont.)
MODIFICAÇÃO DE PASSWORDS
GRANT CONNECT
TO <nome do usuário>
IDENTIFIED BY <nova password>
MUDANÇA DE CONEXÃO
CONNECT <username/password>
CONNECT <username>
CONNECT
TELEBRÁS
132
2. INDEXAÇÃO DE TABELAS
ÍNDICES
ACELERAÇÃO DE CONSULTAS
TELEBRÁS
133
2. INDEXAÇÃO DE TABELAS (cont.)
REFORÇO DE UNIDADE
Você pode utilizar índices para garantir que uma coluna de uma
tabela contenha valores únicos. Isso é feito através da coluna
UNIQUE:
CREATE UNIQUE INDEX EMP_EMPNO
ON EMP(EMPNO)
ACELERAÇÃO DE JOINS
TELEBRÁS
134
2. INDEXAÇÃO DE TABELAS (cont.)
Exemplo:
Nesse exemplo um índice poderia ser criado tanto para a tabela EMP
como para a tabela DEPT.
REMOÇÃO DE ÍNDICES
TELEBRÁS
135
2. INDEXAÇÃO DE TABELAS (cont.)
TELEBRÁS
136
3. ELIMINAÇÃO DE TABELAS
O COMANDO DROP
TELEBRÁS
137
4. DICIONÁRIO DE DADOS
DICIONÁRIO
DESCRIÇÃO DO DICIONÁRIO
TELEBRÁS
138
4. DICIONÁRIO DE DADOS (cont.)
TELEBRÁS
139
4. DICIONÁRIO DE DADOS (cont.)
REGISTRO DE COMENTÁRIOS
TELEBRÁS
140
4. DICIONÁRIO DE DADOS (cont.)
DESCRIÇÃO DE ÍNDICES
DESCRIÇÃO DE VISÕES
DESCRIÇÃO DE PRIVILÉGIOS
TELEBRÁS
141
VII - CONTROLE DE CONCORRÊNCIA
1. CONTROLE DE CONCORRÊNCIA
2. MODOS DE BLOQUEIO
3. BLOQUEIO DE LINHAS
4. RESUMO
TELEBRÁS
142
1. CONTROLE DE CONCORRÊNCIA
TELEBRÁS
143
2. MODOS DE BLOQUEIO
Exclusive (X)
Share (S)
TELEBRÁS
144
2. MODOS DE BLOQUEIO (cont.)
TELEBRÁS
145
3. BLOQUEIO DE LINHAS
COMANDO
REQUISITOS
MODO
As linhas são bloqueadas em modo EXCLUSIVO
OMISSÃO
TELEBRÁS
146
3. BLOQUEIO DE LINHAS (cont.)
LIBERAÇÃO
TELEBRÁS
147
4. RESUMO
Nível de Locking
Lock <tabela> in
Exclusive X
Share Update RS
Row Share RS
Row Exclusive RX
Share S
Insert X RX
Update X RX
Delete X RX
TELEBRÁS
148