Contedo
I Introduo
-
II-Contedo
11.1 Ativao do SQL*Plus
11.2 Criao de tabelas
11.3 Manipulao de tabelas
11.4 Formatao de relatrios
11.5 Edio de comandos
11.6 Outros comandos
II Exerccios
-
111-Contedo
111.1 Seleo de colunas
111.2- Uso de expresses
111.3 Seleo de linhas
111.4 Ordenao de resultados
111.5 Agrupamento
111.6 Operaes de conjunto
111.7 Juno de tabelas
III Exerccios
-
V -Gerao de Relatrios
V Contedo
-
V.1
V.2
V.3
V.4
V.5
V.6
Formatao de colunas
Formatao de ttulos
BREAK e COMPUTE
Parmetros de controle
Utilizao de variveis
Relatrios avanados
4
5
6
10
12
16
17
22
23
24
25
26
27
29
31
33
35
39
44
45
46
47
51
52
54
56
57
59
67
72
73
75
76
77
80
84
89
93
98
V Exerccios
-
VI Expresses e funes
-
VI- Contedo
VI.1 Operadores
Vl.2 Funes numricas
VI.3 Funes de caracteres
VI.4 Funes de grupo
VI.5 Converso entre tipos
VI.6 Funes de datas
Vl.7 Outras funes
VI Exerccios
-
VII-Contedo
VII.1 Pseudo-colunas
VII.2 Juno externa
VII.3 Auto-Juno
VII.4 Consultas encaixadas
VII.5 Consultas hierrquicas
VII Exerccios
-
VIII Contedo
VIII.1 Manuteno de usurios
VllI.2 Privilgios de acesso
VIII.3 Acesso concorrente
-
VIII.4 lndices
VIII.5 Clusters
VIII.6 Dicionrio de dados
VIII Exerccios
-
107
110
111
112
114
116
119
120
123
124
125
126
127
128
129
132
133
138
141
142
143
144
146
149
153
157
162
168
169
174
178
Contedo
I Introduo
II Comando SQL e SQL*Plus
III Consultas bsicas
IV Criao e uso de tabelas
V Gerao de relatrios
VI Expresso e Funes
VII Consultas avanadas
VIII Tpicos avanados
Apndice A Tabelas utilizadas
Apndice B Sumrio dos comandos
I Introduo
I Introduo
5
SQL +
comando
do controle
SQL*PLUS
SQL
Parmetros de
Controle de
formatao
BD
ORACLE
Caractersticas principais:
- interpretador de comando SQL
- possui extenses para formatao de relatrios
I Introduo
II - Contedo
1. Ativao do SQL*Plus
2. Criao de tabelas
3. Manipulao de tabelas
4. Formatao de relatrios
5. Edio de comandos
6. Outros comandos
ou
a senha exibida
Coluna
Nome da coluna
N_EMP
NOME_EMP
103
SAMANTA
110
CARGO
CHEFE
DATA_ADM
SAL
ANALISTA
110
17-MAR-85
150000
UBIRATAN
DIRETOR
175
175
PAULO
PRESIDENTE
189
RITA
DIRETOR
201
EVERALDO
208
N_DEP
20
300000
20
27-FEB-86
500000
10
175
25-DEC-85
330000
5000
30
VENDEDOR
189
28-SEP-86
200000
3000
30
SILVIO
VENDEDOR
189
30-OCT-86
150000
230
ANA
SECRETARIA 175
01-MAY-89
120000
10
276
RENATO
ANALISTA
30-APR-86
100000
20
110
20-APR-85
COM
9000
30
Campos
data_adm date,
. Separa as
definies
das colunas
. Executa o
comando
Indica a continuao do
comando
N_EMP
NOME_EMP
Somente o
cabealho
CARGO
CHEFE
DATA_ADM
SAL
COM
N_DEP
N_EMP
NOME_EMP
CARGO
103
SAMANTA
110
UBIRATAN
CHEFE
DATA_ADM
SAL
ANALISTA 110
17-MAR-85
150000
DIRETOR
20-APR-85
175
COM
N_DEP
20
300000
20
N_EMP
NOME_EMP
CARGO
103
SAMANTA
ANALISTA
110
17-MAR-85
150000
20
110
UBIRATAN
DIRETOR
175
20-APR-85
300000
20
175
PAULO
PRESIDENTE
27-FEB-86
500000
10
189
RITA
DIRETOR
175
25-DEC-85
330000
5000
30
201
EVERALDO
VENDEDOR
189
28-SEP-86
200000
3000
30
208
SILVIO
VENDEDOR
189
30-OCT-86
150000
9000
30
230
ANA
SECRETARIA 175
10-MAY-89
120000
10
276
RENATO
ANALISTA
30-APR-86
100000
20
CHEFE
110
DATA_ADM
SAL
COM
N_DEP
NOME_EMP
SAMANTA
RENATO
Maisculas e minsculas
somente
fazem diferena
N_EMP
NOME_EMP
110
UBIRATAN
...
SAL
...
300000
N_EMP
NOME_EMP
110
UBIRATAN
...
SAL
...
350000
Comandos SQL*Plus no
Precisam de ;
NUMERO
NOME
SALARIO
103
SAMANTA
150000.00
110
UBIRATAN 300000.00
175
PAULO
500000.00
189
RITA
330000.00
201
EVERALDO 200000.00
208
SILVIO
150000.00
230
ANA
120000.00
276
RENATO
100000.00
Para continuar um
comando,
Use o caractere _
16
17
18
19
20
21
curso
curso
curso
curso
curso
curso
curso
oracle
oracle
oracle
oracle
oracle
oracle
oracle
128
1024
800
838
1152
1616
1796
Jan 3
Jan 3
Jan 3
Jan 3
Jan 3
Jan 3
Jan 3
18:02 .
17:59 ..
17:59 ex21.sql
17:59 ex22.sql
18:01 ex23.sql
18:01 ex24.sql
18:01 ex25.sql
nome do comando
22
II - Exerccios
1. Crie uma tabela chamada ALUNO com as seguintes colunas:
NOME
ENDER
CIDADE
ESTADO
CEP
ANIVERSARIO
23
24
III - Contedo
1.
Seleo de colunas
2.
Uso de expresses
3.
Seleo de linhas
4.
Ordenao de resultados
5.
Agrupamento
6.
Operao de conjunto
7.
Juno de tabelas
N_EMP
NOME_EMP
103
110
175
189
SAMANTA
UBIRATAN
PAULO
RITA
NOME_EMP
N_EMP
SAMANTA
UBIRATAN
PAULO
RITA
103
110
175
189
CARGO
SAL
SAMANTA
UBIRATAN
PAULO
RITA
EVERALDO
SILVIO
ANA
RENATO
ANALISTA
DIRETOR
PRESIDENTE
DIRETOR
VENDEDOR
VENDEDOR
SECRETARIA
ANALISTA
150000
300000
500000
330000
200000
150000
120000
100000
NOME_EMP
12*SAL
SAMANTA
UBIRATAN
PAULO
RITA
EVERALDO
SILVIO
ANA
RENATO
1800000
3600000
6000000
3960000
2400000
1800000
1440000
1200000
CARGO
SAL
SAMANTA
UBIRATAN
PAULO
RITA
EVERALDO
SILVIO
ANA
RENATO
ANALISTA
DIRETOR
PRESIDENTE
DIRETOR
VENDEDOR
VENDEDOR
SECRETARIA
ANALISTA
150000
300000
500000
330000
200000
150000
120000
100000
N_EMP
NOME_EMP
103
110
175
189
201
208
230
276
SAMANTA
UBIRATAN
PAULO
RITA
EVERALDO
SILVIO
ANA
RENATO
CARGO
ANALISTA
DIRETOR
PRESIDENTE
DIRETOR
VENDEDOR
VENDEDOR
SECRETARIA
ANALISTA
...
...
...
...
...
...
...
...
...
N_DEP
20
20
10
30
30
30
10
20
NOME_EMP
SAMANTA
UBIRATAN
RENATO
29
NOME_EMP
SILVIO
MESES
48.689726
30
NOME_EMP
CARGO
ANA
EVERALDO
PAULO
RENATO
RITA
SAMANTA
SILVIO
UBIRATAN
SECRETARIA
VENDEDOR
PRESIDENTE
ANALISTA
DIRETOR
ANALISTA
VENDEDOR
DIRETOR
SAL
120000
200000
500000
100000
330000
150000
150000
300000
31
NOME_EMP
CARGO
SAMANTA
RENATO
RITA
UBIRATAN
ANA
EVERALDO
SILVIO
ANALISTA
ANALISTA
DIRETOR
DIRETOR
SECRETARIA
VENDEDOR
VENDEDOR
SAL
150000
100000
330000
300000
120000
200000
150000
32
III.5 - Agrupamento
Para saber quantos
departamento:
N_EMP
NOME_EMP
CARGO
230
ANA
SECRETARIA
funcionrios
CHEFE
175
trabalham
DATA_ADM
SAL
01-MAY-89
120000
em
COM
cada
N_DEP
10
10
276
103
SAMANTA
ANALISTA
110
17-MAR-85
150000
20
RENATO
ANALISTA
110
30-APR-86
100000
20
UBIRATAN
DIRETOR
175
20-APR-85
300000
20
189
RITA
DIRETOR
175
25-DEC-85
330000
5000
30
201
EVERALDO
VENDEDOR
189
28-SEP-86
200000
3000
30
208
SILVIO
VENDEDOR
189
30-OCT-86
150000
9000
30
110
22222222222jhglkjhgflkgjhfdlghfg ,lhdlfgn v
coluna do agrupamento
N_DEP
10
20
30
COUNT(*)
todas as linhas
Funo de grupo
critrio de agrupamento
2
3
3
33
NOME_EMP
CARGO
...
SAL
...
103
276
SAMANTA
RENATO
ANALISTA
ANALISTA
...
...
150000
100000
...
...
AVG = 125000
110
189
175
UBIRATAN
RITA
PAULO
DIRETOR
DIRETOR
PRESIDENTE
...
...
...
300000
330000
500000
...
...
...
AVG = 315000
230
ANA
SECRETARIA
...
120000
...
AVG = 120000
201
208
EVERALDO
SILVIO
VENDEDOR
VENDEDOR
...
...
200000
150000
...
...
AVG = 175000
seleciona os
grupos
(where de
CARGO
DIRETOR
PRESIDENTE
VENDEDOR
SUM(SAL)
630000
500000
350000
MAS(SAL)
330000
500000
200000
34
Tabela
(A, 1)
(B, 1)
(D, 2)
elementos
do
conjunto
Conjunto
- interseco (INTERSECT)
- diferena (MINUS)
35
Unio:
TABELAS
TAB1
TAB2
Col. 1 Col. 2
A
1
B
1
D
2
CONJUNTOS
Cj1
Cj2
(A, 2)
(B, 1)
(E, 2)
(D, 2)
(A, 1)
(B, 1)
(D, 2)
Col. 1 Col. 2
A
2
B
1
E
2
D
2
Col. 1 Col. 2
A
1
A
2
B
1
D
2
E
2
(A, 1)
(A, 2)
(B, 1)
(D, 2)
(E, 2)
36
Interseco:
TABELAS
TAB1
TAB2
Col. 1 Col. 2
A
1
B
1
D
2
CONJUNTOS
Cj1
Cj2
(A, 1)
(B, 1)
(D, 2)
(A, 2)
(B, 1)
(E, 2)
(D, 2)
Col. 1 Col. 2
A
2
B
1
E
2
D
2
Col. 1 Col. 2
B
1
D
2
(B, 1)
(D, 2)
37
Diferena:
TABELAS
TAB1
TAB2
Col. 1 Col. 2
A
1
B
1
D
2
CONJUNTOS
Cj1
Cj2
(A, 2)
(B, 1)
(E, 2)
(D, 2)
(A, 1)
(B, 1)
(D, 2)
Col. 1 Col. 2
A
2
B
1
E
2
D
2
38
Col. 1 Col. 2
A
1
(A, 1)
A,
B, C
1, 2
tab1
col1
A
col2
3
col3
B
tab2
col4
2
col5
E
39
Col1
A
col2
3
col3
B
col4
2
col5
E
produto cartesiano
critrio de seleo da juno
NOME_EMP
NOME_DEP
PAULO
ANA
SAMANTA
UBIRITAN
RENATO
RITA
SILVIO
EVERALDO
ADMINISTRAO
ADMINISTRAO
PESQUISA
PESQUISA
PESQUISA
VENDAS
VENDAS
VENDAS
40
NOME_DEP
EMP.N_DEP
DEP.N_DEP
SAMANTA
UBIRATAN
ADMINISTRAO
ADMINISTRAO
20
20
10
10
UBIRATAN
ADMINISTRAO
20
10
PAULO
ADMINISTRAO
10
10
RITA
ADMINISTRAO
30
10
EVERALDO
ADMINISTRAO
30
10
SILVIO
ADMINISTRAO
30
10
ANA
ADMINISTRAO
10
10
RENATO
ADMINISTRAO
20
10
SAMANTA
PESQUISA
20
20
UBIRATAN
PESQUISA
20
20
PAULO
PESQUISA
10
20
RITA
PESQUISA
30
20
EVERALTO
PESQUISA
30
20
SILVIO
PESQUISA
30
20
ANA
PESQUISA
10
20
RENATO
PESQUISA
20
20
SAMANTA
VENDAS
20
30
UBIRATAN
VENDAS
20
30
PAULO
VENDAS
10
30
RITA
VENDAS
30
30
EVERALDO
VENDAS
30
30
SILVIO
VENDAS
30
30
ANA
VENDAS
10
30
RENATO
VENDAS
20
30
SAMANATA
PRODUO
10
40
PAULO
PRODUO
10
40
RITA
PRODUO
30
40
EVERALDO
PRODUO
30
40
SILVIO
PRODUO
30
40
ANA
PRODUO
10
40
RENATO
PRODUO
20
40
41
SALMAX
99999
149999
199999
399999
800000
A
B
C
D
E
NOME_EMP
SAL
ANA
RENATO
SAMANTA
SILVIO
UBIRATAN
RITA
EVERALDO
PAULO
120000
100000
150000
150000
300000
300000
200000
500000
B
B
C
C
D
D
D
E
especifica um tipo
de juno
42
NOME_DEP
ADMINISTRAO
PESQUISA
PESQUISA
VENDAS
VENDAS
E
C
D
D
C
COUNT(*)
1
1
1
2
1
43
III - Exerccios
1. Consulte o cargo, o nome e o salrio por hora (assumindo 160
horas/ms) de todos os funcionrios da tabela EMP; salve seu
exerccio no arquivo ex31.sql.
2. Consulte o nome e o total mensal (salrio mais comisso)
recebido pelos vendedores da tabela EMP.
3. Carregue o contedo do arquivo ex31.sql no buffer corrente e
modifique-o de forma a ordenar o resultado em ordem
decrescente do salrio por hora; salve seu exerccio novamente,
no mesmo arquivo.
4.
5.
6.
44
45
IV Contedo
1. CREATE TABLE
2. Tipos de colunas
3. Alterao de uma tabela
4. O comando INSERT
5. O comando DELETE
6. O comando UPDATE
7. Controle de transaes
8. Manipulao de vises
9. Criao de seqncias
46
especificao do tamanho
entre parnteses
nome_da_tabela
nome da tabela a ser criada
coluna_1,...
colunas da tabela
tipo1, tipo2,...
tipos das respectivas colunas
tamanho
tamanho para um tipo
restries
uma combinao de zero ou mais de:
>NULL ou NOT
indica que a coluna pode conter
valores nulos (opo default) ou no
>DEFAULT expr
47
>UNIQUE
>PRIMARY KEY
>REFERENCES
/ FOREINGN
KEY tab (col)
>CHECK
deve
condio
especificada
>CONSTRAINT
deve
nome_restr
Exemplo:
2 ( n_emp
48
- Forma 2:
CREATE TABLE tabelas AS
SELECT col1, col2, ... coln
FROM ...
Media_Salrio
310000
183333.333
226666.667
49
50
CHAR [(tamanho)]
DATE
FLOAT [(tamanho)]
REAL
51
DOBLE PRECISION
LONG
Null?
N_DEP
NOME_DEP
LOCAL_DEP
Type
nome da coluna
Tipo da coluna
SQL
table dep
SQL >
> alter
desc dep
2
modify
( nome_dep
);
Name
Null? char( 30 )Type
N_DEP
NOME_DEP
LOCAL_DEP
DIRETOR
52
tabela
54
- Forma 2:
INSERT INTO tabela ( col, col2, ... coln )
SELECT exp1, exp2, ... expn
FROM ...
55
tabela
condio
Opcional.
Exemplos
- Para remover o empregado de n 189:
SQL > delete from emp where n_emp = 189;
ou
UPDATE tabela
SET ( col1 [, col2 ...] ) = ( consulta )
WHERE condio
tabela
consulta
57
condio
Exemplos
- Para colocar 1000 de comisso para o funcionrio de nmero
208:
SQL > update emp
2 set com = 1000
3 where n_emp = 208;
59
execuo do comando
modificao efetivada
ROLLBACK;
nenhuma
60
Exemplo:
$ sqlplus ora 1/senha 1
SQL*Plus: version 3.0.6.5.1 Production on Wed Apr 3 08:56 ...
Copyright (c) ORACLE Corporation 1979, 1989. All ...
Connected to: ORACLE RDBMS V6.0.27.9.2, with transaction ...
PL/SQL V1.0.29.1.0 Beta
SQL > set feedback off
SQL > select n_dep, nome_dep from dep;
N_DEP
10
20
30
40
NOME_DEP
ADMINISTRAO
PESQUISA
VENDAS
PRODUO
SQL > insert into dep values( 50, `MARKETING`. `SAO PAULO` );
SQL > insert into dep values( 60, `INFORMATICA`, `CAMPINAS`);
SQL > select n_dep, nome_dep from dep;
N_DEP
10
20
30
40
50
60
NOME_DEP
ADMINISTRAO
PESQUISA
VENDAS
PRODUO
MARKETING
INFORMATICA
61
NOME_DEP
COMERCIAL
fim da transao;
as
atualizaes foram
inicio da
ultima
transao
Fim da ultima transao
Com COMMIT implcito
Observaes
- Uma transao ou executada totalmente ou no
executada; no existe transao parcialmente executada,
por definio.
USURIO 1
SQL > select sal from emp
- n_emp
As modificaes
2 where
= 189;
USURIO 2
SQL > select sal from emp
efetuadas no
de uma
transao
2 decorrer
where n_emp
= 189;
SAL efetivao
330000
330000
SQL >
SAL
400000
SAL
330000
SQL >
SAL
400000
SAL
400000
63
64
determina um ponto de
salvamento
65
os resultados sero
sempre iguais
SAL
300000
66
Tabela Emp
N_EMP
NOME_EMP
...N_DEP
103
110
175
189
201
208
230
276
SAMANTA
UBIRATAN
PAULO
RITA
EVERALDO
SILVIO
ANA
RENATO
... 20
...20
...10
...30
...30
...30
...10
...20
Viso Emp_10
N_EMP
NOME_EMP
...N_DEP
175
230
PAULO
ANA
... 10
...10
67
NOME_EMP
103
110
175
189
201
208
230
276
SAMANTA
UIRATAN
PAULO
RITA
EVERALDO
SILVIO
ANA
RENATO
...20
...20
...10
...30
...30
...30
...10
...20
Dep
N_DEP
NOME_DEP
10
20
30
40
ADMINISTRAO
PESQUISA
VENDAS
PRODUO
indicaes para o
dep. 20 apenas,
por motivos de
clareza
NOME
NUM NUM_DEPTO NOME_DEPTO
SAMANTA
103
20
PESQUISA
UBIRATAN
110
20
PESQUISA
PAULO
175
10
ADMINISTRAO
RITA
189
30
VENDAS
create view emp_dep
( nome,
num, 30
num_epto, nome_depto
EVERALDO
201
VENDAS )
SILVIO n_emp,208
30
as select nome_emp,
dep.n_dep,
nome_depVENDAS
68
ANA
230
10
ADMINISTRAO
from emp, dep
RENATO
276
20
PESQUISA
where emp.n_dep
= dep.n_dep;
o nome das colunas pode ser modificado
Emp_Dep
SQL >
2
3
4
...N_DEP
Type
CHAR(10)
NOT NULL NUMBER(4)
NOT NULL NUMBER(2)
CHAR(14)
103
110
175
189
201
208
230
276
NUM_DEPTO
NOME_DEPTO
20
20
10
30
30
30
10
20
PESQUISA
PESQUISA
ADMINISTRAO
VENDAS
VENDAS
VENDAS
ADMINISTRAO
PESQUISA
69
nome_dep
PESQUISA
PESQUISA
ADMINISTRAO
VENDAS
70
71
Para us-la:
SQL > INSERT INTO( nome_emp, n_emp, ...)
2 VALUES ( `PROXIMO CLIENTE`, seq_emp.NEXTVAL, ...);
IV - Exerccios
1.
73
V Gerao de Relatrios
75
V Contedo
1. Formatao de colunas
2. Formatao de ttulos
3. BREAK e COMPUTE
4. Parmetros de controle
76
5. Utilizao de variveis
6. Relatrios avanados
V Gerao de Relatrios
ALIAS sinnimo
CLEAR
DEFAULT
doFOLD_A[FTER]
comando COLUMN:
FOLD_B[EFORE]
FORMAT formato
HEADING texto
JUSTIFY
LEFT
CENTER
RIGHT
LIKE coluna
NEWLINE
NEW_VALUE var
OLD_VALUE var
NULL nulo
NOPRINT
PRINT
ON
OFF
WRAPPED
WORD_WRAPPERD
TRUNCATED
77
V Gerao de Relatrios
coluna
sinnimo
formato
texto
nulo
var
78
V Gerao de Relatrios
Valor
Empregado
Empregado
56.478
56.478
8410
607
607
-5609
-5609
-5609
564
0
124.98
2441453
2441453
Resultado
Empregado
Empre
56.48
5648
8,410
607
00607
-5609
5609<5609>
Observao
brancos
# #.# #
12/23/80
23/12/80
corta o resto
arredonda
alinha pelo V
79
V Gerao de Relatrios
Exemplos
SQL > column 12*sal format 999999999.99
SQL > column nome_emp format a20 heading `Empreg.`word_wrap
SQL > column nome_dep like nome_emp heading `Departamento`
SQL > column com heading `comisso | adicional`format 9999-99
SQL > column 12*sal g~heading `salario| anual`
definies acumulativas
SQl > column 12*sal
column
12*sal ON
Pula uma linha
heading
`salario | anual`headsep `|`
format
999999999.99
exibe as definies
SQL > select nome_dep, nome_emp, 12*sal,com
associadas
2 from emp, dep
coluna 12*sal
3 where emp.n_dep = dep.n_dep
Departamento
ADMINISTRAO
ADMINISTRAO
PESQUISA
PESQUISA
PESQUISA
VENDAS
VENDAS
VENDAS
salrio
Empreg.
anual
PAULO
6000000.00
ANA
1440000.00
SAMANTA 1800000.00
UBIRATAN 3600000.00
RENATO
1200000.00
RITA
3960000.00
SILVIO
1800000.00
EVERALDO 2400000.00
comisso
adicional
5000.00
9000.00
3000.00
80
V Gerao de Relatrios
- TTITLE (BTITLE)
81
V Gerao de Relatrios
paramN:
texto
&varivel
COLn
SKIPn
LEFT
CENTER
RIGHT
SQL.PNO
SQL.LNO
82
V Gerao de Relatrios
Exemplo:
SQL > ttitle center `25 de dezemvro de 1990`skip col 6
> `Relatrio de empregados Departamento de Pessoal`
SQL > select n_emp, nome_emp, sal
2 from emp
3 where n_dep = 30;
25 de dezembro de 1990
Relatrio de Empregados Departamento de Pessoal
N_EMP
NOME_EMP
SAL
189
201
208
RITA
EVERALDO
SILVIO
330000
200000
150000
83
V Gerao de Relatrios
controleN
grupo
ao
grupo ao repetio
nome de uma coluna, expresso, ROW ou
REPORT
SKIP n, onde n um nmero de linhas a serem
puladas, SKIP PAGE ou PAGE; este parmetro
pode ser omitido
84
repetio
V Gerao de Relatrios
Exemplo:
SQL > break on nome_dep page on cargo skip 1
SQL > select nome_dep, cargo, nome_emp
2 from dep, emp
3 where dep.n_dep = emp.n_dep
4 order
by nome_dep, cargo;
NOME_DEP
CARGO
ADMINISTRAO PRESIDENTE
PAULO
SECRETARIA
ANA
NOME_DEP
CARGO
NOME_EMP
PESQUISA
ANALISTA
SAMANTA
REANATO
DIRETOR
UBIRATAN
NOME_DEP
CARGO
NOME_EMP
VENDAS
DIRETOR
RITA
VENDEDOR
SILVIO
EVERALDO
mudana
de pgina
85
V Gerao de Relatrios
86
V Gerao de Relatrios
PESQUISA
SAMANTA
RENATO
UBIRATAN
***************
sum
30
VENDAS
***************
sum
SAL
500000.00
120000.00
620000.00
150000.00
100000.00
300000.00
550000.00
RITA
EVERALDO
SILVIO
330000.00
200000.00
150000.00
680000.00
87
V Gerao de Relatrios
Sintaxe do comando:
COMPUTE operao1 ... OF operando1 ... ON
evento_break
opearaoN
operaoN
88
evento_break
V Gerao de Relatrios
89
V Gerao de Relatrios
n | 20
nmero
de
linhas
recuperadas
simultaneamente do banco de dados
AUTOCOMMIT
ON | OFF
BUFFER
buffer | SQL
CMDSEP
c | `;` | ON | OFF
90
COMPATIBILITY V5 | V6
CONCAT
c | `.` | ON | OFF
caractere
de
concatenao
utilizao de variveis
COPYCOMMIT
n|0
CRT
crt
DCLSEP
c | `! `
DEFINE
c | `&` | ON | OFF
DOCUMENT
ON | OFF
ECHO
ON | OFF
EMBEDDED
ON | OFF
ESCAPE
c | ON | OFF
V Gerao de Relatrios
FEEDBACK
n | 6 | ON | OFF
para
HEADING
ON | OFF
permite ou no a
cabealho de colunas
impresso
de
HEADSEP
c | `I`| ON | OFF
LINESIZE
n | 80
LONG
n | 80
nmero
mximo
de
caracteres
visualizados para valores do tipo LONG
91
MAXDATE
NEWPGE
n|1
NULL
texto
formato
NUMWIDTH
n | 10
PAGESIZE
n | 14
PAUSE
texto | ON | OFF
NUMFORMAT
SCAN
ON | OFF
SHOWMODE
ON | OFF
SPACE
n|1
SQLCONTINUE
c | >
V Gerao de Relatrios
SQLNUMBER
de
ON | OFF
SQLPREFIX
c | `#`
SQLPROMPT
texto | SQL>
92
SUFFIX
texto | SQL
TAB
ON | OFF
TERMOUT
ON | OFF
TIME
ON | OFF
TIMING
ON | OFF
TRIMOUT
ON | OFF
TRUNCATE
ON | OFF
UNDERLINE
c|`-`| ON | OFF
VERIFY
ON | OFF
WRAP
ON | OFF
para
93
V Gerao de Relatrios
N_EMP
110
175
189
NOME_EMP
UBIRATAN
PAULO
RITA
94
Para
NOME_EMP
manter SAL
o valor fornecido pelo usurio para futuras
utilizaes, deve-se
330000 substituir o `&`por `&&`:
RITA
EVERALDO
SILVIO
200000
150000
SAL
RITA
EVERALDO
SILVIO
330000
200000
150000
No h interao: a
varivel
Est permanentemente
95
V Gerao de Relatrios
SAL
RITA
EVERALDO
SILVIO
330000
200000
150000
96
V Gerao de Relatrios
nome do
arquivo
de comandos
Parmetros posicionais
97
V Gerao de Relatrios
inicia armazenamento do
resultado
no arquivo relat1.lst
98
NOME_EMP
PAULO
ANA
2 records selected.
termina o armazenamento e
imprime o resultado
V Gerao de Relatrios
comandos e mensagens do
o arquivo juntamente com o
NOME_EMP
PAULO
ANA
99
V Gerao de Relatrios
100
N_EMP
NOME_DEP
NOME_EMP
10
ADMINISTRAP PAULO
ANA
SAL
$500,000.00
$120,000.00
$620,000.00
20
PESQUISA
SAMANTA
RENATO
UBIRATAN
$150,000.00
$100,000.00
$300,000.00
$550,000.00
30
VENDAS
RITA
EVERALDO
SILVIO
$330,000.00
$200,000.00
$150,000.00
$680,000.00
V Gerao de Relatrios
101
23/11/90
Relatorio de Empregados
Departamento: VENDAS
Pg.
V Gerao de Relatrios
Num
Nome Empregado
Salrio
Comisso
208
SILVIO
$150,000.00
$9,000.00
189
RITA
$330,000.00
$5,000.00
vamos
agora
considerar
o
seguinte
relatrio:
201
EVERALDO
$200,000.00
$5,000.00
data de hoje
Porc.
5.66
1.49
1.48
nmero da pgina
102
Departamento: VENDAS
V Gerao de Relatrios
103
V Gerao de Relatrios
104
7. Definir os ttulos:
ttitle left varhoje center `Relatorio de Empregados` right `Pag. `sql.pno skip 1
left `Departamento: `vardep_novo skip 2
btitle left `Departamento: `vardep_ant
sendo
em um
105
V Gerao de Relatrios
106
V Gerao de Relatrios
V - Exerccios
1. Recupere o comando contido no arquivo ex31.sql e formate
seu resultado da seguinte forma:
a) mude o cabealho da coluna que indica o salrio por hora
para Sal/hora
107
Relatorio de Empregados
Departamento
ADMINISTRAO
Nome
PAULO
ANA
Cargo
PRESIDENTE
SECRETARIA
Salrio
500000
120000
***************
avg
sum
310000
620000
V Gerao de Relatrios
PESQUISA
2. Faa um arquivo
**************
SAMANTA ANALISTA
UBIRATAN DIRETOR
RENATO
ANALISTA
150000
300000
100000
avg
sum
VENDAS
183333.333
550000
RITA
DIRETOR
SILVIO
VENDEDOR
EVERALDO VENDEDOR
330000
150000
200000
**************
avg
sum
226666.667
680000
108
V Gerao de Relatrios
V Gerao de Relatrios
110
VI Expresses e funes
111
VI - Contedo
1. Operadores
2. Funes numricas
3. Funes de caracteres
4. Funes de grupo
5. Converso entre tipos
6. Funes de datas
7. Outras funes
VI Expresses e funes
112
VI.1 - Operadores
Operadores de valor:
+,*,/
+,||
indicador de sinal
multiplicao e diviso
soma e subtrao
concatena strings
WHERE X = -1
SELECT 2 * X...
SELECT X + Y...
SELECT
`EMPREGADO`|
NOME_EMP
Operadores lgicos
=
teste igualdade
! =, < >, ^ = testa desigualdade
>, > =
testa maior (ou igual)
<, < =
testa menor (ou igual)
113
VI Expresses e funes
[NOT] IN
[NOT]
BETWEEN
AND
teste de intervalo
[ NOT ] LIKE
testa casamento de
padro
IS [ NOT ]
NULL
NOT
inverte resusltado
lgico de expresses
AND
operao lgica e
OR
operao lgica ou
ANY
ALL
114
VI Expresses e funes
115
VI Expresses e funes
Funes numricas:
T funo
Descrio/Exemplo
N ABS(n)
valor absoluto de n
ABS(-5) = 5
N CEIL(n)
N FOOR(n)
N MOD(m, n)
N POWER(m,n)
N ROUND(m,[n])
N SIGN(n)
sinal de n
SIGN(-2) = -1
SIGN(0) = 0
SIGN(2) = 1
N SQRT(n)
raiz quadrada de n
SQRT(4) = 2
SQRT(-4) = NULL
N TRUNC(n,[m])
116
VI Expresses e funes
Descrio/Exemplo
cdigo ASCII do primeiro caractere de
c
ASCII( `gua`) = 65
C CHR(n)
C INITCAP(c)
nmero de caracteres em c
LENGTH( `SAO PAULO`) = 9
C LOWER(c)
117
VI Expresses e funes
C LTRIM(c, conj_c)
N NLSSORT(c)
C REPLACE(c, de_c
para_c])
C RPAD
C RTRIM(c, conj_c)
C SOUNDEX(c)
118
VI Expresses e funes
C TRANSLATE(c,
de_c, para_c)
C UPPER(c)
C USERENV(c)
119
VI Expresses e funes
Descrio
N AVG([distinct | all] n)
N COUNT([distinct | all]
expr | *)
N STDDEV([distinct | all] n)
N SUM([distinct | all] n)
N VARIANCE([distinct|all] n)
120
VI Expresses e funes
Descrio
C CHARTOROWID(char)
W HEXTORAW(char)
C RAWTOHEX(raw)
C ROWIDTOCHAR(rowid)
C TO_CHAR(n[,fmt]) ou
TO_CHAR(d[,fmt])
D TO_DATE(char[,fmt])
N TO_DATE(n[,fmt])
N TO_NUMBER(char)
cadeia e
nmeros
121
VI Expresses e funes
122
VI Expresses e funes
resultado
descrio
SCC ou CC
20
sculo
SYYYY ou YYYY
1991
ano
YYY, YY e Y
991, 91 e 1
SYEAR ou YEAR
MM
01
ms
MON
jan
nome do ms abreviado
MONTH
january
nome do ms
WW e W
03, 3
semana do ano e do ms
DDD, DD e D
016, 16, 4
DAY
wednesday
nome do dia
2448273
data Juliana
HH ou HH12
01
HH24
13
MI
07
minutos
SS
10
segundos
SSSSS
42730
Month, YYYY
January , 1991
os tamanhos so fixos
FmMonth, YYYY
January, 1991
os tamanhos so variveis
(fill-mode)
123
VI Expresses e funes
Descrio
D ADD_MONTHS(d,n)
D LAST_DAY(d)
N MONTHS_BEETWEEN(d,e)
D NEXT_DAY(d, char)
N TRUNC(d [, fmt])
N ROUND( d, fmt)
124
VI Expresses e funes
Descrio
* DUMP(expr[, tipo[,
posinic[, bytes]]])
* GREATEST(expr1, expr2,...)
* LEAST(expr1, expr2,...)
* NVL(x, expr)
N VSIZE(expr)
125
VI Expresses e funes
VI - Exerccios
1. Consulte o nome e o cargo dos empregados da tabela EMP que
126
VI Expresses e funes
127
VII - Contedo
1. Pseudo-colunas
2. Juno externa
3. Auto-Juno
4. Consultas encaixadas
5. Consultas hierrquicas
128
VII.1 Pseudo-colunas
Pseudo-colunas so colunas que podem ser consultadas em
qualquer tabela, como uma coluna normal, mas no podem
ser alteradas:
T Nome
Descrio
N nome_seq.CURVAL
N nome_seq.NEXTVAL
N LEVEL
_ NULL
valor nulo
R ROWID
N ROWNUM
D SYSDATE
N UID
C USER
SYSDATE
07-JAN-91
USER
CURSO
ROWID
00000984.0001.0001
129
N_DEP
10
10
20
20
20
30
30
30
NOME_DEP
ADMINISTRAO
ADMINISTRAO
PESQUISA
PESQUISA
PESQUISA
VENDAS
VENDAS
VENDAS
N_EMP NOME_EMP
175
230
103
110
276
189
208
201
PAULO
ANA
SAMANTA
UBIRATAN
RENATO
RITA
SILVIO
EVERALDO
130
NOME_EMP
NOME_DEP
EMP.N_DEP
DEP.N_DEP
SAMANTA
UBIRATAN
ADMINISTRAO
ADMINISTRAO
20
20
10
10
UBIRATAN
ADMINISTRAO
20
10
PAULO
ADMINISTRAO
10
10
RITA
ADMINISTRAO
30
10
EVERALDO
ADMINISTRAO
30
10
SILVIO
ADMINISTRAO
30
10
ANA
ADMINISTRAO
10
10
RENATO
ADMINISTRAO
20
10
SAMANTA
PESQUISA
20
20
UBIRATAN
PESQUISA
20
20
PAULO
PESQUISA
10
20
RITA
PESQUISA
30
20
EVERALTO
PESQUISA
30
20
SILVIO
PESQUISA
30
20
ANA
PESQUISA
10
20
RENATO
PESQUISA
20
20
SAMANTA
VENDAS
20
30
UBIRATAN
VENDAS
20
30
PAULO
VENDAS
10
30
RITA
VENDAS
30
30
EVERALDO
VENDAS
30
30
SILVIO
VENDAS
30
30
ANA
VENDAS
10
30
RENATO
VENDAS
20
30
SAMANATA
PRODUO
10
40
PAULO
PRODUO
10
40
RITA
PRODUO
30
40
EVERALDO
PRODUO
30
40
SILVIO
PRODUO
30
40
ANA
PRODUO
10
40
RENATO
PRODUO
20
40
no existem empregados no
departamento
40
131
N_DEP
10
10
20
20
20
30
30
30
40
NOME_DEP
ADMINISTRAO
ADMINISTRAO
PESQUISA
PESQUISA
PESQUISA
VENDAS
VENDAS
VENDAS
PRODUAO
operador especial
para juno externa
N_EMP NOME_EMP
175
230
103
110
276
189
208
201
PAULO
ANA
SAMANTA
UBIRATAN
RENATO
RITA
SILVIO
EVERALDO
N_DEP
40
NOME_DEP
PRODUO
LOCAL_DEP
SO BERNARDO
132
VII.3 Auto-Juno
GERENTE
RITA
PAULA
SAL
330000
500000
MAX(2*TRAB.SAL)
400000
660000
133
parnteses
delimitam a
sub-consulta
N_DEP
40
NOME_DEP
PRODUAO
134
N_DEP
10
20
30
NOME_DEP
PAULO
UBIRATAN
RITA
SAL
500000
300000
330000
135
s importa se uma
linha
existe ou no!
136
137
138
110 / DIRETOR
103 / ANALISTA
N_EMP
103
110
175
189
201
208
230
276
230 / SECRETARIA
276 / ANALISTA
NOME_EMP
SAMANTA
UBIRATAN
PAULO
RITA
EVERALDO
SILVIO
ANA
RENATO
189 / DIRETOR
201 / VENDEDOR
CARGO
ANALISTA
DIRETOR
PRESIDENTE
DIRETOR
VENDEDOR
VENDEDOR
SECRETARIA
ANALISTA
208 / VENDEDOR
CHEFE
110
175
175
189
189
175
110
139
indica o comeo
da
consulta
especifica a conexo da
N_EMP
189
175
indica o sentido da
consulta:
do empregado para o chefe
NOME_EMP
RITA
PAULO
CARGO
DIRETOR
PRESIDENTE
N_EMP NOME_EMP
175
PAULO
110
UBIRATAN
189
RITA
201
EVERALDO
208
SILVIO
230
ANA
CARGO
PRESIDENTE
DIRETOR
DIRETOR
VENDEDOR
VENDEDOR
SECRETARIA
elimina toda
uma
sub-rvore
140
LEVEL
1
2
3
3
2
3
3
2
NOME
PAULO
UBIRATAN
SAMANTA
RENATO
RITA
EVERALDO
SILVIO
ANA
141
VII - Exerccios
1. Consulte seu identificador e nome no sistema, bem como a data
e hora correntes no formato que voc achar mais usualmente
utilizado (ex. 02:50-11/01/91).
2. Consulte o nome dos chefes (NOME_CHEFE) dos funcionrios
(NOME_FUNC)
da
tabela
EMP,
ordenados
por
NOME_CHEFE. Caso algum funcionrio no possua chefe,
mostre a cadeia de caracteres `________`em NOME_CHEFE.
3. Consulte os nomes, salrios e cidades onde trabalham os
empregados que esto na mesma faixa de salrio que
UBIRATAN. Dica: construa antes as seguintes consultas: nome,
salrio e cidade de todos empregados; nome, salrio, cidade e
faixa salarial de todos empregados; e faixa salarial de
UBIRATAN.
4. Aumente o salrio em 20% para os empregados que sejam os
mais antigos de seus departamentos.
5. Remova os empregados que recebem mais que a mdia dos
salrios de seus cargos.
6. Desfaa as duas operaes anteriores.
142
143
VIII - Contedo
1. Manuteno de usurios
2. Privilgios de acesso a tabelas
3. Acesso concorrentes a tabelas
4. Criao e uso de ndices
5. Criao e uso de clusters
6. Dicionrio de estruturas de dados
144
privilgio
>CONNECT
>RESOURCE
etc.
>DBA
permite
executar
operaes
privilegiadas, como criar novos usurios
usurio
senha
senha do usurio
145
146
Um usurio pode definir quem pode usar suas tabela e que tipo
de operao podem ser realizadas:
GRANT privilegio, ... ON tabela TO usurio
[WITH GRANT OPTION]
privilgio
>ALTER
>DELETE
>INSERT
>INDEX
>REFERENCES
>SELECT
>UPDATE (col1,
..., coIN
>ALL
usurio
148
PUBLIC
sinnimo
tabela
149
tabela, ...
tipo
>SHARE
>ROW SHARE
>SHARE
UPDATE
>ROW
EXCLUSIVE
>SHARE ROW
EXCLUSIVE
NOWAIT
151
152
USURIO A
SQL > lock table emp
2
in exclusive mode;
Table(s) Locked.
SQL >
SQL >
SQL >
SQL >
SQL > lock table dep
2
in exclusive mode;
USURIO B
SQL >
SQL >
SQL >
SQL >
SQL >
SQL > lock table dep
2
in exclusive mode;
Table(s) Locked.
SQL >
SQL >
SQL >
SQL >
SQL >
SQL > lock table emp
2
in exclusive mode;
lock table in exclusive mode
*
ERROR at line: ORA-0060:
deadlock delected, transaction
backed out
Table(s) Locked.
O Oracle detecta a
ocorrncia
de um deadlock
153
VII.4 - ndice
ndices permitem que o Oracle recupere informaes do banco
de dados de forma mais eficiente.
Para criar um ndice:
CREATE [UNIQUE] INDEX ndice ON
tabela [col1 ASC | DESC, )
UNIQUE
ndice
tabela
>ASC
>DESC
ordem descendente
154
ndice
ON tabela
ou
SQL > creat unique index emp_nome_num
2 on emp( nome_inp, n_emp);
o Oracle utilizar
o
ndice emp_num
de
dados
so
mantidos
156
usa ndice
no usa ndice
Para evitar que um ndice seja usado, basta fazer uma operao
sem efeito na primeiro coluna associada ao ndice:
SQL > select nome_emp
2 from emp
3 where cargo | | = `DIRETOR` and n_emp = 110;
157
VIII.5 - Clusters
Cluster uma caracterstica que permite que vrias tabelas
relacionadas sejam agrupadas fisicamente no banco de dados
Emp
N_EMP
NOME_EMP
103
110
175
189
201
208
230
276
SAMANTA
UIRATAN
PAULO
RITA
EVERALDO
SILVIO
ANA
RENATO
o departamento e seus
empregados esto
fisicamente agrupados
Dep
...N_DEP
...20
...20
...10
...30
...30
...30
...10
...20
N_DEP
NOME_DEP
10
20
30
40
ADMINISTRAO
PESQUISA
VENDAS
PRODUO
Cluster Emp_Dep
10
175
230
ADMINISTRAO
PAULO
PRESIDENTE
ANA
SECRETARIA
SAO PAULO
27-FEB-86
175
01-MAY-89
...
...
20
103
110
276
PESQUISA
SAMANTA
UBIRATAN
RENATO
ANALISTA
DIRETOR
ANALISTA
CAMPINAS
110
17-MAR-85
175
20-APR-85
110
30-APR-86
...
...
...
30
189
201
208
VENDAS
RITA
EVERALDO
SILVIO
DIRETOR
VENDEDOR
VENDEDOR
BRASILIA
175
25-DEC-85
189
28-SEP-86
189
30-OCT-86
...
...
...
40
PRODUO
SAO BERNARDO
158
159
cluster
col1 tipo1, ...
160
161
Em geral clusters:
- aumentando o desempenho para junes naturais
- economizam espao na banco de dados
- diminuem o desempenho para consultas simples s tabelas
separadamente
162
ALL_COL_COMENTS
ALL_INDEXES
ALL_IND_COLUM
NS
ALL_SYNONYMS
ALL_TABLES
ALL_TAB_COLUM
NS
163
ALL_USERS
ALL_VIEWS
USER_CATALOG
USER_CLUSTERS
USER_FREE_SPACE
USER_INDEXES
USER_SYNONYMS
USER_VIEWS
164
TABLE_NAME
DEP
DEP_SAL
EMP
EMP_DEP
EMP_DIA
FAIXA_DIA
JOAO_ALU
PROJ
PROJ_DEP
SAL_MEDIO
TABLE_TYPE
TABLE
VIEW
TABLE
VIEW
VIEW
TABLE
SYNONYM
TABLE
CLUSTER
TABLE
165
TABLE_NAME
ALUNO
DEP
DEP_SAL
EMP
EMP_DEP
EMP_DIA
FAIXA_SAL
FRANQUIAS
ITEM_PED
PEDIDO
PRODUTO
PROJ
SAL_MEDIO
...
OWNER
JOAO
CURSO
CURSO
CURSO
CURSO
CURSO
CURSO
JOAQUIM
JOAO
JOAO
JOAO
CURSO
CURSO
TABLE_TYPE
TABLE
TABLE
VIEW
TABLE
VIEW
VIEW
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE_NAME
EMP
EMP
COLUMN_NAME
N_EMP
NOME_EMP
166
DOADOR
JOAO
JOAO
JOAQUIM
JOAO
JOAO
TAB
A D N I
PRODUTO Y Y Y Y
ALUNO
Y
FRANQUIAS
PEDIDO
Y
Y
ITEM_PED Y
Y
S
Y
Y
Y
Y
Y
U R
Y Y
Y Y
Y
Y Y
Y Y
167
COMMENTS
Empregados da Software Desing
COMMENTS
Nome do empregado
cdigo do chefe desta pessoa
168
VIII - Exerccios
1. Conceda privilegio de consulta a insero em sua tabela
ALUNO para seu companheiro mais prximo.
2. Crie i sinnimo ALUNO0 para a tabela ALUNO do instrutor
(usurio ora0).
3. Bloqueia a tabela ALUNO0 em modo exclusivo e insira os seus
dados nela (dica: utilize a segunda forma do comando INSERT).
Efetive a operao.
4. Crie um ndice na coluna NOME da sua tabela ALUNO.
5. Revogue as permisses de acesso a sua tabela ALUNO para seu
companheiro, concedidas no exerccio n 1.
6. Consulte os ndices existentes para a sua tabela ALUNO. Dica:
veja a pgina 165.
7. Consulte seus privilgios de acesso tabela ALUNO do
instrutor. Dica: veja pagina 166.
169
170
Tabelas:
SQL > DESCRIBE emp
Name
N_ EMP
NOME_EMP
CARGO
CHEFE
DATA_ADM
SAL
COM
N_DEP
Null?
Type
NOT NULL NUMBER(4)
NOT NULL CHAR(10)
CHAR(10)
NUMBER(4)
DATE
NUMBER(10,2)
NUMBER(10,2)
NUMBER(2)
Contedo:
N_EMP NOME_EMP
CARGO
CHEFE DATA_ADM
SAL
103
110
175
189
201
208
230
276
ANALISTA
DIRETOR
PRESIDENTE
DIRETOR
VENDEDOR
VENDEDOR
SECRETARIA
ANALISTA
110
175
150000
300000
500000
330000
200000
150000
120000
100000
SAMANTA
UBIRATAN
PAULO
RITA
EVERALDO
SILVIO
ANA
RENATO
175
189
189
175
110
17-MAR-85
20-APR-85
27-FEB-86
25-DEC-85
28-SEP-86
30-OCT-86
01-MAY-89
30-APR-86
COM
5000
3000
9000
1000
N_DEP
20
20
10
30
30
30
10
20
171
Type
NUMBER(2)
CHAR(14)
CHAR(13)
Contedo:
N_EMP
NOME_DEP
LOCAL_DEP
10
20
30
40
ADMINISTRAO
PESQUISA
VENDAS
PRODUO
SAO PAULO
CAMPINAS
BRASILIA
SAO BERNARDO
Null?
Type
SALMIX
SALMAX
FAIXA
NOT NULL
NOT NULL
NOT NULL
NUMBER(11,2)
NUMBER(11,2)
CHAR(1)
172
Contedo:
SALMIN
1
100000
150000
200000
400000
SALMAX
99999
149999
199999
399999
800000
F
A
B
C
D
E
Null?
NOR NULL
Type
CHAR(30)
CHAR(50)
CHAR(35)
CHAR(2)
NUMBER(5)
DATE
Null?
NOT NULL
Type
CHAR(14)
NUMBER
Null?
NOT NULL
Type.
NUMBER(5)
CHAR(20)
NUMBER(2)
NOT_NULL
173
Vises:
SQL > DESCREBE dep_sal
Name
Null?
Type
NOME_DEP
NUM_FUNC
SAL_MIN
SAL_MED
SAL_MAX
Null?
Type
NOME
NUM
NUM_DEPTO
NOME_DEPTO
NOT NULL
NOT NULL
NOT NULL
NOT NULL
CHAR(10)
NUMBER(4)
NUMBER(2)
CHAR(14)
Null?
Type
NOT NULL NUMBER(4)
NOT NULL CHAR(10)
CHAR(10)
NUMBER(4)
DATE
NUMBER(10,2)
NUMBER(10,2)
NUMBER(2)
174
175
COMMENT
COMMIT
CREATE
CLUSTER
CREATE INDEX
CREATE
SEQUENCE
numrica
gerada
CREATE
SYNONYM
CREATE TABLE
CREATE VIEW
DELETE
DROP objeto
GRANT
cria usurios,
atribui senhas, e fornece
privilgios de acesso a tabelas e vises
176
INSERT
LOCK TABLE
RENAME
REVOKE
ROLLBACK
determina um ponto de
intermedirio para a transao
SELECT
SET
TRANSACTION
determina um ponto
salvamento de transaes
UPDATE
salvamento
intermedirio
de
Comandos SQL*Plus:
@, START
!, HOST
ACCEPT
APPEND, A
BREAK
BTITLE
CHANGE
CLEAR
COLUMN
COMPUTE
CONNECT
DEFINE
conecta
DISCONNECT
DOCUMENT
EDIT, ED
EXIT, QUIT
GET
HELP
fornece ajuda
SQL*Plus
INPUT, I
LIST, L
PAUSE
PROMPT
REMARK, REM
RUM
RUMFORM
sobre
comandos
SQL e
178
SAVE
SET
SHOW
SPOOL
TTITLE
UNDEFINE
WHENEVER
179
II.1:
create table aluno (
nome char( 30 ) not null,
ender char( 50 ),
cidade char( 25 ),
estado char( 2 ),
cep number( 5 ),
aniversario date );
II.2:
insert intoaluno
values ( `Joao da Silva Neto`, `Rua Brasincas, 145`, `Sao Paulo`,
`SP`, 01250, `12-JAN-11`);
insert into aluno
values ( `Joao da Silva Junior`, `Rua Tiradentes, 897`, `Bauru`,
`SP`, 12450, `24-APR-11`);
insert into aluno
values ( `Matias da Silva Salgado`, `Rua Rui Barbosa, 145`,
`Sao Paulo`, `SP`, 01124, `13-AUG-11`);
insert into aluno
values ( `Ana Rosa da Silva Salgado`, `Rua Brs Cubas, 789`,
`Curitiba`, `PR`, 80530, `01-OCT-11`);
180
II.3:
column niver format a5
select nome Aluno, to_char( aniversario, `DD/MM` ) Niver
from aluno;
II.4:
select ender, cidade, estado, cep
from aluno
where nome = `Joo da Silva Neto;
II.5:
save ex24
exit
sqlplus ora1/senha1
start ex24
III.1:
select nome_emp, cargo, sal / 160
from emp;
III.2:
select nome_emp, sal + com
from emp
where cargo = `VENDEDOR`
181
III.3:
select nome_emp, cargo, sal / 160
from emp
order by 3 desc;
III.4:
select min(sal)
from emp;
III.5:
select n_dep, min(sal) Menor Salario, max(sal) Maior Salario,
avg(sal) Salario Mdio
from emp
group by n_dep
having count(*) > 1;
III.6:
select nome_emp, nome_dep
from emp, dep
where emp.n_dep = dep.n_dep and
local_dep in ( `SAO PAULO`, `CAMPINAS` );
IV.1:
creat table empreg as
select n_emp, nome_emp, sal
from emp;
182
IV.2:
rename empreg to temp;
drop table temp;
IV.3a:
alter table aluno
modify ( cidade char( 35 ) );
IV.3b:
alter table aluno
add ( sal_desejado mnber( 11, 2 ) );
IV.4:
insert into aluno ( nome, aniversario, sal_desejado )
values ( `Joaquim Alfredo Guimares`, `13-JUL-11`, 350000 );
IV.5:
update aluno
set sal_desejado = 400000
where nome = `Joo da Silva Neto`;
update aluno
set ender = `Rua Pindamonnhangaba, 123`,
cidade = `Taubat`, estado = `SP`, cep = 14500
where nome = `Joaquim Alfredo Guimares`;
IV.6:
create table tmp as
select nome, ender, cidade, estado, cep, aniversario
from aluno;
drop table aluno;
rename tmp to aluno;
183
IV.7:
delete from aluno
where nome = `Joaquim Alfredo Guimares`;
commit;
IV.8:
create view dep_sal as
select nme_dep, count( * ) num_func, min( sal ) sal_min,
avg( sal ) sal_med, max( sal ) sal_max
from emp, dep
where emp.n_dep = dep.n_dep
group by nome_dep;
IV.9:
describe dep_sal
select * from dep_sal;
IV.10:
update emp
set sal = 300000
where nome_emp = `SAMANTA`;
select * from dep_sal;
184
IV.11:
rollback;
V.1:
get ex31
del
1
a Sal/hora
ttitle center Salario por hora skip 1 center dos Empregados skip1
column Sal/hora format 9999.99
column cargo justify right
column
/
V.2:
set echo off
set feedback off
set linesize 50
set pagasize 40
ttitle center Relatorio de Empregados skip 2
break on Departamento skip 1
compute avg sum of Salario on Departamento
select nome_dep Departamento, nome_emp Nome, cargo
Cargo, sal Salario
from emp, dep
where emp.n_dep = dep.n_dep
order by nome_dep;
185
V.3:
set echo off
set verify off
set feedback off
set pause off
set linrsize 50
set pagasize 40
clumn aux noprint
ttitle center Relatorio de empregados skip 2
break on aux skip 1
compute avg sum of Salario on aux
accept MaiorSalario number prompt `Maior Salario: `
spool ex.53.lst
select nome_dep aux, nome_dep Departamento,
nome_emp Nome, cargo Cargo, sal Salrio
from emp, dep
where emp.n_dep = dep.n_dep and
sal > = &1 and sal < = &MaiorSalario
order by nome_dep;
spool off
VI.1:
select nome_emp, cargo
from emp
where to_char( data_adm, `DD/MM/YY` ) between
`01/02/85`and `27/12/85` and
com is not null;
186
VI.2:
select userenv( `sessionid`), userenv( `terminal`)
from dual;
VI.3:
Select stddev( sal ) DesvPadr, avg( sal ) Media
From emp
Where cargo in ( `DIRETOR`, `PRESIDENTE`);
VI.4:
column data 1 format a6
column data 2 format a6
select nome, to_char( aniversario, `DD/MM`) data1,
to_char( aniversario, `DD-MON`) data2
from aluno;
VI.5:
select trunc( to_number(
months_between( max( data_adm ), min( data_adm ))
)) MESES
from emp;
187
VI.6:
select n_emp, nome_emp, cargo, sal + nvl( com, 0 ) TotSalario
from emp;
VI.7:
select nome_emp,
decode( cargo, `SECRETARIA`, 1, `VENDEDOR`, 2,
`ANALISTA`, 3, 4 ) Categoria
from emp;
VI.8:
select emp.nome_emp, greatest( emp.sal, dep_sal.sal_md ) Saladeal
from emp, dep, dep_sal
where emp.n_dep = dep.n_dep and
dep.nome_dep = dep_sal.nome_dep;
VI.9:
select substr( nome_emp, 1, 1)
from emp
order by data_adm;
VII.1:
column data_hora format a15
select uld, user, to_char( sysdate, `HH24:MI-DD/MM/YY` )
DATA HORA
from dual;
188
VII.2:
select nvl( chefe.nome_emp, `-------` ) NOME_CHEFE,
func.nome_emp NOME_FUNC
from emp func, emp chefe
where func.chefe = chefe.n_emp (+)
order by 1;
VII.3:
select nome_emp, sal, local_dep
from emp x, dep, faixa_sal
where x.n_dep = dep.n_dep and
x.sal between salmin and salmax and
faixa = ( select faixa
from faixa_sal, emp y
where y.nome_emp = `UBIRATAN`and
y.sal between salmin and salmax );
VII.4:
update emp x
set sal = 1.2 * sal
where data_adm = ( select min( data_adm ) from emp y
where y.n_dep = x.n_dep);
VII.5:
delete from emp x
where x.sal > ( select avg( y.sal )
from emp y
where y.cargo = x.cargo );
189
VII.6:
rollback;
VIII.1:
grant select, insert on aluno to ora
VIII.2:
create synonym aluno0 for ora0.aluno;
VIII.3:
lock table aluno0 in exclusive mode;
insert into aluno0
select *
from aluno
where nome = `Joao da Silva Neto`;
commit;
VIII.4:
create index alu_nome on aluno( nome );
VIII.5:
revoke select, insert on aluno from ora2;
190
VIII.6:
select ui.index_name, ui.table_name, column_name
from user_indexes ui, user_ind_columns unid
where ui.index_name = uind.index_name
and ui.table_name = `ALUNO`;
VIII.7:
select grantor doador, table_name tab, alter_priv a, delete_priv d,
index_priv n, insert_priv i, select_priv s, update_priv u,
references_priv r
from all_tab_grants_recd
where table_name = `ALUNO` and grantor = `ORA`;
191