Você está na página 1de 166

Captulo 1: Conceitos de Banco de Dados

1.1 Objetivos deste captulo


Introduzir os conceitos bsico de sistema gerenciador de banco de dados, banco de dados
relacional, lgebra relacional, e a arquitetura do Oracle.
1.2 Sistema de Gerenciamento de Banco de Dados
O Sistema de Gerenciamento de Banco de Dados (SGBD) um softare que controla o
armazenamento, as modifica!"es, e os acessos #s informa!"es do banco de dados.
O SGBD atua como interface entre os usurios e as informa!"es armazenadas. $odas as
solicita!"es relati%as aos dados do banco de dados s&o interce'tadas, inter'retadas, e
e(ecutadas 'elo SGBD. )en*um acesso aos dados 'ode ser feito de outra maneira.
Desta forma, o SGBD isola o usurio de todos os detal*es 'articulares do *ardare ou do
sistema o'eracional sendo utilizado, tais como mtodo de acesso e blocagem de disco. +
forma de acesso do usurio ao banco de dados n&o de%e mudar quando o *ardare ou o
sistema o'eracional mudam.
,(istem modelos alternati%os 'ara se im'lementar um SGBD, sendo que os mais comuns s&o
*ierrquico, rede, listas in%ertidas e relacional.
1.3 Banco de dados relacional
O modelo 'redominante atualmente o relacional. -m banco de dados relacional 'ode ser
definido como um banco de dados que a'arece ao usurio como uma cole!&o de tabelas
relacionadas, e nada alm de tabelas.
Os tr.s elementos de um banco de dados relacional s&o/
tabelas
colunas
lin*as
0
Os o'eradores relacionais s&o/
Sele!&o12estri!&o uma o'era!&o que recu'era e mostra dados de uma
tabela. 3 'oss4%el recu'erar todas as lin*as, ou a'enas
algumas que satisfa!am uma determinada condi!&o ou a
%rias condi!"es. ,sta o'era!&o c*amada tambm de
subcon5unto *orizontal.
6ro5e!&o uma o'era!&o que recu'era e mostra dados de a'enas
algumas colunas, e 'ortanto c*amada de subcon5unto
%ertical.
-ni&o mostra todas as lin*as que a'arecem em duas tabelas.
Interse!&o mostra todas as lin*as que a'arecem nas duas tabelas.
Diferen!a mostra todas as lin*as que a'arecem em a'enas uma das
tabelas
6roduto o resultado obtido 'ela concatena!&o de duas tabelas.
$odas as lin*as da 'rimeira tabela s&o concatenadas com
todas as lin*as da segunda tabela.
7un!&o o resultado obtido 'ela concatena!&o de duas tabelas de
acordo com condi!"es es'ec4ficas. +'enas as lin*as que
atendem as condi!"es estabelecidas s&o concatenadas.
Sele!&o12estri!&o
6ro5e!&o
-ni&o
8
Interse!&o
Diferen!a
9
6roduto
7o&o ( 6intor : 7o&o 6intor
7os ,scritor 7o&o ,scritor
;anoel 7os 6intor
7os ,scritor
;anoel 6intor
;anoel ,scritor
7un!&o
7o&o 0< 0< =endas 7o&o 0< 0< =endas
7os 0< 8< 6esq. 7os 0< 0< =endas
;aria 8< 9< >ont. ;aria 8< 8< 6esq.
+na 9< ?< Secret. +na 9< 9< >ont.
1.4 r!uitetura do Oracle
Background Processes
System Global Area
Servers
Users
Redo Log Files
Data Files
Control Files
Banco de Dados
O SGBD/
,struturas de mem@ria/
SAstem Global +rea (SG+) uma regi&o com'artil*ada de mem@ria alocada 'elo
SGBD Oracle, que contm dados e informa!"es de controle. Buanto maior for a SG+
mel*or ser o desem'en*o do Oracle. Os dados da SG+ s&o com'artil*ados 'or
todos os usurios que est&o acessando o banco de dados. +s informa!"es
?
armazenadas na SG+ est&o di%ididas 'or ti'o de estrutura de mem@ria, incluindo
Cdatabase buffersD, Credo log buffersD e Cs*ared 'ollD.
6rogram Global +rea (6G+) uma rea de mem@ria que contm dados e informa!"es
de controle 'ara um 'rocesso ser%idor. -ma 6G+ criada 'elo Oracle quando um
'rocesso ser%idor iniciado.
6rocessos/
Os 'rocessos s&o di%ididos em 6rocessos -surio e 6rocessos do Oracle. >ada
usurio conectado 'ossui um 6rocesso -surio, atra%s do qual se comunica com o
Oracle. ,ntre os 'rocessos do Oracle est&o os 6rocessos Ser%idores, que e(ecutam as
solicita!"es emitidas 'elo 6rocessos -surios, e os 6rocessos BacEground.
O Banco de dados/
Data Files >ontm todos os dados do banco de dados.
2edo Gog Files >ontm todas as informa!"es relati%as #s
altera!"es efetuadas no banco de dados
'ara 'ermitir a recu'era!&o.
>ontrol Files 2egistra a estrutura f4sica do banco de dados.
H
Captulo 2: "ntrodu#$o %s Consultas
2.1 Objetivos deste captulo
,ste ca'4tulo faz uma introdu!&o # linguagem de consulta utilizada 'ara acessar o Banco de
Dados Oracle. ,m 'articular, s&o discutidas as declara!"es utilizadas 'ara/
realizar clculos
manusear %alores nulos corretamente
nomes alternati%os 'ara t4tulos das colunas
concatenar colunas
ordenar lin*as
fornecer critrios de 'esquisa
2.2 O utilit&rio S'()*(+S
O SBGI6G-S uma interface atra%s da qual os comandos SBG 'odem ser entrados e
e(ecutados. O SBGI6G-S 'ossui outros comandos, que 'ermitem formatar a sa4da dos
comandos SBG, alm de fornecer facilidades 'ara editar e sal%ar comandos SBG.
6ara ati%ar o SBGI6G-S digite SBG6G-S na lin*a de comando do ;SJDOS, e 'ressione a
tecla ,nter. Buando o SBG6G-S solicitar 'ara entrar com o nome do usurio digite
+G-)O0, e quando for solicitada a sen*a forne!a +G-)O0 no%amente.
+s lin*as de comando do SBGI6G-S s&o 'refi(adas 'or/ SBGK. +s lin*as de continua!&o
s&o numeradas. $odo o curso est baseado na utiliza!&o desta ferramenta 'elos 'artici'antes.
Os comandos 'odem ser escritos em uma ou mais lin*as.
2.3 Constru#$o b&sica de uma consulta
O comando S,G,>$ recu'era informa!"es do banco de dados, im'lementando todos os
o'eradores da lgebra relacional.
,m sua forma mais sim'les de%e incluir/
a. + clusula S,G,>$, que lista as colunas a serem en%ol%idas (essencialmente a 6ro5e!&o,
conforme definido na lgebra relacional).
b. + clusula F2O;, que es'ecifica as tabelas en%ol%idas.
6ara listar os nLmeros de todos os de'artamentos, nomes dos em'regados e nLmeros dos
gerentes da tabela ,;6, digitaJse/
SQL> SELECT DEPTNO, ENAME, MGR
2 FROM EMP
M
DEPTNO ENAME MGR
------- ---------- -------
20 SMITH 7902
30 ALLEN 7698
30 WARD 7698
20 JONES 7839
30 MARTIN 7698
30 BLAE 7839
!0 CLAR 7839
20 SCOTT 7"66
!0 ING
30 T#RNER 7698
20 ADAMS 7788
30 JAMES 7698
20 FORD 7"66
!0 MILLER 7782
!$ %&'( ()*)+,)-.
3 'oss4%el selecionar todas as colunas da tabela colocandoJse um NIN (asterisco) a'@s a
'ala%ra S,G,>$, como %isto abai(o/
SQL> SELECT /
2 FROM EMP
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
------- ---------- --------- ------- --------- ------- ------- -------
7369 SMITH CLER 7902 !3-J#N-83 800 20
7$99 ALLEN SALESMAN 7698 !"-A#G-83 !600 300 30
7"2! WARD SALESMAN 7698 26-MAR-8$ !2"0 "00 30
7"66 JONES MANAGER 7839 3!-OCT-83 297" 20
76"$ MARTIN SALESMAN 7698 0"-DEC-83 !2"0 !$00 30
7698 BLAE MANAGER 7839 !!-J#N-8$ 28"0 30
7782 CLAR MANAGER 7839 !$-MA0-8$ 2$"0 !0
7788 SCOTT ANAL0ST 7"66 0"-MAR-8$ 3000 20
7839 ING PRESIDENT 09-J#L-8$ "000 !0
78$$ T#RNER SALESMAN 7698 0$-J#N-8$ !"00 0 30
7876 ADAMS CLER 7788 0$-J#N-8$ !!00 20
7900 JAMES CLER 7698 23-J#L-8$ 9"0 30
7902 FORD ANAL0ST 7"66 0"-DEC-83 3000 20
793$ MILLER CLER 7782 2!-NO1-83 !300 !0
!$ %&'( ()*)+,)-.
2.4 ,-press.es aritm/ticas
-ma e('ress&o a combina!&o de um ou mais %alores, o'eradores e fun!"es, que resultam
em um %alor calculado.
+s e('ress"es aritmticas 'odem conter nomes de colunas, constantes numricas, e
o'eradores aritmticos. Os o'eradores s&o O J I e 1 , 'ara soma, subtra!&o, multi'lica!&o e
di%is&o, res'ecti%amente.
)o e(em'lo abai(o calculaJse o salrio anual multi'licandoJse o salrio mensal 'or doze.
SQL> SELECT ENAME, SAL/!2, COMM
2 FROM EMP
P
ENAME SAL/!2 COMM
---------- ------- -------
SMITH 9600
ALLEN !9200 300
WARD !"000 "00
JONES 3"700
MARTIN !"000 !$00
BLAE 3$200
CLAR 29$00
SCOTT 36000
ING 60000
T#RNER !8000 0
ADAMS !3200
JAMES !!$00
FORD 36000
MILLER !"600
Se a e('ress&o aritmtica conti%er mais de um o'erador, multi'lica!&o e di%is&o s&o de
mesma 'reced.ncia, 'orm com 'reced.ncia su'erior a adi!&o e subtra!&o, que tambm s&o
de mesma 'reced.ncia. )o caso de o'eradores com a mesma 'reced.ncia, o da esquerda
'rocessado 'rimeiro.
)o e(em'lo abai(o, a multi'lica!&o (8H<I08) realizada 'rimeiro, e de'ois somada ao
salrio.
SQL> SELECT ENAME, SAL22"0/!2
2 FROM EMP
ENAME SAL22"0/!2
---------- ----------
SMITH 3800
ALLEN $600
WARD $2"0
JONES "97"
MARTIN $2"0
BLAE "8"0
CLAR "$"0
SCOTT 6000
ING 8000
T#RNER $"00
ADAMS $!00
JAMES 39"0
FORD 6000
MILLER $300
6ar.nteses 'odem ser utilizados 'ara es'ecificar a ordem na qual os o'eradores ser&o
e(ecutados. Se, 'or e(em'lo, for necessrio somar 8H< ao salrio antes de multi'licar 'or 08,
de%emos escre%er/
SQL> SELECT ENAME, 3SAL22"04/!2
2 FROM EMP
ENAME 3SAL22"04/!2
---------- ------------
Q
SMITH !2600
ALLEN 22200
WARD !8000
JONES 38700
MARTIN !8000
BLAE 37200
CLAR 32$00
SCOTT 39000
ING 63000
T#RNER 2!000
ADAMS !6200
JAMES !$$00
FORD 39000
MILLER !8600
2.0 1omes alternativos para ttulos de colunas
6ara mostrar o resultado de uma consulta, o SBGI6G-S normalmente utiliza o nome da
coluna como t4tulo da coluna. ,m muitos casos, isto torna o t4tulo sem significado. 6ode ser
alterado o t4tulo da coluna usandoJse um +lis.
O +lis es'ecificado escre%endoJse um te(to a'@s item a ser mostrado na clusula
S,G,>$. 6or 'adr&o, o nome do +lis con%ertido 'ara letras maiLsculas, e n&o 'ode
conter es'a!os em branco, a menos que se5a colocado entre as'as.
6ara mostrar como t4tulo da coluna S+G+2IO +)-+G no lugar de S+GI08, 'odemos
escre%er/
SQL> SELECT ENAME NOME, SAL/!2 5SALARIO AN#AL6, COMM
2 FROM EMP
NOME SALARIO AN#AL COMM
---------- -------------- -------
SMITH 9600
ALLEN !9200 300
WARD !"000 "00
JONES 3"700
MARTIN !"000 !$00
BLAE 3$200
CLAR 29$00
SCOTT 36000
ING 60000
T#RNER !8000 0
ADAMS !3200
JAMES !!$00
FORD 36000
MILLER !"600
!$ %&'( ()*)+,)-.
)ota/ somente na clusula S,G,>$ o +lis 'ode ser usado, nas outras clusulas n&o.
2.2 O operador de concatena#$o
O o'erador de concatena!&o (RR) 'ermite 5untar colunas, e('ress"es aritmticas, ou %alores
constantes, 'ara criar uma e('ress&o do ti'o caracter. >olunas dos dois lados do o'erador
s&o combinadas 'ara formar uma s@ coluna.
S
6ara combinar o nLmero do em'regado com o nome do em'regado em uma coluna a'enas,
utilizando ,;62,G+DO como t4tulo, de%emos escre%er/
SQL> SELECT EMPNO77ENAME EMPREGADO
2 FROM EMP
EMPREGADO
--------------------------------------------------
7369SMITH
7$99ALLEN
7"2!WARD
7"66JONES
76"$MARTIN
7698BLAE
7782CLAR
7788SCOTT
7839ING
78$$T#RNER
7876ADAMS
7900JAMES
7902FORD
793$MILLER
!$ %&'( ()*)+,)-.
2.3 (iterais
-m literal qualquer caracter, e('ress&o, ou nLmero, incluido na clusula S,G,>$, que n&o
um nome ou +lis da coluna.
O literal da clusula S,G,>$ listado em todas as lin*as mostradas 'elo comando. Giterais
dos ti'os data e caracter de%em ser en%oltos 'or a'@strofos (T). Giterais numricos n&o
'recisam de a'@strofos.
O comando abai(o contm literal concatenado com colunas, e um +lis 'ara a 'rimeira
coluna.
SQL> COL#MN EMPREGADO FORMAT A20
SQL> SELECT EMPNO778-877ENAME EMPREGADO,
2 8TRABALHA NO DEPARTAMENTO8,
3 DEPTNO
$ FROM EMP
EMPREGADO 8TRABALHANODEPARTAMENTO8 DEPTNO
-------------------- ------------------------ -------
7369-SMITH TRABALHA NO DEPARTAMENTO 20
7$99-ALLEN TRABALHA NO DEPARTAMENTO 30
7"2!-WARD TRABALHA NO DEPARTAMENTO 30
7"66-JONES TRABALHA NO DEPARTAMENTO 20
76"$-MARTIN TRABALHA NO DEPARTAMENTO 30
7698-BLAE TRABALHA NO DEPARTAMENTO 30
7782-CLAR TRABALHA NO DEPARTAMENTO !0
7788-SCOTT TRABALHA NO DEPARTAMENTO 20
7839-ING TRABALHA NO DEPARTAMENTO !0
0<
78$$-T#RNER TRABALHA NO DEPARTAMENTO 30
7876-ADAMS TRABALHA NO DEPARTAMENTO 20
7900-JAMES TRABALHA NO DEPARTAMENTO 30
7902-FORD TRABALHA NO DEPARTAMENTO 20
793$-MILLER TRABALHA NO DEPARTAMENTO !0
!$ %&'( ()*)+,)-.
2.4 5anuseio de valores nulos
Se em uma lin*a n&o e(istir %alor 'ara uma determinada coluna, este %alor dito como sendo
nulo.
-m %alor nulo um %alor que n&o est dis'on4%el, descon*ecido, ou n&o a'lic%el. -m
%alor nulo n&o o mesmo que zero. Uero um nLmero.
Se o %alor de qualquer coluna en%ol%ida em uma e('ress&o for nulo, o resultado da
e('ress&o tambm ser nulo. )o e(em'lo abai(o, somente a'arecem os salrios anuais dos
%endedores, 'ois somente estes tem comiss&o n&o nula.
SQL> SELECT ENAME, SAL/!22COMM SALARIO9AN#AL
2 FROM EMP
ENAME SALARIO9AN#AL
---------- -------------
SMITH
ALLEN !9"00
WARD !""00
JONES
MARTIN !6$00
BLAE
CLAR
SCOTT
ING
T#RNER !8000
ADAMS
JAMES
FORD
MILLER
!$ %&'( ()*)+,)-.
6ara calcular o resultado corretamente, de%e ser utilizada a e('ress&o )=G, que con%erte um
%alor nulo em um %alor n&o nulo, conforme mostrado abai(o/
SQL> SELECT ENAME, SAL/!22N1L3COMM, 04 SALARIO9AN#AL
2 FROM EMP
ENAME SALARIO9AN#AL
---------- -------------
SMITH 9600
ALLEN !9"00
WARD !""00
JONES 3"700
MARTIN !6$00
BLAE 3$200
CLAR 29$00
SCOTT 36000
00
ING 60000
T#RNER !8000
ADAMS !3200
JAMES !!$00
FORD 36000
MILLER !"600
!$ %&'( ()*)+,)-.
+ fun!&o )=G es'era dois argumentos/
a) uma e('ress&o
b) um %alor n&o nulo
6odem ser con%ertidos %alores nulos de data, nLmeros, ou caracteres/
)=G(>olunaData, C<0J5anJQ?T)
)=G(>oluna)umero, S)
)=G(>oluna>aracter, CalfanumricoT)
2.6 ,limina#$o de lin7as duplicadas
+ n&o ser que se5a es'ecificado o contrrio, as lin*as du'licadas n&o s&o eliminadas dos
resultados das consultas.
SQL> SELECT DEPTNO
2 FROM EMP
DEPTNO
-------
20
30
30
20
30
30
!0
20
!0
30
20
30
20
!0
6ara eliminar as lin*as du'licadas, de%e ser inclu4da a 'ala%ra DIS$I)>$ a'@s o S,G,>$.
SQL> SELECT DISTINCT DEPTNO
2 FROM EMP
DEPTNO
-------
!0
08
20
30
;Llti'las colunas 'odem ser es'ecificadas a'@s a 'ala%ra DIS$I)>$.
SQL> SELECT DISTINCT DEPTNO, JOB
2 FROM EMP
DEPTNO JOB
------- ---------
!0 CLER
!0 MANAGER
!0 PRESIDENT
20 ANAL0ST
20 CLER
20 MANAGER
30 CLER
30 MANAGER
30 SALESMAN
+cima est&o mostradas todas as combina!"es diferentes de de'artamentos e cargos.
2.18 Ordena#$o das lin7as
)ormalmente, a ordem das lin*as retornadas 'or uma consulta indefinida. + clusula
O2D,2 BV 'ode ser usada 'ara ordenar lin*as. Se for usada, O2D,2 BV de%e ser sem're
a Lltima clusula de um comando S,G,>$.
6ara ordenar 'elo nome do em'regado, usamos/
SQL> SELECT ENAME, JOB, SAL/!2, DEPTNO
2 FROM EMP
3 ORDER B0 ENAME
ENAME JOB SAL/!2 DEPTNO
---------- --------- ------- -------
ADAMS CLER !3200 20
ALLEN SALESMAN !9200 30
BLAE MANAGER 3$200 30
CLAR MANAGER 29$00 !0
FORD ANAL0ST 36000 20
JAMES CLER !!$00 30
JONES MANAGER 3"700 20
ING PRESIDENT 60000 !0
MARTIN SALESMAN !"000 30
MILLER CLER !"600 !0
SCOTT ANAL0ST 36000 20
SMITH CLER 9600 20
T#RNER SALESMAN !8000 30
WARD SALESMAN !"000 30
!$ %&'( ()*)+,)-.
Ordem 'adr&o de ordena!&o/
J )Lmeros/ menores 'rimeiro
J Data/ mais cedo 'rimeiro
J >aracteres/ ordem alfabtica
09
6ara re%erter esta ordem, 'ode ser utilizada a 'ala%ra D,S> a'@s o nome da coluna, na
clusula O2D,2 BV.
6ara listarmos os funcionrios mais no%os antes dos mais antigos fazemos/
SQL> SELECT ENAME, JOB, HIREDATE
2 FROM EMP
3 ORDER B0 HIREDATE DESC
ENAME JOB HIREDATE
---------- --------- ---------
JAMES CLER 23-J#L-8$
ING PRESIDENT 09-J#L-8$
BLAE MANAGER !!-J#N-8$
T#RNER SALESMAN 0$-J#N-8$
ADAMS CLER 0$-J#N-8$
CLAR MANAGER !$-MA0-8$
WARD SALESMAN 26-MAR-8$
SCOTT ANAL0ST 0"-MAR-8$
MARTIN SALESMAN 0"-DEC-83
FORD ANAL0ST 0"-DEC-83
MILLER CLER 2!-NO1-83
JONES MANAGER 3!-OCT-83
ALLEN SALESMAN !"-A#G-83
SMITH CLER !3-J#N-83
3 'oss4%el efetuar a ordena!&o 'or mais de uma coluna, sendo algumas em ordem ascendente
e outras em ordem descendente.
SQL> SELECT DEPTNO, JOB, ENAME
2 FROM EMP
3 ORDER B0 DEPTNO, SAL DESC
DEPTNO JOB ENAME
------- --------- ----------
!0 PRESIDENT ING
!0 MANAGER CLAR
!0 CLER MILLER
20 ANAL0ST SCOTT
20 ANAL0ST FORD
20 MANAGER JONES
20 CLER ADAMS
20 CLER SMITH
30 MANAGER BLAE
30 SALESMAN ALLEN
30 SALESMAN T#RNER
30 SALESMAN WARD
30 SALESMAN MARTIN
30 CLER JAMES
,(erc4cio/ %erificar como ficam os %alores nulos a'@s a ordena!&o.
2.11 Crit/rios de pes!uisa
0?
Os critrios de 'esquisa s&o informados na clusula WX,2,, que corres'onde ao o'erador
2estri!&o da lgebra relacional. )esta clusula est&o estabelecidos os critrios necessrios
'ara uma lin*a 'oder ser selecionada.
+ clusula WX,2, 'ode com'arar %alores em colunas, %alores literais, e('ress"es
aritmticas, ou fun!"es. $r.s elementos s&o sem're necessrios/
J -m nome de coluna
J -m o'erador de com'ara!&o
J -m nome de coluna, constante, ou lista de %alores
,(istem dois ti'os de o'eradores/ l@gicos e SBG.
Os o'eradores l@gicos testam as seguintes condi!"es/
: igual
K maior
K: maior ou igual
Y menor
Y: menor ou igual
YK diferente (Z: ou [:)
6ara listar os nomes, nLmeros, cargos e de'artamentos de todos os funcionrios com cargo
>G,2\, usamos/
SQL> SELECT ENAME, EMPNO, JOB, DEPTNO
2 FROM EMP
3 WHERE JOB : ;CLER8
ENAME EMPNO JOB DEPTNO
---------- ------- --------- -------
SMITH 7369 CLER 20
ADAMS 7876 CLER 20
JAMES 7900 CLER 30
MILLER 793$ CLER !0
6ara listar o nome e o nLmero dos de'artamentos com nLmero maior que 8<, usamos/
SQL> SELECT DNAME, DEPTNO
2 FROM DEPT
3 WHERE DEPTNO > 20
DNAME DEPTNO
-------------- -------
SALES 30
OPERATIONS $0
6ara sabermos que funcionrios tem comiss&o su'erior ao salrio, usamos/
SQL> SELECT ENAME, SAL, COMM
2 FROM EMP
3 WHERE COMM > SAL
ENAME SAL COMM
---------- ------- -------
0H
MARTIN !2"0 !$00
,(istem quatro o'eradores SBG, que o'eram sobre todos os ti'os de dados.
B,$W,,)...+)D... entre dois %alores (inclusi%e)
I)(lista) id.nticos a uma lista de %alores
GI\, semel*ante a um modelo de caracteres
IS )-GG %alor nulo
O o'erador B,$W,,) testa %alores no inter%alo ou id.nticos aos limites.
SQL> SELECT ENAME, SAL
2 FROM EMP
3 WHERE SAL BETWEEN !000 AND 2000
ENAME SAL
---------- -------
ALLEN !600
WARD !2"0
MARTIN !2"0
T#RNER !"00
ADAMS !!00
MILLER !300
O o'erador I) testa os %alores es'ecificados em uma lista.
SQL> SELECT EMPNO, ENAME, SAL, MGR
2 FROM EMP
3 WHERE MGR IN 3 7902, 7"66, 7788 4
EMPNO ENAME SAL MGR
------- ---------- ------- -------
7369 SMITH 800 7902
7788 SCOTT 3000 7"66
7876 ADAMS !!00 7788
7902 FORD 3000 7"66
Se caracteres ou datas forem utilizados, de%em ser en%oltos 'or a'@strofos.
-sando o o'erador GI\, 'oss4%el selecionar lin*as de acordo com modelo fornecido. O
s4mbolo N]N re'resenta qualquer seq^.ncia de zero ou mais caracteres. O s4mbolo N_N
(sublin*ado) re'resenta qualquer um caracter, mas a'enas um, no m4nimo e no m(imo.
6ara listarmos todos os em'regados cu5os nomes come!am com a letra NSN, usamos/
SQL> SELECT ENAME
2 FROM EMP
3 WHERE ENAME LIE 8S<8
ENAME
----------
SMITH
SCOTT
0M
6ara listar os nomes de todos os em'regados que contm e(atamente ? letras, usamos/
SQL> SELECT ENAME
2 FROM EMP
3 WHERE ENAME LIE 899998 3=>?,%& +?%?+,)%)( -) (>@*ABC?-&4
ENAME
----------
WARD
ING
FORD
O o'erador IS )-GG ser%e es'ecificamente 'ara testar %alores nulos.
6ara listar os funcionrios que n&o 'ossuem gerente, usamos/
SQL> SELECT ENAME, MGR
2 FROM EMP
3 WHERE MGR IS N#LL
ENAME MGR
---------- -------
ING
Os o'eradores mostrados abai(o 'odem ser utilizados 'ara testes de nega!&o/
[: Z: YK n&o igual
)O$ )omeDa>oluna : n&o igual a
)O$ )omeDa>oluna K n&o maior do que
)O$ B,$W,,) fora da fai(a es'ecificada
)O$ I) fora da lista es'ecificada
)O$ GI\, n&o semel*ante ao modelo
IS )O$ )-GG n&o nulo
6ara listar os em'regados com salrios fora da fai(a de 0<<< a 8<<<, usamos/
SQL> SELECT ENAME, SAL
2 FROM EMP
3 WHERE SAL NOT BETWEEN !000 AND 2000
ENAME SAL
---------- -------
SMITH 800
JONES 297"
BLAE 28"0
CLAR 2$"0
SCOTT 3000
ING "000
JAMES 9"0
FORD 3000
8 %&'( ()*)+,)-.
0P
6ara listar os em'regados cu5os cargos n&o come!am com a letra ;, usamos/
SQL> SELECT ENAME, JOB
2 FROM EMP
3 WHERE JOB NOT LIE 8M<8
ENAME JOB
---------- ---------
SMITH CLER
ALLEN SALESMAN
WARD SALESMAN
MARTIN SALESMAN
SCOTT ANAL0ST
ING PRESIDENT
T#RNER SALESMAN
ADAMS CLER
JAMES CLER
FORD ANAL0ST
MILLER CLER
6ara listar os em'regados com gerentes, usamos/
SQL> SELECT ENAME, MGR
2 FROM EMP
3 WHERE MGR IS NOT N#LL
ENAME MGR
---------- -------
SMITH 7902
ALLEN 7698
WARD 7698
JONES 7839
MARTIN 7698
BLAE 7839
CLAR 7839
SCOTT 7"66
T#RNER 7698
ADAMS 7788
JAMES 7698
FORD 7"66
MILLER 7782
( YK )-GG e ( : )-GG
sem're falso. )ulo nunca igual a nada nem diferente de nada, nem a outro nulo.
2.12 Consultas com condi#.es m9ltiplas
Os o'eradores +)D e O2 'odem ser utilizados 'ara criar e('ress"es l@gicas com'ostas.
O 'redicado +)D es'era que todas duas condi!"es se5am %erdadeiras.
O 'redicado O2 es'era que uma (ou as duas) condi!"es se5am %erdadeiras.
)os e(em'los abai(o as condi!"es s&o as mesmas, 'orm os 'redicados s&o diferentes.
0Q
6ara listar todos os >G,2\s com salrio entre 0<<< e 8<<<, usamos/
SQL> SELECT EMPNO, ENAME, JOB, SAL
2 FROM EMP
3 WHERE SAL BETWEEN !000 AND 2000
$ AND JOB : 8CLER8
EMPNO ENAME JOB SAL
------- ---------- --------- -------
7876 ADAMS CLER !!00
793$ MILLER CLER !300
6ara listar os funcionrios que s&o >G,2\, ou que recebem entre 0<<< e 8<<<, usamos/
SQL> SELECT EMPNO, ENAME, JOB, SAL
2 FROM EMP
3 WHERE SAL BETWEEN !000 AND 2000
$ OR JOB : ;CLER8
EMPNO ENAME JOB SAL
------- ---------- --------- -------
7369 SMITH CLER 800
7$99 ALLEN SALESMAN !600
7"2! WARD SALESMAN !2"0
76"$ MARTIN SALESMAN !2"0
78$$ T#RNER SALESMAN !"00
7876 ADAMS CLER !!00
7900 JAMES CLER 9"0
793$ MILLER CLER !300
Buando a'arecem tanto +)Ds quanto O2s em uma e('ress&o l@gica, todos os +)Ds s&o
'rocessados antes que os O2s se5am 'rocessados.
-ma %ez que +)D tem 'reced.ncia sobre O2, a consulta abai(o retorna todos os gerentes
com salrio maior do que 0H<<, e todos os %endedores.
SQL> SELECT EMPNO, ENAME, JOB, SAL, DEPTNO
2 FROM EMP
3 WHERE SAL > !"00
$ AND JOB : 8MANAGER8
" OR JOB : 8SALESMAN8
EMPNO ENAME JOB SAL DEPTNO
------- ---------- --------- ------- -------
7$99 ALLEN SALESMAN !600 30
7"2! WARD SALESMAN !2"0 30
7"66 JONES MANAGER 297" 20
76"$ MARTIN SALESMAN !2"0 30
7698 BLAE MANAGER 28"0 30
7782 CLAR MANAGER 2$"0 !0
78$$ T#RNER SALESMAN !"00 30
6ara selecionar todos os %endedores e gerentes com salrio su'erior a 0H<<, usamos/
SQL> SELECT EMPNO, ENAME, JOB, SAL, DEPTNO
2 FROM EMP
3 WHERE SAL > !"00
$ AND 3 JOB : 8MANAGER8 OR JOB : ;SALESMAN8 4
0S
EMPNO ENAME JOB SAL DEPTNO
------- ---------- --------- ------- -------
7$99 ALLEN SALESMAN !600 30
7"66 JONES MANAGER 297" 20
7698 BLAE MANAGER 28"0 30
7782 CLAR MANAGER 2$"0 !0
Os 'ar.nteses es'ecificam a ordem em que os o'eradores de%em ser calculados.
2.13 *reced:ncia dos operadores
a) os o'eradores de com'ara!&o e os o'eradores SBG tem 'reced.ncias iguais.
:, [:, Y, K, Y:, K:, B,$W,,)...+)D..., I), GI\,, IS )-GG
b) )O$ ('ara re%erter o resultado l@gico da e('ress&o, WX,2, )O$(salK8<<<))
c) +)D
d) O2
6ara listar todos os gerentes, de qualquer de'artamento, e os >G,2\ do de'artamento 0<
a'enas, usamos/
SQL> SELECT /
2 FROM EMP
3 WHERE JOB : ;MANAGER8 OR 3JOB : ;CLER8 AND DEPTNO : !04
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
------- ---------- --------- ------- --------- ------- ------- -------
7"66 JONES MANAGER 7839 3!-OCT-83 297" 20
7698 BLAE MANAGER 7839 !!-J#N-8$ 28"0 30
7782 CLAR MANAGER 7839 !$-MA0-8$ 2$"0 !0
793$ MILLER CLER 7782 2!-NO1-83 !300 !0
)este caso os 'ar.nteses s&o desnecessrios, uma %ez que o +)D 'rocessa 'rimeiro.
2.14 ;esumo do comando S,(,C<
S,G,>$ `DIS$I)>$a bI R coluna `alisa,....c
F2O; tabela
WX,2, condi!"es
O2D,2 BV bcoluna R e('ress&oc `+S>RD,S>a
2.10 ,-erccios
a) Selecionar todas as informa!"es da tabela S+GG2+D,
GRADE LOSAL HISAL
------- ------- -------
! 700 !200
2 !20! !$00
3 !$0! 2000
$ 200! 3000
8<
" 300! 9999
b) Selecionar todas a informa!"es da tabela ,;6
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
------- ---------- --------- ------- --------- ------- ------- -------
7369 SMITH CLER 7902 !3-J#N-83 800 20
7$99 ALLEN SALESMAN 7698 !"-A#G-83 !600 300 30
7"2! WARD SALESMAN 7698 26-MAR-8$ !2"0 "00 30
7"66 JONES MANAGER 7839 3!-OCT-83 297" 20
76"$ MARTIN SALESMAN 7698 0"-DEC-83 !2"0 !$00 30
7698 BLAE MANAGER 7839 !!-J#N-8$ 28"0 30
7782 CLAR MANAGER 7839 !$-MA0-8$ 2$"0 !0
7788 SCOTT ANAL0ST 7"66 0"-MAR-8$ 3000 20
7839 ING PRESIDENT 09-J#L-8$ "000 !0
78$$ T#RNER SALESMAN 7698 0$-J#N-8$ !"00 0 30
7876 ADAMS CLER 7788 0$-J#N-8$ !!00 20
7900 JAMES CLER 7698 23-J#L-8$ 9"0 30
7902 FORD ANAL0ST 7"66 0"-DEC-83 3000 20
793$ MILLER CLER 7782 2!-NO1-83 !300 !0
!$ %&'( ()*)+,)-.
c) Gistar todos os funcionrios com salrio entre 0<<< e 8<<<
ENAME DEPTNO SAL
---------- ------- -------
ALLEN 30 !600
WARD 30 !2"0
MARTIN 30 !2"0
T#RNER 30 !"00
ADAMS 20 !!00
MILLER !0 !300
6 %&'( ()*)+,)-.
d) Gistar os nLmeros e os nomes dos de'artamentos, ordenados 'elo nome do de'artamento
DEPTNO DNAME
------- --------------
!0 ACCO#NTING
$0 OPERATIONS
20 RESEARCH
30 SALES
e) Gistar os diferentes ti'os de cargo
JOB
---------
ANAL0ST
CLER
MANAGER
PRESIDENT
SALESMAN
f) Gistar os detal*es dos em'regados dos de'artamentos 0< e 8< em ordem alfabtica de
nome.
80
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
------- ---------- --------- ------- --------- ------- ------- -------
7876 ADAMS CLER 7788 0$-J#N-8$ !!00 20
7782 CLAR MANAGER 7839 !$-MA0-8$ 2$"0 !0
7902 FORD ANAL0ST 7"66 0"-DEC-83 3000 20
7"66 JONES MANAGER 7839 3!-OCT-83 297" 20
7839 ING PRESIDENT 09-J#L-8$ "000 !0
793$ MILLER CLER 7782 2!-NO1-83 !300 !0
7788 SCOTT ANAL0ST 7"66 0"-MAR-8$ 3000 20
7369 SMITH CLER 7902 !3-J#N-83 800 20
g) Gistar os nomes e os cargos de todos os >G,2\ do de'artamento 8<.
ENAME JOB
---------- ---------
SMITH CLER
ADAMS CLER
*) Gistar os nomes de todos os em'regados onde a'arece $X ou GG no nome.
ENAME
----------
SMITH
ALLEN
MILLER
i) Gistar os seguintes detal*es dos funcionrios que tem gerente.
ENAME JOB SAL
---------- --------- -------
SMITH CLER 800
ALLEN SALESMAN !600
WARD SALESMAN !2"0
JONES MANAGER 297"
MARTIN SALESMAN !2"0
BLAE MANAGER 28"0
CLAR MANAGER 2$"0
SCOTT ANAL0ST 3000
T#RNER SALESMAN !"00
ADAMS CLER !!00
JAMES CLER 9"0
FORD ANAL0ST 3000
MILLER CLER !300
5) ;ostrar o nome e a remunera!&o total de todos os em'regados.
ENAME REM#NERACAO
---------- -----------
SMITH 9600
ALLEN !9"00
WARD !""00
JONES 3"700
MARTIN !6$00
BLAE 3$200
CLAR 29$00
SCOTT 36000
ING 60000
T#RNER !8000
88
ADAMS !3200
JAMES !!$00
FORD 36000
MILLER !"600
E) ;ostrar todos os em'regados que foram admitidos em 0SQ9.
ENAME DEPTNO HIREDATE
---------- ------- ---------
SMITH 20 !3-J#N-83
ALLEN 30 !"-A#G-83
JONES 20 3!-OCT-83
MARTIN 30 0"-DEC-83
FORD 20 0"-DEC-83
MILLER !0 2!-NO1-83
l) ;ostrar o nome, o salrio anual e comiss&o, de todos os %endedores com salrio mensal
maior do que a comiss&o. O resultado de%e ser ordenado com os maiores salrios na frente.
Se dois ou mais em'regados ti%erem o mesmo salrio, de%e ser ordenado 'elo nome do
funcionrio.
ENAME SALARIO9AN#AL COMM
---------- ------------- -------
ALLEN !9200 300
T#RNER !8000 0
WARD !"000 "00
m) Selecione os dados 'ara re'roduzir a sa4da mostrada abai(o.
Q#EM, O Q#E, Q#ANDO
---------------------------------------------------------------------
SMITH TEM A POSICAO DE CLER NO DEPARTAMENTO 20 DESDE !3-J#N-83
ALLEN TEM A POSICAO DE SALESMAN NO DEPARTAMENTO 30 DESDE !"-A#G-83
WARD TEM A POSICAO DE SALESMAN NO DEPARTAMENTO 30 DESDE 26-MAR-8$
JONES TEM A POSICAO DE MANAGER NO DEPARTAMENTO 20 DESDE 3!-OCT-83
MARTIN TEM A POSICAO DE SALESMAN NO DEPARTAMENTO 30 DESDE 0"-DEC-83
BLAE TEM A POSICAO DE MANAGER NO DEPARTAMENTO 30 DESDE !!-J#N-8$
CLAR TEM A POSICAO DE MANAGER NO DEPARTAMENTO !0 DESDE !$-MA0-8$
SCOTT TEM A POSICAO DE ANAL0ST NO DEPARTAMENTO 20 DESDE 0"-MAR-8$
ING TEM A POSICAO DE PRESIDENT NO DEPARTAMENTO !0 DESDE 09-J#L-8$
T#RNER TEM A POSICAO DE SALESMAN NO DEPARTAMENTO 30 DESDE 0$-J#N-8$
ADAMS TEM A POSICAO DE CLER NO DEPARTAMENTO 20 DESDE 0$-J#N-8$
JAMES TEM A POSICAO DE CLER NO DEPARTAMENTO 30 DESDE 23-J#L-8$
FORD TEM A POSICAO DE ANAL0ST NO DEPARTAMENTO 20 DESDE 0"-DEC-83
MILLER TEM A POSICAO DE CLER NO DEPARTAMENTO !0 DESDE 2!-NO1-83
2.12 ;espostas dos e-erccios
?4 SQL> SELECT /
2 FROM SALGRADE
@4 SQL> SELECT /
2 FROM EMP
+4 SQL> SELECT ENAME, DEPTNO, SAL
2 FROM EMP
3 WHERE SAL BETWEEN !000 AND 2000
-4 SQL> SELECT DEPTNO, DNAME
2 FROM DEPT
3 ORDER B0 DNAME
89
)4 SQL> SELECT DISTINCT JOB
2 FROM EMP
D4 SQL> SELECT /
2 FROM EMP
3 WHERE DEPTNO IN3!0,204
$ ORDER B0 ENAME
E4 SQL> SELECT ENAME, JOB
2 FROM EMP
3 WHERE JOB : ;CLER8
$ AND DEPTNO : 20
C4 SQL> SELECT ENAME
2 FROM EMP
3 WHERE ENAME LIE 8<TH<8
$ OR ENAME LIE 8<LL<8
A4 SQL> SELECT ENAME, JOB, SAL
2 FROM EMP
3 WHERE MGR IS NOT N#LL
F4 SQL> SELECT ENAME, SAL/!22N1L3COMM,04 REM#NERACAO
2 FROM EMP
G4 SQL> SELECT ENAME, DEPTNO, HIREDATE
2 FROM EMP
3 WHERE HIREDATE LIE 8<838
*4 SQL> SELECT ENAME, SAL/!2 SALARIO9AN#AL, COMM
2 FROM EMP
3 WHERE SAL > COMM
$ AND JOB : 8SALESMAN8
" ORDER B0 SAL DESC, ENAME
H4 SQL> SELECT ENAME778 TEM A POSICAO DE 877JOB77
2 8 NO DEPARTAMENTO 877DEPTNO77
3 8 DESDE 877HIREDATE IQ#EM, O Q#E, Q#ANDOI
$ FROM EMP
8?
Captulo 3: =ari&veis de Substitui#$o
3.1 Objetivos deste captulo
Descre%er as %ari%eis de substitui!&o e como estas s&o usadas nas declara!"es SBG.
3.2 =ari&veis de substitui#$o com um >?>
+ %ari%el de substitui!&o 'ode ser utilizada em uma declara!&o S,G,>$, re'resentando um
%alor a ser fornecido quando o comando for e(ecutado.
SQL> SELECT EMPNO, ENAME, SAL
2 FROM EMP
3 WHERE DEPTNO : JN#MERO9DO9DEPARTAMENTO
EB,)% K?*>) D&% B>H)%&9-&9-)L?%,?H)B,&M !0
&*- 3M WHERE DEPTNO : JN#MERO9DO9DEPARTAMENTO
B)' 3M WHERE DEPTNO : !0
EMPNO ENAME SAL
------- ---------- -------
7782 CLAR 2$"0
7839 ING "000
793$ MILLER !300
3.3 =ari&veis de substitui#$o com dois >?>
Buando s&o utilizados dois NdN na %ari%el, o SBGI6G-S solicita o %alor da %ari%el a'enas
uma %ez, guardando este %alor 'ara uso subseq^ente.
,(em'lo/ dd)-;,2O_DO_D,6+2$+;,)$O
8H
Captulo 4: @un#.es 1um/ricas e de Caracteres
4.1 Objetivos deste captulo
,ste ca'4tulo mostra as fun!"es do Oracle que mani'ulam nLmeros e sequ.ncias de
caracteres.
4.2 @un#.es !ue manipulam caracteres
4.2.1 (OA,;Bcoluna C literalD
$ransforma letras maiLsculas em minLsculas.
SQL> SELECT LOWER3DNAME4, LOWER38C#RSO DE SQL84
2 FROM DEPT
LOWER3DNAME4 LOWER38C#RSODESQL84
-------------- --------------------
?++&>B,ABE +>%(& -) (=*
%)()?%+C +>%(& -) (=*
(?*)( +>%(& -) (=*
&L)%?,A&B( +>%(& -) (=*
4.2.2 +**,;Bcoluna C literalD
$ransforma letras minLsculas em maiLsculas.
SQL> SELECT ENAME
2 FROM EMP
3 WHERE ENAME : #PPER38(HA,C84
ENAME
----------
SMITH
4.2.3 "1"<C*Bcoluna C literalD
$ransforma a 'rimeira letra da 'ala%ra em maiLscula e as demais minLsculas.
SQL> SELECT INITCAP3DNAME4, INITCAP3LOC4
2 FROM DEPT
INITCAP3DNAME4 INITCAP3LOC4
-------------------- --------------------
A++&>B,ABE N)' 0&%G
R)()?%+C D?**?(
S?*)( CCA+?E&
OL)%?,A&B( B&(,&B
4.2.4 (*DBcoluna C literalE taman7oE FcaracterFD
6reenc*e a sequ.ncia de caracteres, # esquerda, com o caracter e o taman*o informados. Se
o caracter de 'reenc*imento n&o for informado, ser utilizado o caracter de es'a!o.
8M
)o e(em'lo abai(o, as tr.s colunas s&o 'reenc*idas # esquerda at um total de 8< caracteres.
+ 'rimeira coluna foi 'reenc*ida com asteriscos, a segunda com es'a!os, e a terceira com
'ontos. )ote que a terceira coluna numrica.
SQL> SELECT LPAD3DNAME, 20, ;/84,LPAD3DNAME, 204, LPAD3DEPTNO, 20,8.84
2 FROM DEPT
LPAD3DNAME,20,;/84 LPAD3DNAME,204 LPAD3DEPTNO,20,8.84
-------------------- -------------------- --------------------
//////////ACCO#NTING ACCO#NTING ..................!0
////////////RESEARCH RESEARCH ..................20
///////////////SALES SALES ..................30
//////////OPERATIONS OPERATIONS ..................$0
4.2.0 ;*DBcoluna C literalE taman7oE FcaracterFD
6reenc*e a seq^.ncia de caracteres, # direta, com o caracter e o taman*o informados. Se o
caracter de 'reenc*imento n&o for informado, ser utilizado o caracter de es'a!o.
SQL> SELECT RPAD3DNAME, 20, ;/84,RPAD3DNAME, 204, RPAD3DEPTNO, 20,8.84
2 FROM DEPT
RPAD3DNAME,20,8/84 RPAD3DNAME,204 RPAD3DEPTNO,20,8.84
-------------------- -------------------- --------------------
ACCO#NTING////////// ACCO#NTING !0..................
RESEARCH//////////// RESEARCH 20..................
SALES/////////////// SALES 30..................
OPERATIONS////////// OPERATIONS $0..................
4.2.2 S+BS<;Bcoluna C literalE posi#$oE comprimentoD
2etorna uma seq^.ncia de caracteres, a 'artir da 'osi!&o indicada, com o com'rimento
es'ecificado.
SQL> SELECT S#BSTR38ORACLE8,2,$4, S#BSTR3DNAME,24, S#BSTR3DNAME,3,"4
2 FROM DEPT
S#BSTR38ORACLE8,2,$4 S#BSTR3DNAME,24 S#BSTR3DNAME,3,"4
-------------------- --------------- --------------------
RACL CCO#NTING CO#NT
RACL ESEARCH SEARC
RACL ALES LES
RACL PERATIONS ERATI
4.2.3 "1S<;Bcoluna C literalE Gse!H:ncia de caracteresFE posi#$oE nD
,ncontra a 'osi!&o da 'rimeira ocorr.ncia da seq^.ncia de caracteres na coluna ou literal, se
os dois Lltimos 'aremetros forem omitidos.
,ncontra a 'osi!&o da nJsima ocorr.ncia a 'artir da 'osi!&o indicada, se os quatro
'aremetros forem fornecidos.
SQL> SELECT DNAME,
2 INSTR3DNAME,8A84,INSTR3DNAME,8ES84, INSTR3DNAME,8C8,!,24
3 FROM DEPT
8P
DNAME INSTR3DNAME,8A84 INSTR3DNAME,8ES84 INSTR3DNAME,8C8,!,24
------------ ---------------- ----------------- --------------------
ACCO#NTING ! 0 3
RESEARCH " 2 0
SALES 2 $ 0
OPERATIONS " 0 0
4.2.4 (<;"5Bcoluna C literalE FcaracteresFD
2emo%e os caracteres indicados # esquerda da coluna ou do literal. Se nen*um caracter for
es'ecificado, ser&o eliminados os es'a!os # esquerda.
SQL> SELECT DNAME,
2 LTRIM3DNAME,8A84,LTRIM3DNAME,8AS84, LTRIM3DNAME,8ASOP84
3 FROM DEPT
DNAME LTRIM3DNAME,8A84 LTRIM3DNAME,8AS84 LTRIM3DNAME,8ASOP84
-------------- ---------------- ----------------- -------------------
ACCO#NTING CCO#NTING CCO#NTING CCO#NTING
RESEARCH RESEARCH RESEARCH RESEARCH
SALES SALES LES LES
OPERATIONS OPERATIONS OPERATIONS ERATIONS
)o e(em'lo acima, na segunda coluna foram remo%idas as letras N+N # esquerda dos nomes
dos de'artamentos. )a terceira coluna foram remo%idas tanto a letra N+N quanto a letra NSN.
)a quarta coluna foram remo%idas as letras N+N, NSN, NON e N6N # esquerda.
4.2.6 ;<;"5Bcoluna C literalE FcaracteresFD
2emo%e os caracteres indicados # direita da coluna ou do literal. Se nen*um caracter for
es'ecificado, ser&o eliminados os es'a!os # direita.
SQL> SELECT DNAME,
2 RTRIM3DNAME,8G84, RTRIM3DNAME,8GHS84, RTRIM3DNAME,8N84
3 FROM DEPT
DNAME RTRIM3DNAME,8G84 RTRIM3DNAME,8GHS84 RTRIM3DNAME,8N84
-------------- ---------------- ------------------ ----------------
ACCO#NTING ACCO#NTIN ACCO#NTIN ACCO#NTING
RESEARCH RESEARCH RESEARC RESEARCH
SALES SALES SALE SALES
OPERATIONS OPERATIONS OPERATION OPERATIONS
4.2.18 SO+1D,IBcoluna C literalD
2etorna uma seq^.ncia de caracteres que re'resenta o som das 'ala%ras contidas na coluna
ou no literal.
SQL> SELECT ENAME, SO#NDEN3ENAME4
2 FROM EMP
3 WHERE SO#NDEN3ENAME4 : SO#NDEN38FRED84
ENAME SO#NDEN3ENAME4
---------- --------------------
FORD F630
8Q
4.2.11 (,1G<JBcoluna C literalD
2etorna o nLmero de caracteres (ou d4gitos) na coluna ou literal es'ecificados.
SQL> SELECT LENGTH38C#RSO DE SQL84, LENGTH3DEPTNO4, LENGTH3DNAME4
2 FROM DEPT
LENGTH38C#RSODESQL84 LENGTH3DEPTNO4 LENGTH3DNAME4
--------------------- --------------------- ---------------------
!2 2 !0
!2 2 8
!2 2 "
!2 2 !0
4.2.12 <;1S(<,Bcoluna C literalE deE paraD
Substitui os caracteres do argumento NdeN 'elos caracteres do argumento N'araN, na coluna
ou literal es'ecificados. $odas as ocorr.ncias dos caracteres do 'aremetro NdeN s&o
substitu4das 'elos caracteres no 'aremetro N'araN. >aracteres do 'aremetro NdeN sem
corres'ond.ncia no 'aremetro N'araN s&o remo%idos.
)o e(em'lo abai(o foram trocados os caracteres N>N 'or N6N nos nomes dos funcionrios.
SQL> SELECT ENAME, TRANSLATE3ENAME,8C8,8P84
2 FROM EMP
3 WHERE DEPTNO : !0
ENAME TRANSLATE3ENAME,8C8,8P84
---------- -------------------------
CLAR PLAR
ING ING
MILLER MILLER
)o e(em'lo abai(o foram trocados N+N 'or NIN, e N2N 'or N$N, nos cargos.
SQL> SELECT JOB, TRANSLATE3JOB,8AR8,8IT84
2 FROM EMP
3 WHERE DEPTNO : !0
JOB TRANSLATE3JOB,8AR8,8IT84
--------- ------------------------------
MANAGER MINIGET
PRESIDENT PTESIDENT
CLER CLET
4.2.13 ;,*(C,Bcoluna C literalE deE paraD
Substitui a seq^.ncia de caracteres NdeN 'ela seq^.ncia de caracteres N'araN, na coluna ou
literal es'ecificados.
)o e(em'lo abai(o S+G,S;+) substitu4do 'or =,)D,DO2/
SQL> SELECT JOB, REPLACE3JOB,8SALESMAN8,81ENDEDOR84
8S
2 FROM EMP
JOB REPLACE3JOB,8SALESMAN8,81ENDEDOR84
--------- ----------------------------------------
CLER CLER
SALESMAN 1ENDEDOR
SALESMAN 1ENDEDOR
MANAGER MANAGER
SALESMAN 1ENDEDOR
MANAGER MANAGER
MANAGER MANAGER
ANAL0ST ANAL0ST
PRESIDENT PRESIDENT
SALESMAN 1ENDEDOR
CLER CLER
CLER CLER
ANAL0ST ANAL0ST
CLER CLER
!$ %&'( ()*)+,)-.
)o e(em'lo abai(o, N>ON foi substitu4do 'or N6fN/
SELECT ENAME, REPLACE3ENAME,8CO8,8PN84
FROM EMP
ENAME REPLACE3ENAME,8CO8,8PN84
---------- ------------------------
SMITH SMITH
ALLEN ALLEN
WARD WARD
JONES JONES
MARTIN MARTIN
BLAE BLAE
CLAR CLAR
SCOTT SPNTT O--------------
ING ING
T#RNER T#RNER
ADAMS ADAMS
JAMES JAMES
FORD FORD
MILLER MILLER
!$ %&'( ()*)+,)-.
4.2.14 @un#.es anin7adas
+s fun!"es que o'eram sobre uma Lnica lin*a 'odem ser anin*adas, sendo que neste caso as
fun!"es internas s&o e(ecutadas antes das e(ternas.
SQL> SELECT DNAME, LENGTH3DNAME4,
2 LENGTH3DNAME4-LENGTH3TRANSLATE3DNAME,8AS8,8A844
3 FROM DEPT
DNAME LENGTH3DNAME4LENGTH3DNAME4-LENGTH3TRANSLATE3DNAME,8AS8,8A844
---------- ------------------------------------------------------------
9<
ACCO#NTING !0 0
RESEARCH 8 !
SALES " 2
OPERATIONS !0 !
4.3 @un#.es num/ricas
4.3.1 ;O+1DBcoluna C literalE nD
+rredonda o %alor da coluna ou do literal na nJsima casa decimal. Se n for negati%o eq^i%ale
#s dezenas. Se n for omitido eq^i%ale a um nLmero inteiro.
SQL> SELECT RO#ND3$".923,!4, RO#ND3$".9234, RO#ND3$2.323,-!4,
RO#ND3SALP32,24
2 FROM EMP
3 WHERE DEPTNO : !0
RO#ND3$".923,!4 RO#ND3$".9234 RO#ND3$2.323,-!4 RO#ND3SALP32,24
----------------- ----------------- ----------------- -----------------
$".9 $6 $0 76."6
$".9 $6 $0 !"6.2"
$".9 $6 $0 $0.63
4.3.2 <;+1CBcoluna C literalE nD
$runca o %alor da coluna ou do literal na nJsima 'osi!&o.
SQL> SELECT TR#NC3$".923,!4, TR#NC3$".9234, TR#NC3$2.323,-!4,
TR#NC3SALP32,24
2 FROM EMP
3 WHERE DEPTNO : !0
TR#NC3$".923,!4 TR#NC3$".9234 TR#NC3$2.323,-!4 TR#NC3SALP32,24
----------------- ----------------- ----------------- -----------------
$".9 $" $0 76."6
$".9 $" $0 !"6.2"
$".9 $" $0 $0.62
4.3.3 C,"(Bcoluna C literalD
2etorna o menor inteiro maior ou igual ao %alor da coluna ou do literal.
SQL> SELECT CEIL3SAL4, CEIL399.94, CEIL3!0!.764, CEIL3-!!.!4
2 FROM EMP
3 WHERE SAL BETWEEN 3000 AND "000
CEIL3SAL4 CEIL399.94 CEIL3!0!.764 CEIL3-!!.!4
--------- ---------- ------------ -----------
3000 !00 !02 -!!
"000 !00 !02 -!!
3000 !00 !02 -!!
4.3.4 @(OO;Bcoluna C literalD
90
2etorna o maior inteiro menor ou igual ao %alor da coluna ou literal.
SQL> SELECT FLOOR3SAL4, FLOOR399.94, FLOOR3!0!.764, FLOOR3-!!.!4
2 FROM EMP
3 WHERE FLOOR3SAL4 BETWEEN 3000 AND "000
FLOOR3SAL4 FLOOR399.94 FLOOR3!0!.764 FLOOR3-!!.!4
---------- ----------- ------------- ------------
3000 99 !0! -!2
"000 99 !0! -!2
3000 99 !0! -!2
4.3.0 *OA,;Bcoluna C literalE nD
,le%a a coluna ou literal a nJsima 'ot.ncia.
SQL> SELECT SAL, POWER3SAL,24, POWER3SAL,34, POWER3"0,"4
2 FROM EMP
3 WHERE DEPTNO : !0
SAL POWER3SAL,24 POWER3SAL,34 POWER3"0,"4
----------------- ----------------- ----------------- -----------------
2$"0 6002"00 !$706!2"000 3!2"00000
"000 2"000000 !2"000000000 3!2"00000
!300 !690000 2!97000000 3!2"00000
4.3.2 ,I*Bcoluna C literalD
,le%a e (8.P0Q8Q0Q9...) # coluna ou literal.
SELECT ENP3$4
FROM D#AL
ENP3$4
----------
"$."98!"
! %&' ()*)+,)-.
4.3.3 (OGBbaseE coluna C literalD
>alcula o logaritmo da coluna ou do literal na base es'ecificada.
SELECT LOG3!0,!004
FROM D#AL
LOG3!0,!004
-----------
2
! %&' ()*)+,)-.
4.3.4 (1Bcoluna C literalD
>alcula o logaritmo ne'eriano da coluna ou do literal.
98
SELECT LN39"4
FROM D#AL
LN39"4
----------
$.""387689
4.3.6 S';<Bcoluna C literalD
2etorna a raiz quadrada da coluna ou do literal.
SQL> SELECT SAL, SQRT3SAL4, SQRT3$04, SQRT3COMM4
2 FROM EMP
3 WHERE COMM > 0
SAL SQRT3SAL4 SQRT3$04 SQRT3COMM4
---- ----------------- ----------------- -----------------
!600 $0 6.32$"""3203367"9 !7.320"0807"68877
!2"0 3".3""3390"932738 6.32$"""3203367"9 22.36067977$9979
!2"0 3".3""3390"932738 6.32$"""3203367"9 37.$!6"73867739$!
4.3.18 S"G1Bcoluna C literalD
2etorna J0 se o %alor da coluna ou do literal for negati%o, retorna < se for igual a zero, ou
retorna 0 se for maior do que zero.
SQL> SELECT SAL-COMM, SIGN3SAL-COMM4, COMM-SAL, SIGN3COMM-SAL4
2 FROM EMP
3 WHERE DEPTNO : 30
SAL-COMM SIGN3SAL-COMM4 COMM-SAL SIGN3COMM-SAL4
----------------- ----------------- ----------------- -----------------
!300 ! -!300 -!
7"0 ! -7"0 -!
-!"0 -! !"0 !
!"00 ! -!"00 -!
Salrios maiores do que a comiss&o 'odem ser listados conforme mostrado abai(o/
SQL> SELECT ENAME, SAL, COMM
2 FROM EMP
3 WHERE SIGN3SAL-COMM4 : !
ENAME SAL COMM
---------- ----------------- -----------------
ALLEN !600 300
WARD !2"0 "00
T#RNER !"00 0
4.3.11 BSBcoluna C literalD
2etorna o %alor absoluto da coluna ou do literal.
SQL> SELECT SAL, COMM, COMM-SAL, ABS3COMM-SAL4
2 FROM EMP
99
3 WHERE DEPTNO : 30
SAL COMM COMM-SAL ABS3COMM-SAL4
----------------- ----------------- ----------------- -----------------
!600 300 -!300 !300
!2"0 "00 -7"0 7"0
!2"0 !$00 !"0 !"0
28"0
!"00 0 -!"00 !"00
9"0
4.3.12 5ODBvalor1E valor2D
2etorna o resto da di%is&o de %alor0 'or %alor8.
SQL> SELECT SAL, COMM, MOD3SAL,COMM4, MOD3!00,$04
2 FROM EMP
3 WHERE DEPTNO : 30
$ ORDER B0 COMM
SAL COMM MOD3SAL,COMM4 MOD3!00,$04
----------------- ----------------- ----------------- -----------------
!"00 0 !"00 20
!600 300 !00 20
!2"0 "00 2"0 20
!2"0 !$00 !2"0 20
28"0 20
9"0 20
4.3.13 @un#.es triKonom/tricas
>alculam o seno (SI)), coseno (>OS), e tangente ($+)) da coluna ou literal.
SELECT SIN330/3.!$!"926"$P!804,
COS360/3.!$!"926"$P!804,
TAN3$"/3.!$!"926"$P!804
FROM D#AL
SIN330/3.! COS360/3.! TAN3$"/3.!
---------- ---------- ----------
." ." !
4.3.14 @un#.es 7iperbLlicas
>alculam o seno *i'erb@lico (SI)X), coseno *i'erb@lico (>OSX) e tangente *i'erb@lica
($+)X) da coluna ou literal.
SELECT SINH3!4, COSH304, TANH3."4
FROM D#AL
SINH3!4 COSH304 TANH3."4
---------- ------- ----------
!.!7"20!!9 ! .$62!!7!"7
4.4 ,-erccios
9?
a) Gistar o nLmero do de'artamento, o nome do funcionrio, e o salrio com aumento de
0H] e('resso em nLmero inteiro.
DEPTNO ENAME PCTSAL
----------------- ---------- -----------------
20 SMITH 920
30 ALLEN !8$0
30 WARD !$38
20 JONES 3$2!
30 MARTIN !$38
30 BLAE 3278
!0 CLAR 28!8
20 SCOTT 3$"0
!0 ING "7"0
30 T#RNER !72"
20 ADAMS !26"
30 JAMES !093
20 FORD 3$"0
!0 MILLER !$9"
b) Gerar a listagem mostrada a seguir/
EMPREGADO9E9CARGO
--------------------
SMITH CLER
ALLEN SALESMAN
WARD SALESMAN
JONES MANAGER
MARTIN SALESMAN
BLAE MANAGER
CLAR MANAGER
SCOTT ANAL0ST
ING PRESIDENT
T#RNER SALESMAN
ADAMS CLER
JAMES CLER
FORD ANAL0ST
MILLER CLER
!$ %&'( ()*)+,)-.
c) Gistar uma lista contendo todos os em'regados com um identificador com'osto 'elas duas
'rimeiras letras de seus cargos, os dois d4gitos do meio de seus nLmeros de matr4cula, e o
c@digo sonoro de seus nomes.
NOME CODIGO
---------- --------
SMITH CL36S"30
ALLEN SA$9A$"0
WARD SA"2W630
JONES MA"6J"20
MARTIN SA6"M63"
BLAE MA69B$20
CLAR MA78C$62
SCOTT AN78S300
ING PR83"20
T#RNER SA8$T6"6
ADAMS CL87A3"2
JAMES CL90J"20
9H
FORD AN90F630
MILLER CL93M$60
d) Fa!a uma 'rocura n&o sensiti%a a letras maiLsculas ou minLsculas 'or um cargo fornecido
'elo usurio.
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- --------- ----- ----- ------
7369 SMITH CLER 7902 !3-J#N-83 800 20
7876 ADAMS CLER 7788 0$-J#N-8$ !!00 20
7900 JAMES CLER 7698 23-J#L-8$ 9"0 30
793$ MILLER CLER 7782 2!-NO1-83 !300 !0
e) Im'rima os nomes dos de'artamentos centrados em um cam'o com largura de 8<
'osi!"es.
DEPARTAMENTO
--------------------
ACCO#NTING
RESEARCH
SALES
OPERATIONS
f) ,ncontrar a 'rimeira ocorr.ncia da letra NGN nos nomes dos em'regados e substituir 'ela
letra NfN.
ENAME PRIMEIRA9OCORRENCIA9
---------- --------------------
SMITH SMITH
ALLEN ANLEN
WARD WARD
JONES JONES
MARTIN MARTIN
BLAE BNAE
CLAR CNAR
SCOTT SCOTT
ING ING
T#RNER T#RNER
ADAMS ADAMS
JAMES JAMES
FORD FORD
MILLER MINLER
!$ %&'( ()*)+,)-.
9M
4.0 ;espostas dos e-erccios
?4
SQL> SELECT DEPTNO, ENAME, RO#ND 3SAL/!.!"4 PCTSAL
2 FROM EMP
@4
SQL> SELECT RPAD3ENAME,!0477LPAD3JOB,!04 EMPREGADO9E9CARGO
2 FROM EMP
+4
SQL> SELECT ENAME NOME,
2 S#BSTR3JOB,!,2477S#BSTR3EMPNO,2,2477SO#NDEN3ENAME4 CODIGO
3 FROM EMP
-4
SQL> SELECT /
2 FROM EMP
3 WHERE #PPER3JOB4 : #PPER 38JJOB84
EB,)% K?*>) D&% F&@M +*)%G
&*- 3M WHERE #PPER3JOB4 : #PPER 38JJOB84
B)' 3M WHERE #PPER3JOB4 : #PPER 38+*)%G84
)4
SQL> SELECT LPAD38 8,320-LENGTH3DNAME44P2477DNAME DEPARTAMENTO
2 FROM DEPT
D4
SQL> SELECT ENAME,
2 TRANSLATE3S#BSTR3ENAME,!,INSTR3ENAME,8L844,8L8,8N8477
3 S#BSTR3ENAME,INSTR3ENAME,8L842!4 PRIMEIRA9OCORRENCIA9DE9L
$ FROM EMP
9P
Captulo 0: @un#.es de Data e de Convers$o
0.1 Objetivos deste captulo
,ste ca'4tulo mostra as fun!"es do Oracle que mani'ulam datas e fazem a con%ers&o de ti'o
de dados.
0.2 @un#.es !ue manipulam datas
0.2.1 SMSD<,
SVSD+$, uma 'seudoJcoluna que retorna a data e a *ora corrente. + tabela SVS.D-+G
'Lblica, contm a'enas uma coluna c*amada D-;;V, e uma lin*a com o %alor TfT. ,sta
tabela Ltil 'ara retornar um Lnico %alor de uma constante, de uma 'seudoJcoluna, ou de
uma e('ress&o. +bai(o a tabela SVS.D-+G foi utilizada 'ara retornar a data corrente.
SQL> SELECT S0SDATE
2 FROM S0S.D#AL
S0SDATE
---------
2"-OCT-9$
0.2.2 ritm/tica de datas
Datas 'odem ser somadas ou subtra4das de outras datas, ou de %alores numricos.
dataOnLmero Soma o nLmero de dias # data, 'roduzindo outra data
dataJnLmero Subtrai o nLmero de dias # data, 'roduzindo outra data
dataJdata Subtrai uma data da outra, 'roduzindo nLmero de dias
dataOnLmero18? Soma nLmero de *oras # data, 'roduzindo outra data
SQL> SELECT HIREDATE, HIREDATE27, HIREDATE-7, S0SDATE-HIREDATE
2 FROM EMP
3 WHERE HIREDATE LIE 8<J#N<8
HIREDATE HIREDATE27 HIREDATE-7 S0SDATE-HIREDATE
--------- ---------- ---------- -----------------
!3-J#N-83 20-J#N-83 06-J#N-83 $!"2.3"!8"!8"!8"2
!!-J#N-8$ !8-J#N-8$ 0$-J#N-8$ 3788.3"!8"!8"!8"2
0$-J#N-8$ !!-J#N-8$ 28-MA0-8$ 379".3"!8"!8"!8"2
0$-J#N-8$ !!-J#N-8$ 28-MA0-8$ 379".3"!8"!8"!8"2
+ o'era!&o SVSD+$,JXI2,D+$, retorna o nLmero de dias entre a admiss&o do
em'regado e a data atual.
0.2.3 5O1<JSNB,<A,,1Bdata1Edata2D
2etorna o nLmero de meses decorridos entre data0 e data8.
SQL> SELECT MONTHS9BETWEEN3S0SDATE,HIREDATE4,
2 MONTHS9BETWEEN380!-JAN-8$8,80"-NO1-8884
3 FROM EMP
$ WHERE MONTHS9BETWEEN3S0SDATE,HIREDATE4 > "9
9Q
MONTHS9BETWEEN3S0SDATE,HIREDATE4 MONTHS9BETWEEN380!-JAN-8$8,80"-NO1-
888
-------------------------------- --------------------------------------
!36.398"293$"878! -"8.!290322"806$"
!3$.33$0!32!68$"9 -"8.!290322"806$"
!26.979!7$"07!68" -"8.!290322"806$"
!3!.8!788$!8$"878 -"8.!290322"806$"
!30.6"6"938620072 -"8.!290322"806$"
!2$.$630$"$7$9!0$ -"8.!290322"806$"
!2".36627!28!362 -"8.!290322"806$"
!27.6"6"938620072 -"8.!290322"806$"
!23."27"6!6039$27 -"8.!290322"806$"
!2$.6888"!926"233 -"8.!290322"806$"
!2$.6888"!926"233 -"8.!290322"806$"
!23.07"9$87007!68 -"8.!290322"806$"
!30.6"6"938620072 -"8.!290322"806$"
!3!.!$0$6$8297$9! -"8.!290322"806$"
!$ %&'( ()*)+,)-.
0.2.4 DDN5O1<JSBdataE mesesD
+diciona o nLmero de meses es'ecificados # data.
SQL> SELECT HIREDATE, ADD9MONTHS3HIREDATE,34, ADD9MONTHS3HIREDATE,-34
2 FROM EMP
3 WHERE DEPTNO:20
HIREDATE ADD9MONTHS3HIREDATE,34 ADD9MONTHS3HIREDATE,-34
--------- ---------------------- -----------------------
!3-J#N-83 !3-SEP-83 !3-MAR-83
3!-OCT-83 3!-JAN-8$ 3!-J#L-83
0"-MAR-8$ 0"-J#N-8$ 0"-DEC-83
0$-J#N-8$ 0$-SEP-8$ 0$-MAR-8$
0"-DEC-83 0"-MAR-8$ 0"-SEP-83
0.2.0 1,I<NDMBdataE diaNdaNsemanaD
Data do 'r@(imo dia da semana a'@s data.
SQL> SELECT HIREDATE, NENT9DA03HIREDATE,8FRIDA084, NENT9DA03HIREDATE,64
2 FROM EMP
3 WHERE DEPTNO : !0
HIREDATE NENT9DA03HIREDATE,8FRIDA084 NENT9DA03HIREDATE,64
--------- --------------------------- --------------------
!$-MA0-8$ !8-MA0-8$ !8-MA0-8$
09-J#L-8$ !3-J#L-8$ !3-J#L-8$
2!-NO1-83 2"-NO1-83 2"-NO1-83
0.2.2 (S<NDMBdataD
2etorna a data do Lltimo dia do m.s da data es'ecificada.
SQL> SELECT S0SDATE, LAST9DA03S0SDATE4, HIREDATE,
2 LAST9DA03HIREDATE4, LAST9DA038!"-FEB-8884
3 FROM EMP
9S
$ WHERE DEPTNO : 20
S0SDATE LAST9DA0 HIREDATE LAST9DA0 LAST9DA0
3S0SDATE4 3HIREDATE4 38!"-FEB-8884
--------- ---------- --------- ---------- -------------
2"-OCT-9$ 3!-OCT-9$ !3-J#N-83 30-J#N-83 29-FEB-88
2"-OCT-9$ 3!-OCT-9$ 3!-OCT-83 3!-OCT-83 29-FEB-88
2"-OCT-9$ 3!-OCT-9$ 0"-MAR-8$ 3!-MAR-8$ 29-FEB-88
2"-OCT-9$ 3!-OCT-9$ 0$-J#N-8$ 30-J#N-8$ 29-FEB-88
2"-OCT-9$ 3!-OCT-9$ 0"-DEC-83 3!-DEC-83 29-FEB-88
0.2.3 ;O+1DBdataD
;O+1DBdataE F5O1<JFD
;O+1DBdataE FM,;FD
2O-)D(data) retorna a data com a indica!&o da *ora como sendo zero *oras (meia noite).
+t o meio dia retorna a mesma data, a'@s o meio dia retorna o dia seguinte. ,sta fun!&o
Ltil quando s&o com'aradas datas com *oras diferentes.
2O-)D(data, T;O)$XT) retorna o 'rimeiro dia do m.s da data, se a data esti%er na
'rimeira quinzena, ou retorna o 'rimeiro dia do m.s seguinte, se a data esti%er na segunda
quinzena.
2O-)D(data, TV,+2T) retorna o 'rimeiro dia do ano da data, se a data esti%er no 'rimeiro
semestre, ou retorna o 'rimeiro dia do ano seguinte, se a data esti%er no segundo semestre.
SQL> SELECT S0SDATE, RO#ND3S0SDATE,8MONTH84, RO#ND3S0SDATE,80EAR84
2 FROM S0S.D#AL
S0SDATE RO#ND3S0SDATE,8MONTH84 RO#ND3S0SDATE,80EAR84
--------- ---------------------- ---------------------
2"-OCT-9$ 0!-NO1-9$ 0!-JAN-9"
0.2.3 <;+1CBdataD
$2-)>(data, T;O)$XT)
$2-)>(data, TV,+2T)
$2-)>(data) retorna a data com o tem'o indicando zero *oras.
$2-)>(data,T;O)$XT) retorna o 'rimeiro dia do m.s da data.
$2-)>(data,TV,+2T) retorna o 'rimeiro dia do ano da data.
SQL> SELECT S0SDATE, TR#NC3S0SDATE,8MONTH84, TR#NC3S0SDATE,80EAR84
2 FROM S0S.D#AL
S0SDATE TR#NC3S0SDATE,8MONTH84 TR#NC3S0SDATE,80EAR84
--------- ---------------------- ---------------------
2"-OCT-9$ 0!-OCT-9$ 0!-JAN-9$
0.3 @un#.es de convers$o
0.3.1 @ormatos de Data
Formato Significado
?<
>> ou S>> Sculog S 'refi(a datas +ntes de >risto com NJN
VVVV ou SVVVV +nog S 'refi(a datas +ntes de >risto com NJN
VVV, VV, V hltimos 9,8,0 d4gitos do ano
V,VVV +no com %4rgula se'arando os mil*ares
V,+2 ou SV,+2 +no 'or e(tenso. S 'refi(a datas +ntes de >risto com
NJN
B> ou +D Indicador de +ntes ou De'ois de >risto
B.>. ou +.D. Id.ntico a B>1+D com 'ontos
B Buarto do ano (trimestre)
;; ;.s
;ont* ;.s 'or e(tenso, com S caracteres, es'a!os # direita
;O) )ome do m.s, com 9 caracteres
WW ou W Semana do ano ou do m.s
DDD, DD, D Dia do ano, do m.s, ou da semana
D+V Dia 'or e(tenso, com S caracteres, es'a!os # direita
DV )ome do dia, abre%iado com 9 caracteres
7 Dia 7uliano (dias desde 901081?P09 +>)
+; ou 6; Indicador de meridiano
+.;. ou 6.;. Indicador de meridiano com 'ontos
XX ou XX08 Xora do dia no inter%alo 0 a 08
XX8? Xora do dia no inter%alo < a 89
;I ;inuto
SS Segundo
SSSS Segundos a'@s # meia noite (<JQM9SS)
1., etc... 6ontua!&o re'roduzida no resultado
N...N >aracteres entre as'as re'roduzido no resultado
)otas/
0 J O 'refi(o TfmT (fill mode) antes de ;O)$X ou D+V su'rime os es'a!os # direita
8 J O sufi(o T$XT 'roduz nLmeros ordinais (NDD$XN 'ara N?$XN)
9 J O sufi(o TS6T 'roduz nLmeros 'or e(tenso (NDDS6N 'ara NFO-2N)
? J O sufi(o TS6$XT 'ara nLmeros ordinais 'or e(tenso (NDDS6$XN 'ara NFO-2$XN)
H J Os c@digos s&o sensiti%os a caracteres maiLsculos e minLsculos
0.3.2 <ONCJ;Bn9meroCdataEOFPormatoFQD
>on%erte nLmero ou data em caracter no formato es'ecificado.
SQL> SELECT TO9CHAR3S0SDATE,8DA0, DDTH MONTH 000084
2 FROM S0S.D#AL
TO9CHAR3S0SDATE,8DA0DDTHMONTH000084
-----------------------------------
T#ESDA0 ,2"TH OCTOBER !99$
?0
+dicionandoJse o 'refi(o fm (fill mode) 'ara remo%er os es'a!os, e utilizandoJse letras
maiLsculas e minLsculas temos/
SQL> SELECT TO9CHAR3S0SDATE, 8DHD?Q, --,C M&B,C 000084
2 FROM S0S.D#AL
TO9CHAR3S0SDATE,8FMDA0,DDTHMONTH000084
--------------------------------------
T>)(-?Q, 2",C O+,&@)% !99$
+ fun!&o $O_>X+2 'ode ser usada 'ara e(trair a *ora do dia a'enas.
SQL> SELECT TO9CHAR3S0SDATE, 8HHMMIMSS84
2 FROM S0S.D#AL
TO9CHAR3S0SDATE,8HHMMIMSS84
---------------------------
08M39M"!
+ fun!&o $O_>X+2 'ode ser usada 'ara con%erter nLmeros em caracteres a'licando a
formata!&o dese5ada.
SQL> SELECT TO9CHAR3SAL,8R9,99984
2 FROM EMP
TO9CHAR3SAL,8R9,99984
---------------------
R800
R!,600
R!,2"0
R2,97"
R!,2"0
R2,8"0
R2,$"0
R3,000
R",000
R!,"00
R!,!00
R9"0
R3,000
R!,300
!$ %&'( ()*)+,)-.
0.3.3 @ormatos 1um/ricos
Formato Significado ,(em'lo
S 'osi!&o numrica (um S 'ara cada nLmero) SSSSSS 089?
< zeros # esquerda <SSSSS <<089?
i cifr&o # esquerda iSSSSS i089?
. 'onto decimal na 'osi!&o es'ecificada SSSSSS.SS 089?.<<
, %4rgula na 'osi!&o es'ecificada SSS,SSS 0,89?
;I sinal de menos # direita <SSSSS;I 089?J
62 nLmeros negati%os entre 'ar.nteses SSSSSS62 (089?)
,,,, nota!&o cient4fica SS.SSS,,,, 0.89?,O<9
?8
= multi'licar 'or 0< ele%ado a n, sendo n o
nLmero de S # direita de =
SSSS=SS 089?<<
B mostrar resultados zero como es'a!os, n&o
como <.
BSSSS.SS 089?.<<
0.3.4 <ON1+5B,;BcadeiaNdeNcaracteresD
>on%erte a cadeia de caracteres, que de%e conter um nLmero, em um %alor numrico.
SQL> SELECT EMPNO, ENAME, JOB, SAL
2 FROM EMP
3 WHERE SAL > TO9N#MBER38!"0084
EMPNO ENAME JOB SAL
----- ---------- --------- -------
7$99 ALLEN SALESMAN !600
7"66 JONES MANAGER 297"
7698 BLAE MANAGER 28"0
7782 CLAR MANAGER 2$"0
7788 SCOTT ANAL0ST 3000
7839 ING PRESIDENT "000
7902 FORD ANAL0ST 3000
7 %&'( ()*)+,)-.
0.3.0 <OND<,BFcadeiaNdeNcaracteresFEFPormatoFD
2etorna a data contida na cadeia de caracteres conforme o formato es'ecificado. Se o
formato for omitido ser assumido DDJ;O)JVV.
SQL> SELECT EMPNO, ENAME, HIREDATE
2 FROM EMP
3 WHERE HIREDATE : TO9DATE38J>B) $,!98$8,8M&B,C --,QQQQ84
EMPNO ENAME HIREDATE
----- ---------- ---------
78$$ T#RNER 0$-J#N-8$
7876 ADAMS 0$-J#N-8$
0.4 @un#.es !ue aceitam !ual!uer tipo de dado
0.4.1 D,COD,BcolunaCe-press$oEpes1Eres1EOpes2Eres2E...QEdePaultD
Funciona como uma estrutura >+SO, substituindo as 'esquisas 'elos resultados. + coluna
ou e('ress&o com'arada com os argumentos de 'esquisa, e se *ou%er igualdade o
resultado corres'ondente retornado. Se n&o *ou%er igualdade, o %alor default retornado.
+rgumentos/
colunaRe('ress&o a coluna ou e('ress&o a ser a%aliada
'es0 o 'rimeiro %alor a ser testado
res0 o %alor a ser retornado se coluna ou e('ress&o igual a 'es0
'es8 o segundo %alor a ser testado
res8 o %alor a ser retornado se coluna ou e('ress&o igual a 'es8
default o %alor a ser retornado se a coluna ou e('ress&o for diferente
?9
de 'es0, 'es8,...,'es).
)otas/
Jcoluna ou e('ress&o 'odem ser de qualquer ti'o de dados.
J'es(quisa) de%e ter o mesmo ti'o de dados da coluna ou e('ress&o
JO %alor retornado sem're do mesmo ti'o do terceiro argumento (resultado0)
)o e(em'lo abai(o o cargo >G,2\ transformado em WO2\,2, o cargo ;+)+G,2
transformado em BOSS, e os demais cargos s&o transformados em -)D,FI),D.
SQL> SELECT ENAME, JOB,
2 DECODE3JOB, 8CLER8,8WORER8,8MANAGER8,8BOSS8,8#NDEFINED84
3 DECODED9JOB
$ FROM EMP
ENAME JOB DECODED9JOB
---------- --------- -----------
SMITH CLER WORER
ALLEN SALESMAN #NDEFINED
WARD SALESMAN #NDEFINED
JONES MANAGER BOSS
MARTIN SALESMAN #NDEFINED
BLAE MANAGER BOSS
CLAR MANAGER BOSS
SCOTT ANAL0ST #NDEFINED
ING PRESIDENT #NDEFINED
T#RNER SALESMAN #NDEFINED
ADAMS CLER WORER
JAMES CLER WORER
FORD ANAL0ST #NDEFINED
MILLER CLER WORER
6ara mostrar as 'ercentagens de bjnus relati%as #s fai(as salariais/
SQL> SELECT GRADE,
2 DECODE3GRADE,8!8,8!"<8,828,8!0<8,838,88<8,8"<84 BON#S
3 FROM SALGRADE
GRADE BON#S
----- -----
! !"<
2 !0<
3 8<
$ "<
" "<
O e(em'lo abai(o causa um erro 'orque ename (caracter) tem ti'o diferente do terceiro
argumento sal (numrico).
SQL> SELECT / FROM EMP
2 ORDER B0 DECODE32,!,SAL,2,ENAME,SAL4
/
ERRORM ORA-0!722M ABK?*A- B>H@)%
B& %&'( ()*)+,)-
??
6ara fazer um aumento salarial diferenciado 'or cargo/
SQL> SELECT JOB, SAL,
2 DECODE3JOB,8ANAL0ST8,SAL/!.!, 8CLER8,SAL/!.!",
3 8MANAGER8,SAL/0.9", SAL4 SALARIO9DECODIFICADO
$ FROM EMP
JOB SAL SALARIO9DECODIFICADO
--------- ------- --------------------
CLER 800 920
SALESMAN !600 !600
SALESMAN !2"0 !2"0
MANAGER 297" 2826.2"
SALESMAN !2"0 !2"0
MANAGER 28"0 2707."
MANAGER 2$"0 2327."
ANAL0ST 3000 3300
PRESIDENT "000 "000
SALESMAN !"00 !"00
CLER !!00 !26"
CLER 9"0 !092."
ANAL0ST 3000 3300
CLER !300 !$9"
!$ %&'( ()*)+,)-.
0.4.2 1=(BcolunaCvalorE valorD
>on%erte %alores nulos do 'rimeiro argumento no %alor es'ecificado no segundo argumento.
SQL> SELECT SAL/!22N1L3COMM,04, N1L3COMM,!0004, SAL/!22N1L3COMM,!0004
2 FROM EMP
3 WHERE DEPTNO : !0
SAL/!22N1L3COMM,04 N1L3COMM,!0004 SAL/!22N1L3COMM,!0004
------------------ ----------------- ---------------------
29$00 !000 30$00
60000 !000 6!000
!"600 !000 !6600
0.4.3 G;,<,S<BcolunaCvalorE colunaCvalorE...D
2etorna o maior dos %alores de uma lista de %alores.
SQL> SELECT GREATEST3!000,20004, GREATEST3SAL,COMM4
2 FROM EMP
3 WHERE DEPTNO : 30
GREATEST3!000,20004 GREATEST3SAL,COMM4
------------------- ------------------
2000 !600
2000 !2"0
2000 !$00
2000
2000 !"00
2000
?H
6 %&'( ()*)+,)-.
0.4.4 (,S<BcolunaCvalorE colunaCvalorE...D
R),&%B? & H)B&% -&( K?*&%)( -) >H? *A(,? -) K?*&%)(.
SQL> SELECT LEAST3!000,20004, LEAST3SAL,COMM4
2 FROM EMP
3 WHERE DEPTNO : 30
LEAST3!000,20004 LEAST3SAL,COMM4
----------------- -----------------
!000 300
!000 "00
!000 !2"0
!000
!000 0
!000
0.4.0 =S"R,BcolunaCvalorD
2etorna o nLmero de bAtes utilizado internamente 'elo Oracle 'ara re'resentar o %alor.
SQL> SELECT DEPTNO, 1SISE3DEPTNO4, 1SISE3HIREDATE4,
2 1SISE3SAL4, 1SISE3ENAME4
3 FROM EMP
$ WHERE DEPTNO : !0
DEPTNO 1SISE3DEPTNO4 1SISE3HIREDATE4 1SISE3SAL4 1SISE3ENAME4
------- --------------- --------------- --------------- ---------------
!0 2 7 3 "
!0 2 7 2 $
!0 2 7 2 6
0.4.0 @un#.es anin7adas revisitadas
SQL> SELECT ENAME, N1L3TO9CHAR3MGR4,8NAO GERENCIA1EL84
2 FROM EMP
3 WHERE MGR IS N#LL
ENAME N1L3TO9CHAR3MGR4,8NAOGERENCIA1EL84
---------- ----------------------------------
ING NAO GERENCIA1EL
SQL> SELECT S0SDATE,
2 TO9CHAR3NENT9DA03ADD9MONTHS3S0SDATE,24,8FRIDA084,
3 8D?Q -- M&B,C 000084
$ FROM S0S.D#AL
S0SDATE
TO9CHAR3NENT9DA03ADD9MONTHS3S0SDATE,24,8FRIDA084,8DA0DDMONTH000084
--------- --------------------------------------------------------
2"-OCT-9$ F%A-?Q 30 D)+)H@)% !99$
0.0 ,-erccios
?M
a) ;ostrar o nome e a data de admiss&o dos em'regados do de'artamento 8<. -tilize o alis
D+$+_D,_+D;ISS+O 'ara o nome da coluna.
ENAME DATA9DE9ADMISSAO
---------- ---------------------------
SMITH J>B), TCA%,))B,C !983
JONES O+,&@)%, TCA%,Q-FA%(, !983
SCOTT M?%+C, FAD,C !98$
ADAMS J>B), F&>%,C !98$
FORD D)+)H@)%, FAD,C !983
b) ,(ibir o nome de cada em'regado, 5untamente com a data de admiss&o e a data de re%is&o
do salrio. +ssuma a data de re%is&o um ano a'@s a data de admiss&o. >lassificar a sa4da em
ordem ascendente da data de re%is&o do salrio.
ENAME HIREDATE RE1ISAO
---------- --------- ---------
SMITH !3-J#N-83 !3-J#N-8$
ALLEN !"-A#G-83 !"-A#G-8$
JONES 3!-OCT-83 3!-OCT-8$
MILLER 2!-NO1-83 2!-NO1-8$
MARTIN 0"-DEC-83 0"-DEC-8$
FORD 0"-DEC-83 0"-DEC-8$
SCOTT 0"-MAR-8$ 0"-MAR-8"
WARD 26-MAR-8$ 26-MAR-8"
CLAR !$-MA0-8$ !$-MA0-8"
T#RNER 0$-J#N-8$ 0$-J#N-8"
ADAMS 0$-J#N-8$ 0$-J#N-8"
BLAE !!-J#N-8$ !!-J#N-8"
ING 09-J#L-8$ 09-J#L-8"
JAMES 23-J#L-8$ 23-J#L-8"
c) Im'rimir uma lista de em'regados mostrando o salrio, se este for su'erior a 0H<<. Se o
salrio for inferior a 0H<< de%e ser e(ibido +B+IfO D, 0H<<, e se for igual a 0H<< de%e ser
e(ibido )O GI;I$,.
ENAME SALARIO
---------- --------------
ADAMS ABAINO DE !"00
ALLEN !600
BLAE 28"0
CLAR 2$"0
FORD 3000
JAMES ABAINO DE !"00
JONES 297"
ING "000
MARTIN ABAINO DE !"00
MILLER ABAINO DE !"00
SCOTT 3000
SMITH ABAINO DE !"00
T#RNER NO LIMITE
WARD ABAINO DE !"00
d) ,scre%a uma consulta que retorne o dia da semana 'ara qualquer data entrada no formato
DD.;;.VV.
DIA
?P
--------
SAT#RDA0
e) ,scre%a uma consulta que retorne o tem'o que o em'regado est trabal*ando 'ara a
em'resa.
ENAME TEMPO DE SER1ICO
---------- ----------------
ING !0 ANOS 3 MESES
f) Dada uma cadeia de caracteres no formato Tnn1nnT, %erifique se os dois 'rimeiros e os dois
Lltimos caracteres s&o numricos, e se o caracter do meio uma T1T. Im'rima a e('ress&o
TSI;T se for %lido, e T)+OT se n&o for %lido. ,('erimente as e('ress"es T0819?T,T<010aT,Te
TSSkQQT.
1ALOR 1ALIDOT
----- -------
!2P3$ SIM
g) ,m'regados admitidos at o dia 0H, inclusi%e, s&o 'agos na Lltima se(taJfeira do m.s.
,m'regados admitidos a'@s o dia 0H s&o 'agos na Lltima se(taJfeira do m.s seguinte.
Im'rima uma rela!&o contendo os nome dos em'regados, as datas de admiss&o, e a 'rimeira
data de 'agamento.
ENAME HIREDATE DIA9DO9PAGAMENTO
---------- --------- ----------------
SMITH !3-J#N-83 2$-J#N-83
ALLEN !"-A#G-83 26-A#G-83
JONES 3!-OCT-83 2"-NO1-83
MILLER 2!-NO1-83 30-DEC-83
MARTIN 0"-DEC-83 30-DEC-83
FORD 0"-DEC-83 30-DEC-83
SCOTT 0"-MAR-8$ 30-MAR-8$
WARD 26-MAR-8$ 27-APR-8$
CLAR !$-MA0-8$ 2"-MA0-8$
T#RNER 0$-J#N-8$ 29-J#N-8$
ADAMS 0$-J#N-8$ 29-J#N-8$
BLAE !!-J#N-8$ 29-J#N-8$
ING 09-J#L-8$ 27-J#L-8$
JAMES 23-J#L-8$ 3!-A#G-8$
!$ %&'( ()*)+,)-.
?Q
0.2 ;espostas dos e-erccios
?4SQL> SELECT ENAME,
2 TO9CHAR3HIREDATE,8DHM&B,C, D-(L,C 000084 DATA9DE9ADMISSAO
3 FROM EMP
$ WHERE DEPTNO : 20
@4SQL> SELECT ENAME, HIREDATE, ADD9MONTHS3HIREDATE,!24 RE1ISAO
2 FROM EMP
3 ORDER B0 ADD9MONTHS3HIREDATE,!24
+4SQL> SELECT ENAME,
2 DECODE3SIGN3!"00-SAL4,!,8ABAINO DE !"008,0,8NO LIMITE8,SAL4
3 SALARIO
$ FROM EMP
" ORDER B0 ENAME
-4SQL> SELECT TO9CHAR3TO9DATE38JAN0DATE8,8DD.MM.0084,8DA084 DIA
2 FROM S0S.D#AL
EB,)% K?*>) D&% ?BQ-?,)M !2.!!.88
&*- !M SELECT TO9CHAR3TO9DATE38JAN0DATE8,8DD.MM.0084,8DA084 DIA
B)' !M SELECT TO9CHAR3TO9DATE38!2.!!.888,8DD.MM.0084,8DA084 DIA
)4SQL> DEFINE TIME : MONTHS9BETWEEN3S0SDATE,HIREDATE4
SQL> SELECT ENAME, FLOOR3JTIMEP!24778ANOS 877
2 FLOOR3MOD3JTIME,!244778MESES 8 ITEMPO DE SER1ICOI
3 FROM EMP
$ WHERE ENAME : #PPER38JNOME9DO9EMPREGADO84
&*- !M SELECT ENAME, FLOOR3JTIMEP!24778ANOS 877
B)' !M SELECT ENAME, FLOOR3MONTHS9BETWEEN3S0SDATE,HIREDATE4P!24778
ANOS 877
&*- 2M FLOOR3MOD3JTIME,!244778MESES 8 ITEMPO DE SER1ICOI
B)' 2M FLOOR3MOD3MONTHS9BETWEEN3S0SDATE,HIREDATE4,!244778MESES 8
ITEMPO DE SER1ICOI
EB,)% K?*>) D&% B&H)9-&9)HL%)E?-&M GABE
&*- $M WHERE ENAME : #PPER38JNOME9DO9EMPREGADO84
B)' $M WHERE ENAME : #PPER38GABE84
D4SQL> SELECT 8!2P3$8 1ALOR,
2 DECODE3TRANSLATE38!2P3$8,8!23$"678908,8999999999984,
3 899P998,8SIM8,8NAO84 I1ALIDOTI
$ FROM S0S.D#AL
E4SQL> SELECT ENAME, HIREDATE,
2 DECODE3SIGN3TO9CHAR3HIREDATE,8DD84-!"4,
3 !,NENT9DA03LAST9DA03ADD9MONTHS3HIREDATE,!44,8FRIDA084-7,
$ NENT9DA03LAST9DA03HIREDATE4,8FRIDA084-74 DIA9DO9PAGAMENTO
" FROM EMP
6 ORDER B0 HIREDATE
&>
SQL> SELECT ENAME, HIREDATE,
2 NENT9DA03LAST9DA03RO#ND3HIREDATE,8MONTH844-7,8FRIDA084
3 DIA9DO9PAGAMENTO
$ FROM EMP
" ORDER B0 HIREDATE
?S
Capitulo 2: @un#.es de Grupo
2.1 Objetivos deste captulo
,ste ca'4tulo e('lica como informa!"es sumarizadas (mdia, m(imo, m4nimo,...) 'odem ser
obtidas 'ara gru'o de lin*as.
+s fun!"es %istas anteriormente o'era%am sobre cada lin*a, enquanto que as fun!"es
mostradas neste ca'4tulo o'eram sobre um gru'o de lin*as.
2.2 @un#.es disponveis
Fun!&o =alor retornado
+=G
(`DIS$I)>$RALLan)
=alor mdio de TnT, ignorando os %alores nulos.
>O-)$
(`DIS$I)>$RALLae('I)
)Lmero de ocorr.ncias n&o nulas da e('ress&o. O TIT obriga
a contagem total, incluindo %alores du'licados e nulos.
;+f
(`DIS$I)>$RALLae(')
=alor m(imo da e('ress&o.
;I)
(`DIS$I)>$RALLae(')
=alor m4nimo da e('ress&o.
S$DD,=
(`DIS$I)>$RALLan)
Des%io 'adr&o de TnT, ignorando os %alores nulos.
S-;
(`DIS$I)>$RALLan)
Soma dos %alores de TnT, ignorando os %alores nulos.
=+2I+)>,
(`DIS$I)>$RALLan)
=ariencia de TnT, ignorando os %alores nulos.
Buando DIS$I)>$ es'ecificado, somente os %alores n&o du'licados s&o considerados 'ela
fun!&o, caso contrrio +GG assumido, considerando todos os %alores, inclusi%e os
du'licados.
$odas as fun!"es de gru'o, e(ceto >O-)$(I), ignoram os %alores nulos.
6odem ser fornecidas e('ress"es dos ti'os caracter, nLmero ou data quando Te('T esti%er
indicado. Buando TnT esti%er indicado, somente %alores numricos s&o aceitos.
2.3 +sando Pun#.es de Krupo
6ara calcular o salrio mdio de todos os em'regados/
SQL> SELECT A1G3SAL4
2 FROM EMP
A1G3SAL4
-----------------
2073.2!$28"7!$286
)ote que toda a tabela ,;6 foi tratada como um Lnico gru'o.
-ma fun!&o de gru'o 'ode ser a'licada sobre um subcon5unto das lin*as usando a clusula
WX,2,.
H<
6ara encontrar o salrio m4nimo recebido 'or um >G,2\/
SQL> SELECT MIN3SAL4
2 FROM EMP
3 WHERE JOB:8CLER8
MIN3SAL4
-----------------
800
6ara contar o nLmero de em'regados que trabal*am no de'artamento 8</
SQL> SELECT CO#NT3/4
2 FROM EMP
3 WHERE DEPTNO : 20
CO#NT3/4
-----------------
"
2.4 cl&usula G;O+* BM
+ clusula G2O-6 BV utilizada 'ara di%idir as lin*as das tabelas em gru'os. Fun!"es de
gru'o 'odem ser utilizadas 'ara retornar informa!"es sumarizadas 'ara cada gru'o.
6ara calcular o salrio mdio de cada cargo/
SQL> SELECT JOB, A1G3SAL4
2 FROM EMP
3 GRO#P B0 JOB
JOB A1G3SAL4
--------- -----------------
ANAL0ST 3000
CLER !037."
MANAGER 27"8.333333333333
PRESIDENT "000
SALESMAN !$00
2.0 ,-cluindo lin7as dos Krupos
+ clusula WX,2, 'ode ser utilizada 'ara e(cluir lin*as, antes que estas se5am gru'adas.
6ara mostrar o salrio mdio de cada cargo, e(cluindo os gerentes/
SQL> SELECT JOB, A1G3SAL4
2 FROM EMP
3 WHERE JOB U: 8MANAGER8
$ GRO#P B0 JOB
JOB A1G3SAL4
--------- -----------------
ANAL0ST 3000
CLER !037."
PRESIDENT "000
SALESMAN !$00
H0
2.2 Grupos dentro de Krupos
Os gru'os 'odem conter subgru'os, fornecendo resultados 'ara gru'os dentro de gru'os.
6ara listar o salrio mdio de cada cargo em cada de'artamento/
SQL> SELECT DEPTNO, JOB, A1G3SAL4
2 FROM EMP
3 GRO#P B0 DEPTNO, JOB
DEPTNO JOB A1G3SAL4
----------------- --------- -----------------
!0 CLER !300
!0 MANAGER 2$"0
!0 PRESIDENT "000
20 ANAL0ST 3000
20 CLER 9"0
20 MANAGER 297"
30 CLER 9"0
30 MANAGER 28"0
30 SALESMAN !$00
9 %&'( ()*)+,)-.
2.3 @un#.es de Krupo e resultados individuais
+ declara!&o abai(o mostra o salrio m(imo 'ara cada ti'o de cargo. O resultado n&o
muito significati%o 'ois n&o mostra o cargo, mas mostra que n&o * obriga!&o de listar as
colunas 'elas quais o gru'amento realizado.
SQL> SELECT MAN3SAL4
2 FROM EMP
3 GRO#P B0 JOB
MAN3SAL4
-----------------
3000
!300
297"
"000
!600
$ambm n&o * necessidade de colocar as colunas a serem gru'adas antes das outras/
SQL> SELECT MAN3SAL4, JOB
2 FROM EMP
3 GRO#P B0 JOB
MAN3SAL4 JOB
----------------- ---------
3000 ANAL0ST
!300 CLER
297" MANAGER
"000 PRESIDENT
!600 SALESMAN
H8
GembreJse que quando fun!"es de gru'o s&o inclu4das na clusula S,G,>$, todas as colunas
que n&o contm fun!&o de gru'o de%em a'arecer na clusula G2O-6 BV.
O e(em'lo abai(o mostra o erro causado 'ela utiliza!&o da fun!&o de gru'o ;I)(S+G), sem
*a%er a clusula G2O-6 BV em D,6$)O/
SQL> SELECT DEPTNO, MIN3SAL4
2 FROM EMP
SELECT DEPTNO, MIN3SAL4
/
ERROR ?, *AB) !M
ORA-00937M B&, ? (ABE*)-E%&>L E%&>L D>B+,A&B
Gru'andoJse 'or D,6$)O o comando 'rocessa corretamente.
SQL> SELECT DEPTNO, MIN3SAL4
2 FROM EMP
3 GRO#P B0 DEPTNO
DEPTNO MIN3SAL4
----------------- -----------------
!0 !300
20 800
30 9"0
Toda coluna ou expresso da clusula SELECT que no uma
funo de agregao deve aparecer na clusula GRO! "#$
2.4 cl&usula J="1G
Somente os gru'os que atendem as condi!"es es'ecificadas na clusula X+=I)G s&o
selecionados. + clusula X+=I)G o'era sobre a clusula G2O-6 BV de maneira
semel*ante a que a clusula WX,2, o'era sobre a clusula S,G,>$.
6ara mostrar o salrio mdio dos de'artamento que 'ossuem mais de tr.s funcionrios/
SQL> SELECT DEPTNO, A1G3SAL4
2 FROM EMP
3 GRO#P B0 DEPTNO
$ HA1ING CO#NT3/4 > 3
DEPTNO A1G3SAL4
----------------- -----------------
20 2!7"
30 !"66.666666666667
6ara mostrar os cargos com salrio m(imo acima de 9<<</
SQL> SELECT JOB, MAN3SAL4
2 FROM EMP
3 HA1ING MAN3SAL4 >: 3000
$ GRO#P B0 JOB
JOB MAN3SAL4
--------- -----------------
ANAL0ST 3000
PRESIDENT "000
H9
,mbora a clusula X+=I)G 'ossa ser escrita antes da clusula G2O-6 BV, a leitura tornaJ
se mais fcil quando a clusula X+=I)G a'arece a'@s a clusula G2O-6 BV. Os gru'os
s&o formados e as fun!"es de gru'o s&o calculadas antes da clusula X+=I)G ser a'licada.
+ clusula WX,2, n&o 'ode ser usada 'ara restringir os gru'os a serem retornados. +
clusula WX,2, na declara!&o abai(a ilegal/
SQL> SELECT DEPTNO, A1G3SAL4
2 FROM EMP
3 WHERE A1G3SAL4 > 2000
$ GRO#P B0 DEPTNO
WHERE A1G3SAL4 > 2000
/
ERROR ?, *AB) 3M
ORA-0093$M E%&>L D>B+,A&B A( B&, ?**&')- C)%)
+ clusula X+=I)G de%e ser usada neste caso.
SQL> SELECT DEPTNO, A1G3SAL4
2 FROM EMP
3 GRO#P B0 DEPTNO
$ HA1ING A1G3SAL4 > 2000
DEPTNO A1G3SAL4
----------------- -----------------
!0 29!6.666666666667
20 2!7"
A clusula %&ERE u'(l()ada para apl(car res'r(*es so+re l(n,as
(nd(v(dualmen'e- enquan'o a clusula &A./0G u'(l()ada para
apl(car res'r(*es so+re grupos de l(n,as$
+s clusulas WX,2, e X+=I)G 'odem ser utilizadas em con5unto.
6ara calcular o salrio mdio de todos os cargos, e(ceto o cargo de gerente/
SQL> SELECT JOB, A1G3SAL4
2 FROM EMP
3 WHERE JOB O> 8MANAGER8
$ GRO#P B0 JOB
" HA1ING A1G3SAL4 > 2000
JOB A1G3SAL4
--------- -----------------
ANAL0ST 3000
CLER !037."
PRESIDENT "000
2.6 Ordem das cl&usulas
S,G,>$ lista_de_colunas
F2O; lista_de_tabelas
H?
WX,2, condi!"es_de_lin*a
G2O-6 BV lista_de_colunas
X+=I)G condi!"es_de_gru'o
O2D,2 BV lista_de_colunas
S&o a%aliados/
WX,2, 'ara ficar somente as lin*as que atendem a clusula
G2O-6 BV 'ara montagem dos gru'os
X+=I)G 'ara ficar somente os gru'os que atendem a clusula
2.18 ,-erccios
a) ,ncontrar o menor salrio entre todos os em'regados.
MENOR
-----------------
800
b) ,ncontrar o salrio maior, menor, e mdio, entre todos os em'regados.
MAN3SAL4 MIN3SAL4 A1G3SAL4
----------------- ----------------- -----------------
"000 800 2073.2!$28"7!$286
c) Gistar o maior e o menor salrio 'or cada ti'o de cargo.
CARGO MAIOR MENOR
--------- ----------------- -----------------
ANAL0ST 3000 3000
CLER !300 800
MANAGER 297" 2$"0
PRESIDENT "000 "000
SALESMAN !600 !2"0
d) >alcular o nLmero de gerentes sem listar seus nomes.
GERENTES
-----------------
3
e) ,ncontrar o salrio mdio e a remunera!&o total mdia de cada ti'o de cargo, lembrandoJ
se que os %endedores recebem comiss&o.
JOB SALARIO9MEDIO REM#NERACAO9MEDIA
--------- ----------------- -----------------
ANAL0ST 3000 36000
CLER !037." !2$"0
MANAGER 27"8.333333333333 33!00
PRESIDENT "000 60000
SALESMAN !$00 !7237
f) ,ncontrar a diferen!a entre o maior e o menor salrios.
DIFERENCA
HH
-----------------
$200
g) Gistar todos os de'artamentos que 'ossuem mais de tr.s em'regados.
DEPTNO CO#NT3/4
----------------- -----------------
20 "
30 6
*) =erificar se n&o * du'licidade no nLmero dos em'regados
B& %&'( ()*)+,)-
i) Gistar os em'regados que recebem o menor salrio em cada de'artamento, relacionando os
seus gerentes. ,(cluir os gru'os onde o menor salrio inferior a 0<<<. Ordenar os
resultados 'elo salrio
MGR MIN3SAL4
----------------- -----------------
7788 !!00
7782 !300
7839 2$"0
7"66 3000
"000
HM
2.11 ;espostas dos e-erccios
?4
SQL> SELECT MIN3SAL4 MENOR
2 FROM EMP
@4
SQL> SELECT MAN3SAL4, MIN3SAL4, A1G3SAL4
2 FROM EMP
+4
SQL> SELECT JOB CARGO, MAN3SAL4 MAIOR, MIN3SAL4 MENOR
2 FROM EMP
3 GRO#P B0 JOB
-4
SQL> SELECT CO#NT3/4 GERENTES
2 FROM EMP
3 WHERE JOB : 8MANAGER8
)4
SQL> SELECT JOB, A1G3SAL4 SALARIO9MEDIO,
2 A1G3SAL/!22N1L3COMM,044 REM#NERACAO9MEDIA
3 FROM EMP
$ GRO#P B0 JOB
D4
SQL> SELECT MAN3SAL4-MIN3SAL4 DIFERENCA
2 FROM EMP
E4
SQL> SELECT DEPTNO, CO#NT3/4
2 FROM EMP
3 GRO#P B0 DEPTNO
$ HA1ING CO#NT3/4 > 3
C4
SQL> SELECT EMPNO
2 FROM EMP
3 GRO#P B0 EMPNO
$ HA1ING CO#NT3/4 > !
A4
SQL> SELECT MGR, MIN3SAL4
2 FROM EMP
3 GRO#P B0 MGR
$ HA1ING MIN3SAL4 >: !000
" ORDER B0 MIN3SAL4
HP
Captulo 3: ,-traindo dados de mais de uma tabela
3.1 Objetivos deste captulo
;ostrar como obter informa!"es de mais de uma tabela atra%s das 5un!"es.
Gin*as de uma tabela 'odem ser 5untadas com lin*as de outra tabela, de acordo com %alores
comuns e(istentes em colunas corres'ondentes. Os dois 'rinci'ais ti'os de 5un!&o s&o/
0J7un!"es equi%alentes (equiJ5oin)
8J7un!"es n&o equi%alentes (nonJequiJ5oin)
3.2 Sun#.es e!uivalentes
6ara le%antar, manualmente, o nome do de'artamento em que um funcionrio trabal*a,
'rimeiro seria le%antado na tabela ,;6 o nLmero do de'artamento do em'regado, e, em
seguida, seria le%antado na tabela D,6$ o nome corres'ondente ao nLmero do
de'artamento. ,ste relacionamento entre as duas tabelas c*amado de 5un!&o equi%alente
(equiJ5oin), uma %ez o nLmero do de'artamento nas duas tabelas o mesmo.
+ condi!&o de 5un!&o es'ecificada na clusula WX,2, usando o o'erador T:T.
SQL> SELECT ENAME, JOB, DNAME
2 FROM EMP, DEPT
3 WHERE EMP.DEPTNO : DEPT.DEPTNO
ENAME JOB DNAME
---------- --------- --------------
CLAR MANAGER ACCO#NTING
ING PRESIDENT ACCO#NTING
MILLER CLER ACCO#NTING
SMITH CLER RESEARCH
ADAMS CLER RESEARCH
FORD ANAL0ST RESEARCH
SCOTT ANAL0ST RESEARCH
JONES MANAGER RESEARCH
ALLEN SALESMAN SALES
BLAE MANAGER SALES
MARTIN SALESMAN SALES
JAMES CLER SALES
T#RNER SALESMAN SALES
WARD SALESMAN SALES
+s lin*as da tabela ,;6 foram combinadas com as lin*as da tabela D,6$ 'ara obten!&o dos
nLmeros dos de'artamentos.
O nome da tabela colocado antes do nome da coluna, 'ara diferenciar colunas com mesmo
nome em tabelas diferentes.
$odas as colunas 'odem ser 'refi(adas com o nome da tabela, 'orm este 'rocedimento s@
obrigat@rio quando e(iste ambig^idade.
SQL> SELECT DEPT.DEPTNO, ENAME, JOB, DNAME
2 FROM EMP, DEPT
3 WHERE EMP.DEPTNO : DEPT.DEPTNO
HQ
$ ORDER B0 DEPT.DEPTNO
DEPTNO ENAME JOB DNAME
------- ---------- --------- --------------
!0 CLAR MANAGER ACCO#NTING
!0 ING PRESIDENT ACCO#NTING
!0 MILLER CLER ACCO#NTING
20 SMITH CLER RESEARCH
20 ADAMS CLER RESEARCH
20 FORD ANAL0ST RESEARCH
20 SCOTT ANAL0ST RESEARCH
20 JONES MANAGER RESEARCH
30 ALLEN SALESMAN SALES
30 BLAE MANAGER SALES
30 MARTIN SALESMAN SALES
30 JAMES CLER SALES
30 T#RNER SALESMAN SALES
30 WARD SALESMAN SALES
!$ %&'( ()*)+,)-.
+lis 'ara nomes de tabelas 'odem ser usado de forma semel*ante # que foi usada 'ara alis
de nomes de colunas. O nome do alis escrito a'@s o nome da tabela. )o e(em'lo abai(o
foi utilizado o alis T,T 'ara a tabela ,;6, e o alis TDT 'ara a tabela D,6$.
SQL> SELECT E.ENAME, D.DEPTNO, D.DNAME
2 FROM EMP E, DEPT D
3 WHERE E.DEPTNO : D.DEPTNO
$ ORDER B0 D.DEPTNO
ENAME DEPTNO DNAME
---------- ------- --------------
CLAR !0 ACCO#NTING
ING !0 ACCO#NTING
MILLER !0 ACCO#NTING
SMITH 20 RESEARCH
ADAMS 20 RESEARCH
FORD 20 RESEARCH
SCOTT 20 RESEARCH
JONES 20 RESEARCH
ALLEN 30 SALES
BLAE 30 SALES
MARTIN 30 SALES
JAMES 30 SALES
T#RNER 30 SALES
WARD 30 SALES
!$ %&'( ()*)+,)-.
3.3 *roduto
Buando a condi!&o de 5un!&o in%lida ou omitida com'letamente, o resultado um
6roduto >artesiano, e todas as combina!"es de lin*a ser&o retornadas.
O 6roduto tende a gerar um grande nLmero de lin*as, e o resultado raramente Ltil.
3.4 Sun#.es n$o e!uivalentes
HS
O relacionamento entre as tabelas ,;6 e S+GG2+D, formam uma 5un!&o n&o equi%alente,
uma %ez que n&o e(iste nen*uma coluna comum #s duas tabelas. )o e(em'lo, a fun!&o
B,$W,,) ... +)D ... faz o relacionamento entre as duas tabelas.
SQL> SELECT E.ENAME, E.SAL, S.GRADE
2 FROM EMP E, SALGRADE S
3 WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL
ENAME SAL GRADE
---------- ------- -------
SMITH 800 !
ADAMS !!00 !
JAMES 9"0 !
WARD !2"0 2
MARTIN !2"0 2
MILLER !300 2
ALLEN !600 3
T#RNER !"00 3
JONES 297" $
BLAE 28"0 $
CLAR 2$"0 $
SCOTT 3000 $
FORD 3000 $
ING "000 "
3.0 ;eKra para jun#$o de tabelas
O n1mero m2n(mo de cond(*es de 3uno (gual ao n1mero de
'a+elas menos um$
3.2 Sum&rio da Sinta-e
S,G,>$ `DIS$I)>$a b`tabelaa.IRe('ress&o `alisa,...c
F2O; tabela `aliasa,...
WX,2, `condi!&o de 5un!&oa...
+)D `condi!&o de lin*aa...
O2 `outra condi!&o de lin*aa
G2O-6 BV be('ress&oRcolunac
X+=I)G bcondi!&o de gru'oc
O2D,2 BV be('ress&oRcolunac `+S>RD,S>a
3.3 ,-erccios
a) ;ostrar o nome dos em'regados e dos de'artamentos onde trabal*am, ordenados 'elo
nome do de'artamento.
ENAME DNAME
---------- --------------
CLAR ACCO#NTING
ING ACCO#NTING
MILLER ACCO#NTING
SMITH RESEARCH
ADAMS RESEARCH
FORD RESEARCH
SCOTT RESEARCH
M<
JONES RESEARCH
ALLEN SALES
BLAE SALES
MARTIN SALES
JAMES SALES
T#RNER SALES
WARD SALES
!$ %&'( ()*)+,)-.
b) ;ostrar os nomes dos em'regados, 5untamente com os nLmeros e nomes dos
de'artamentos onde trabal*am
ENAME DEPTNO DNAME
---------- ------- --------------
CLAR !0 ACCO#NTING
ING !0 ACCO#NTING
MILLER !0 ACCO#NTING
SMITH 20 RESEARCH
ADAMS 20 RESEARCH
FORD 20 RESEARCH
SCOTT 20 RESEARCH
JONES 20 RESEARCH
ALLEN 30 SALES
BLAE 30 SALES
MARTIN 30 SALES
JAMES 30 SALES
T#RNER 30 SALES
WARD 30 SALES
!$ %&'( ()*)+,)-.
c) Gistar o nome, o local de trabal*o e o de'artamento dos em'regados com salrio su'erior
a 0H<<.
ENAME LOCAL DNAME
---------- ------------- --------------
CLAR NEW 0OR ACCO#NTING
ING NEW 0OR ACCO#NTING
JONES DALLAS RESEARCH
SCOTT DALLAS RESEARCH
FORD DALLAS RESEARCH
ALLEN CHICAGO SALES
BLAE CHICAGO SALES
7 %&'( ()*)+,)-.
d) Gistar as fai(as salariais dos em'regados.
ENAME JOB SAL GRADE
---------- --------- ------- -------
SMITH CLER 800 !
ADAMS CLER !!00 !
JAMES CLER 9"0 !
WARD SALESMAN !2"0 2
MARTIN SALESMAN !2"0 2
MILLER CLER !300 2
ALLEN SALESMAN !600 3
T#RNER SALESMAN !"00 3
M0
JONES MANAGER 297" $
BLAE MANAGER 28"0 $
CLAR MANAGER 2$"0 $
SCOTT ANAL0ST 3000 $
FORD ANAL0ST 3000 $
ING PRESIDENT "000 "
!$ %&'( ()*)+,)-.
e) ;ostrar somente os em'regados na fai(a 9.
ENAME JOB SAL GRADE
---------- --------- ------- -------
ALLEN SALESMAN !600 3
T#RNER SALESMAN !"00 3
f) Gistar todos os em'regados em Dallas.
ENAME SAL LOCAL
---------- ------- -------------
SMITH 800 DALLAS
ADAMS !!00 DALLAS
FORD 3000 DALLAS
SCOTT 3000 DALLAS
JONES 297" DALLAS
g) Gistar os nomes dos em'regados, o cargo, o salrio, a fai(a salarial, e o nome do
de'artamento 'ara todos na com'an*ia, e(ceto os >lerEs. Ordenar 'elo salrio, com os
maiores 'rimeiro.
ENAME JOB SAL GRADE DNAME
---------- --------- ------- ------- --------------
ING PRESIDENT "000 " ACCO#NTING
FORD ANAL0ST 3000 $ RESEARCH
SCOTT ANAL0ST 3000 $ RESEARCH
JONES MANAGER 297" $ RESEARCH
BLAE MANAGER 28"0 $ SALES
CLAR MANAGER 2$"0 $ ACCO#NTING
ALLEN SALESMAN !600 3 SALES
T#RNER SALESMAN !"00 3 SALES
MARTIN SALESMAN !2"0 2 SALES
WARD SALESMAN !2"0 2 SALES
!0 %&'( ()*)+,)-.
*) Gistar os seguintes detal*es 'ara os em'regados que gan*am 9M.<<< 'or ano ou que s&o
>lerEs.
ENAME JOB SALARIO9AN#AL DEPTNO DNAME GRADE
---------- --------- ------------- ------- -------------- -------
MILLER CLER !"600 !0 ACCO#NTING 2
SMITH CLER 9600 20 RESEARCH !
ADAMS CLER !3200 20 RESEARCH !
JAMES CLER !!$00 30 SALES !
M8
3.4 Solu#$o dos e-erccios
?4
SQL> SELECT ENAME, DNAME
2 FROM EMP, DEPT
3 WHERE EMP.DEPTNO : DEPT.DEPTNO
@4
SQL> SELECT ENAME, E.DEPTNO, DNAME
2 FROM EMP E, DEPT D
3 WHERE E.DEPTNO : D.DEPTNO
+4
SQL> SELECT ENAME, LOC LOCAL, DNAME
2 FROM EMP, DEPT
3 WHERE EMP.DEPTNO : DEPT.DEPTNO
$ AND SAL > !"00
-4
SQL> SELECT ENAME, JOB, SAL, GRADE
2 FROM EMP, SALGRADE
3 WHERE SAL BETWEEN LOSAL AND HISAL
)4
SQL> SELECT ENAME, JOB, SAL, GRADE
2 FROM EMP, SALGRADE
3 WHERE SAL BETWEEN LOSAL AND HISAL AND GRADE : 3
D4
SQL> SELECT ENAME, SAL, LOC LOCAL
2 FROM EMP, DEPT
3 WHERE EMP.DEPTNO : DEPT.DEPTNO
$ AND LOC:8DALLAS8
E4
SQL> SELECT ENAME, JOB, SAL, GRADE, DNAME
2 FROM EMP, SALGRADE, DEPT
3 WHERE EMP.DEPTNO : DEPT.DEPTNO
$ AND SAL BETWEEN LOSAL AND HISAL
" AND JOB U: 8CLER8
6 ORDER B0 SAL DESC
C4
SQL> SELECT ENAME, JOB, SAL/!22N1L3COMM,04 SALARIO9AN#AL,
2 D.DEPTNO, DNAME, GRADE
3 FROM EMP E, SALGRADE, DEPT D
$ WHERE E.DEPTNO : D.DEPTNO AND SAL BETWEEN LOSAL AND HISAL
" AND 3SAL/!22N1L3COMM,04:3600
6 OR JOB : 8CLER84
7 ORDER B0 E.JOB
M9
Captulo 4: Outros m/todos de jun#$o
4.1 Objetivos deste captulo
;ostrar mtodos alternati%os 'ara constru!&o de 5un!"es.
4.2 Sun#.es e-ternas
Se uma lin*a n&o satisfaz a condi!&o de 5un!&o, ent&o a lin*a n&o mostrada no resultado da
consulta. De fato, quando fazemos a 5un!&o equi%alente (equiJ5oin) das tabelas ,;6 e
D,6$, o de'artamento ?< n&o a'arece, uma %ez que n&o * nen*um em'regado lotado neste
de'artamento.
+s lin*as e(clu4das 'odem ser retornadas se um o'erador de 5un!&o e(terna (outer 5oin) for
utilizado na condi!&o de 5un!&o. O o'erador um sinal de TOT colocado entre 'ar.nteses, que
de%e ser ficar ao lado da tabela onde as informa!"es que n&o seriam inclu4das de%em
a'arecer.
)o e(em'lo o o'erador est colocado ao lado da tabela D,6$, for!ando listar os dados dos
de'artamentos mesmo que n&o *a5a corres'ond.ncia em ,;6.
SQL> SELECT E.ENAME, D.DEPTNO, D.DNAME
2 FROM EMP E, DEPT D
3 WHERE E.DEPTNO 324 : D.DEPTNO
$ AND D.DEPTNO IN 330,$04
ENAME DEPTNO DNAME
---------- ------- --------------
ALLEN 30 SALES
BLAE 30 SALES
MARTIN 30 SALES
JAMES 30 SALES
T#RNER 30 SALES
WARD 30 SALES
$0 OPERATIONS
7 %&'( ()*)+,)-.
O o'erador de 5un!&o e(terna (outer 5oin) s@ 'ode a'arecer em um dos lados da e('ress&o,
causando uma 5un!&o e(terna esquerda (left outer 5oin), ou uma 5un!&o e(terna direita (rig*t
outer 5oin). + 5un!&o e(terna com'leta (outer 5oin) n&o im'lementada diretamente 'elo
Oracle.
4.3 Sun#$o de uma tabela com ela mesmo
3 'oss4%el utilizar r@tulos nas tabelas (aliases) 'ara fazer a 5un!&o de uma tabela com ela
mesmo, como se fossem duas tabelas distintas.
)o e(em'lo abai(o s&o mostrados todos os funcionrios que recebem menos que seus
gerentes.
SQL> SELECT E.ENAME EMP9NOME, E.SAL EMP9SAL,
2 G.ENAME GER9NOME, G.SAL GER9SAL
3 FROM EMP E, EMP G
M?
$ WHERE E.MGR : G.EMPNO AND E.SAL O G.SAL
EMP9NOME EMP9SAL GER9NOME GER9SAL
---------- ------- ---------- -------
ALLEN !600 BLAE 28"0
WARD !2"0 BLAE 28"0
JAMES 9"0 BLAE 28"0
T#RNER !"00 BLAE 28"0
MARTIN !2"0 BLAE 28"0
MILLER !300 CLAR 2$"0
ADAMS !!00 SCOTT 3000
JONES 297" ING "000
CLAR 2$"0 ING "000
BLAE 28"0 ING "000
SMITH 800 FORD 3000
!! %&'( ()*)+,)-.
)ote que ,;6 a'arece na clusula F2O; duas %ezes, uma com o alis T,T, 'ara os
em'regados, e outra com o alis TGT, 'ara os gerentes.
4.4 Sun#.es verticais
Os o'eradores -)IO), I)$,2S,>$ e ;I)-S s&o Lteis 'ara construir consultas que se
referem a tabelas diferentes. ,stes o'eradores combinam os resultados de dois ou mais
S,G,>$s em um Lnico resultado.
4.4.1 +ni$o
O o'erador -)IO) retorna todas as lin*as distintas das consultas unidas 'or este o'erador.
)o e(em'lo s&o listados todos os cargos dos de'artamentos 0< e 9< sem re'eti!&o.
SQL> SELECT JOB
2 FROM EMP
3 WHERE DEPTNO : !0
$ #NION
" SELECT JOB
6 FROM EMP
7 WHERE DEPTNO : 30
JOB
---------
CLER
MANAGER
PRESIDENT
SALESMAN
4.4.2 "nterse#$o
O o'erador I)$,2S,>$ retorna a'enas as lin*as comuns #s duas consultas. 6ara listar os
cargos e(istentes tanto no de'artamento 0< quanto no de'artamento 9</
SQL> SELECT JOB
2 FROM EMP
3 WHERE DEPTNO : !0
$ INTERSECT
" SELECT JOB
6 FROM EMP
MH
7 WHERE DEPTNO : 30
JOB
---------
CLER
MANAGER
4.4.3 Subtra#$o
O o'erador ;I)-S retorna as lin*as 'resentes na 'rimeira consulta mas n&o 'resentes na
segunda consulta. 6ara listar os cargos e(istentes no de'artamento 0< mas n&o e(istentes no
de'artamento 9</
SQL> SELECT JOB
2 FROM EMP
3 WHERE DEPTNO : !0
$ MIN#S
" SELECT JOB
6 FROM EMP
7 WHERE DEPTNO : 30
JOB
---------
PRESIDENT
4.4.4 Combina#$o de operadores
3 'oss4%el a constru!&o de consultas com o'eradores -)IO), I)$,2S,>$ e ;I)-S
combinados. Buando isto feito a e(ecu!&o efetuada de cima 'ara bai(o, 'orm 'odem ser
utilizados 'ar.nteses 'ara alterar esta ordem.
4.4.0 cl&usula O;D,; BM
>omo as colunas das tabelas 'odem ter nomes diferentes quando usamos -)IO),
I)$,2S,>$ e ;I)-S, o nome da coluna n&o 'ode ser usado na clusula O2D,2 BV
quando estes o'eradores s&o utilizados. +o in%s do nome de%e ser usado o nLmero da
coluna, como mostrado abai(o/
SQL> SELECT EMPNO, ENAME, SAL
2 FROM EMP
3 #NION
$ SELECT ID, NAME, SALAR0
" FROM EMP HISTOR0
6 ORDER B0 2
+ clusula O2D,2 BV de%e ser sem're a Lltima.
4.4.2 ;eKras para utiliTar jun#.es verticais
+s declara!"es S,G,>$ de%em ter todas o mesmo nLmero de colunas.
Os ti'os de dados das colunas corres'ondentes de%em ser id.nticos.
Gin*as du'licadas s&o automaticamente eliminadas (DIS$I)>$ n&o 'ode ser usado).
MM
Os nomes das colunas da 'rimeira consulta s&o os que a'arecem no resultado.
+ clusula O2D,2 BV de%e ser sem're a Lltima.
+ clusula O2D,2 BV s@ 'ode conter os nLmeros das colunas, n&o os nomes.
7un!"es %erticais 'odem ser usadas em subJconsultas.
Declara!"es S,G,>$ s&o e(ecutadas de cima 'ara bai(o.
;Llti'las 5un!"es %erticais 'odem ser utilizadas, com 'ar.nteses, se necessrio, 'ara
alterar a ordem de e(ecu!&o.
4.0 ,-erccios
a) Gistar os de'artamentos que n&o 'ossuem em'regados.
DEPTNO DNAME
------- --------------
$0 OPERATIONS
b) Gistar os nLmeros e os nomes dos em'regados 5untamente com os nLmeros e os nomes de
seus gerentes.
EMPNO ENAME GER9N#M GER9NOME
------- ---------- ------- ----------
7788 SCOTT 7"66 JONES
7902 FORD 7"66 JONES
7$99 ALLEN 7698 BLAE
7"2! WARD 7698 BLAE
7900 JAMES 7698 BLAE
78$$ T#RNER 7698 BLAE
76"$ MARTIN 7698 BLAE
793$ MILLER 7782 CLAR
7876 ADAMS 7788 SCOTT
7"66 JONES 7839 ING
7782 CLAR 7839 ING
7698 BLAE 7839 ING
7369 SMITH 7902 FORD
!3 %&'( ()*)+,)-.
c) +lterar a solu!&o do e(erc4cio b 'ara mostrar \I)G que n&o 'ossui gerente.
EMPNO ENAME GER9N#M GER9NOME
------- ---------- ------- ----------
7788 SCOTT 7"66 JONES
7902 FORD 7"66 JONES
7$99 ALLEN 7698 BLAE
7"2! WARD 7698 BLAE
7900 JAMES 7698 BLAE
78$$ T#RNER 7698 BLAE
76"$ MARTIN 7698 BLAE
793$ MILLER 7782 CLAR
7876 ADAMS 7788 SCOTT
MP
7"66 JONES 7839 ING
7782 CLAR 7839 ING
7698 BLAE 7839 ING
7369 SMITH 7902 FORD
7839 ING
!$ %&'( ()*)+,)-.
d) ;ostrar os cargos que foram 'reenc*idos no 'rimeiro semestre de 0SQ9 e no mesmo
'er4odo em 0SQ?.
JOB
---------
CLER
e) Gistar todos os em'regados admitidos antes de seus gerentes.
EMPREGADO HIREDATE GERENTE HIREDATE
---------- --------- ---------- ---------
ALLEN !"-A#G-83 BLAE !!-J#N-8$
WARD 26-MAR-8$ BLAE !!-J#N-8$
T#RNER 0$-J#N-8$ BLAE !!-J#N-8$
MARTIN 0"-DEC-83 BLAE !!-J#N-8$
MILLER 2!-NO1-83 CLAR !$-MA0-8$
JONES 3!-OCT-83 ING 09-J#L-8$
CLAR !$-MA0-8$ ING 09-J#L-8$
BLAE !!-J#N-8$ ING 09-J#L-8$
SMITH !3-J#N-83 FORD 0"-DEC-83
9 %&'( ()*)+,)-.
f) ,ncontrar outra maneira de resol%er o e(erc4cio a.
DEPTNO DNAME
------- --------------
$0 OPERATIONS
MQ
4.2 ;espostas dos e-erccios
?4
SQL> SELECT D.DEPTNO, DNAME
2 FROM EMP E, DEPT D
3 WHERE E.DEPTNO 324 : D.DEPTNO
$ AND E.EMPNO IS N#LL
@4
SQL> SELECT EMPS.EMPNO, EMPS.ENAME,
2 GERS.EMPNO GER9N#M, GERS.ENAME GER9NOME
3 FROM EMP EMPS, EMP GERS
$ WHERE EMPS.MGR : GERS.EMPNO
+4
SQL> SELECT EMPS.EMPNO, EMPS.ENAME,
2 GERS.EMPNO GER9N#M, GERS.ENAME GER9NOME
3 FROM EMP EMPS, EMP GERS
$ WHERE EMPS.MGR : GERS.EMPNO 324
-4
SQL> SELECT JOB
2 FROM EMP
3 WHERE HIREDATE BETWEEN 80!-JAN-838 AND 830-J#N-838
$ INTERSECT
" SELECT JOB
6 FROM EMP
7 WHERE HIREDATE BETWEEN 80!-JAN-8$8 AND 830-J#N-8$8
)4
SQL> SELECT E.ENAME EMPREGADO, E.HIREDATE,
2 M.ENAME GERENTE, M.HIREDATE
3 FROM EMP E, EMP M
$ WHERE E.MGR : M.EMPNO AND E.HIREDATE O M.HIREDATE
D4
SQL> SELECT DEPTNO, DNAME
2 FROM DEPT
3 MIN#S
$ SELECT EMP.DEPTNO, DNAME
" FROM EMP, DEPT
6 WHERE EMP.DEPTNO : DEPT.DEPTNO
MS
Captulo 6: Consultas anin7adas
6.1 Objetivos deste captulo
;ostrar consultas declaradas nas clusulas W*ere e Xa%ing.
6.2 DePini#$o de consultas anin7adas
-ma consulta anin*ada, ou subconsulta, aquela que est contida dentro de uma outra
consulta, e que retorna %alores intermedirios.
6or e(em'lo/
S,G,>$ coluna0, coluna8
F2O; tabela
WX,2, coluna0 : (S,G,>$ coluna F2O; tabela WX,2, condi!&o)
>onsultas anin*adas s&o muito Lteis quando necessrio selecionar lin*as de uma tabela sob
uma condi!&o que de'ende dos dados da 'r@'ria tabela.
6.3 Consultas internas !ue retornam apenas um valor
6ara encontrar o em'regado com o menor salrio da em'resa s&o necessrias duas eta'as/
a) ac*ar qual o menor salrio
SQL> SELECT MIN3SAL4
2 FROM EMP
MIN3SAL4
--------
800
b) localizar o em'regado que recebe o menor salrio
SELECT ENAME, JOB, SAL
FROM EMP
WHERE SAL : (?*V%A& )B+&B,%?-& B? ),?L? ?B,)%A&%
Os dois comandos 'odem ser combinados em uma consulta anin*ada/
SQL> SELECT ENAME, JOB, SAL
2 FROM EMP
3 WHERE SAL : 3SELECT MIN3SAL4 FROM EMP4
ENAME JOB SAL
---------- --------- -------
SMITH CLER 800
+ntes da consulta interna que retorna a'enas um %alor, 'odem ser usados os o'eradores :,
Y, K, Y:, K:, YK.
P<
6.4 Como as consultas anin7adas s$o e-ecutadas
-ma declara!&o S,G,>$ 'ode ser considerada como um bloco de consulta. )o e(em'lo
anterior, *a%iam dois blocos de consulta/ um 'rinci'al e outro interno. O bloco interno
e(ecutado 'rimeiro, 'roduzindo o resultado/ Q<<. ,m seguida o bloco 'rinci'al e(ecutado,
utilizando o %alor retornado 'elo bloco interno.
6ara listar todos os em'regados com o mesmo cargo do BG+\,/
SQL> SELECT ENAME, JOB
2 FROM EMP
3 WHERE JOB : 3SELECT JOB FROM EMP WHERE ENAME : 8BLAE84
ENAME JOB
---------- ---------
JONES MANAGER
BLAE MANAGER
CLAR MANAGER
O cargo de BG+\, obtido 'ela consulta interna e utilizado 'ela consulta 'rinci'al.
6.0 Consultas internas !ue retornam mais de um valor
+ consulta abai(o tenta localizar os em'regados com o menor salrio em cada de'artamento.
SQL> SELECT ENAME, SAL, DEPTNO
2 FROM EMP
3 WHERE SAL IN 3SELECT MIN3SAL4 FROM EMP GRO#P B0 DEPTNO4
ENAME SAL DEPTNO
---------- ------- -------
SMITH 800 20
JAMES 9"0 30
MILLER !300 !0
)ote que a consulta interna tem uma clusula G2O-6 BV, e 'ortanto retorna mais de um
%alor. )este caso o o'erador I) de%e ser usado 'ara tratar a lista de %alores.
O resultado da consulta interna n&o indica o de'artamento, n&o *a%endo assim qualquer
corres'ond.ncia entre o salrio retornado e o de'artamento do funcionrio.
6ara *a%er corres'ond.ncia entre o salrio e o de'artamento a consulta foi escrita
no%amente/
SQL> SELECT ENAME, SAL, DEPTNO
2 FROM EMP
3 WHERE 3SAL,DEPTNO4 IN
$ 3SELECT MIN3SAL4, DEPTNO FROM EMP GRO#P B0 DEPTNO4
ENAME SAL DEPTNO
---------- ------- -------
SMITH 800 20
JAMES 9"0 30
MILLER !300 !0
P0
)esta no%a consulta, retornado um 'ar de colunas que com'arado com um 'ar de
colunas da consulta 'rinci'al.
)ote que as colunas # esquerda da condi!&o de 'rocura est&o entre 'ar.nteses e s&o
se'aradas 'or %4rgulas.
+s colunas listadas na consulta interna de%em estar na mesma ordem das colunas # esquerda
da condi!&o de 'rocura.
+s colunas retornadas 'ela consulta interna de%em ser em mesmo nLmero e do mesmo ti'o
de dados das colunas # esquerda da condi!&o de 'rocura.
Se uma consulta interna retornar mais de uma lin*a e a condi!&o de 'rocura utilizar um
o'erador de uma lin*a a'enas gera o erro mostrado abai(o/
SQL> SELECT ENAME, SAL, DEPTNO
2 FROM EMP
3 WHERE SAL :
$ 3SELECT MIN3SAL4 FROM EMP GRO#P B0 DEPTNO4
ERRORM
ORA-0!$27M (ABE*)-%&' (>@=>)%Q %),>%B( H&%) ,C?B &B) %&'
B& %&'( ()*)+,)-
Se a consulta interna n&o retornar nen*uma lin*a/
SQL> SELECT ENAME, JOB
2 FROM EMP
3 WHERE JOB :
$ 3SELECT JOB FROM EMP WHERE ENAME : 8SM0THE84
ERRORM
ORA-0!$26M (AE*)-%&' (>@=>)%Q %),>%B( B& %&'
B& %&'( ()*)+,)-
6.2 Operadores 1M e ((
Os o'eradores +)V e +GG 'odem ser utilizados quando as consultas internas retornam mais
de uma %alor. ,stes o'eradores s&o usados nas clusulas WX,2, e X+=I)G em con5un!&o
com os o'eradores l@gicos (:, Y, K, K:, Y:, YK).
+)V com'ara o %alor com cada %alor retornado 'ela consulta interna.
6ara mostrar os em'regados que recebem mais do que o menor salrio do de'artamento 9</
SQL> SELECT ENAME, SAL, JOB, DEPTNO
2 FROM EMP
3 WHERE SAL > AN0
$ 3SELECT DISTINCT SAL FROM EMP WHERE DEPTNO : 304
" ORDER B0 SAL DESC
ENAME SAL JOB DEPTNO
---------- ------- --------- -------
ING "000 PRESIDENT !0
SCOTT 3000 ANAL0ST 20
FORD 3000 ANAL0ST 20
JONES 297" MANAGER 20
P8
BLAE 28"0 MANAGER 30
CLAR 2$"0 MANAGER !0
ALLEN !600 SALESMAN 30
T#RNER !"00 SALESMAN 30
MILLER !300 CLER !0
WARD !2"0 SALESMAN 30
MARTIN !2"0 SALESMAN 30
ADAMS !!00 CLER 20
!2 %&'( ()*)+,)-.
Buando usamos +)V geralmente usamos DIS$I)>$ 'ara reduzir a lista de %alores a serem
com'arados.
+GG com'ara o %alor com todos os %alores retornados 'ela consulta interna.
+ consulta abai(o encontra os em'regados que gan*am mais do que todos os em'regados do
de'artamento 9<.
SQL> SELECT ENAME, SAL, JOB, DEPTNO
2 FROM EMP
3 WHERE SAL > ALL
$ 3SELECT DISTINCT SAL FROM EMP WHERE DEPTNO : 304
" ORDER B0 SAL DESC
ENAME SAL JOB DEPTNO
---------- ------- --------- -------
ING "000 PRESIDENT !0
SCOTT 3000 ANAL0ST 20
FORD 3000 ANAL0ST 20
JONES 297" MANAGER 20
O o'erador )O$ 'ode ser usado com I), +)V ou +GG
6.3 Cl&usula J="1G com consultas anin7adas
6ara mostrar os de'artamentos com salrio mdio su'erior ao salrio mdio do de'artamento
9<, escre%emos/
SQL> SELECT DEPTNO, A1G3SAL4
2 FROM EMP
3 GRO#P B0 DEPTNO
$ HA1ING A1G3SAL4 >
" 3SELECT A1G3SAL4 FROM EMP WHERE DEPTNO : 304
DEPTNO A1G3SAL4
------- --------
!0 29!6.67
20 2!7"
6ara descobrir qual o cargo com maior salrio mdio/
SQL> SELECT JOB, A1G3SAL4
2 FROM EMP
3 GRO#P B0 JOB
$ HA1ING A1G3SAL4 :
" 3SELECT MAN3A1G3SAL44 FROM EMP GRO#P B0 JOB4
P9
JOB A1G3SAL4
--------- --------
PRESIDENT "000
6.4 Ordena#$o em consultas anin7adas
)&o 'ode e(istir a clusula O2D,2 BV na consulta interna.
+ clusula O2D,2 BV sem're a Lltima no comando S,G,>$.
6.6 (imite para o anin7amento
)&o * limite 'ara o anin*amento de S,G,>$ dentro de S,G,>$.
6.18 Consulta interna correlacionada
-ma consulta interna correlacionada aquela que/
e(ecutada 'ara cada uma das lin*as consideradas candidatas na consulta 'rinci'al.
a e(ecu!&o usa o %alor da coluna da consulta 'rinci'al.
,stas 'ro'riedades causam a consulta interna ser 'rocessada de maneira diferente de uma
consulta anin*ada comum.
-ma consulta interna correlacionada identificada 'ela 'resen!a de uma coluna da consulta
'rinci'al na consulta interna.
6assos 'ara e(ecutar uma consulta interna correlacionada/
6egar a lin*a candidata fornecida 'ela consulta 'rinci'al.
,(ecutar a consulta interna usando os %alores da consulta 'rinci'al.
-sar os resultados da consulta interna 'ara qualificar os desqualificar a lin*a candidata.
2e'etir enquanto *ou%er lin*a candidata
6ara encontrar os em'regados que recebem mais do que o salrio mdio de seus
de'artamentos/
SQL> SELECT EMPNO, ENAME, SAL, DEPTNO
2 FROM EMP E
3 WHERE SAL >
$ 3SELECT A1G3SAL4 FROM EMP WHERE DEPTNO : E.DEPTNO4
" ORDER B0 DEPTNO
EMPNO ENAME SAL DEPTNO
------- ---------- ------- -------
7839 ING "000 !0
7"66 JONES 297" 20
P?
7788 SCOTT 3000 20
7902 FORD 3000 20
7$99 ALLEN !600 30
7698 BLAE 28"0 30
+nlise da e(ecu!&o da consulta/
>onsulta 'rinci'al
Seleciona a 'rimeira lin*a candidata J Smit*, de'artamento 8<, salrio Q<<.
+ lin*a selecionada 'ossui a coluna D,6$)O, e a clusula WX,2, da
consulta interna tambm 'ossui a mesma coluna da mesma tabela ,;6,
'ortanto a consulta interna ser realizada.
+ clusula WX,2, com'ara o salrio de Smit*, Q<<, com o %alor retornado
da consulta interna.
>onsulta Interna
O nLmero do de'artamento 'assado da consulta e(terna 'ara a interna.
O salrio mdio do de'artamento do em'regado calculado.
O salrio mdio do de'artamento do Smit* 80P8.
6.11 O operador ,I"S<S
O o'erador ,fIS$S freq^entemente usado com consultas anin*adas correlacionadas,
testando se o %alor e(iste. Se o %alor e(istir, retorna %erdadeiro, caso contrrio retorna falso.
6ara listar todas as em'regados com ao menos um funcionrio subordinado/
SQL> SELECT EMPNO, ENAME, JOB, DEPTNO
2 FROM EMP E
3 WHERE ENISTS
$ 3SELECT EMPNO FROM EMP WHERE EMP.MGR : E.EMPNO4
" ORDER B0 EMPNO
EMPNO ENAME JOB DEPTNO
------- ---------- --------- -------
7"66 JONES MANAGER 20
7698 BLAE MANAGER 30
7782 CLAR MANAGER !0
7788 SCOTT ANAL0ST 20
7839 ING PRESIDENT !0
7902 FORD ANAL0ST 20
6 %&'( ()*)+,)-.
6ara listar os em'regados cu5os de'artamentos n&o est&o na tabela de de'artamentos/
PH
SQL> SELECT EMPNO, ENAME, DEPTNO
2 FROM EMP
3 WHERE NOT ENISTS
$ 3SELECT DEPTNO FROM DEPT WHERE DEPT.DEPTNO : EMP.DEPTNO4
B& %&'( ()*)+,)-
-ma outra forma 'ara encontrar os de'artamentos sem funcionrios /
SQL> SELECT DEPTNO, DNAME
2 FROM DEPT D
3 WHERE NOT ENISTS
$ 3SELECT ! FROM EMP E WHERE E.DEPTNO : D.DEPTNO4
DEPTNO DNAME
------- --------------
$0 OPERATIONS
)ote que neste e(em'lo a consulta interna n&o 'recisa retornar nada, 'orm a clusula
S,G,>$ 'recisa de uma coluna, mesmo que se5a um literal.
6.12 ,-erccios
a) Gistar os em'regados com o maior salrio 'or cargo, em ordem descendente de salrio.
ENAME JOB SAL
---------- --------- -------
ING PRESIDENT "000
SCOTT ANAL0ST 3000
FORD ANAL0ST 3000
JONES MANAGER 297"
ALLEN SALESMAN !600
MILLER CLER !300
b) Gistar os em'regados com os menores salrio 'or cargo, em ordem ascendente de salrio.
ENAME JOB SAL
---------- --------- -------
SMITH CLER 800
WARD SALESMAN !2"0
MARTIN SALESMAN !2"0
CLAR MANAGER 2$"0
SCOTT ANAL0ST 3000
FORD ANAL0ST 3000
ING PRESIDENT "000
7 %&'( ()*)+,)-.
c) Gistar os Lltimos em'regados contratados em cada de'artamento.
DEPTNO ENAME HIREDATE
------- ---------- ---------
20 ADAMS 0$-J#N-8$
!0 ING 09-J#L-8$
30 JAMES 23-J#L-8$
PM
d) Gistar o nome, o salrio e o nLmero do de'artamento dos funcionrios que recebem acima
da mdia de seus de'artamentos. Ordenar 'elo nLmero do de'artamento.
ENAME SALARIO DEPTNO
---------- ------- -------
ING "000 !0
JONES 297" 20
SCOTT 3000 20
FORD 3000 20
ALLEN !600 30
BLAE 28"0 30
e) Gistar os de'artamentos sem funcionrios.
DEPTNO DNAME
------- --------------
$0 OPERATIONS
f) ;ostrar o de'artamento que tem mais des'esas com seus funcionrios.
DEPTNO MAIOR9DESPESA
------- -------------
20 !30"00
g) Buais os tr.s em'regados que gan*am mais l
ENAME SAL
---------- -------
SCOTT 3000
ING "000
FORD 3000
*) ,m que ano a em'resa contratou mais l
ANO N#MERO DE EMPREGADOS
---- --------------------
!98$ 8
i) ;odificar o e(erc4cio d 'ara mostrar o salrio mdio do de'artamento 5unto com as outras
informa!"es.
NOME SALARIO DEPARTAMENTO MEDIA9DEPT
---------- ----------- ------------ -----------
ALLEN !,600.00 30 !,"66.67
BLAE 2,8"0.00 30
JONES 2,97".00 20 2,!7".00
FORD 3,000.00 20
SCOTT 3,000.00 20
ING ",000.00 !0 2,9!6.67
6 %&'( ()*)+,)-.
5) ,scre%a uma consulta que mostre um TIT 5unto do funcionrio contratado mais
recentemente
ENAME HIREDATE MAIOR9DATA
---------- --------- ----------
PP
ADAMS 0$-J#N-8$
ALLEN !"-A#G-83
BLAE !!-J#N-8$
CLAR !$-MA0-8$
FORD 0"-DEC-83
JAMES 23-J#L-8$ /
JONES 3!-OCT-83
ING 09-J#L-8$
MARTIN 0"-DEC-83
MILLER 2!-NO1-83
SCOTT 0"-MAR-8$
SMITH !3-J#N-83
T#RNER 0$-J#N-8$
WARD 26-MAR-8$
!$ %&'( ()*)+,)-.
PQ
6.13 ;esposta dos e-erccios
?4
SQL> SELECT ENAME, JOB, SAL
2 FROM EMP
3 WHERE 3SAL,JOB4 IN
$ 3SELECT MAN3SAL4, JOB FROM EMP GRO#P B0 JOB4
" ORDER B0 SAL DESC
@4
SQL> SELECT ENAME, JOB, SAL
2 FROM EMP
3 WHERE 3SAL,JOB4 IN
$ 3SELECT MIN3SAL4, JOB FROM EMP GRO#P B0 JOB4
" ORDER B0 SAL
+4
SQL> SELECT DEPTNO, ENAME, HIREDATE
2 FROM EMP
3 WHERE 3HIREDATE,DEPTNO4 IN
$ 3SELECT MAN3HIREDATE4, DEPTNO FROM EMP GRO#P B0 DEPTNO4
" ORDER B0 HIREDATE
-4
SQL> SELECT ENAME, SAL SALARIO, DEPTNO
2 FROM EMP E
3 WHERE SAL >
$ 3SELECT A1G3SAL4 FROM EMP WHERE DEPTNO : E.DEPTNO4
" ORDER B0 DEPTNO
)4
SQL> SELECT DEPTNO, DNAME
2 FROM DEPT D
3 WHERE NOT ENISTS
$ 3SELECT 8=>?*=>)% +&A(?8 FROM EMP WHERE DEPTNO : D.DEPTNO4
D4
SQL> DEFINE REM : SAL/!22N1L3COMM,04
SQL> SELECT DEPTNO, S#M3JREM4 MAIOR9DESPESA
2 FROM EMP
3 GRO#P B0 DEPTNO
$ HA1ING S#M3JREM4 :
" 3SELECT MAN3S#M3JREM44 FROM EMP GRO#P B0 DEPTNO4
&*- !M SELECT DEPTNO, S#M3JREM4 MAIOR9DESPESA
B)' !M SELECT DEPTNO, S#M3SAL/!22N1L3COMM,044 MAIOR9DESPESA
&*- $M HA1ING S#M3JREM4 :
B)' $M HA1ING S#M3SAL/!22N1L3COMM,044 :
&*- "M 3SELECT MAN3S#M3JREM44 FROM EMP GRO#P B0 DEPTNO4
B)' "M 3SELECT MAN3S#M3SAL/!22N1L3COMM,0444 FROM EMP GRO#P B0 DEPTNO4
E4
SQL> SELECT ENAME, SAL
2 FROM EMP E
3 WHERE 3 > 3SELECT CO#NT3/4 FROM EMP WHERE E.SAL O SAL4
C4
SQL> COL#MN ANO FORMAT A$
SQL> COL#MN N#MBER9OF9EMPS FORMAT 9 HEADING 8N#MERO DE EMPREGADOS8
PS
SQL> SELECT TO9CHAR3HIREDATE,8000084 ANO,
2 CO#NT3EMPNO4 N#MBER9OF9EMPS
3 FROM EMP
$ GRO#P B0 TO9CHAR3HIREDATE,8000084
" HA1ING CO#NT3EMPNO4 :
6 3SELECT MAN3CO#NT3EMPNO44
7 FROM EMP
8 GRO#P B0 TO9CHAR3HIREDATE,80000844
A4
SQL> COL#MN SALARIO FORMAT 999,999.99
SQL> COL#MN MEDIA9DEPT LIE SALARIO
SQL> BREA ON DEPTNO ON MEDIA9DEPT
SQL> SELECT E.ENAME NOME, E.SAL SALARIO,
2 E.DEPTNO DEPARTAMENTO, A1G3A.SAL4 MEDIA9DEPT
3 FROM EMP A, EMP E
$ WHERE E.DEPTNO : A.DEPTNO
" AND E.SAL >
6 3SELECT A1G3SAL4 FROM EMP WHERE DEPTNO : E.DEPTNO4
7 GRO#P B0 E.ENAME, E.SAL, E.DEPTNO
8 ORDER B0 A1G3A.SAL4
F4
SQL> SELECT ENAME, HIREDATE, 8/8 MAIOR9DATA
2 FROM EMP
3 WHERE HIREDATE : 3SELECT MAN3HIREDATE4 FROM EMP4
$ #NION
" SELECT ENAME, HIREDATE, 8 8
6 FROM EMP
7 WHERE HIREDATE O 3SELECT MAN3HIREDATE4 FROM EMP4
Q<
Captulo 18: Gera#$o de relatLrios
18.1 Objetivos deste captulo
+'render os comandos S,$ que controlam o ambiente, e a'render a formatar os resultados
das consultas no SBGI6G-S.
18.2 Conjunto de comandos S,< do S'()*(+S
,>XObO44 onc O) mostra os comando e(ecutados a 'artir de um arqui%o de
comandos. OFF n&o mostra.
F,,D`B+>\a
b5 n off onc
TnT faz com que se5a mostrado o nLmero de lin*as selecionadas na
tela, quando TnT ou mais lin*as s&o selecionadas.
X,+`DI)Ga
boff O0c
O) causa a im'ress&o do cabe!al*o da coluna no relat@rio. OFF
su'rime a im'ress&o do cabe!al*o.
GI)`,SIU,a
b67 nc
)Lmero de caracteres a serem e(ibidos antes da marca de no%a
lin*a, e controle 'ara centrar e a5ustar te(to # direita.
),W6`+G,a
b8 nc
)Lmero de lin*as em branco entre o t4tulo inferior de uma 'gina
e o t4tulo su'erior da 'gina seguinte. < : form feed.
)-;F`O2;+$a
formato
Formato 'adr&o 'ara resultados numricos.
)-;`WID$Xa
b87 nc
Gargura 'adr&o 'ara colunas numricas.
6+G,S`IU,a
b9: nc
)Lmero de lin*as 'or 'gina.
6+-`S,a
bO44 on te(toc
O) aguarda 'ressionar ,)$,2 antes de mostrar a no%a tela.
OFF su'rime a es'era. $e(to es'ecifica o te(to a ser mostrado
=,2IFV
boff O0c
O) faz com que o te(to de uma lin*a de comando se5a mostrado
antes e de'ois de a'licada a %ari%el de substitui!&o.
$I;I)G
bO44 onc
O) mostra as estat4sticas de tem'o de cada comando SBG
'rocessado.
S6+>,
b8 nc
)Lmero de es'a!os entre colunas. ;(imo igual a 0<.
$,2;`O-$a
boff O0c
OFF su'rime a e(ibi!&o dos resultados 'roduzidos 'elos
comandos e(ecutados a 'artir de um arqui%o, mantendo o S'ool.
SBG>+S,
b;If,D loer
u''erc
GOW,2 e -66,2 con%ertem os caracteres antes da e(ecu!&o.
;If,D n&o altera os caracteres do te(to.
O comando SXOW +GG e(ibe todas as %ari%eis do comando S,$.
18.3 CO(+51
+tra%s do comando >OG-;) 'odem ser alteradas 'ro'riedades das colunas.
)otas/
O nome da coluna de%e ser o nome do alis, se algum for usado.
+s o'!"es 'odem %ir em qualquer ordem.
Q0
-ma %ez emitido, o comando 'ermanece %lido at o fim da sess&o, se n&o for
eliminado.
6ara descobrir as o'!"es atribu4das 'ara a coluna digite >OG nome_da_coluna.
18.3.1 @ormato de e-ibi#$o para as colunas
>OG ((( FO2;+$ AAA ...
FO2;+$O SIG)IFI>+DO
+n alfanumrico, largura n.
S 'osi!&o numrica, como SSSSSS.
< coloca zeros # esquerda, como <SSSSS.
i cifr&o flutuante, como iSSSSSS.
. 'onto decimal, como SSSSSS.SS.
, %4rgula, como SSS,SSS.
;I sinal de menos # direita, como SSSSSS;I.
62 nLmero negati%o entre 'ar.nteses, como SSSSSS62.
,,,, nota!&o cient4fica, como SS.SSSS,,,,.
= multi'licar 'or 0<IIn, como SSSS=SS.
B %alores zero em branco, como BSSSS.SS.
18.3.2 Outras op#.es de e-ibi#$o das colunas.
W2+6
$2-)>
,s'ecifica o que fazer quando o conteLdo da coluna e(cede a
sua largura. O 'adr&o W2+6.
WO2D_W2+66,D ;o%e a 'ala%ra toda.
>G,+2 2emo%e a formata!&o 'r%ia da coluna.
X,+DI)G ,s'ecifica um cabe!al*o 'ara a coluna.
7-S$IFV
G,F$
2IGX$
>,)$,2
+lin*amento do cabe!al*o da coluna. O 'adr&o 7-S$IFV
G,F$ 'ara caracteres e datas, e 7-S$IFV 2IGX$ 'ara
nLmeros.
GI\,
nome_da_coluna
>o'ia a es'ecifica!&o de uma outra coluna.
),WGI), >ome!a uma no%a lin*a antes da coluna es'ecificada ser
e(ibida.
)-GG te(to >oloca o te(to es'ecificado quando o %alor da coluna for nulo.
62I)$
)O62I)$
Faz com que a coluna a'are!a ou n&o no relat@rio.
$,;6 ,s'ecifica que a formata!&o %lida 'ara uma consulta a'enas.
18.4 ,-emplo de Pormata#$o de colunas
SQL> COL#MN DEPTNO FORMAT 099 HEADING 8D)L,.8
SQL> COL#MN JOB FORMAT A9 HEADING 8C?%E&8 J#STIF0 RIGHT
SQL> COL#MN EMPNO FORMAT 9999 HEADING 8N>H.7EHL.8
SQL> COL#MN SAL FORMAT 99,999.99 HEADING 8S?*?%A&7M)B(?*8
SQL> COL#MN COMM FORMAT 99,990.99 HEADING 8C&HA((?&8 N#LL 8S)H +&H.8
SQL> COL#MN REM FORMAT 999,999.99 HEADING 8R)H>B)%?+?&7T&,?*8
SQL> SELECT DEPTNO, JOB, EMPNO, SAL, COMM, SAL/!22N1L3COMM,04 REM
Q8
2 FROM EMP
N>H. S?*?%A& R)H>B)%?+?&
D)L,. C?%E& EHL. M)B(?* C&HA((?& T&,?*
----- --------- ----- ---------- ---------- -----------
020 CLER 7369 800.00 S)H +&H. 9,600.00
030 SALESMAN 7$99 !,600.00 300.00 !9,"00.00
030 SALESMAN 7"2! !,2"0.00 "00.00 !","00.00
020 MANAGER 7"66 2,97".00 S)H +&H. 3",700.00
030 SALESMAN 76"$ !,2"0.00 !,$00.00 !6,$00.00
030 MANAGER 7698 2,8"0.00 S)H +&H. 3$,200.00
0!0 MANAGER 7782 2,$"0.00 S)H +&H. 29,$00.00
020 ANAL0ST 7788 3,000.00 S)H +&H. 36,000.00
0!0 PRESIDENT 7839 ",000.00 S)H +&H. 60,000.00
030 SALESMAN 78$$ !,"00.00 0.00 !8,000.00
020 CLER 7876 !,!00.00 S)H +&H. !3,200.00
030 CLER 7900 9"0.00 S)H +&H. !!,$00.00
020 ANAL0ST 7902 3,000.00 S)H +&H. 36,000.00
0!0 CLER 793$ !,300.00 S)H +&H. !",600.00
18.0 ,-emplo de Pormata#$o de ttulo
$$I$G, Tt4tuloT Im'rime a data no to'o da fol*a, no canto esquerdo
su'erior, o nLmero da fol*a no canto direito su'erior, e o
t4tulo centrado na lin*a seguinte.
B$I$G, Tt4tuloT Im'rime um te(to centrado ao fim de cada 'gina. O
caracter TRT ser%e 'ara quebrar lin*as.
$$I$G, OFF Gim'a o t4tulo su'erior.
B$I$G, OFF Gim'a o t4tulo inferior.
SQL> TTITLE 8RELATORIO DA EMPRESA7P%&->WA-& L)*& DP8
SQL> BTITLE 8/// CONFIDENCIAL ///8
SQL> P
TC> O+, 27 L?E) !
RELATORIO DA EMPRESA
P%&->WA-& L)*& DP
N>H. S?*?%A& R)H>B)%?+?&
D)L,. C?%E& EHL. M)B(?* C&HA((?& T&,?*
----- --------- ----- ---------- ---------- -----------
020 CLER 7369 800.00 S)H +&H. 9,600.00
030 SALESMAN 7$99 !,600.00 300.00 !9,"00.00
030 SALESMAN 7"2! !,2"0.00 "00.00 !","00.00
020 MANAGER 7"66 2,97".00 S)H +&H. 3",700.00
030 SALESMAN 76"$ !,2"0.00 !,$00.00 !6,$00.00
030 MANAGER 7698 2,8"0.00 S)H +&H. 3$,200.00
0!0 MANAGER 7782 2,$"0.00 S)H +&H. 29,$00.00
020 ANAL0ST 7788 3,000.00 S)H +&H. 36,000.00
0!0 PRESIDENT 7839 ",000.00 S)H +&H. 60,000.00
030 SALESMAN 78$$ !,"00.00 0.00 !8,000.00
020 CLER 7876 !,!00.00 S)H +&H. !3,200.00
030 CLER 7900 9"0.00 S)H +&H. !!,$00.00
020 ANAL0ST 7902 3,000.00 S)H +&H. 36,000.00
0!0 CLER 793$ !,300.00 S)H +&H. !",600.00
Q9
/// CONFIDENCIAL ///
18.2 ,-emplo de remo#$o da Pormata#$o
SQL> CLEAR COL#MNS
+&*>HB( +*)?%)-
SQL> TTITLE OFF
SQL> BTITLE OFF
SQL> P
DEPTNO JOB EMPNO SAL COMM REM
------- --------- ------- ------- ------- -------
20 CLER 7369 800 9600
30 SALESMAN 7$99 !600 300 !9"00
30 SALESMAN 7"2! !2"0 "00 !""00
20 MANAGER 7"66 297" 3"700
30 SALESMAN 76"$ !2"0 !$00 !6$00
30 MANAGER 7698 28"0 3$200
!0 MANAGER 7782 2$"0 29$00
20 ANAL0ST 7788 3000 36000
!0 PRESIDENT 7839 "000 60000
30 SALESMAN 78$$ !"00 0 !8000
20 CLER 7876 !!00 !3200
30 CLER 7900 9"0 !!$00
20 ANAL0ST 7902 3000 36000
!0 CLER 793$ !300 !"600
!$ %&'( ()*)+,)-.
Q?
Captulo 11: Gera#$o de ;elatLrios U *arte 2
11.1 Objetivos deste captulo
;ostrar 'ro'riedades dos cabe!al*os e roda's, mostrar a %ari%el ),W_=+G-,, e os
comandos B2,+\ e >O;6-$,.
11.2 *ropriedades dos cabe#al7os e dos rodap/s
Os comandos $$I$G, e B$I$G, 'odem incluir di%ersas clusulas, como mostrado abai(o/
>lusula Descri!&o
>OG n 6osicionar a im'ress&o na coluna TnT na lin*a corrente. =olta atrs
se a coluna ti%er sido 'assada.
S\I6 n Saltar TnT lin*as. Se TnT for omitido salta 0 lin*a. Se n:< %olta 'ara
o come!o da lin*a corrente.
G,F$
>,)$,2
2IGX$
+lin*a # esquerda, no centro, ou # direita da lin*a corrente. Os
itens de dados que seguem esta clusula, at o fim do comando ou
at a 'r@(ima ocorr.ncia de uma destas clusulas, s&o alin*ados
como um gru'o. +s clusulas G,F$ e >,)$,2 se baseiam no
comando S,$ GI),SIU, 'ara calcular a 'osi!&o dos itens de
dados.
$+B n +%an!a ou recua a 'osi!&o de im'ress&o TnT caracteres. O %alor de
TnT de%e ser negati%o 'ara *a%er o recuo.
FO2;+$ Define o formato dos itens de dados que seguem a clusula, at o
fim do comando ou at a 'r@(ima ocorr.ncia desta clusula. +
es'ecifica!&o do formato 'ara os t4tulos semel*ante a
es'ecifica!&o do formato 'ara as colunas. Somente uma
es'ecifica!&o de formato est ati%a a cada instante. Se o ti'o de
dado for conflitante com o formato, o formato n&o tem efeito
'ara este item. Se n&o *ou%er nen*uma clusula FO2;+$ ati%a,
os %alores numricos s&o im'ressos de acordo com o comando
S,$ )-;FO2;+$, ou na aus.ncia deste com o formato
'adr&o. =alores de data s&o im'ressos no formato 'adr&o.
6odem ser inclu4das, tambm, %ari%eis de sistema.
=ari%el Descri!&o
SBG.6)O )Lmero da 'agina corrente.
SBG.G)O )Lmero da lin*a corrente.
SBG.-S,2 )ome do usurio.
SBG.SBG>OD, >@digo do erro mais recente.
O e(em'lo a seguir mostra algumas das o'!"es dis'on4%eis 'ara $$I$G, e B$I$G,/
SQL> TTITLE LEFT FORMAT 0999 8P?EAB?M 8SQL.PNO -
> RIGHT 8P%&->WA-& L&%M C&B,?@A*A-?-)8 SIP 2 -
> CENTER 8R)*?,&%A& C&BDA-)B+A?* -) 1)B-?(8 SIP -
> CENTER 8--------------------------------8 SIP 2
SQL> BTITLE CENTER 8FIM DO RELATORIO8 SIP -
QH
> CENTER 8----------------8
SQL> SELECT ENAME, JOB, SAL, COMM
2 FROM EMP
3 WHERE COMM IS NOT N#LL
P?EAB?M 000! P%&->WA-& L&%M C&B,?@A*A-?-)

R)*?,&%A& C&BDA-)B+A?* -) 1)B-?(
--------------------------------

ENAME JOB SAL COMM
---------- --------- ------- -------
ALLEN SALESMAN !600 300
WARD SALESMAN !2"0 "00
MARTIN SALESMAN !2"0 !$00
T#RNER SALESMAN !"00 0
FIM DO RELATORIO
----------------
SQL> TTITLE OFF
SQL> BTITLE OFF
11.3 cl&usula 1,AN=(+,
,sta clusula 'ermite armazenar os %alores das colunas em %ari%eis do SBGI6G-S. +s
%ari%eis 'odem ser usadas 'ara modificar um comando SBG dinamicamente, e(ibir %alores
nos cabe!al*os e 'assar um %alor de um comando SBG 'ara outro.
SQL> COL#MN S0SDATE NEW91AL#E HOJE NOPRINT
SQL> SELECT S0SDATE
2 FROM S0S.D#AL
SQL> TTITLE LEFT 8D?,?M8 HOJE RIGHT FORMAT 999 8P?EAB?M8 SQL.PNO SIP -
> LEFT 8#(>?%A&M 8 SQL.#SER SIP -
> CENTER 8#H %)*?,&%A& +&H ? -?,? %)D&%H?,?-? B& ,A,>*&8 SIP 2
SQL> SELECT S0SDATE
2 FROM S0S.D#AL
D?,?M 3!-OCT-9$ P?EAB?M !
#(>?%A&M AL#NO!
#H %)*?,&%A& +&H ? -?,? %)D&%H?,?-? B& ,A,>*&
SQL> TTITLE OFF
+ clusula >OG-;) SVSD+$, ),W_=+G-, XO7, )O62I)$ faz com que sem're que
a coluna com nome SVSD+$, se5a selecionada, seu %alor 'asse 'ara a %ari%el XO7,. +
clusula )O62I)$ im'ede a im'ress&o da %ari%el SVSD+$, como um relat@rio se'arado.
O comando S,G,>$ SVSD+$, F2O; SVS.D-+G faz com que SVSD+$, se5a
selecionada a 'artir da tabela SVS.D-+G, que uma tabela que contm a'enas uma lin*a, e
%ai retornar, 'ortanto, a'enas um %alor.
QM
O comando $$I$G, G,F$ TData/ T XO7, faz refer.ncia a %ari%el XO7,, definida e com
%alor atribu4do 'ela clusula ),W_=+G-,. Desta forma, SVSD+$, im'ressa no
cabe!al*o atra%s da %ari%el XO7,.
)o e(em'lo abai(o, a %ari%el ;+IO2_S+G+2IO_;,DIO utilizada 'ara 'assar um %alor
de uma consulta 'ara a outra.
SQL> COL MAIOR9SALARIO9MEDIO NEW91AL#E MAIOR9SALARIO9MEDIO
SQL> SELECT MAN3A1G3SAL44 MAIOR9SALARIO9MEDIO
2 FROM EMP
3 GRO#P B0 JOB
MAIOR9SALARIO9MEDIO
-------------------
"000
SQL> SELECT JOB
2 FROM EMP
3 GRO#P B0 JOB
$ HA1ING A1G3SAL4 : JMAIOR9SALARIO9MEDIO
&*- $M HA1ING A1G3SAL4 : JMAIOR9SALARIO9MEDIO
B)' $M HA1ING A1G3SAL4 : "000
JOB
---------
PRESIDENT
11.4 'uebras nos relatLrios
O comando B2,+\ 'ode ser utilizado 'ara quebrar os relat@rios em sess"es. Buando se faz
uma quebra 'or uma coluna, os %alores du'licados da coluna s&o omitidos. >omo a quebra
ocorre toda %ez que o %alor da coluna muda, o resultado de%e ser ordenado 'elas colunas
com quebra es'ecificada. Somente e(iste um comando B2,+\ ati%o de cada %ez, 'ortanto
todas as quebras de%em ser es'ecificadas no mesmo comando.
O comando B2,+\ 'ermite as seguintes o'!"es
6+G, salta fol*a quando o %alor da coluna muda.
S\I6 n salta TnT lin*as quando o %alor da coluna muda.
D-6`GI>+$,a mostra os %alores du'licados.
,(em'los/
SQL> BREA ON REPORT ON DEPTNO PAGE ON JOB SIP 2
SQL> BREA ON REPORT ON DEPTNO PAGE ON JOB D#P
SQL> CLEAR BREAS
@%)?G( +*)?%)-
SQL> BREA
B& @%)?G3(4 -)DAB)-
O e(em'lo abai(o ilustra o uso do comando B2,+\/
SQL> COL#MN DEPTNO FORMAT 099 HEADING 8D)L,.8
SQL> COL#MN JOB FORMAT A9 HEADING 8C?%E&8 J#STIF0 RIGHT
QP
SQL> COL#MN EMPNO FORMAT 9999 HEADING 8EHL.7N>H.8
SQL> COL#MN SAL FORMAT 999,999.99 HEADING 8S?*?%A&7M)B(?*8
SQL> COL#MN COMM FORMAT 999,990.99 -
> HEADING 8C&HA((?&70-T-D8 N#LL 8S)H C&H.8
SQL> COL#MN REM FORMAT 9,999,999.99 HEADING 8R)H>B)%?+?&7T&,?*8
SQL> TTITLE 8RELATORIO DA COMPANHIA7P%&->WA-& L)*& D)L?%,?H)B,& P)((&?*8
SQL> BTITLE 8/// CONFIDENCIAL ///8
SQL> BREA ON DEPTNO SIP ! ON JOB ON REPORT
SQL> SELECT DEPTNO, JOB, EMPNO, SAL, COMM, SAL/!22N1L3COMM,04 REM
2 FROM EMP
3 ORDER B0 DEPTNO, JOB
M&B O+, 3! L?E) !
RELATORIO DA COMPANHIA
P%&->WA-& L)*& D)L?%,?H)B,& P)((&?*
EHL. S?*?%A& C&HA((?& R)H>B)%?+?&
D)L,. C?%E& N>H. M)B(?* 0-T-D T&,?*
----- --------- ----- ----------- ----------- -------------
0!0 CLER 793$ !,300.00 S)H C&H. !",600.00
MANAGER 7782 2,$"0.00 S)H C&H. 29,$00.00
PRESIDENT 7839 ",000.00 S)H C&H. 60,000.00

020 ANAL0ST 7788 3,000.00 S)H C&H. 36,000.00
7902 3,000.00 S)H C&H. 36,000.00
CLER 7369 800.00 S)H C&H. 9,600.00
7876 !,!00.00 S)H C&H. !3,200.00
MANAGER 7"66 2,97".00 S)H C&H. 3",700.00

030 CLER 7900 9"0.00 S)H C&H. !!,$00.00
MANAGER 7698 2,8"0.00 S)H C&H. 3$,200.00
SALESMAN 7$99 !,600.00 300.00 !9,"00.00
76"$ !,2"0.00 !,$00.00 !6,$00.00
78$$ !,"00.00 0.00 !8,000.00
7"2! !,2"0.00 "00.00 !","00.00
/// CONFIDENCIAL ///
SQL> CLEAR COL#MNS
+&*>HB( +*)?%)-
SQL> TTITLE OFF
SQL> BTITLE OFF
SQL> CLEAR BREAS
@%)?G( +*)?%)-
11.0 C&lculo de sum&rios
O comando >O;6-$, realiza clculos baseados nas quebras estabelecidas 'elo comando
B2,+\.
>O;6-$, clusulas OF colunas O) quebras
>lusulas Descri!&o $i'o da coluna
+=G calcula a mdia nLmero
>O-`)$a conta os %alores n&o nulos qualquer
QQ
;+f`I;-;a %alor m(imo nLmero ou caracter
;I)`I;-;a %alor m4nimo nLmero ou caracter
)-;`B,2a nLmero de lin*as qualquer
S$D des%io 'adr&o nLmero
S-; soma os %alores n&o nulos nLmero
=+2`I+)>,a calcula a %ariencia nLmero
6ode *a%er %rios comandos >O;6-$, ati%os ao mesmo tem'o, mas geralmente mais
fcil es'ecificar tudo em um Lnico comando, como, 'or e(em'lo/
SQL> COMP#TE S#M A1G OF SAL COMM ON DEPTNO REPORT
6ara mostrar o %alor corrente/
SQL> COMP#TE
COMP#TE (>H ?KE OF SAL ON DEPTNO
COMP#TE (>H ?KE OF SAL ON REPORT
COMP#TE (>H ?KE OF COMM ON DEPTNO
COMP#TE (>H ?KE OF COMM ON REPORT
6ara a'agar todos os %alores/
SQL> CLEAR COMP#TES
+&HL>,)( +*)?%)-
SQL> COMP#TE
B& +&HL>,)( +>%%)B,*Q -)DAB)-
,(em'lo utilizando >O;6-$,/
SQL> COL#MN DEPTNO FORMAT 09999 HEADING 8D)L,.8
SQL> COL#MN JOB FORMAT A9 HEADING 8C?%E&8 J#STIF0 RIGHT
SQL> COL#MN EMPNO FORMAT 9999 HEADING 8EHL.7N>H.8
SQL> COL#MN SAL FORMAT 999,999.99 HEADING 8S?*?%A&7M)B(?*8
SQL> COL#MN COMM FORMAT 999,990.99 HEADING 8COMISSAO70-T-D8 N#LL 8S)H
C&H.8
SQL> COL#MN REM FORMAT 9,999,999.99 HEADING 8R)H>B)%?+?&7T&,?*8
SQL> TTITLE 8R)*?,&%A& -? C&HL?BCA?7P%&->WA-& L)*& D)L?%,?H)B,& P)((&?*8
SQL> BTITLE 8/// CONFIDENCIAL ///8
SQL> BREA ON DEPTNO SIP ! ON JOB ON REPORT
SQL> COMP#TE A1G S#M OF SAL COMM ON DEPTNO REPORT
SQL> SELECT DEPTNO, JOB, EMPNO, SAL, COMM, SAL/!22N1L3COMM,04 REM
2 FROM EMP
3 ORDER B0 DEPTNO, JOB
M&B O+, 3! L?E) !
R)*?,&%A& -? C&HL?BCA?
P%&->WA-& L)*& D)L?%,?H)B,& P)((&?*
EHL. S?*?%A& COMISSAO R)H>B)%?+?&
D)L,. C?%E& N>H. M)B(?* 0-T-D T&,?*
------ --------- ----- ----------- ----------- -------------
000!0 CLER 793$ !,300.00 S)H C&H. !",600.00
MANAGER 7782 2,$"0.00 S)H C&H. 29,$00.00
PRESIDENT 7839 ",000.00 S)H C&H. 60,000.00
////// ///////// ----------- -----------
?KE 2,9!6.67
QS
(>H 8,7"0.00 0.00

00020 ANAL0ST 7788 3,000.00 S)H C&H. 36,000.00
7902 3,000.00 S)H C&H. 36,000.00
CLER 7369 800.00 S)H C&H. 9,600.00
7876 !,!00.00 S)H C&H. !3,200.00
MANAGER 7"66 2,97".00 S)H C&H. 3",700.00
////// ///////// ----------- -----------
?KE 2,!7".00
(>H !0,87".00 0.00

00030 CLER 7900 9"0.00 S)H C&H. !!,$00.00
MANAGER 7698 2,8"0.00 S)H C&H. 3$,200.00
SALESMAN 7$99 !,600.00 300.00 !9,"00.00
76"$ !,2"0.00 !,$00.00 !6,$00.00
78$$ !,"00.00 0.00 !8,000.00
7"2! !,2"0.00 "00.00 !","00.00
////// ///////// ----------- -----------
?KE !,"66.67 ""0.00
(>H 9,$00.00 2,200.00

----------- -----------
?KE 2,073.2! ""0.00
(>H 29,02".00 2,200.00
/// CONFIDENCIAL ///
!$ %&'( ()*)+,)-.
SQL> CLEAR COL#MN
+&*>HB( +*)?%)-
SQL> CLEAR BREAS
@%)?G( +*)?%)-
SQL> CLEAR COMP#TE
+&HL>,)( +*)?%)-
SQL> TTITLE OFF
SQL> BTITLE OFF
11.2 ;elatLrio matricial
Su'on*a que se dese5e 'roduzir um relat@rio sumarizando os salrios 'or cargo e 'or
de'artamento, como mostrado abai(o/
M&B O+, 3! L?E) !
R)*?,&%A& -? C&HL?BCA?
JOB D)L?%,?H)B,& !0 D)L?%,?H)B,& 20 D)L?%,?H)B,& 30 T&,?* L&% C?%E&
--------- --------------- --------------- --------------- ---------------
ANAL0ST .00 6,000.00 .00 6,000.00
CLER !,300.00 !,900.00 9"0.00 $,!"0.00
MANAGER 2,$"0.00 2,97".00 2,8"0.00 8,27".00
PRESIDENT ",000.00 .00 .00 ",000.00
SALESMAN .00 .00 ",600.00 ",600.00
--------------- --------------- --------------- ---------------
(>H 8,7"0.00 !0,87".00 9,$00.00 29,02".00
C&BDA-)B+A?*
S<
+ tabela ,;6 tem todas as informa!"es necessrias 'ara 'roduzir o relat@rio. +bai(o est&o
descritas as eta'as a serem seguidas 'ara a obten!&o do relat@rio/
a) Gistar as informa!"es necessrias contidas na tabela ,;6, ou se5a, 7OB, S+G e D,6$)O.
SQL> SELECT JOB, SAL, DEPTNO
2 FROM EMP
JOB SAL DEPTNO
--------- ------- -------
CLER 800 20
SALESMAN !600 30
SALESMAN !2"0 30
MANAGER 297" 20
SALESMAN !2"0 30
MANAGER 28"0 30
MANAGER 2$"0 !0
ANAL0ST 3000 20
PRESIDENT "000 !0
SALESMAN !"00 30
CLER !!00 20
CLER 9"0 30
ANAL0ST 3000 20
CLER !300 !0
!$ %&'( ()*)+,)-.
b) Se'arar a coluna S+G em 9 de'artamentos se'arados, usando a fun!&o D,>OD,.
SQL> SELECT JOB,
2 DECODE3DEPTNO, !0, SAL, 04 D!0,
3 DECODE3DEPTNO, 20, SAL, 04 D20,
$ DECODE3DEPTNO, 30, SAL, 04 D30
" FROM EMP
JOB D!0 D20 D30
--------- ------- ------- -------
CLER 0 800 0
SALESMAN 0 0 !600
SALESMAN 0 0 !2"0
MANAGER 0 297" 0
SALESMAN 0 0 !2"0
MANAGER 0 0 28"0
MANAGER 2$"0 0 0
ANAL0ST 0 3000 0
PRESIDENT "000 0 0
SALESMAN 0 0 !"00
CLER 0 !!00 0
CLER 0 0 9"0
ANAL0ST 0 3000 0
CLER !300 0 0
!$ %&'( ()*)+,)-.
c) Sumarizar os cam'os de acordo com o gru'o do cargo e o de'artamento.
S0
SQL> SELECT JOB,
2 S#M3DECODE3DEPTNO, !0, SAL, 044 D!0,
3 S#M3DECODE3DEPTNO, 20, SAL, 044 D20,
$ S#M3DECODE3DEPTNO, 30, SAL, 044 D30
" FROM EMP
6 GRO#P B0 JOB
JOB D!0 D20 D30
--------- ------- ------- -------
ANAL0ST 0 6000 0
CLER !300 !900 9"0
MANAGER 2$"0 297" 28"0
PRESIDENT "000 0 0
SALESMAN 0 0 "600
d) >alcular os totais 'ara cada gru'o de cargo.
SQL> SELECT JOB,
2 S#M3DECODE3DEPTNO, !0, SAL, 044 D!0,
3 S#M3DECODE3DEPTNO, 20, SAL, 044 D20,
$ S#M3DECODE3DEPTNO, 30, SAL, 044 D30,
" S#M3SAL4 TBJ
6 FROM EMP
7 GRO#P B0 JOB
JOB D!0 D20 D30 TBJ
--------- ------- ------- ------- -------
ANAL0ST 0 6000 0 6000
CLER !300 !900 9"0 $!"0
MANAGER 2$"0 297" 28"0 827"
PRESIDENT "000 0 0 "000
SALESMAN 0 0 "600 "600
e) Finalmente formatar o relat@rio com os comandos do SBGI6G-S.
SQL> SET PAGES !6
SQL> COL#MN D!0 HEADING 8D)L?%,?H)B,& !08 FORMAT 99,999.99
SQL> COL#MN D20 HEADING 8D)L?%,?H)B,& 208 FORMAT 99,999.99
SQL> COL#MN D30 HEADING 8D)L?%,?H)B,& 308 FORMAT 99,999.99
SQL> COL#MN TBJ HEADING 8T&,?* L&% C?%E&8 FORMAT 999,999.99
SQL> BREA ON REPORT
SQL> COMP#TE S#M OF D!0 D20 D30 TBJ ON REPORT
SQL> TTITLE 8R)*?,&%A& -? C&HL?BCA?8
SQL> BTITLE 8C&BDA-)B+A?*8
SQL> P
M&B O+, 3! L?E) !
R)*?,&%A& -? C&HL?BCA?
JOB D)L?%,?H)B,& !0 D)L?%,?H)B,& 20 D)L?%,?H)B,& 30 T&,?* L&% C?%E&
--------- --------------- --------------- --------------- ---------------
ANAL0ST .00 6,000.00 .00 6,000.00
CLER !,300.00 !,900.00 9"0.00 $,!"0.00
MANAGER 2,$"0.00 2,97".00 2,8"0.00 8,27".00
PRESIDENT ",000.00 .00 .00 ",000.00
SALESMAN .00 .00 ",600.00 ",600.00
--------------- --------------- --------------- ---------------
S8
(>H 8,7"0.00 !0,87".00 9,$00.00 29,02".00
C&BDA-)B+A?*
SQL> TTITLE OFF
SQL> BTITLE OFF
SQL> CLEAR COL#MN
+&*>HB( +*)?%)-
SQL> CLEAR BREAS
@%)?G( +*)?%)-
SQL> CLEAR COMP#TE
+&HL>,)( +*)?%)-
11.3 r!uivo de comandos para o S'()*(+S
6ara criar um arqui%o de comandos 'ara o SBGI6G-S/
a) 6re'are o comando S,G,>$
b) Sal%e o comando S,G,>$ (S+=, nomeJdoJarqui%o)
c) +brir o arqui%o sal%o 'ara edi!&o (XOS$ ,DI$ nomeJdoJarqui%o.SBG)
d) +dicionar os comandos
S,$
>OG-;)
$$IG,
B$I$G,
B2,+\
>O;6-$,
...
S,G,>$ ...
1
$$I$G, OFF
B$I$G, OFF
>G,+2 B2,+\S
>G,+2 >O;6-$,S
>G,+2 >OG-;)S
...
e) Sal%ar o arqui%os
f) ,(ecutar o arqui%o (mnomeJdoJarqui%o)
S9
11.4 ,-erccios
a) 6roduza o relat@rio mostrado abai(o
M&B O+, 3! L?E) !
R E L A T O R I O D O S E M P R E G A D O S
EMP. DATA SALARIO COM.
DEPARTAMENTO CARGO N#M. NOME ADM. MENSAL AN#AL TOTAL
------------ --------- ----- -------- ----- --------- -------- -----------
ACCO#NTING CLER 793$ MILLER !!P83 !,300.00 0.00 !",600.00
MANAGER 7782 CLAR 0"P8$ 2,$"0.00 0.00 29,$00.00
PRESIDENT 7839 ING 07P8$ ",000.00 0.00 60,000.00
//////////// ///////// --------- -------- -----------
(>H 8,7"0.00 0.00 !0",000.00


RESEARCH ANAL0ST 7902 FORD !2P83 3,000.00 0.00 36,000.00
7788 SCOTT 03P8$ 3,000.00 0.00 36,000.00
CLER 7369 SMITH 06P83 800.00 0.00 9,600.00
7876 ADAMS 06P8$ !,!00.00 0.00 !3,200.00
MANAGER 7"66 JONES !0P83 2,97".00 0.00 3",700.00
//////////// ///////// --------- -------- -----------
(>H !0,87".00 0.00 !30,"00.00


SALES CLER 7900 JAMES 07P8$ 9"0.00 0.00 !!,$00.00
MANAGER 7698 BLAE 06P8$ 2,8"0.00 0.00 3$,200.00
SALESMAN 7$99 ALLEN 08P83 !,600.00 300.00 !9,"00.00
76"$ MARTIN !2P83 !,2"0.00 !,$00.00 !6,$00.00
78$$ T#RNER 06P8$ !,"00.00 0.00 !8,000.00
7"2! WARD 03P8$ !,2"0.00 "00.00 !","00.00
//////////// ///////// --------- -------- -----------
(>H 9,$00.00 2,200.00 !!",000.00


--------- -------- -----------
(>H 29,02".00 2,200.00 3"0,"00.00
CONFIDENCIAL
SQL> TTITLE OFF
SQL> BTITLE OFF
SQL> SET FEEDBAC ON
SQL> SET PAGESISE 2$
SQL> CLEAR BREAS
@%)?G( +*)?%)-
SQL> CLEAR COMP#TES
+&HL>,)( +*)?%)-
S?
b) 6roduza o relat@rio abai(o. O nLmero do de'artamento de%e ser solicitado em tem'o de
e(ecu!&o.
M&B O+, 3! L?E) !
R E L A T O R I O D O S E M P R E G A D O S
EMP. DATA SALARIO COMISSAO
DEPARTAMENTO CARGO N#M. NOME ADM. MENSAL AN#AL TOTAL
------------ --------- ----- -------- ----- -------- --------- -----------
SALES CLER 7900 JAMES 07P8$ 9"0.00 0.00 !!,$00.00
MANAGER 7698 BLAE 06P8$ 2,8"0.00 0.00 3$,200.00
SALESMAN 7$99 ALLEN 08P83 !,600.00 300.00 !9,"00.00
7"2! WARD 03P8$ !,2"0.00 "00.00 !","00.00
78$$ T#RNER 06P8$ !,"00.00 0.00 !8,000.00
76"$ MARTIN !2P83 !,2"0.00 !,$00.00 !6,$00.00
//////////// ///////// -------- --------- -----------
(>H 9,$00.00 2,200.00 !!",000.00


-------- --------- -----------
(>H 9,$00.00 2,200.00 !!",000.00
CONFIDENCIAL
SQL> TTITLE OFF
SQL> BTITLE OFF
SQL> SET FEEDBAC ON
SQL> SET PAGESISE 2$
SQL> CLEAR BREAS
@%)?G( +*)?%)-
SQL> CLEAR COMP#TES
+&HL>,)( +*)?%)-
SH
11.6 ;espostas dos e-erccios
?4
SQL> SET ECHO OFF
SQL> SET PAGESISE 37
SQL> SET FEEDBAC OFF
SQL> SET LINESISE 78
SQL> TTITLE 8R E L A T O R I O D O S E M P R E G A D O S8
SQL> BTITLE 8CONFIDENCIAL8
SQL> DEFINE COMM : 8N1L3COMM,048
SQL> COL A FORMAT A!2 HEADING 8DEPARTAMENTO8 TEMP
SQL> COL B FORMAT A9 HEADING 8CARGO8 TEMP
SQL> COL C FORMAT 9999 HEADING 8EMP.7N#M.8 TEMP
SQL> COL D FORMAT A8 HEADING 8NOME8 TEMP
SQL> COL E FORMAT A" HEADING 8DATA7ADM.8 TEMP
SQL> COL F FORMAT B99,999.99 HEADING 8SALARIO7MENSAL8 TEMP
SQL> COL G FORMAT 9,990.99 HEADING 8COM.7AN#AL8 TEMP
SQL> COL H FORMAT 999,999.99 HEADING 8TOTAL8 TEMP
SQL> BREA ON REPORT ON A SIP 2 ON B
SQL> COMP#TE S#M OF F G H ON REPORT A
SQL> SELECT DNAME A, JOB B, EMPNO C, ENAME D,
2 TO9CHAR3HIREDATE,8MMP0084 E, SAL F, JCOMM G, SAL/!22JCOMM H
3 FROM EMP E, DEPT D
$ WHERE E.DEPTNO : D.DEPTNO
" ORDER B0 DNAME, JOB
&*- 2M TO9CHAR3HIREDATE,8MMP0084 E, SAL F, JCOMM G, SAL/!22JCOM M H
B)' 2M TO9CHAR3HIREDATE,8MMP0084 E, SAL F, N1L3COMM,04 G,
SAL/!22N1L3COMM,04 H
@4
SQL> SET ECHO OFF
SQL> SET PAGESISE 37
SQL> SET FEEDBAC OFF
SQL> SET LINESISE 78
SQL> TTITLE8R E L A T O R I O D O S E M P R E G A D O S8
SQL> BTITLE 8CONFIDENCIAL8
SQL> DEFINE COMM : 8N1L3COMM,048
SQL> ACCEPT DEPTNO N#MBER PROMPT 8N#MERO DO DEPARTAMENTOM8
N#MERO DO DEPARTAMENTOM30
SQL> COL A FORMAT A!2 HEADING 8DEPARTAMENTO8 TEMP
SQL> COL B FORMAT A9 HEADING 8CARGO8 TEMP
SQL> COL C FORMAT 9999 HEADING 8EMP.7N#M.8 TEMP
SQL> COL D FORMAT A8 HEADING 8NOME8 TEMP
SQL> COL E FORMAT A" HEADING 8DATA7ADM.8 TEMP
SQL> COL F FORMAT B99,999.99 HEADING 8SALARIO7MENSAL8 TEMP
SQL> COL G FORMAT 9,990.99 HEADING 8COMISSAO7AN#AL8 TEMP
SQL> COL H FORMAT 999,999.99 HEADING 8TOTAL8 TEMP
SQL> BREA ON REPORT ON A SIP 2 ON B
SQL> COMP#TE S#M OF F G H ON REPORT A
SQL> SELECT DNAME A, JOB B, EMPNO C, ENAME D,
2 TO9CHAR3HIREDATE,8MMP0084 E, SAL F, JCOMM G, SAL/!22JCOMM H
3 FROM EMP E, DEPT D
$ WHERE E.DEPTNO : D.DEPTNO
" AND E.DEPTNO : JDEPTNO
6 ORDER B0 DNAME, JOB
&*- 2M TO9CHAR3HIREDATE,8MMP0084 E, SAL F, JCOMM G, SAL/!22JCOM M H
B)' 2M TO9CHAR3HIREDATE,8MMP0084 E, SAL F, N1L3COMM,04 G,
SAL/!22N1L3COMM,04 H
SM
&*- "M AND E.DEPTNO : JDEPTNO
B)' "M AND E.DEPTNO : 30
SP
Captulo 12: Jierar!uias U Camin7ando na Vrvore
12.1 Objetivos deste captulo
-tilizar os relacionamentos *ierrquicos 'ara recu'erar dados em uma tabela.
12.2 'uando / possvel camin7ar na &rvore
+ tabela ,;6 tem uma estrutura em forma de r%ore, indicando os gerentes de cada
funcionrio.
K!G "#$P!%&'()*+
,
------------------------------------- "$GR&'()*+
, , ,
CLARK .%!#S BLAK#
, , ,
, ------ ---------------------------------
, , , , , , , ,
$LL#R SC%//F%RD ALL#! 0ARD $AR/! /UR!#R .A$#S
, ,
ADA$S S$/1
-m banco de dados relacional n&o armazena os registros em forma *ierrquica. ,ntretanto,
quando e(iste um relacionamento *ierrquico entre lin*as de uma Lnica tabela, e(iste um
'rocesso de na%ega!&o na r%ore que 'ermite a *ierarquia ser constru4da. + *ierarquia 'ode
ser %ista analisandoJse os %alores id.nticos nas colunas ,;6)O e ;G2 da tabela ,;6
(,ste relacionamento 5 foi %isto quando foi feita a 5un!&o desta tabela com ela mesmo). +
coluna ;G2 indica o nLmero do em'regado ao qual o em'regado est subordinado.
Buando uma na%ega!&o na r%ore e(ecutada, n&o es'ere %er o resultado na forma da figura
acima, o resultado uma tabela.
O n4%el (G,=,G) indica a distencia do n@ # raiz da r%ore. 6ara camin*ar na r%ore da tabela
,;6/
SQL> BREA ON DEPTNO SIP !
SQL> SELECT LE1EL, DEPTNO, EMPNO, ENAME, JOB, SAL
2 FROM EMP
3 CONNECT B0 PRIOR EMPNO : MGR
$ START WITH MGR IS N#LL
SQ
LE1EL DEPTNO EMPNO ENAME JOB SAL
------- ------- ------- ---------- --------- -------
! !0 7839 ING PRESIDENT "000

2 20 7"66 JONES MANAGER 297"
3 7788 SCOTT ANAL0ST 3000
$ 7876 ADAMS CLER !!00
3 7902 FORD ANAL0ST 3000
$ 7369 SMITH CLER 800

2 30 7698 BLAE MANAGER 28"0
3 7$99 ALLEN SALESMAN !600
3 7"2! WARD SALESMAN !2"0
3 76"$ MARTIN SALESMAN !2"0
3 78$$ T#RNER SALESMAN !"00
3 7900 JAMES CLER 9"0

2 !0 7782 CLAR MANAGER 2$"0
3 793$ MILLER CLER !300

>omando Descri!&o
S,G,>$ + clusula S,G,>$ 'adr&o, incluindo a 'seudo coluna
G,=,G que mostra a distencia do n@ # raiz.
F2O; S@ 'ode conter uma tabela.
WX,2, 2estringe as lin*as 'esquisadas durante a na%ega!&o.
>O)),>$ BV ,s'ecifica as colunas onde e(iste o relacionamento entre as
lin*as. ,sta clusula obrigat@rio 'ara camin*ar na r%ore.
62IO2 ,stabelece a dire!&o 'ara camin*ar na r%ore.
8; !R/OR expresso operador<de<comparao expresso
9; expresso operador<de<comparao !R/OR expresso
Se 62IO2 a'arece antes de ;G2, ent&o os %alores de
;G2 s&o 'esquisados 'rimeiro, e de'ois os %alores
equi%alentes de ,;6, ou se5a, 'esquisa da raiz 'ara o to'o.
Se 62IO2 a'arece antes de ,;6 a r%ore 'ercorrido do
to'o 'ara a raiz.
S$+2$ WI$X ,s'ecifica onde come!a a 'esquisa. )&o 'ode ser usado na
forma TS$+2$ at a G,=,GT. ,sta clusula o'cional.
O2D,2 BV 3 a Lltima clusula, como sem're.
)o e(em'lo acima, a estrutura *ierrquica da em'resa refletida na na%ega!&o 'ela r%ore.
+ estrutura c*efe1subordinado fica claramente identificada.
+ clusula O2D,2 BV 'ode ser usada 'ara ordenar as lin*as retornadas. O comando abai(o
totalmente leg4timo/
SQL> SELECT LE1EL, DEPTNO, EMPNO, ENAME, JOB, SAL
2 FROM EMP
3 CONNECT B0 PRIOR EMPNO : MGR
$ START WITH MGR IS N#LL
" ORDER B0 DEPTNO
SS
LE1EL DEPTNO EMPNO ENAME JOB SAL
------- ------- ------- ---------- --------- -------
! !0 7839 ING PRESIDENT "000
2 7782 CLAR MANAGER 2$"0
3 793$ MILLER CLER !300

2 20 7"66 JONES MANAGER 297"
3 7788 SCOTT ANAL0ST 3000
$ 7876 ADAMS CLER !!00
3 7902 FORD ANAL0ST 3000
$ 7369 SMITH CLER 800

2 30 7698 BLAE MANAGER 28"0
3 7$99 ALLEN SALESMAN !600
3 7"2! WARD SALESMAN !2"0
3 76"$ MARTIN SALESMAN !2"0
3 78$$ T#RNER SALESMAN !"00
3 7900 JAMES CLER 9"0
)&o recomendada a utiliza!&o da clusula O2D,2 BV,
'orque a ordena!&o im'l4cita 'ode ser destru4da.
12.3 ,-cluindo um nL da &rvore
+s clusulas WX,2, e >O)),>$ BV 'odem ser usadas 'ara 'odar a r%ore, isto ,
controlar os n@s que s&o mostrados.
WX,2, ,)+;, YK TS>O$$T
Buando a clusula WX,2, utilizada 'ara eliminar o n@, somente o n@ eliminado.
.%!#S
,
----------------
, ,
SC%// F%RD
, ,
ADA$S S$/1
)este e(em'lo, S>O$$ eliminado, mas +D+;S 'ermanece.
SQL> SELECT LE1EL, DEPTNO, EMPNO, ENAME, JOB, SAL
2 FROM EMP
3 WHERE ENAME O> 8SCOTT8
$ CONNECT B0 PRIOR EMPNO : MGR
0<<
" START WITH MGR IS N#LL
LE1EL DEPTNO EMPNO ENAME JOB SAL
------- ------- ------- ---------- --------- -------
! !0 7839 ING PRESIDENT "000

2 20 7"66 JONES MANAGER 297"
$ 7876 ADAMS CLER !!00
3 7902 FORD ANAL0ST 3000
$ 7369 SMITH CLER 800

2 30 7698 BLAE MANAGER 28"0
3 7$99 ALLEN SALESMAN !600
3 7"2! WARD SALESMAN !2"0
3 76"$ MARTIN SALESMAN !2"0
3 78$$ T#RNER SALESMAN !"00
3 7900 JAMES CLER 9"0

2 !0 7782 CLAR MANAGER 2$"0
3 793$ MILLER CLER !300

!3 %&'( ()*)+,)-.
>O)),>$ BV 62IO2 ,;6)O:;G2 +)D ,)+;, YK TS>O$$T
Buando a clusula >O)),>$ BV utilizada 'ara eliminar o n@, toda a sua ramifica!&o
eliminada.
.%!#S
,
----------------
, ,
SC%// F%RD
, ,
ADA$S S$/1
)este e(em'lo, S>O$$ e +D+;S s&o eliminados.
SQL> SELECT LE1EL, DEPTNO, EMPNO, ENAME, JOB, SAL
2 FROM EMP
3 CONNECT B0 PRIOR EMPNO : MGR AND ENAME O> 8SCOTT8
$ START WITH MGR IS N#LL
0<0
LE1EL DEPTNO EMPNO ENAME JOB SAL
------- ------- ------- ---------- --------- -------
! !0 7839 ING PRESIDENT "000

2 20 7"66 JONES MANAGER 297"
3 7902 FORD ANAL0ST 3000
$ 7369 SMITH CLER 800

2 30 7698 BLAE MANAGER 28"0
3 7$99 ALLEN SALESMAN !600
3 7"2! WARD SALESMAN !2"0
3 76"$ MARTIN SALESMAN !2"0
3 78$$ T#RNER SALESMAN !"00
3 7900 JAMES CLER 9"0

2 !0 7782 CLAR MANAGER 2$"0
3 793$ MILLER CLER !300

!2 %&'( ()*)+,)-.
12.4 <erminoloKia
Ingl.s 6ortugu.s Descri!&o
)OD, )@ O mesmo que uma lin*a da
tabela.
2OO$ 2aiz O n@ que n&o 'ertence a nen*um
outro n@.
6+2,)$ 6ai -m n@ que 'ossui outros n@s de
n4%el inferior.
>XIGD Fil*o -m n@ que tem um 'ai.
$,2;I)+G )OD,
G,+F
Fol*a -m n@ que n&o 'ossui fil*os.
B2+)>X 2amo ou Gal*o -m n@ que tem fil*os e netos.
12.0 ,-erccios
a) ;ostrar a organiza!&o do de'artamento 8<.
0<8
Captulo 13: Dicion&rio de Dados
13.1 Objetivos deste captulo
+'resentar o dicionrio de dados do Oracle.
13.2 O !ue / o dicion&rio de dados
O dicionrio de dados um con5unto de tabelas e %is"es que 'ro%. um guia de refer.ncia
sobre o banco de dados.
)o dicionrio de dados s&o 'ermitidas a'enas consultas 'or 'arte dos usurios. O con5unto
de tabelas e %is"es fi(o, e o conteLdo atualizado automaticamente 'elo Oracle, quando
um comando da linguagem de defini!&o de dados (DDG), ou outros comandos, s&o
e(ecutados.
O dicionrio de dados criado quando o banco de dados criado, sendo uma 'e!a cr4tica no
funcionamento do gerenciador do banco de dados, que utiliza as informa!"es contidas no
dicionrio de dados 'ara gerenciar o 'r@'rio banco de dados.
13.3 "nPorma#.es contidas no dicion&rio de dados
+s seguintes informa!"es 'odem ser obtidas a 'artir do dicionrio de dados/
Os nomes dos usurios do banco de dados.
Os direitos e 'ri%ilgios concedidos aos usurios.
)omes dos ob5etos do banco de dados (tabelas, %is"es, 4ndices, sinjnimos, seq^.ncias.)
2estri!"es a'licadas sobre as tabelas.
Informa!"es de auditoria, tais como que acessou ou atualizou um determinado ob5eto do
banco de dados.
13.4 <abelas do dicion&rio de dados
+s tabelas do dicionrio de dados s&o criadas automaticamente quando o comando >2,+$,
D+$+B+S, e(ecutado.
$odas as tabelas do dicionrio de dados 'ertencem ao usurio SVS, e n&o s&o acessadas
diretamente 'orque as informa!"es armazenadas nestas tabelas s&o de dif4cil com'reens&o.
13.0 =is.es do dicion&rio de dados
+s %is"es do dicionrio de dados contm informa!"es em uma maneira fcil de serem
com'reendidas. +cesso 'Lblico ao dicionrio de dados concedido atra%s das %is"es, e n&o
do acesso direto #s tabelas.
+s %is"es do dicionrio de dados tambm 'ertencem aos usurios SVS.
0<9
Os nomes das %is"es refletem o ti'o de uso 'ara o qual elas foram criadas. +s %is"es s&o
classificadas em tr.s gru'os distinguidos 'elos 'refi(os -S,2, +GG e DB+.
>lasse Descri!&o
-S,2_((( =is"es que qualquer usurio 'ode acessar, contendo
informa!"es relati%as aos ob5etos do 'r@'rio usurio.
+GG_((( =is"es que qualquer usurio 'ode acessar, contendo
informa!"es relati%as tanto aos ob5etos do 'r@'rio usurio,
quanto informa!"es sobre os ob5etos aos quais foram
concedidos 'ri%ilgios ao usurio.
DB+_((( =is"es que s@ 'odem ser acessadas 'elos usurios com
'ri%ilgio de administrador do banco de dados
,(istem ainda algumas %is"es que n&o 'ossuem nen*um destes tr.s 'refi(os. +bai(o
mostrada a rela!&o das %is"es do dicionrio de dados, 5untamente com suas descri!"es/
=is&o Descri!&o
DI>$IO)+2V Descri'tion of data dictionarA tables and
%ies
DI>$_>OG-;)S Descri'tion of columns in data dictionarA
tables and %ies
$+BG,_62I=IG,G,S Grants on ob5ects for *ic* t*e user is t*e
grantor, grantee, or oner, or 6-BGI> is t*e
grantee
=is&o Descri!&o
+GG_>+$+GOG +ll tables, %ies, sAnonAms, sequences
accessible to t*e user
+GG_>OG_>O;;,)$S >omments on columns of accessible tables
and %ies
+GG_>OG_62I=S Grants on columns for *ic* t*e user is t*e
grantor, grantee, oner, or an enabled role or
6-BGI> is t*e grantee
+GG_>OG_62I=S_;+D, Grants on columns for *ic* t*e user is
oner or grantor
+GG_>OG_62I=S_2,>D Grants on columns for *ic* t*e user,
6-BGI> or enabled role is t*e grantee
+GG_>O)S$2+I)$S >onstraint definitions on accessible tables
+GG_>O)S_>OG-;)S Information about accessible columns in
constraint definitions
+GG_DB_GI)\S Database linEs accessible to t*e user
+GG_D,F_+-DI$_O6$S +uditing o'tions for nelA created ob5ects
+GG_D,6,)D,)>I,S De'endencies to and from ob5ects accessible
to t*e user
+GG_,22O2S >urrent errors on stored ob5ects t*at user is
alloed to create
+GG_I)D,f,S Descri'tions of inde(es on tables accessible to
t*e user
+GG_I)D_>OG-;)S >OG-;)s com'rising I)D,fes on
accessible $+BG,S
0<?
+GG_OB7,>$S Ob5ects accessible to t*e user
+GG_S,B-,)>,S Descri'tion of S,B-,)>,s accessible to t*e
user
+GG_S)+6SXO$S Sna's*ots t*e user can looE at
+GG_SO-2>, >urrent source on stored ob5ects t*at user is
alloed to create
+GG_SV)O)V;S +ll sAnonAms accessible to t*e user
+GG_$+BG,S Descri'tion of tables accessible to t*e user
+GG_$+B_>OG-;)S >olumns of all tables, %ies and clusters
+GG_$+B_>O;;,)$S >omments on tables and %ies accessible to
t*e user
+GG_$+B_62I=S Grants on ob5ects for *ic* t*e user is t*e
grantor, grantee, oner, or an enabled role or
6-BGI> is t*e grantee
+GG_$+B_62I=S_;+D, -serTs grants and grants on userTs ob5ects
+GG_$+B_62I=S_2,>D Grants on ob5ects for *ic* t*e user,
6-BGI> or enabled role is t*e grantee
+GG_$2IGG,2S $riggers accessible to t*e current user
+GG_$2IGG,2_>OGS >olumn usage in userTs triggers or in triggers
on userTs tables
+GG_-S,2S Information about all users of t*e database
+GG_=I,WS $e(t of %ies accessible to t*e user
=is&o Descri!&o
DB+_86>_),IGXBO2S information about incoming and outgoing
connections for 'ending transactions
DB+_86>_6,)DI)G info about distributed transactions aaiting
reco%erA
DB+_+-DI$_,fIS$S Gists audit trail entries 'roduced bA +-DI$
)O$ ,fIS$S and +-DI$ ,fIS$S
DB+_+-DI$_OB7,>$ +udit trail records for statements concerning
ob5ects, s'ecificallA/ table, cluster, %ie,
inde(, sequence, `'ublica database linE,
`'ublica sAnonAm, 'rocedure, trigger, rollbacE
segment, tables'ace, role, user
DB+_+-DI$_S$+$,;,)$ +udit trail records concerning grant, re%oEe,
audit, noaudit and alter sAstem
DB+_+-DI$_$2+IG +ll audit trail entries
DB+_>+$+GOG +ll database $ables, =ies, SAnonAms,
Sequences
DB+_>G-S$,2S Descri'tion of all clusters in t*e database
DB+_>G-_>OG-;)S ;a''ing of table columns to cluster columns
DB+_>OG_>O;;,)$S >omments on columns of all tables and %ies
DB+_>OG_62I=S +ll grants on columns in t*e database
DB+_>O)S$2+I)$S >onstraint definitions on all tables
DB+_>O)S_>OG-;)S Information about accessible columns in
constraint definitions
DB+_D+$+_FIG,S Information about database files
DB+_DB_GI)\S +ll database linEs in t*e database
0<H
DB+_D,6,)D,)>I,S De'endencies to and from ob5ects
DB+_,22O2S >urrent errors on all stored ob5ects in t*e
database
DB+_,f6_FIG,S Descri'tion of e('ort files
DB+_,f6_OB7,>$S Ob5ects t*at *a%e been incrementallA e('orted
DB+_,f6_=,2SIO) =ersion number of t*e last e('ort session
DB+_,f$,)$S ,(tents com'rising all segments in t*e
database
DB+_F2,,_S6+>, Free e(tents in all tables'aces
DB+_I)D,f,S Descri'tion for all inde(es in t*e database
DB+_I)D_>OG-;)S >OG-;)s com'rising I)D,fes on all
$+BG,s and >G-S$,2s
DB+_OB7,>$S +ll ob5ects in t*e database
DB+_OB7,>$_SIU, Sizes, in bAtes, of %arious 'l1sql ob5ects
DB+_OB7_+-DI$_O6$S +uditing o'tions for all tables and %ies
DB+_62I=_+-DI$_O6$S Describes current sAstem 'ri%ileges being
audited across t*e sAstem and bA user
DB+_62OFIG,S Dis'laA all 'rofiles and t*eir limits
DB+_2OG,S +ll 2oles *ic* e(ist in t*e database
DB+_2OG,_62I=S 2oles granted to users and roles
DB+_2OGGB+>\_S,GS Descri'tion of rollbacE segments
DB+_S,G;,)$S Storage allocated for all database segments
DB+_S,B-,)>,S Descri'tion of all S,B-,)>,s in t*e
database
DB+_S)+6SXO$S +ll sna's*ots in t*e database
DB+_S)+6SXO$_GOGS +ll sna's*ot logs in t*e database
DB+_SO-2>, Source of all stored ob5ects in t*e database
DB+_S$;$_+-DI$_O6$S Describes current sAstem auditing o'tions
across t*e sAstem and bA user
DB+_SV)O)V;S +ll sAnonAms in t*e database
DB+_SVS_62I=S SAstem 'ri%ileges granted to users and roles
DB+_$+BG,S Descri'tion of all tables in t*e database
DB+_$+BG,S6+>,S Descri'tion of all tables'aces
DB+_$+B_>OG-;)S >olumns of all tables, %ies and clusters
DB+_$+B_>O;;,)$S >omments on all tables and %ies in t*e
database
DB+_$+B_62I=S +ll grants on ob5ects in t*e database
DB+_$2IGG,2S +ll triggers in t*e database
DB+_$2IGG,2_>OGS >olumn usage in all triggers
DB+_$S_B-O$+S $ables'ace quotas for all users
DB+_-S,2S Information about all users of t*e database
DB+_=I,WS $e(t of all %ies in t*e database
=is&o Descri!&o
-S,2_+-DI$_OB7,>$ +udit trail records for statements concerning
0<M
ob5ects, s'ecificallA/ table, cluster, %ie,
inde(, sequence, `'ublica database linE,
`'ublica sAnonAm, 'rocedure, trigger, rollbacE
segment, tables'ace, role, user
-S,2_+-DI$_S$+$,;,)$ +udit trail records concerning grant, re%oEe,
audit, noaudit and alter sAstem
-S,2_+-DI$_$2+IG +udit trail entries rele%ant to t*e user
-S,2_>+$+GOG $ables, =ies, SAnonAms and Sequences
oned bA t*e user
-S,2_>G-S$,2S Descri'tions of userTs on clusters
-S,2_>G-_>OG-;)S ;a''ing of table columns to cluster columns
-S,2_>OG_>O;;,)$S >omments on columns of userTs tables and
%ies
-S,2_>OG_62I=S Grants on columns for *ic* t*e user is t*e
oner, grantor or grantee
-S,2_>OG_62I=S_;+D, +ll grants on columns of ob5ects oned bA
t*e user
-S,2_>OG_62I=S_2,>D Grants on columns for *ic* t*e user is t*e
grantee
-S,2_>O)S$2+I)$S >onstraint definitions on userTs on tables
-S,2_>O)S_>OG-;)S Information about accessible columns in
constraint definitions
-S,2_DB_GI)\S Database linEs oned bA t*e user
-S,2_D,6,)D,)>I,S De'endencies to and from a users ob5ects
-S,2_,22O2S >urrent errors on stored ob5ects oned bA t*e
user
-S,2_,f$,)$S ,(tents com'rising segments oned bA t*e
user
-S,2_F2,,_S6+>, Free e(tents in tables'aces accessible to t*e
user
-S,2_I)D,f,S Descri'tion of t*e userTs on inde(es
-S,2_I)D_>OG-;)S >OG-;)s com'rising userTs I)D,fes or on
userTs $+BG,S
-S,2_OB7,>$S Ob5ects oned bA t*e user
-S,2_OB7,>$_SIU, Sizes, in bAtes, of %arious 'l1sql ob5ects
-S,2_OB7_+-DI$_O6$S +uditing o'tions for userTs on tables and
%ies
-S,2_2,SO-2>,_GI;I$S Dis'laA resource limit of t*e user
-S,2_2OG,_62I=S 2oles granted to current user
-S,2_S,G;,)$S Storage allocated for all database segments
-S,2_S,B-,)>,S Descri'tion of t*e userTs on S,B-,)>,s
-S,2_S)+6SXO$S Sna's*ots t*e user can looE at
-S,2_S)+6SXO$_GOGS +ll sna's*ot logs oned bA t*e user
-S,2_SO-2>, Source of stored ob5ects accessible to t*e user
-S,2_SV)O)V;S $*e userTs 'ri%ate sAnonAms
-S,2_SVS_62I=S SAstem 'ri%ileges granted to current user
-S,2_$+BG,S Descri'tion of t*e userTs on tables
-S,2_$+BG,S6+>,S Descri'tion of accessible tables'aces
-S,2_$+B_>OG-;)S >olumns of userTs tables, %ies and clusters
-S,2_$+B_>O;;,)$S >omments on t*e tables and %ies oned bA
0<P
t*e user
-S,2_$+B_62I=S Grants on ob5ects for *ic* t*e user is t*e
oner, grantor or grantee
-S,2_$+B_62I=S_;+D, +ll grants on ob5ects oned bA t*e user
-S,2_$+B_62I=S_2,>D Grants on ob5ects for *ic* t*e user is t*e
grantee
-S,2_$2IGG,2S $riggers oned bA t*e user
-S,2_$2IGG,2_>OGS >olumn usage in userTs triggers
-S,2_$S_B-O$+S $ables'ace quotas for t*e user
-S,2_-S,2S Information about t*e current user
-S,2_=I,WS $e(t of %ies oned bA t*e user
6ara com'atibilidade com os SBG1DS e o DB8 da IB; e(istem aindas as %is"es/
SVS>+$+GOG, SVS>OG+-$X, SVS>OG-;)S, SVSDBGI)\S, SVS,f$,)$S,
SVSFIG,S, SVSI)D,f,S, SVS2OGGB+>\S,G, SVSS,GOB7, SVSS$O2+G,,
SVS$+B+GGO>, SVS$+B+-$X, SVS$+BS6+>,S, SVS$,;_+-DI$,
SVS$SB-O$+S, SVS-S,2+-$X, SVS-S,2GIS$, SVS=I,WS, SVS_OB7,>$S.
13.2 ,-emplos de utiliTa#$o do dicion&rio de dados
Gistar todas as tabelas acess4%eis ao usurio.
SQL> DESCRIBE ACCESSIBLE9TABLES
N?H) N>**T TQL)
------------------------------- -------- ----
OWNER NOT N#LL CHAR3304
TABLE9NAME NOT N#LL CHAR3304
TABLE9T0PE CHAR3!!4
SQL> SELECT /
2 FROM ACCESSIBLE9TABLES
3 ORDER B0 !,2
OWNER TABLE9NAME TABLE9T0PE
-------------------- -------------------- -----------
AL#NO! ASSIGNMENTS TABLE
AL#NO! BON#S TABLE
AL#NO! C#STOMER TABLE
AL#NO! DEPT TABLE
AL#NO! D#MM0 TABLE
AL#NO! EMP TABLE
AL#NO! ITEM TABLE
AL#NO! ORD TABLE
AL#NO! PRICE TABLE
AL#NO! PROD#CT TABLE
AL#NO! PROJECTS TABLE
AL#NO! SALES 1IEW
AL#NO! SALGRADE TABLE
S0S ACCESSIBLE9COL#MNS 1IEW
S0S ACCESSIBLE9TABLES 1IEW
S0S ALL9CATALOG 1IEW
S0S ALL9COL9COMMENTS 1IEW
S0S ALL9COL9GRANTS9MADE 1IEW
..............................................
S0S ALL9TAB9GRANTS9RECD 1IEW
0<Q
S0S ALL9#SERS 1IEW
S0S ALL91IEWS 1IEW
S0S A#DIT9ACCESS 1IEW
S0S A#DIT9ACTIONS TABLE
S0S A#DIT9CONNECT 1IEW
S0S A#DIT9TRAIL 1IEW
S0S CATALOG 1IEW
S0S CL#STERCOL#MNS 1IEW
S0S CL#STERS 1IEW
..............................................
S0S #SER9A#DIT9CONNECT 1IEW
S0S #SER9A#DIT9RESO#RCE 1IEW
S0S #SER9A#DIT9TRAIL 1IEW
..............................................
S0S #SER9TS9Q#OTAS 1IEW
S0S #SER9#SERS 1IEW
S0S #SER91IEWS 1IEW
S0S 1$ENPCL#S 1IEW
S0S 1$ENPCOL 1IEW
S0S 1$ENPENTENTS 1IEW
S0S 1$ENPINDEN 1IEW
S0S 1$ENPSPACE 1IEW
S0S 1$ENPS0N 1IEW
S0S 1$ENPTAB 1IEW
S0S 1$ENPTABA#TH 1IEW
S0S 1$ENP#SER 1IEW
S0S 1$ENP1IEW 1IEW
S0STEM HELP TABLE
!36 %&'( ()*)+,)-.
Gistar todos os usurios do banco de dados.
SQL> DESCRIBE ALL9#SERS
N?H) N>**T TQL)
------------------------------- -------- ----
#SERNAME NOT N#LL CHAR3304
#SER9ID NOT N#LL N#MBER
CREATED NOT N#LL DATE
SQL> SELECT / FROM ALL9#SERS
#SERNAME #SER9ID CREATED
------------------------------ ------- ---------
S0S 0 30-DEC-9!
P#BLIC ! 30-DEC-9!
S0STEM 2 30-DEC-9!
SCOTT 3 30-DEC-9!
AL#NO! $ !9-OCT-9$
9NENT9#SER " 30-DEC-9!
6 %&'( ()*)+,)-.
Gistar todos os 4ndices criados nas tabelas do usurio.
SQL> DESCRIBE #SER9INDENES
N?H) N>**T TQL)
------------------------------- -------- ----
INDEN9NAME NOT N#LL CHAR3304
0<S
TABLE9OWNER NOT N#LL CHAR3304
TABLE9NAME NOT N#LL CHAR3304
TABLE9T0PE CHAR3!!4
#NIQ#ENESS CHAR394
TABLESPACE9NAME NOT N#LL CHAR3304
INI9TRANS NOT N#LL N#MBER
MAN9TRANS NOT N#LL N#MBER
INITIAL9ENTENT N#MBER
NENT9ENTENT N#MBER
MIN9ENTENTS NOT N#LL N#MBER
MAN9ENTENTS NOT N#LL N#MBER
PCT9INCREASE NOT N#LL N#MBER
PCT9FREE NOT N#LL N#MBER
STAT#S CHAR3!74
SQL> COL#MN INDEN9NAME FORMAT A20
SQL> COL#MN TABLE9OWNER FORMAT A20
SQL> COL#MN TABLE9NAME FORMAT A20
SQL> SELECT INDEN9NAME, TABLE9OWNER, TABLE9NAME, TABLE9T0PE
2 FROM #SER9INDENES
3 ORDER B0 !,2
INDEN9NAME TABLE9OWNER TABLE9NAME TABLE9T0PE
-------------------- -------------------- -------------------- --------
ITEM9INDEN AL#NO! ITEM TABLE
ORD9INDEN AL#NO! ORD TABLE
PRICE9INDEN AL#NO! PRICE TABLE
PROD#CT9INDEN AL#NO! PROD#CT TABLE
Gistar as descri!"es das colunas de todas as tabelas do banco de dados.
SQL> DESCRIBE DBA9COL9COMMENTS
ERRORM
ORA-009$2M ,?@*) &% KA)' -&)( B&, )XA(,
,sta consulta s@ 'ode ser realizada 'or um usurio com 'ri%ilgio de DB+.
SQL> CONNECT S0STEM
C&BB)+,)-.
SQL> DESCRIBE DBA9COL9COMMENTS
N?H) N>**T TQL)
------------------------------- -------- ----
OWNER NOT N#LL CHAR3304
TABLE9NAME NOT N#LL CHAR3304
COL#MN9NAME NOT N#LL CHAR3304
COMMENTS CHAR32""4
13.3 ,-erccios
a) ;ostrar as seguintes informa!"es 'ara a tabela ,;6/
C&*>B? N>*&T TAL&
------------------------------- -------- --------------
EMPNO NOT N#LL N#MBER3$4
ENAME 1ARCHAR23!04
JOB 1ARCHAR2394
MGR N#MBER3$4
HIREDATE DATE
00<
SAL N#MBER37,24
COMM N#MBER37,24
DEPTNO N#MBER324
000
Captulo 14: (inKuaKem de DePini#$o de Dados
14.1 Objetivos deste captulo
+'resentar os comandos utilizados 'ara criar, alterar, trocar de nome, adicionar comentrios
e remo%er tabelas.
14.2 ,strutura de Dados do Oracle
$abelas 'odem ser criadas a qualquer momento, mesmo com usurios acessando o banco de
dados.
>om'rimento dos dados %ari%el. Somente os caracteres e nLmeros es'ecificados s&o
armazenados. ,s'a!os # frente e # traz n&o s&o armazenados.
)&o e(iste a necessidade de se es'ecificar o taman*o das tabelas. +s tabelas ocu'am no%os
segmentos quando necessrio.
+ estrutura das tabelas 'odem ser modificadas onJline.
14.3 Criando uma tabela
De%em ser obser%adas as seguintes regras 'ara o nome de uma tabela/
O nome de%e come!ar 'or uma letra, de N+N a NUN, ou de NaN a NzN.
O nome 'ode conter letras, nLmeros, e o caractere es'ecial sublin*ado (_). Os caracteres
NiN e Nno tambm 'odem ser usado, mas seu uso desaconsel*ado.
O nome o mesmo, inde'endentemente do uso de letras minLsculas ou maiLsculas. 6or
e(em'lo, ,;6, em'. ,m6, ,m', e ,m' s&o a mesma tabela.
O nome 'ode conter at 9< caracteres.
O nome da tabela n&o 'ode ser igual ao de outra tabela, sinjnimo ou %is&o, a n&o ser que
'erten!am a usurios diferentes.
O nome n&o 'ode ser uma das 'ala%ras reser%adas do Oracle.
)ome =lido
,;6QH Sim
QH,;6 )&o, come!a com nLmero.
G->2O_B2-$O Sim
G->2O B2-$O )&o, contm es'a!o.
-6D+$, )&o, 'ala%ra reser%ada.
$+B,G+0 Sim, mas nome n&o diz nada.
14.4 ;ecomenda#.es sobre os nomes das tabelas
008
-sar nomes descriti%os 'ara as tabelas, colunas, 4ndices e outros ob5etos.
+bre%iar de forma consistente, mantendo sem're a mesma abre%iatura.
>onsist.ncia de singular e 'lural, n&o colocando o nome de algumas tabelas no singular e
de outras no 'lural
-sar uma regra consistente 'ara atribuir nomes. -ma regra 'ode ser, todas as tabelas do
sistema financeiro come!am com FI)_.
-se o mesmo nome 'ara descre%er o mesmo atributo em tabelas diferentes.
14.0 <ipo de dado das colunas
$i'o >onteLdo
>X+2(n) >aracteres alfanumricos com at TnT caracteres. >oluna de
taman*o constante inde'endente do que est armazenado.
;(imo de 8HH caracteres.
=+2>X+2(n) >aracteres alfanumricos com at TnT caracteres. )o Oracle M
sinjnimo de >X+2, e 'ode ter no m(imo 8HH caracteres.
=+2>X+28(n) >aracteres alfanumricos com at TnD caracteres. Introduzida no
Oracle P, o taman*o armazenado %aria de acordo com o conteLdo
da coluna, e 'ode ter at 8<<< caracteres.
GO)G >aracteres alfanumricos com at 8 GigaBAtes (8II90 J 0). S@
'ode *a%er uma coluna GO)G 'or tabela. )&o 'ode ser inde(ada.
)&o 'odem ser es'ecificadas restri!"es de integridade, e(ceto
)O$ )-GG.
2+W(n) Dados binrios, como som e imagem, at 8HH bAtes. )&o 'odem
ser e(ecutadas fun!"es de mani'ula!&o de caracteres sobre
colunas 2+W. $em as mesmas restri!"es de GO)G. )&o e(iste
con%ers&o de caracteres, como, 'or e(em'lo, +)SI ( 6>QH<.
GO)G 2+W Semel*ante a 2+W, 'orm 'odendo armazenar at 8 GigaBAtes.
2OWID >aracteres *e(adecimais re'resentando o endere!o Lnico de uma
lin*a em uma tabela.
;GSG+B,G Formato binrio to r@tulo do sistema o'eracional. -sado com o
$rusted O2+>G,.
)-;B,2(',s) )Lmero com a 'recis&o T'T e a escala TsT. + 'recis&o T'T 'ode %ariar
de 0 a 9Q. + escala TsT 'ode %ariar de JQ? a O08P
D+$, Data %lida, desde 0 de 5aneiro de ?P08 +>, at 90 de dezembro
de ?P08 D>. 6ara cada coluna D+$+ s&o armazenados o Sculo,
o +no, o ;.s, o Dia, a Xora, o ;inuto e o Segundo.
FGO+$ )Lmero de 'onto flutuante com 'recis&o decimal de 9Q d4gitos,
ou 'recis&o binria de 08M d4gitos.
Dado ,s'ecifica!&o =alor armazenado
P?HM089,QS )-;B,2 P?HM089,QS
009
P?HM089,QS )-;B,2(S) P?HM08?
P?HM089,QS )-;B,2(S,8) P?HM089,QS
P?HM089,QS )-;B,2(S,0) P?HM089,S
P?HM089,Q )-;B,2(M) 'recis&o e(cedida
P?HM089,Q )-;B,2(0H,0) P?HM089,Q
P?HM089,QS )-;B,2(P,J8) P?HM0<<
P?HM089,Q )-;B,2(P,8) 'recis&o e(cedida
14.2 ;ela#$o entre os tipos de dados 1S" e do Oracle
+)SI O2+>G,
>X+2+>$,2(n), >X+2(n) >X+2(n)
>X+2+>$,2 =+2VI)G(n), >X+2 =+2VI)G(n) =+2>X+2(n)
)-;,2I>(',s), D,>I;+G(',s), D,>(',s) )-;B,2(',s)
I)$,G,2, I)$, S;+GGI)$ )-;B,2(9Q)
FGO+$(b), DO-BG, 62,>ISIO), 2,+G )-;B,2
14.3 ;ela#$o entre os tipos de dados do S'(WDS e do Oracle
SBG1DS ou DB8 O2+>G,
>X+2+>$,2(n) >X+2(n)
=+2>X+2(n) =+2>X+2(n)
GO)G =+2>X+2 GO)G
D,>I;+G(',s) )-;B,2(',s)
I)$,G,2, S;+GGI)$ )-;B,2(9Q)
FGO+$(b) )-;B,2
G2+6XI> J
GO)G =+2G2+6XI> J
=+2G2+6XI> J
$I;,S$+;6 D+$,
$I;, D+$,
14.4 Cria#$o de tabelas
14.4.1 Sinta-e do comando:
>2,+$, $+BG, `esquema.a nome_da_tabela `restri!"esa
(nome_da_coluna ti'o_de_dado (taman*o) `D,F+-G$ %alora `restri!"esa)
`6>$F2,, inteiro 6>$-S,D inteiro I)I$2+)S inteiro ;+f$2+)S inteiroa
`$+BG,S6+>, es'a!o_de_tabela S$O2+G, armazenamentoa
2estri!&o Descri!&o
00?
>O)S$2+I)$
nome_da_restri!&o
,s'ecifica o nome da restri!&o. 3 o'cional. Buando omitido
o nome 'adr&o tem a forma de SVS_>n, onde TnT um
nLmero inteiro atribu4do 'elo Oracle que identifica
unicamente a restri!&o.
)-GG
)O$ )-GG
,s'ecifica se a coluna 'ode ou n&o conter %alores nulos.
-)IB-, Designa uma coluna, ou uma combina!&o de colunas, como
c*a%e Lnica. >ada coluna de%e ser declarada como )O$
)-GG, e n&o 'odem ser c*a%e 'rimria.
62I;+2V \,V Designa uma coluna, ou uma combina!&o de colunas, como
c*a%e 'rimria. +s colunas de%em ser declaradas como
)O$ )-GG e n&o 'odem ter a restri!&o -)IB-,. Se a
c*a%e 'rimria conti%er a'enas uma coluna 'ode ser
declarada na restri!&o da coluna. Se a c*a%e 'rimria
conti%er mLlti'las colunas de%e ser declarada na restri!&o
da tabela.
FO2,IG) \,V
(coluna...)
2,F,2,)>,S
tabela(col(s))
Identifica a(s) coluna(s) como c*a%e estrangeira .
2,F,2,)>,S identifica a c*a%e 'rimria ou c*a%e Lnica
que referenciada.
>X,>\ condi!&o ,s'ecifica a condi!&o que uma coluna de%e satisfazer 'ara a
lin*a ser aceita na tabela. S@ 'ode se referenciar a colunas
da mesma tabela. -ma restri!&o de coluna s@ 'ode
referenciar a uma coluna, 'orm uma restri!&o de tabela
'ode referenciar mLlti'las colunas.
DIS+BG,
(,)+BG,)
Desati%a (ati%a) uma restri!&o de integridade. O 'ad&o a
restri!&o ati%a.
,f>,6$IO)S
I)$O
Identifica a tabela na qual o O2+>G, armazena as
informa!"es sobre as lin*as que %iolaram as restri!"es de
integridade. + tabela de%e e(istir antes desta condi!&o ser
es'ecificada.
14.4.2 Cria#$o das tabelas do curso:
CREATE TABLE DEPT 3
DEPTNO N#MBER324 NOT N#LL,
DNAME CHAR3!$4,
LOC CHAR3!34,
PRIMAR0 E0 3DEPTNO4 CONSTRAINT DEPT9PRIMAR09E04
CREATE TABLE EMP 3
EMPNO N#MBER3$4 NOT N#LL,
ENAME CHAR3!04,
JOB CHAR394,
MGR N#MBER3$4 REFERENCES EMP 3EMPNO4 CONSTRAINT
EMP9S9E0,
HIREDATE DATE,
SAL N#MBER37,24,
COMM N#MBER37,24,
DEPTNO N#MBER324 NOT N#LL,
FOREIGN E0 3DEPTNO4 REFERENCES DEPT 3DEPTNO4 CONSTRAINT EMP9F9,
PRIMAR0 E0 3EMPNO4 CONSTRAINT EMP9PRIMAR09E04
00H
CREATE TABLE SALGRADE 3
GRADE N#MBER,
LOSAL N#MBER,
HISAL N#MBER4
14.4.3 ,-emplos de restri#.es
$abela S+G n&o 'ermitindo salrio nulo.
ALTER TABLE EMP MODIF0 3SAL N#MBER CONTRAINT NN9SAL NOT N#LL4
$abela D,6$ com restri!"es de coluna.
CREATE TABLE DEPT 3
DEPTNO N#MBER324 CONSTRAINT P9DEPT PRIMAR0 E0,
DNAME 1ARCHAR2394CONSTRAINT #NQ9DNAME #NIQ#E,
LOC 1ARCHAR23!044
$abela D,6$ com c*a%e 'rimria definida como restri!&o de tabela.
CREATE TABLE DEPT 3
DEPTNO N#MBER324 NOT N#LL,
DNAME 1ARCHAR2394,
LOC CHAR3!34,
PRIMAR0 E0 3DEPTNO4 CONSTRAINT DEPT9PRIMAR09E04
$abela D,6$ com nome do de'artamento Lnico definido como restri!&o de tabela.
CREATE TABLE DEPT 3
DEPTNO N#MBER324 NOT N#LL,
DNAME CHAR3!$4,
LOC CHAR3!34,
CONSTRAINT #NQ9DNAME #NIQ#E 3DNAME4
#SING INDEN PCTFREE 20 TABLESDPACE TBLSP9DEPT
STORAGE 3INITIAL 8 NENT 644
$abela D,6$ com o'!&o >X,>\.
CREATE TABLE DEPT 3
DEPTNO N#MBER
CONSTRAINT CHEC9DEPTNO
CHEC 3DEPTNO BETWEEN !0 AND 994
DISABLE,
DNAME CHAR3!$4
CONSTRAINT CHEC9DNAME
CHEC3DNAME:#PPER3DNAME44
DISABLE,
LOC CHAR3!34
CONSTRAINT CHEC9LOC
CHEC 3LOC IN 38DALLAS8,8BOSTON8,...44
DISABLE4
$abela ,;6 com o'!&o O) D,G,$, >+>+D,.
CREATE TABLE EMP 3
EMPNO N#MBER3$4 NOT N#LL,
ENAME CHAR3!04,
00M
JOB CHAR394,
MGR N#MBER3$4 REFERENCES EMP 3EMPNO4 CONSTRAINT
EMP9S9E0,
HIREDATE DATE,
SAL N#MBER37,24,
COMM N#MBER37,24,
DEPTNO N#MBER324 NOT N#LL,
CONSTRAINT F9DEPTNO REFERENCES DEPT3DEPTNO4 ON DELETE CASCADE4
$abela >,)S-S com um 4ndice Lnico com'osto
CREATE TABLE CENS#S
ADD CONSTRAINT #NQ9CIT09STATE #NIQ#E 3CIT0, STATE4
#SING INDEN PCTFREE " TABLESPACE TBLSP9CES#S
ENCEPTIONS INTO BAD9E0S9IN9SHIP9CONT
14.6 Criando uma tabela a partir de outra tabela
3 'oss4%el criar uma tabela a 'artir de outra tabela 5 e(istente, atra%s do comando/
>2,+$, $+BG, nome_da_tabela
`(es'ecifica!&o das colunas)a
+S S,G,>$...
,(em'lo/
SQL> CREATE TABLE EMPREGADOS AS SELECT / FROM EMP
T?@*) +%)?,)-.
O comando D,S>2IB, 'ermite %isualizar a estrutura das tabelas.
SQL> DESCRIBE EMP
N?H) N>**T TQL)
------------------------------- -------- ----
EMPNO NOT N#LL N#MBER3$4
ENAME CHAR3!04
JOB CHAR394
MGR N#MBER3$4
HIREDATE DATE
SAL N#MBER37,24
COMM N#MBER37,24
DEPTNO NOT N#LL N#MBER324
SQL> DESCRIBE EMPREGADOS
N?H) N>**T TQL)
------------------------------- -------- ----
EMPNO NOT N#LL N#MBER3$4
ENAME CHAR3!04
JOB CHAR394
MGR N#MBER3$4
HIREDATE DATE
SAL N#MBER37,24
COMM N#MBER37,24
DEPTNO NOT N#LL N#MBER324
00P
SQL> SELECT / FROM EMPREGADOS
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
------- ---------- --------- ------- --------- ------- ------- -------
7369 SMITH CLER 7902 !3-J#N-83 800 20
7$99 ALLEN SALESMAN 7698 !"-A#G-83 !600 300 30
7"2! WARD SALESMAN 7698 26-MAR-8$ !2"0 "00 30
7"66 JONES MANAGER 7839 3!-OCT-83 297" 20
76"$ MARTIN SALESMAN 7698 0"-DEC-83 !2"0 !$00 30
7698 BLAE MANAGER 7839 !!-J#N-8$ 28"0 30
7782 CLAR MANAGER 7839 !$-MA0-8$ 2$"0 !0
7788 SCOTT ANAL0ST 7"66 0"-MAR-8$ 3000 20
7839 ING PRESIDENT 09-J#L-8$ "000 !0
78$$ T#RNER SALESMAN 7698 0$-J#N-8$ !"00 0 30
7876 ADAMS CLER 7788 0$-J#N-8$ !!00 20
7900 JAMES CLER 7698 23-J#L-8$ 9"0 30
7902 FORD ANAL0ST 7"66 0"-DEC-83 3000 20
793$ MILLER CLER 7782 2!-NO1-83 !300 !0
!$ %&'( ()*)+,)-.
>omo 'ode ser %isto, as duas tabelas tem e(atamente a mesma estrutura e o mesmo
conteLdo.
$abelas tambm 'odem ser criadas a 'artir da 5un!&o de outras tabelas.
SQL> CREATE TABLE SALARIOS9DOS9EMPREGADOS
2 3NOME, SALARIO, FAINA4
3 AS
$ SELECT ENAME, SAL, GRADE
" FROM EMP, SALGRADE
6 WHERE SAL BETWEEN LOSAL AND HISAL
T?@*) +%)?,)-.
SQL> DESCRIBE SALARIOS9DOS9EMPREGADOS
N?H) N>**T TQL)
------------------------------- -------- ----
NOME CHAR3!04
SALARIO N#MBER37,24
FAINA N#MBER
SQL> SELECT /
2 FROM SALARIOS9DOS9EMPREGADOS
NOME SALARIO FAINA
---------- ------- -------
SMITH 800 !
ADAMS !!00 !
JAMES 9"0 !
WARD !2"0 2
MARTIN !2"0 2
MILLER !300 2
ALLEN !600 3
T#RNER !"00 3
JONES 297" $
BLAE 28"0 $
CLAR 2$"0 $
00Q
SCOTT 3000 $
FORD 3000 $
ING "000 "
!$ %&'( ()*)+,)-.
14.18 lterando uma tabela
6ara adicionar uma coluna na tabela usamos/
+G$,2 $+BG, nome_da_tabela
+DD ( nome_da_coluna ti'o_de_dado `D,F+-G$ %alora `restri!"es_de_colunaa)
SQL> ALTER TABLE EMPREGADOS
2 ADD 3NOME9DA9ESPOSA CHAR3!044
T?@*) ?*,)%)-.
SQL> DESCRIBE EMPREGADOS
N?H) N>**T TQL)
------------------------------- -------- ----
EMPNO NOT N#LL N#MBER3$4
ENAME CHAR3!04
JOB CHAR394
MGR N#MBER3$4
HIREDATE DATE
SAL N#MBER37,24
COMM N#MBER37,24
DEPTNO NOT N#LL N#MBER324
NOME9DA9ESPOSA CHAR3!04
6ara alterar a tabela em'regados e garantir todos ten*am salrio inferior a H<<</
SQL> ALTER TABLE EMPREGADOS
2 ADD 3CHEC3SALO:"00044
T?@*) ?*,)%)-.
6ara modificar uma coluna na tabela usamos/
+G$,2 $+BG, nome_da_tabela
;ODIFV ( nome_da_coluna ti'o_de_dado `D,F+-G$ %alora `restri!"es_de_colunaa)
6ara modificar a coluna )O;,_D+_,S6OS+ 'ara aceitar at 8H caracteres fazemos/
SQL> ALTER TABLE EMPREGADOS
2 MODIF0 3NOME9DA9ESPOSA CHAR32"44
T?@*) ?*,)%)-.
SQL> DESCRIBE EMPREGADOS
N?H) N>**T TQL)
------------------------------- -------- ----
EMPNO NOT N#LL N#MBER3$4
ENAME CHAR3!04
JOB CHAR394
MGR N#MBER3$4
HIREDATE DATE
00S
SAL N#MBER37,24
COMM N#MBER37,24
DEPTNO NOT N#LL N#MBER324
NOME9DA9ESPOSA CHAR32"4
14.11 <rocando o nome de uma tabela
Os nomes dos ob5etos do banco de dados 'odem ser trocado atra%s do comando/
2,)+;, nome_antigo $O nome_no%o
6ara trocar o nome da tabela de ,;62,G+DOS 'ara F-)>IO)+2IOS/
SBGK 2,)+;, ,;62,G+DOS $O F-)>IO)+2IOS
$able renamed.
14.12 Descri#$o das tabelas e colunas
+ descri!&o das tabelas e das colunas 'ode ser armazenada no dicionrio de dados atra%s do
comando >O;;,)$.
6ara adicionar a descri!&o da tabela F-)>IO)+2IOS/
SQL> COMMENT ON TABLE F#NCIONARIOS IS 8CADASTRO DE F#NCIONARIOS8
C&HH)B, +%)?,)-.
6ara adicionar a descri!&o da coluna )O;,_D+_,S6OS+ da tabela F-)>IO)+2IOS/
SQL> COMMENT ON COL#MN F#NCIONARIOS.NOME9DA9ESPOSA IS -
> 8NOME DA ESPOSA DO F#NCIONARIO8
C&HH)B, +%)?,)-.
14.13 ;emovendo tabelas
+s tabelas 'odem ser remo%idas do banco de dados atra%s do comando/
D2O6 $+BG, nome_da_tabela
6ara remo%er a tabelas S+G+2IOS_DOS_,;62,G+DOS e F-)>IO)+2IOS/
SQL> DROP TABLE SALARIOS9DOS9EMPREGADOS
T?@*) -%&LL)-.
SQL> DROP TABLE F#NCIONARIOS
T?@*) -%&LL)-.
14.14 ,-erccios
a) >riar as seguintes tabelas/
$abela/ 62O7,>$S
62O7ID )-;B,2 ? )O$ )-GG
08<
6_D,S> >X+2+>$,2 8<
6_S$+2$_D+$, D+$,
6_,)D_D+$, D+$,
B-DG,$_+;O-)$ )-;B,2 P,8
;+f_)O_S$+FF )-;B,2 8
$abela/ +SSIG);,)$S
62O7ID )-;B,2 ? )O$ )-GG
,;6)O )-;B,2 ? )O$ )-GG
+_S$+2$_D+$, D+$,
+_,)D_D+$, D+$,
BIGG_2+$, )-;B,2 ?,8
+SSIG)_$V6, >X+2 8
b) >om as tabelas criadas adicionar a seguinte coluna a tabela +SSIG);,)$S/
XO-2S )-;B,2 8
c) +dicionar comentrios #s tabelas criadas 'ara descre%er o conteLdo.
d) +dicionar comentrios # coluna 62O7ID da tabela 62O7,>$S descre%endo seu
conteLdo.
e) ;ostrar a es'ecifica!&o das colunas das %is&o -S,2_>OG_>O;;,)$S.
f) ;ostrar os nomes das tabelas, das colunas, e os comentrios 'ara as colunas.
g) ;ostrar a es'ecifica!&o das colunas das %is&o -S,2_$+B_>O;;,)$S.
*) ;ostrar os nomes das tabelas e os coment&rios para as tabelas.
080
0?.0H 2es'ostas dos e(erc4cios
?4
SQL> CREATE TABLE PROJECTS 3
2 PROJID N#MBER3$4 NOT N#LL,
3 P9DESC CHAR3204,
$ P9START9DATE DATE,
" P9END9DATE DATE,
6 B#DGET9AMO#NT N#MBER37,24,
7 MAN9NO9STAFF N#MBER3244
SQL> CREATE TABLE ASSIGNMENTS 3
2 PROJID N#MBER3$4 NOT N#LL,
3 EMPNO N#MBER3$4 NOT N#LL,
$ A9START9DATE DATE,
" A9END9DATE DATE,
6 BILL9RATE N#MBER3$,24,
7 ASSIGN9T0PE CHAR3244
@4
SQL> ALTER TABLE ASSIGNMENTS
2 ADD 3HO#RS N#MBER3244
+4
SQL> COMMENT ON TABLE PROJECTS IS 8#NIQ#E PROJECT DETAILS8
SQL> COMMENT ON TABLE ASSIGNMENTS IS -
> 8ASSIGNMENTS FOR AN0 EMPLO0EE ON A PROJECT8
-4
SQL> COMMENT ON COL#MN PROJECTS.PROJID IS -
> 8#NIQ#E IDENTIFIER FOR A PROJECT8
)4
SQL> DESCRIBE #SER9COL9COMMENTS
N?H) N>**T TQL)
------------------------------- -------- ----
TABLE9NAME NOT N#LL CHAR3304
COL#MN9NAME NOT N#LL CHAR3304
COMMENTS CHAR32""4
D4
SQL> SELECT / FROM #SER9COL9COMMENTS WHERE COMMENTS IS NOT N#LL
TABLE9NAME COL#MN9NAME COMMENTS
--------------- --------------- ---------------------------------------
PROJECTS PROJID #NIQ#E IDENTIFIER FOR A PROJECT
E4
SQL> DESCRIBE #SER9TAB9COMMENTS
N?H) N>**T TQL)
------------------------------- -------- ---------
TABLE9NAME NOT N#LL CHAR3304
TABLE9T0PE CHAR3!!4
COMMENTS CHAR32""4
C4
SQL> SELECT / FROM #SER9TAB9COMMENTS WHERE COMMENTS IS NOT N#LL
088
TABLE9NAME TABLE9T0PE COMMENTS
--------------- ----------- ------------------------------------------
ASSIGNMENTS TABLE ASSIGNMENTS FOR AN0 EMPLO0EE ON A PROJECT
PROJECTS TABLE #NIQ#E PROJECT DETAILS
089
Captulo 10: (inKuaKem de 5anipula#$o de Dados
10.1 Objetivos deste captulo
;ostrar a linguagem de mani'ula!&o de dados (D;G), utilizada 'ara inserir, atualizar e
eliminar registros do banco de dados.
10.2 "nserindo novas lin7as em uma tabela
6ara inserir lin*as em uma tabela utilizado o comando I)S,2$.
I)S,2$ I)$O nome_da_tabela `(coluna, coluna, ...)a
=+G-,S (%alor, %alor, ...)
Os e(em'los ser&o efetuados sobre a tabela De'artment criada a 'artir da tabela De't.
SQL> CREATE TABLE DEPARTMENT
2 AS
3 SELECT /
$ FROM DEPT
T?@*) +%)?,)-.
Buando os no%os %alores s&o inseridos em todas as colunas da tabela, na mesma ordem das
colunas da tabela, a lista de colunas 'ode ser omitida. 3 recomendado que a lista de colunas
se5a sem're es'ecificada, 'ara n&o *a%er necessidade de alterar o 'rograma quando uma
no%a coluna for adicionada # tabela.
6ara inserir um no%o de'artamento.
SQL> INSERT INTO DEPARTMENT 3 DEPTNO, DNAME, LOC 4
2 1AL#ES 3"0, 8MARETING8, 8SAN JOSE8 4
! %&' +%)?,)-.
6ara inserir a'enas o nLmero e a localidade do no%o de'artamento.
SQL> INSERT INTO DEPARTMENT 3 DEPTNO, LOC 4
2 1AL#ES 3 60, 8ALBERTA8 4
! %&' +%)?,)-.
,m %ez que omitir o nome do de'artamento na lista de colunas, 'ode ser es'ecificado o %alor
nulo 'ara o nome do de'artamento, o resultado o mesmo.
SQL> INSERT INTO DEPARTMENT 3 DEPTNO, DNAME, LOC 4
2 1AL#ES 3 70, N#LL, 8DETROIT8 4
! %&' +%)?,)-.
6odem ser utilizadas %ari%eis de substitui!&o 'ara fornecimento dos %alores.
SQL> INSERT INTO DEPARTMENT 3 DEPTNO, DNAME, LOC 4
2 1AL#ES 3 JDEPT9N#M, 8JDEPT9NAME8, 8JDEPT9LOC8 4
EB,)% K?*>) D&% -)L,9B>HM 80
EB,)% K?*>) D&% -)L,9B?H)M RESEARCH
08?
EB,)% K?*>) D&% -)L,9*&+M ATLANTA
&*- 2M 1AL#ES 3 JDEPT9N#M, 8JDEPT9NAME8, 8JDEPT9LOC8 4
B)' 2M 1AL#ES 3 80, 8RESEARCH8, 8ATLANTA8 4
! %&' +%)?,)-.
6ara inserir um no%o de'artamento omitindo a lista de colunas.
SQL> INSERT INTO DEPARTMENT
2 1AL#ES 3 90, 8INS#RANCE8, 8LONDON8 4
! %&' +%)?,)-.
Gistando a tabela de de'artamentos a'@s as inser!"es/
SQL> SELECT /
2 FROM DEPARTMENT
3 ORDER B0 DEPTNO
DEPTNO DNAME LOC
------- -------------- -------------
!0 ACCO#NTING NEW 0OR
20 RESEARCH DALLAS
30 SALES CHICAGO
$0 OPERATIONS BOSTON
"0 MARETING SAN JOSE
60 ALBERTA
70 DETROIT
80 RESEARCH ATLANTA
90 INS#RANCE LONDON
9 %&'( ()*)+,)-.
6ara os e(em'los de inser!&o de %alores de data e *ora ser criada a tabela ,m'loAee a 'artir
da tabela ,m'.
SQL> CREATE TABLE EMPLO0EE
2 AS
3 SELECT /
$ FROM EMP
T?@*) +%)?,)-.
Buando uma data inserida, o formato DDJ;O)JVV geralmente usado. >om este
formato, o sculo 'adr&o o sculo 8< (0S((). O cam'o data tambm contm informa!&o de
*ora, que quando n&o es'ecificada assume o %alor 'adr&o de zero *oras (<</<</<<).
Se for necessrio es'ecificar a data em outro sculo, ou for necessrio es'ecificar a *ora, a
fun!&o $O_D+$, utilizada.
SQL> INSERT INTO EMPLO0EE
2 3 EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO 4
3 1AL#ES 3
$ 76"8,
" 8CODD8,
6 8ANAL0ST8,
7 7"66,
08H
8 TO9DATE382$P06P208$ 9M308,8DDPMMP0000 HHMMI84,
9 3000,
!0 N#LL,
!! 204
! %&' +%)?,)-.
6ara e(em'lo de inser!&o de %alores a 'artir de uma outra tabela ser criada a tabela
S+G+2V_G2+D, a 'artir da tabela S+GG2+D,.
SQL> CREATE TABLE SALAR09GRADE
2 AS
3 SELECT / FROM SALGRADE
$ WHERE GRADE:0
T?@*) +%)?,)-.
>omo n&o e(iste nen*um de'artamento com nLmero zero na tabela S+GG2+D,, n&o foi
inclu4da nen*uma lin*a na tabela S+G+2V_G2+D, durante a cria!&o.
SQL> SELECT /
2 FROM SALAR09GRADE
B& %&'( ()*)+,)-
6ara inserir na tabela S+G+2V_G2+D,, a 'artir da tabela S+GG2+D,, os %alores
corres'ondentes # fai(a 0.
SQL> INSERT INTO SALAR09GRADE
2 SELECT /
3 FROM SALGRADE
$ WHERE GRADE : !
! %&' +%)?,)-.
6ara %erificar se a inclus&o foi feita corretamente.
SQL> SELECT /
2 FROM SALAR09GRADE
GRADE LOSAL HISAL
------- ------- -------
! 700 !200
10.3 tualiTando lin7as em uma tabela
6ara atualizar lin*as de uma tabela utilizado o comando -6D+$,.
-6D+$, nome_da_tabela `alisa
S,$ coluna, `,coluna...a : be('ress&o ou subJconsultac
`WX,2, condi!&oa
6ara atualizar as informa!"es do funcionrio S>O$$.
SQL> #PDATE EMPLO0EE
2 SET
3 JOB : 8SALESMAN8,
08M
$ HIREDATE : S0SDATE,
" SAL : SAL/!.!
6 WHERE ENAME : 8SCOTT8
! %&' >L-?,)-.
6ara trocar todos os cargos de S+G,S;+) 'or %endedor.
SQL> #PDATE EMPLO0EE
2 SET JOB : 81ENDEDOR8
3 WHERE JOB : 8SALESMAN8
" %&'( >L-?,)-.
6ara listar a tabela a'@s as atualiza!"es.
SQL> SELECT ENAME, JOB
2 FROM EMPLO0EE
3 ORDER B0 JOB, ENAME
ENAME JOB
---------- ---------
CODD ANAL0ST
FORD ANAL0ST
ADAMS CLER
JAMES CLER
MILLER CLER
SMITH CLER
BLAE MANAGER
CLAR MANAGER
JONES MANAGER
ING PRESIDENT
ALLEN 1ENDEDOR
MARTIN 1ENDEDOR
SCOTT 1ENDEDOR
T#RNER 1ENDEDOR
WARD 1ENDEDOR
!" %&'( ()*)+,)-.
10.4 ,liminando lin7as de uma tabela
6ara eliminar lin*as de uma tabela utilizado o comando D,G,$,.
D,G,$, F2O; nome_da_tabela
`WX,2, condi!&oa
6ara eliminar todos os em'regados que trabal*am no de'artamento 0<.
SQL> DELETE FROM EMPLO0EE
2 WHERE DEPTNO : !0
3 %&'( -)*),)-.
6ara eliminar todos os em'regados.
SQL> DELETE FROM EMPLO0EE
08P
!2 %&'( -)*),)-.
6ara %erificar como ficou a tabela a'@s a elimina!&o.
SQL> SELECT / FROM EMPLO0EE
B& %&'( ()*)+,)-
+'esar de n&o 'ossuir nen*uma lin*a, a tabela ,m'loAee ainda e(iste, 'ara eliminJla
utilizado o comando da linguagem de defini!&o de dados (DDG) D2O6 $+BG,.
SQL> DROP TABLE EMPLO0EE
T?@*) -%&LL)-.
10.0 ,-erccios
a) Inserir as seguintes lin*as na tabela 62O7,>$S
62O7ID 0 8
6_D,S> W2I$, ><9< >O-2S, 62OOF 2,+D )O$,S
6_S$+2$_D+$, <8J7+)JQQ <0J7+)JQS
6_,)D_D+$, <PJ7+)JQQ 0<J7+)JQS
B-DG,$_+;O-)$ H<< M<<
;+f_)O_S$+FF 0 0
b) Inserir as seguintes lin*as na tabela +SSIG);,)$S
62O7ID 0 0 8
,;6)O P9MS PS<8 PQ??
+_S$+2$_D+$, <0J7+)JQQ <?J7+)JQQ <0J7+)JQS
+_,)D_D+$, <9J7+)JQQ <PJ7+)JQQ 0<J7+)JQS
BIGG_2+$, H<.<< HH.<< ?H.H<
+SSIG)_$V6, W2 W2 6F
XO-2S 0H 8< 9<
c) +lterar +SSIG);,)$_$V6,/ trocar W2 'or W$.
08Q
10.2 ;espostas dos e-erccios
?4
SQL> INSERT INTO PROJECTS
2 3PROJID,P9DESC,P9START9DATE,P9END9DATE,B#DGET9AMO#NT,MAN9NO9STAFF4
3 1AL#ES
$ 3!,8WRITE C030 CO#RSE8,802-JAN-888,807-JAN-888,"00,24
SQL> INSERT INTO PROJECTS
2 3PROJID,P9DESC,P9START9DATE,P9END9DATE,B#DGET9AMO#NT,MAN9NO9STAFF4
3 1AL#ES
$ 32,8PROOF READ NOTES8,80!-JAN-898,8!0-JAN-898,600,!4
@4
SQL> INSERT INTO ASSIGNMENTS
2 3PROJID,EMPNO,A9START9DATE,A9END9DATE,BILL9RATE,ASSIGN9T0PE,HO#RS4
3 1AL#ES
$ 3!,7369,80!-JAN-888,803-JAN-888,"0.00,8WR8,!"4
SQL> INSERT INTO ASSIGNMENTS
2 3PROJID,EMPNO,A9START9DATE,A9END9DATE,BILL9RATE,ASSIGN9T0PE,HO#RS4
3 1AL#ES
$ 3!,7902,80$-JAN-888,807-JAN-888,"".00,8WR8,204
SQL> INSERT INTO ASSIGNMENTS
2 3PROJID,EMPNO,A9START9DATE,A9END9DATE,BILL9RATE,ASSIGN9T0PE,HO#RS4
3 1AL#ES
$ 32,78$$,80!-JAN-898,8!0-JAN-898,$"."0,8PF8,304
+4
SQL> #PDATE ASSIGNMENTS
2 SET ASSIGN9T0PE : 8WT8
3 WHERE ASSIGN9T0PE : 8WR8
08S
Captulo 12: *rocessamento de transa#.es
12.1 Objetivos deste captulo
Fazer uma introdu!&o ao conceito de transa!&o.
12.2 O !ue / uma transa#$o
-ma transa!&o um con5unto de o'era!"es efetuadas em um banco de dados, que causam
altera!"es em uma ou mais tabelas.
,(istem duas classes de transa!"es. $ransa!"es 'roduzidas 'ela linguagem de mani'ula!&o
de dados (D;G), que consistem em um ou mais comandos de D;G, as quais o Oracle trata
como uma Lnica entidade ou unidade l@gica de trabal*o (G-W). $ransa!"es causadas 'ela
linguagem de defini!&o de dados (DDG) contm a'enas um comando.
+s transa!"es n&o 'odem ficar 'ela metade no banco de dados, ou todas as transa!"es de
uma unidade l@gica de trabal*o s&o efeti%adas, ou nen*uma efeti%ada no banco de dados.
)&o 'ode *a%er o caso em que umas s&o efeti%adas e outras n&o.
-ma transa!&o come!a com o 'rimeiro comando de D;G ou DDG e(ecutado, e termina
com um dos seguintes comandos.
>O;;I$ ou 2OGGB+>\
comando de DDG
,rros
Descone(&o (logoff, e(it)
Fal*a de mquina
-m comando de DDG efeti%ado automaticamente, e 'ortanto termina im'licitamente uma
transa!&o.
+'@s o fim de uma transa!&o, a 'r@(ima declara!&o SBG inicia uma no%a transa!&o
automaticamente.
12.3 ,Petivando as mudan#as
6ara tornar as mudan!as no banco de dados 'ermanentes, elas de%em ser efeti%adas. O
comando >O;;I$ utilizado 'ara efeti%ar as mudan!as, e o comando 2OGGB+>\
utilizado 'ara descartar as mudan!as.
Os comandos emitidos entre dois comandos >O;;I$ definem uma transa!&o.
+t que o comando >ommit se5a e(ecutado, as mudan!as s&o %istas a'enas 'elo usurio que
as efetuou, os demais usurios en(ergam a situa!&o anterior as modifica!"es.
09<
12.4 ;emovendo mudan#as
;udan!as n&o efeti%adas 'odem ser descartadas atra%s do comando 2OGGB+>\.
O comando 2OGGB+>\ retorna os dados ao estado em que se encontra%a
a'@s o Lltimo >O;;I$.
12.0 @al7as do sistema
Buando uma transa!&o interrom'ida 'or um erro, como, 'or e(em'lo, uma fal*a do
sistema, toda a transa!&o descartada (2olled bacE). ,ste 'rocedimento 're%ine que os erros
causem mudan!as n&o dese5adas aos dados.
O 2ollbacE automtico mais freq^entemente causado 'or fal*as no sistema, tais como falta
de luz ou queda do sistema o'eracional. ,rros causados 'ela entrada de comandos, tais como
digitar o nome errado 'ara uma coluna ou tentar realizar uma o'era!&o n&o 'ermitida na
tabela de outro usurio, n&o interrom'em uma transa!&o, nem causam um 2ollbacE
automtico, 'orque estes erros s&o detectados na fase de T'arseT do comando (quando o
comando lido e %erificado), e n&o durante a fase de e(ecu!&o.
12.2 O siKniPicado de uma transa#$o
O Oracle garante a consist.ncia dos dados baseado nas transa!"es. $ransa!"es fornecem
mais fle(ibilidade e controle 'ara trabal*ar com os dados. 6or e(em'lo, quando um %alor
debitado de uma conta e creditado em outra, esta o'era!&o uma transa!&o, que de%e ser
totalmente efeti%ada (>ommit), ou descartada (2ollbacE), n&o 'ode *a%er o caso em que
e(iste o dbito sem que *a5a o crdito corres'ondente.
12.3 Controlando transa#.es
Os seguintes comandos SBG s&o utilizados 'ara controlar uma transa!&o/
>O;;I$ `WO2\a
S+=,6OI)$ nome_do_sa%e'oint
2OGGB+>\ `WO2\a
2OGGB+>\ $O nome_do_sa%e'oint
12.4 CO55"< OAO;XQ
$orna as mudan!as causadas 'ela transa!&o corrente 'ermanente
,limina todos os Sa%e6oints
$ermina a transa!&o
Gibera os GocEs causados 'ela transa!&o
+ 'ala%ra WO2\ o'cional
090
De%e ser e(ecutada e('licitamente e n&o im'licitamente, caso contrrio em caso de
trmino anormal do 'rograma a Lltima transa!&o desfeita (2ollbacE).
>O;;I$ im'l4cito ou automtico ocorre nas seguintes situa!"es/
J antes de um comando de DDG
J a'@s um comando de DDG
J quando de uma descone(&o normal
>omandos de DDG sem're geram um >ommit quando s&o e(ecutados. Buando um comando
de DDG e(ecutado a'@s a e(ecu!&o de %rios comandos de D;G, o >ommit e(ecutado
antes do comando de DDG ser e(ecutado. +'@s o comando DDG ser e(ecutado, se a
e(ecu!&o n&o causar erro, esta tambm efeti%ada.
12.6 S=,*O"1< savepointNname
6ode ser utilizado 'ara di%idir uma transa!&o em 'or!"es menores.
6ermite guardar o trabal*o at um determinado 'onto, 'ara que mais tarde se5a
'oss4%el desfaz.Jlo totalmente, ou a'enas at este determinado 'onto.
Buando um no%o Sa%e6oint criado com o mesmo nome de um anterior, o anterior
eliminado.
O nLmero m(imo de Sa%e6oints 'or 'rocesso de usurio H, 'or 'adr&o. ,ste
'adr&o 'ode ser mudado.
S@ e(iste 2ollbacE to Sa%e6oint, n&o e(iste >ommit to Sa%e6oint.
12.18 ;O((BCXOAO;XQ to OS=,*O"1<Q savepointNname
O comando 2ollbacE utilizado 'ara desfazer altera!"es.
+ 'ala%ra WO2\ o'cional.
2ollbacE sem $o Sa%e6oint causa/
J Fim da transa!&o
J Desfaz as altera!"es
J ,limina todos os Sa%e6oints da transa!&o
J Gibera os GocEs da transa!&o
12.11 ;ollbacY a nvel de declara#$o
098
Se uma Lnica declara!&o de D;G fal*a, somente esta transa!&o desfeita. ,sta caracter4stica
c*amada de 2ollbacE a n4%el de declara!&o, e 'ermite que se efetue tanto o 2ollbacE
quanto o >ommit das transa!"es anteriores a transa!&o que fal*ou.
Se a transa!&o for de DDG, o >ommit e(ecutado antes da transa!&o n&o 'ermite o 2ollbacE
das transa!"es anteriores.
Oracle realiza um 2ollbacE a n4%el de declara!&o atra%s da cria!&o de um Sa%e6oint
im'l4cito antes de cada transa!&o de D;G. ,ste Sa%e6oint n&o acess4%el diretamente 'elo
usurio.
Buando feito um 2OGGB+>\ $O S+=,6OI)$/
-ma 'or!&o da transa!&o desfeita.
mantm o Sa%e6oint at onde foi feito o 2ollbacE, mas 'erde os Sa%e6oints criados
a'@s o Sa%e6oint 'ara o qual o 2ollbacE foi feito.
Gibera tabelas e GocEs a n4%el de lin*a.
12.12 ;ollbacYs implcitos
2ollbacEs im'l4citos ocorrem em caso de trmino anormal
12.13 utocommit
>ommit 'ode ser e(ecutado automaticamente atra%s do comando S,$ +-$O>O;;I$
O). )este caso, a'@s cada comando I)S,2$, -6D+$, ou D,G,$, e(ecutado um
comando >O;;I$ automaticamente.
>om S,$ +-$O>O;;I$ OFF, o 'r@'rio usurio tem que e(ecutar o comando >O;;I$
manualmente.
O comando S,$ +-$O>O;;I$ um comando do SBGI6G-S, n&o do Oracle.
12.14 ,-emplo de utiliTa#$o de CO55"< e ;O((BCX
6ara eliminar os de'artamentos com nLmero maior do que ?<.
SQL> DELETE FROM DEPARTMENT
2 WHERE DEPTNO > $0
" %&'( -)*),)-.
6ara efeti%ar o comando anterior.
SQL> COMMIT
C&HHA, +&HL*),).
6ara %erificar que os de'artamentos foram realmente eliminados.
SQL> SELECT / FROM DEPARTMENT
099
DEPTNO DNAME LOC
------- -------------- -------------
!0 ACCO#NTING NEW 0OR
20 RESEARCH DALLAS
30 SALES CHICAGO
$0 OPERATIONS BOSTON
6ara inserir o de'artamento H<, $esting, de Gas =egas.
SQL> INSERT INTO DEPARTMENT 1AL#ES 3 "0, 8TESTING8, 8LAS 1EGAS84
! %&' +%)?,)-.
6ara %erificar como ficou a tabela a'@s a inser!&o.
SQL> SELECT / FROM DEPARTMENT
DEPTNO DNAME LOC
------- -------------- -------------
!0 ACCO#NTING NEW 0OR
20 RESEARCH DALLAS
30 SALES CHICAGO
$0 OPERATIONS BOSTON
"0 TESTING LAS 1EGAS
6ara criar um Sa%e6oint neste 'onto.
SQL> SA1EPOINT INSERT9DONE
S?K)L&AB, +%)?,)-.
6ara, 'or erro, trocar o nome de todos os de'artamentos 'or ;+2\,$I)G.
SQL> #PDATE DEPARTMENT
2 SET DNAME : 8MARETING8
" %&'( >L-?,)-.
6ara %erificar o erro cometido.
SQL> SELECT / FROM DEPARTMENT
DEPTNO DNAME LOC
------- -------------- -------------
!0 MARETING NEW 0OR
20 MARETING DALLAS
30 MARETING CHICAGO
$0 MARETING BOSTON
"0 MARETING LAS 1EGAS
6ara desfazer o erro da Lltima declara!&o, mas sem desfazer a inclus&o do de'artamento H<.
SQL> ROLLBAC TO INSERT9DONE
R&**@?+G +&HL*),).
6ara %erificar como ficou a tabela.
09?
SQL> SELECT / FROM DEPARTMENT
DEPTNO DNAME LOC
------- -------------- -------------
!0 ACCO#NTING NEW 0OR
20 RESEARCH DALLAS
30 SALES CHICAGO
$0 OPERATIONS BOSTON
"0 TESTING LAS 1EGAS
6ara atualizar a'enas o nome do de'artamento S+G,S, como seria correto.
SQL> #PDATE DEPARTMENT
2 SET DNAME : 8MARETING8
3 WHERE DNAME : 8SALES8
! %&' >L-?,)-.
6ara efeti%ar todas as mudan!as.
SQL> COMMIT
C&HHA, +&HL*),).
6ara %erificar como ficou a tabela.
SQL> SELECT / FROM DEPARTMENT
DEPTNO DNAME LOC
------- -------------- -------------
!0 ACCO#NTING NEW 0OR
20 RESEARCH DALLAS
30 MARETING CHICAGO
$0 OPERATIONS BOSTON
"0 TESTING LAS 1EGAS
6ara desabilitar a efeti%a!&o automtica ('adr&o).
SQL> SET A#TOCOMMIT OFF
6ara eliminar todas as lin*as da tabela.
SQL> DELETE FROM DEPARTMENT
" %&'( -)*),)-.
6ara %erificar como ficou a tabela.
SQL> SELECT / FROM DEPARTMENT
B& %&'( ()*)+,)-
6ara desfazer a elimina!&o das lin*as.
SQL> ROLLBAC
09H
R&**@?+G +&HL*),).
6ara %erificar como ficou a tabela.
SQL> SELECT / FROM DEPARTMENT
DEPTNO DNAME LOC
------- -------------- -------------
!0 ACCO#NTING NEW 0OR
20 RESEARCH DALLAS
30 MARETING CHICAGO
$0 OPERATIONS BOSTON
"0 TESTING LAS 1EGAS
6ara *abilitar a efeti%a!&o automtica.
SQL> SET A#TOCOMMIT ON
Buando se a'aga as lin*as da tabela n&o * retorno com efeti%a!&o automtica *abilitada.
SQL> DELETE FROM DEPARTMENT
C&HHA, +&HL*),).
" %&'( -)*),)-.
SQL> ROLLBAC
R&**@?+G +&HL*),).
SQL> SELECT / FROM DEPARTMENT
B& %&'( ()*)+,)-
12.10 Consist:ncia de leitura
-surios de banco de dados realizam dois ti'os de acesso ao banco de dados/
O'era!"es de leitura (comando Select)
O'era!"es de gra%a!&o (comandos Insert, -'date e Delete)
3 necessrio se garantir uma consist.ncia de leitura tanto 'ara os usurios que est&o
gra%ando quanto 'ara os usurios que est&o lendo do banco de dados. Os usurios que est&o
lendo n&o de%em en(ergar os dados que est&o em 'rocesso de altera!&o. Os usurios que
est&o gra%ando de%em en(ergar os dados da forma como foram alterados, mesmo que as
mudan!as n&o ten*am ainda sido efeti%adas.
+ finalidade da consist.ncia de leitura garantir que cada usurio %e5a os dados da forma
como e(istiam antes do Lltimo >ommit.
+ consist.ncia de leitura im'lementada mantendoJse uma c@'ia 'arcial do banco de dados
nos segmentos de 2ollbacE.
09M
Buando uma inser!&o, uma atualiza!&o ou uma elimina!&o feita no banco de dados, o
Oracle faz uma c@'ia dos dados antes das mudan!as, e guarda esta c@'ia no Segmento de
2ollbacE.
$odos os usurios que efetuam leituras, e(ceto aquele que causou as mudan!as, en(ergam o
banco de dados como ele e(istia antes das mudan!as, atra%s da c@'ia mantida nos
Segmentos de 2ollbacE.
+ntes das mudan!as serem efeti%adas, somente o usurio que modificou os dados en(erga o
banco de dados com as modifica!"es incor'oradas.
+'@s a efeti%a!&o das mudan!as, todos os usurios 'assam a en(ergar os dados com as
mudan!as efetuadas, e os Segmentos de 2ollbacE s&o liberados.
Buando ocorre um 2ollbacE, os dados gra%ados nos Segmentos de 2ollbacE s&o escritos de
%olta nas tabelas.
12.12 <ransa#.es somente de leitura
6or 'adr&o, o modelo de consist.ncia do Oracle garante que os resultados de um comando
s&o consistentes. ,ntretanto, em algumas situa!"es, 'ode ser necessrio 'rocessar %rias
consultas em dados de %rias tabelas e garantir que os dados s&o consistentes, ou se5a, os
resultados 'roduzidos 'ela consulta # uma tabela s&o consistentes com os resultados das
consultas a qualquer outra tabela.
+ declara!&o SBG pS,$ $2+)S+>$IO) 2,+D O)GVo utilizada 'ara iniciar uma
transa!&o de leitura a'enas.
+ consist.ncia de leitura que 2,+D O)GV 'ro%. im'lementada da mesma maneira que a
consist.ncia # n4%el de declara!&o J usando segmentos de rollbacE. >ada declara!&o 'or
'adr&o en(erga uma %is&o consistente dos dados na *ora em que a declara!&o foi feita. ,sta
funcionalidade muito Ltil 'ara relat@rios que 'rocessam mLlti'las consultas enquanto os
usurios atualizam as mesmas tabelas.
)otas/
+ declara!&o S,$ $2+)S+>$IO) 2,+D O)GV de%e ser a 'rimeira da transa!&o.
Somente consultas s&o 'ermitidas na transa!&o.
>O;;I$, 2OGGB+>\ ou uma declara!&o DDG terminam a transa!&o. >om DDG
nen*uma indica!&o dada que a transa!&o terminou.
Durante a transa!&o, todas as consultas se referem ao mesmo instanteneo (sna's*ot)
do banco de dados (mudan!as efeti%adas antes da transa!&o come!ar).
Outros usurios 'odem continuar a atualizar os dados.
,(em'lo/
09P
SQL> SET TRANSACTION READ ONL0
T%?B(?+,A&B (),.
SQL> SELECT / FROM DEPT
DEPTNO DNAME LOC
------- -------------- -------------
!0 ACCO#NTING NEW 0OR
20 RESEARCH DALLAS
30 SALES CHICAGO
$0 OPERATIONS BOSTON
SQL> COMMIT
C&HHA, +&HL*),).
09Q
Captulo 13: Concorr:ncia e Blo!ueio
13.1 Objetivos deste captulo
;ostrar como o Oracle manuseia os bloqueios (locEs).
$i'os e n4%eis de bloqueio.
Bloqueio 'adr&o.
Bloqueio im'l4cito e e('l4cito.
Bloqueio mortal (DeadlocE).
,ste ca'4tulo n&o 'ossui e(erc4cios.
13.2 "ntrodu#$o ao blo!ueio
-ma das maiores tarefas de um sistema gerenciador de banco de dados (SGBD) controlar a
concorr.ncia, ou se5a, o acesso aos mesmos dados 'or %rios usurios. Sem um controle
correto de concorr.ncia os dados 'odem ser atualizados incorretamente ou fora de
seq^.ncia, com'rometendo, 'ortanto, a integridade dos dados.
Oracle resol%e os 'roblemas resultantes das atualiza!"es concorrentes atra%s de bloqueios.
Bloqueios de tabelas e lin*as s&o uma 'arte essencial 'ara manter a consist.ncia e a
integridade do banco de dados.
Bloqueios s&o usados 'ara/
'roteger os dados
controlar os usurios
Bualquer estratgia de bloqueio de%e balancear os ob5eti%os de m(ima concorr.ncia, isto ,
'ermitir o maior nLmero de usurios no sistema, com rela!&o a m(ima 'rote!&o dos dados.
13.3 O !ue / um blo!ueio
O bloqueio o mecanismo que usado 'ara controlar o acesso aos dados em um sistema
multiJusurio, 're%enindo que dois usurios atualizem o mesmo dado ao mesmo tem'o.
13.4 'uando os blo!ueios s$o necess&rios
Bloqueios s&o ati%ados sem're que um usurio come!a a realizar altera!"es no banco de
dados.
O Oracle 'ermite que qualquer nLmero de usurios leiam os dados ao mesmo tem'o, 'orque
os bloqueios n&o s&o necessrios 'ara a leitura.
09S
-surios consultando dados nunca bloqueiam usurios modificando dados, e
usurios modificando dados nunca bloqueiam usurios lendo dados.
13.0 'uando os blo!ueios s$o liberados
Os bloqueios s&o liberados a'@s o >ommit ou o 2ollbacE, ou se5a, no final da transa!&o.
13.2 <ipos de blo!ueios
13.2.1 Blo!ueios do dicion&rio de dados BDD(D
controla o acesso #s defini!"es dos ob5etos do banco de dados.
usado 'ara controlar as o'era!"es SBG que modificam o dicionrio de dados, tais
como, >reate $able, +lter $able, Dro' $able...
controlado automaticamente 'elo SGBD Oracle.
13.2.2 Blo!ueios da manipula#$o de dados BD5(D
controla o acesso aos dados nas tabelas dos usurios.
o Oracle automaticamente bloqueia as tabelas que est&o sendo atualizadas 'elos
usurios (bloqueio im'l4cito).
o usurio 'ode solicitar o bloqueio atra%s de comandos SBG (bloqueio e('l4cito)
,ste ca'4tulo trata de bloqueios causados 'ela D;G.
13.3 1veis de blo!ueio
Bloqueio a n4%el de tabela J toda a tabela bloqueada.
Bloqueio a n4%el de lin*a J somente as lin*as da tabela s&o bloqueadas.
13.4 Descri#$o dos blo!ueios
;odo de bloqueio Se%eridade
>om'artil*ado
pS*are locEso
6ode ser adquirido 'or mais de um usurio 'ara a mesma
tabela ao mesmo tem'o. 6ermite o com'artil*amento do
recurso de'endendo da o'era!&o.
,(clusi%o
p,(clusi%e locEo
6ode ser adquirido 'or a'enas um usurio de cada %ez. O
'rimeiro usurio a adquirir um bloqueio e(clusi%o o
Lnico que 'ode atualizar at o bloqueio e(clusi%o ser
liberado.
)4%eis de Bloqueio Descri!&o
0?<
)4%el de Gin*a
p2o GocEs ($f)o
J -m bloqueio e(clusi%o adquirido 'ara cada lin*a
modificada 'elos comandos I)S,2$, -6D+$,,
D,G,$, ou S,G,>$ FO2 -6D+$,.
J -ma lin*a sem're bloqueada de forma e(clusi%a, 'ara
n&o 'ermitir outros usurios atualizar a mesma lin*a ao
mesmo tem'o.
J Bloqueios de lin*a s&o sem're adquiridos
automaticamente 'elo Oracle quando um dos comandos
listados anteriormente e(ecutado.
)4%el de $abela
p$able GocEs ($;)o
J ,(istem di%ersos modos de bloqueio 'ara tabelas.
J -m bloqueio 'ara a tabela adquirido quando a tabela
modificada 'elos comandos I)S,2$, -6D+$,,
D,G,$,, S,G,>$ FO2 -6D+$, ou GO>\ $+BG,.
J +s o'era!"es de D;G necessitam de bloqueio a n4%el de
tabela 'ara im'edir comandos de DDG serem e(ecutados
sobre uma tabela sendo modificada.
Descri!&o dos modos de bloqueio #s tabelas.
Bloqueio de $abela Descri!&o
2o S*are (2S) J Indica que a transa!&o tem inten!&o de atualizar lin*as
da tabela.
J +dquirido quando um dos comandos S,G,>$ FO2
-6D+$, ou GO>\ $+BG, I) 2OW SX+2, ;OD,
e(ecutado.
J 3 o menos restriti%o dos bloqueios, 'ermitindo o maior
grau de concorr.ncia 'ara a tabela.
J 6ermite/ consultas, inser!"es, atualiza!"es , elimina!&o e
bloqueio de lin*as da mesma tabela.
J )&o 'ermite/ GO>\ $+BG, I) ,f>G-SI=, ;OD,.
2o ,(clusi%e (2f) J Indica que a transa!&o atualizou uma ou mais lin*as da
tabela.
J 3 automaticamente adquirido quando um dos comandos
I)S,2$, -6D+$,, D,G,$, ou GO>\ $+BG, I)
2OW ,f>G-SI=, ;OD, e(ecutado.
J 3 um 'ouco mais restriti%o do que 2o S*are.
J 6ermite/ consultas, inser!"es, atualiza!"es,, elimina!&o e
bloqueios de lin*as na mesma tabela.
J )&o 'ermite/ GO>\ $+BG, I) SX+2, ;OD,,
GO>\ $+BG, I) SX+2, ,f>G-SI=, ;OD, e
GO>\ $+BG, I) ,f>G-SI=, ;OD,.
S*are GocE (S) J 3 ati%ado 'elo comando GO>\ $+BG, I) SX+2,
;OD,.
J 6ermite/ consultas, S,G,>$ FO2 -6D+$, e GO>\
$+BG, I) SX+2, ;OD,.
J )&o 'ermite/ I)S,2$, D,G,$,, -6D+$,, GO>\
$+BG, I) SX+2, 2OW ,f>G-SI=, ;OD,, GO>\
$+BG, I) ,f>G-SI=, ;OD,, GO>\ $+BG, I)
2OW ,f>G-SI=, ;OD,.
S*are 2o ,(clusi%e
(S2f)
J 3 ati%ado 'elo comando GO>\ $+BG, I) SX+2,
2OW ,f>G-SI=, ;OD,.
0?0
J 6ermite/ consultas # tabela e bloqueios atra%s do
comando S,G,>$ FO2 -6D+$,.
J )&o 'ermite/ outras transa!"es atualizar a tabela.
,(clusi%e (f) J 3 ati%ado 'elo comando GO>\ $+BG, I)
,f>G-SI=, ;OD,.
J 3 o mais restriti%o dos bloqueios.
J 6ermite/ consultas # tabela.
J )&o 'ermite/ qualquer o'era!&o de D;G 'or outros
usurios.
+ tabela abai(o indica os modos de bloqueio adquiridos 'elos comandos SBG e as o'era!"es
que estes bloqueios 'ermitem e 'roibem.
D,>G+2+qrO SBG
;odo
de locE
da
tabela
2S 2f S S2f f
S,G,>$ none S S S S S
I)S,2$ 2f S S ) ) )
-6D+$, 2f SI SI ) ) )
D,G,$, 2f SI SI ) ) )
S,G,>$ FO2 -6D+$, 2S SI SI SI SI )
GO>\ $+BG, I) 2OW SX+2,
;OD,
2S S S S S )
GO>\ $+BG, I) 2OW ,f>G-SI=,
;OD,
2f S S ) ) )
GO>\ $+BG, I) SX+2, ;OD, S S ) V ) )
GO>\ $+BG, I) SX+2, 2OW
,f>G-SI=, ;OD,
S2f S ) ) ) )
GO>\ $+BG, I) ,f>G-SI=,
;OD,
f ) ) ) ) )
13.6 Blo!ueios implcitos
2ela!&o dos bloqueios adquiridos automaticamente 'elo Oracle/
>omando GI)X+ $+B,G+
S,G,>$ J J
I)S,2$ f 2f
-6D+$, f 2f
D,G,$, f 2f
S,G,>$ FO2 -6D+$, f 2S
DDG J 2f
13.18 Blo!ueios e-plcitos
0?8
>omando Bloqueio
GO>\ $+BG, tabela I) 2OW SX+2, ;OD, 2S
GO>\ $+BG, tabela I) 2OW ,f>G-SI=, ;OD, 2f
GO>\ $+BG, tabela I) SX+2, ;OD, S
GO>\ $+BG, tabela I) SX+2, ,f>G-SI=, ;OD, S2f
GO>\ $+BG, tabela I) ,f>G-SI=, ;OD, f
13.11 "dentiPica#$o da lin7a e blo!ueio
3 im'ortante e(ecutar os comandos >ommit ou 2ollbacE o quanto antes 'ara liberar os
bloqueios adquiridos 'ela transa!&o.
O 'rocesso de efeti%a!&o 'ode ser acelerado utilizando 2OWID 'ara localizar as lin*as
dentro das tabelas. 2OWID uma 'seudoJcoluna que tem um %alor Lnico 'ara cada lin*a da
tabela. 2OWID contm o endere!o da lin*a, sendo, 'ortanto, o meio mais r'ido de acesso #
uma lin*a.
2OWID <<<<?>S<.<<<0.<<<0
Descri!&o/
Bloco/ <<<<?>S<
Gin*a do bloco/ <<<0
+rqui%o do banco de dados/ <<<0
2OWID uma c*a%e Lnica 'ara uma lin*a de uma tabela,
mesmo que a lin*a este5a re'etida na tabela.
,(em'lo/
COL#MN ROWID NEW91AL#E ROW9IDENT
SELECT ENAME, JOB, HIREDATE, SAL, ROWID
FROM EMP
WHERE ENAME : ;SCOTTY
FOR #PDATE OF JOB, HIREDATE, SAL
#PDATE EMP
SET JOB : ;SALESMANY, HIREDATE : S0SDATE, SAL : !.! / SAL
WHERE ROWID : ;JROW9IDENTY
13.12 "mpasse BDeadlocYD
Imagine a seguinte situa!&o/
0?9
$ransa!&o +/
-6D+$, ,;6 S,$ S+G : 08<< WX,2, ,)+;, : CG,WISD
$ransa!&o B/
-6D+$, D,6$ S,$ GO> : CGO)DO)D WX,2, D,6$)O : 8<
$ransa!&o +/
-6D+$, D,6$ S,$ GO> : C2I>X;O)DD WX,2, D,6$)O : 8<
$ransa!&o B/
-6D+$, ,;6 S,$ S+G : 0PH< WX,2, ,)+;, : CG,WISD
Desta forma/
a transa!&o + s@ 'ode 'rosseguir a'@s a transa!&o B liberar a lin*a da tabela
D,6$ bloqueada
a transa!&o B s@ 'ode 'rosseguir quando a transa!&o + liberar a lin*a da tabela
,;6 bloqueada
ou se5a, temos um caso de D,+DGO>\.
DeadlocEs 'odem ocorrer sem're que dois ou mais usurios est&o acessando as mesmas
tabelas do banco de dados. Ocorre quando o usurio C+D est aguardando a libera!&o de uma
lin*a bloqueada 'elo usurio CBD, e o usurio CBD est na mesma situa!&o com rela!&o ao
usurio C+D.
,sta situa!&o 'ode ser e%itada quando os dois usurios acessando a mesma tabela o fazem na
mesma ordem. Desta forma um segue o outro, n&o *a%endo DeadlocE.
Buando o acesso feito a mais de uma tabela, de%e ser estabelecida uma ordem de acesso #s
tabelas 'ara todas as a'lica!"es. 6ode ser criado 'ara isto uma tabela no banco de dados,
com uma identifica!&o Lnica de sua ordem de acesso. +s tabelas de menor ordem s&o
acessadas 'rimeiro.
$+B,G+ GO>\ S,Bst)>I+
JJJJJJJJJJJJJJJJJJ JJJJJJJJJJ JJJJJJJJJJJJJJJJJJ
,;6 2S 8
D,6$ 2S 0
S+GG2+D, f 0<
0??
Captulo 14 U =is.es
14.1 Objetivos deste captulo
;ostrar a cria!&o e utiliza!&o de %is"es (%ies).
14.2 O !ue / uma vis$o
-ma %is&o como uma 5anela atra%s da qual os dados das tabelas 'odem ser %istos e
alterados.
-ma %is&o deri%ada de uma tabela ou de outra %is&o, a qual c*amada de tabela ou
%is&o base. J uma tabela real com os dados fisicamente armazenados.
-ma %is&o armazenada na forma de um comando S,G,>$ a'enas. 3 uma tabela
%irtual, ou se5a, uma tabela que n&o e(iste fisicamente no banco de dados, mas 'arece
e(istir.
-ma %is&o n&o tem dados 'r@'rios. Os dados s&o mani'ulados a 'artir das tabelas
base.
=is"es s&o Lteis 'elas seguintes raz"es/
2estringir o acesso ao banco de dados. 6ermite en(ergar a'enas 'arte das tabelas.
6ermite aos usurios e(ecutar consultas sim'les 'ara obter resultados de consultas
com'le(as. 6odem ser recu'erados dados de %rias tabelas como se fosse uma Lnica
tabela.
6ro%. inde'end.ncia de dados, 'ermitindo alterar as tabelas base sem afetar as
a'lica!"es dos usurios.
14.3 ClassiPica#$o das vis.es
14.3.1 =is.es simples
dados deri%ados de uma Lnica tabela
n&o contm fun!"es ou dados gru'ados.
14.3.2 =is.es comple-as
dados deri%ados de mLlti'las tabelas
contm fun!"es ou dados gru'ados.
14.4 O comando C;,<, =",A
0?H
Sinta(e/
>2,+$, =I,W nome_da_%ie `(coluna0, coluna8,...)a
+S
S,G,>$ clusula_select
`WI$X >X,>\ O6$IO) `>O)S$2+I)$ nome_da_restri!&oaa
6ara criar uma %is&o sim'les c*amada D0<,;6, a 'artir da tabela ,;6, contendo certos
detal*es dos funcionrios do de'artamento 0</
SQL> CREATE 1IEW D!0EMP
2 AS
3 SELECT EMPNO, ENAME, DEPTNO
$ FROM EMP
" WHERE DEPTNO : !0
6 WITH CHEC OPTION
1A)' +%)?,)-.
6ara recu'erar os dados atra%s da %is&o/
SQL> SELECT /
2 FROM D!0EMP
EMPNO ENAME DEPTNO
------- ---------- -------
7782 CLAR !0
7839 ING !0
793$ MILLER !0
6ara criar uma %is&o com'le(a, c*amada D,6$_S-;;+2V, contendo fun!"es de gru'o e
dados de mais de uma tabela/
CREATE 1IEW DEPT9S#MMAR0 3 NAME, MINSAL, MANSAL, A1GSAL 4
AS
SELECT DNAME, MIN3SAL4, MAN3SAL4, A1G3SAL4
FROM EMP, DEPT
WHERE EMP.DEPTNO : DEPT.DEPTNO
GRO#P B0 DNAME
)ote que nomes alternati%os 'ara as colunas foram es'ecificados na %is&o, o que necessrio
quando os itens da clusula Select n&o est&o de acordo com as regras 'ara nomes de colunas,
ou se alguma coluna deri%ada de uma fun!&o ou e('ress&o.
Buando um alis utilizado 'ara o nome da coluna na clusula Select, n&o necessrio
colocar um nome 'ara a coluna na clusula >reate =ie.
CREATE 1IEW DEPT20
AS
SELECT ENAME, SAL/!2 ANNSAL
FROM EMP
WHERE DEPTNO : 20
0?M
14.0 +sando uma vis$o para opera#.es de D5(
=is"es s&o 'oderosas 'orque 'ermitem realizar %erifica!&o de integridade referencial nos
dados modificados atra%s delas.
+ clusula WI$X >X,>\ O6$IO) es'ecifica que inser!"es e atualiza!"es realizadas
atra%s da %is&o n&o 'odem gerar lin*as que a %is&o n&o 'ode en(ergar. Se na %is&o
D0<,;6 tentarmos inserir um funcionrio do de'artamento 8< um erro gerado.
SQL> INSERT INTO D!0EMP 3 EMPNO, ENAME, DEPTNO 4
2 1AL#ES 3 9999, 8MICHAEL8, 20 4
INSERT INTO D!0EMP 3 EMPNO, ENAME, DEPTNO 4
/
ERROR ?, *AB) !M
ORA-0!$02M KA)' WITH CHEC OPTION 'C)%)-+*?>() KA&*?,A&B
+ %is&o ,;6_D+$+ s@ 'ermite inser!"es ou atualiza!"es se o salrio esti%er na fai(a 0<<<
a 8<<<, o gerente esti%er cadastrado na tabela de em'regados, e o de'artamento esti%er
cadastrado na tabela de de'artamentos.
SQL> CREATE 1IEW EMP9DATA
2 AS
3 SELECT EMPNO, ENAME, JOB, MGR, SAL, DEPTNO
$ FROM EMP
" WHERE SAL BETWEEN !000 AND 2000
6 AND MGR IN 3 SELECT DISTINCT EMPNO FROM EMP 4
7 AND DEPTNO IN 3 SELECT DEPTNO FROM DEPT 4
8 WITH CHEC OPTION
1A)' +%)?,)-.
+ %is&o ,;6_D,$+IGS restringe o acesso aos dados do 'r@'rio usurio, no 'er4odo das P
#s 0P *oras, de segunda a se(taJfeira.
SQL> CREATE 1IEW EMP9DETAILS
2 AS
3 SELECT EMPNO, ENAME, JOB, DEPTNO
$ FROM EMP
" WHERE ENAME : #SER
6 AND TO9CHAR3S0SDATE,8HH2$84 BETWEEN 7 AND !7
7 AND TO9CHAR3S0SDATE,8D84 BETWEEN 2 AND 6
8 WITH CHEC OPTION
1A)' +%)?,)-.
+ restri!&o WI$X >X,>\ O6$IO) 'ode ter um nome 'r@'rio.
SQL> CREATE 1IEW EMPLO0EES 3 ID9N#MBER, NAME, POSITION, DEPARTMENT 4
2 AS
3 SELECT EMPNO, ENAME, JOB, DEPTNO
$ FROM EMP
" WHERE DEPTNO IN 3 SELECT DISTINCT DEPTNO FROM DEPT 4
6 WITH CHEC OPTION CONSTRAINT DEPT9CHEC
1A)' +%)?,)-.
0?P
Buando a %is&o criada, o comando S,G,>$ n&o e(ecutado, o comando
S,G,>$ sim'lesmente armazenado no dicionrio de dados.
Buando os dados s&o acessados atra%s da %is&o, s&o realizadas as seguintes o'era!"es/
2ecu'era!&o da defini!&o da %is&o do dicionrio de dados.
=erifica!&o dos 'ri%ilgios de acesso.
>on%erter a consulta da %is&o em uma o'era!&o equi%alente sobre a(s) tabela(s) base.
+tra%s da %is&o -S,2_=I,WS do dicionrio de dados, a defini!&o da %is&o 'ode ser
recu'erada. +lguns 'aremetros S,$ influenciam no te(to mostrado/
;a(data
+rraAsize
Gong
SQL> DESCRIBE #SER91IEWS
N?H) N>**T TQL)
------------------------------- -------- ----
1IEW9NAME NOT N#LL CHAR3304
TENT9LENGTH N#MBER
TENT LONG
SQL> COL#MN 1IEW9NAME FORMAT A!"
SQL> COL#MN TENT FORMAT A"0
SQL> SELECT /
2 FROM #SER91IEWS
1IEW9NAME TENT9LENGTH TENT
--------------- ----------- -------------------------------------------
D!0EMP 73 SELECT EMPNO, ENAME, DEPTNO
FROM EMP
WHERE DEPTNO : !0
WITH CHEC OPTION

EMPLO0EES !!3 SELECT EMPNO, ENAME, JOB, DEPTNO
FROM EMP
WHERE DEPTNO IN 3 SELECT DISTINCT DEPT

EMP9DATA !90 SELECT EMPNO, ENAME, JOB, MGR, SAL, DEPTNO
FROM EMP
WHERE SAL BETWEEN !000 AND 2

EMP9DETAILS !6" SELECT EMPNO, ENAME, JOB, DEPTNO
FROM EMP
WHERE ENAME : #SER
AND TO9CHAR3S0SDATE

SALES 29! SELECT REPID,ORD.C#STID,C#STOMER.NAME C#STNAME
0?Q
PROD#CT.PRODID,
DESCRIP PRODNA
14.2 lterando dados atrav/s das vis.es
+s seguintes restri!"es se a'licam quando os dados s&o alterados atra%s das %is"es/
,limina!&o 'roibida de a %is&o contm/
7un!&o.
Fun!"es de gru'o.
>lusula G2O-6 BV.
>lusula DIS$I)>$.
>oluna 2OW)-;.
SubJconsulta correlacionada.
+tualiza!&o 'roibida se a %is&o contm/
+lguma das condi!"es anteriores.
>olunas definidas 'or e('ress&o.
Inser!&o 'roibida se a %is&o contm/
+lguma das condi!"es acima.
>oluna )O$ )-GG da tabela que n&o consta da %is&o.
14.3 ,limina#$o de vis.es
+s %is"es s&o eliminadas atra%s do comando pD2O6 =I,W nome_da_%is&oo.
SQL> DROP 1IEW D!0EMP
1A)' -%&LL)-.
SQL> DROP 1IEW EMPLO0EES
1A)' -%&LL)-.
SQL> DROP 1IEW EMP9DATA
1A)' -%&LL)-.
SQL> DROP 1IEW EMP9DETAILS
1A)' -%&LL)-.
0?S
14.4 ,-erccios
a) >riar uma %is&o que 'roduza o seguinte resultado.
SQL> SELECT / FROM AGGREGATES
DEPTNO A1ERAGE MANIM#M MINIM#M S#M NO9SALS NO9COMMS
------- ------- ------- ------- ------- ------- --------
!0 29!6.67 "000 !300 87"0 3 0
20 2!7" 3000 800 !087" " 0
30 !"66.67 28"0 9"0 9$00 6 $
b) -tilizando a %is&o do e(erc4cio anterior, e(trair as seguintes informa!"es. O nLmero do
em'regado de%e ser solicitado em tem'o de e(ecu!&o.
EMPNO ENAME JOB SAL HIREDATE MINIM#M MANIM#M A1ERAGE
------- ------ --------- ------- --------- ------- ------- -------
7902 FORD ANAL0ST 3,000 0"-DEC-83 800 3,000 2,!7"
c) >riar uma %is&o que garanta as seguintes restri!"es ao se inserir dados na tabela
+SSIG);,)$S/
J nLmero do 'ro5eto menor do que 8<<<.
J $rmino do 'ro5eto a'@s o in4cio do 'ro5eto.
J +SSIG)_$V6, %lidos s&o 6F, W$ e ,D.
J BIGG_2+$, menor do que H< 'ara +SSIG)_$V6, 6F.
BIGG_2+$, menor do que M< 'ara +SSIG)_$V6, W$.
BIGG_2+$, menor do que P< 'ara +SSIG)_$V6, ,D.
J O nLmero do em'regado de%e ser %lido.
J )&o esque!a a clusula WI$X >X,>\ O6$IO)
SQL> SELECT / FROM ASG91AL
PROJID EMPNO A9START9D A9END9DAT BILL9RATE AS HO#RS
------- ------- --------- --------- --------- -- -------
! 7369 0!-JAN-88 03-JAN-88 "0 WT !"
2 78$$ 0!-JAN-89 !0-JAN-89 $"." PF 30
! 7902 0$-JAN-88 07-JAN-88 "" WT 20
d) Inserir %alores na tabela +SSIG);,)$S atra%s da %is&o criada.
EB,)% K?*>) D&% A-M !
EB,)% K?*>) D&% )HLB&M 7"66
EB,)% K?*>) D&% (,?%,M 0!-JAN-89
EB,)% K?*>) D&% )B-M 0!-JAN-88
EB,)% K?*>) D&% @A**9%M$0.00
0H<
EB,)% K?*>) D&% ?(E,M ED
EB,)% K?*>) D&% C&>%(M 20
&*- 3M 3JID,JEMPNO,8JSTART8,8JEND8,8JBILL9R8,8JASGT8,JHO#RS4
B)' 3M 3!,7"66,80!-JAN-898,80!-JAN-888,8$0.008,8ED8,204
3!,7"66,80!-JAN-898,80!-JAN-888,8$0.008,8ED8,204
/
ERROR ?, *AB) 3M
ORA-0!$02M KA)' WITH CHEC OPTION 'C)%)-+*?>() KA&*?,A&B
SQL> P
EB,)% K?*>) D&% A-M 2
EB,)% K?*>) D&% )HLB&M 7698
EB,)% K?*>) D&% (,?%,M 0!-FEB-89
EB,)% K?*>) D&% )B-M 20-FEB-89
EB,)% K?*>) D&% @A**9%M"".00
EB,)% K?*>) D&% ?(E,M WT
EB,)% K?*>) D&% C&>%(M 30
&*- 3M 3JID,JEMPNO,8JSTART8,8JEND8,8JBILL9R8,8JASGT8,JHO#RS4
B)' 3M 32,7698,80!-FEB-898,820-FEB-898,8"".008,8WT8,304
! %&' +%)?,)-.
SQL> P
EB,)% K?*>) D&% A-M 2
EB,)% K?*>) D&% )HLB&M 8000
EB,)% K?*>) D&% (,?%,M 0!-MAR-89
EB,)% K?*>) D&% )B-M 3!-DEC-89
EB,)% K?*>) D&% @A**9%M69.00
EB,)% K?*>) D&% ?(E,M ED
EB,)% K?*>) D&% C&>%(M $0
&*- 3M 3JID,JEMPNO,8JSTART8,8JEND8,8JBILL9R8,8JASGT8,JHO#RS4
B)' 3M 32,8000,80!-MAR-898,83!-DEC-898,869.008,8ED8,$04
32,8000,80!-MAR-898,83!-DEC-898,869.008,8ED8,$04
/
ERROR ?, *AB) 3M
ORA-0!$02M KA)' WITH CHEC OPTION 'C)%)-+*?>() KA&*?,A&B
e) >onsulte o dicionrio de dados 'ara %er a clusula S,G,>$ da %is&o.
0H0
14.6 ;espostas dos e-erccios
?4
SQL> CREATE 1IEW AGGREGATES
2 3DEPTNO, A1ERAGE, MANIM#M, MINIM#M, S#M, NO9SALS, NO9COMMS4
3 AS
$ SELECT DEPTNO, A1G3SAL4, MAN3SAL4, MIN3SAL4,
" S#M3SAL4, CO#NT3SAL4, CO#NT3COMM4
6 FROM EMP
7 GRO#P B0 DEPTNO
@4
SQL> COL#MN MANIM#M FORMAT 99,999
SQL> COL#MN MINIM#M LIE MANIM#M
SQL> COL#MN A1ERAGE LIE MANIM#M
SQL> COL#MN SAL LIE MANIM#M
SQL> COL#M JOB FORMAT A9
SQL> COL#MN ENAME FORMAT A6
SQL> SELECT EMP.EMPNO, ENAME, JOB, SAL, HIREDATE,
2 MINIM#M, MANIM#M, A1ERAGE
3 FROM EMP, AGGREGATES AGG
$ WHERE EMP.DEPTNO : AGG.DEPTNO
" AND EMP.EMPNO : JEMPNO
EB,)% K?*>) D&% )HLB&M 7902
&*- "M AND EMP.EMPNO : JEMPNO
B)' "M AND EMP.EMPNO : 7902
+4
SQL> CREATE 1IEW ASG91AL
2 AS
3 SELECT PROJID, EMPNO, A9START9DATE, A9END9DATE,
$ BILL9RATE, ASSIGN9T0PE, HO#RS
" FROM ASSIGNMENTS
6 WHERE A9START9DATE O A9END9DATE
7 AND PROJID O 2000
8 AND BILL9RATE O: DECODE3ASSIGN9T0PE, 8PF8, "0, 8WT8, 60, 704
9 AND ASSIGN9T0PE IN 38PF8,8WT8, 8ED84
!0 AND EMPNO IN 3SELECT EMPNO FROM EMP4
!! WITH CHEC OPTION
-4
SQL> INSERT INTO ASG91AL
2 1AL#ES
3 3JID,JEMPNO,8JSTART8,8JEND8,8JBILL9R8,8JASGT8,JHO#RS4
)4
SQL> SELECT 1IEW9NAME, TENT
2 FROM #SER91IEWS
3 WHERE 1IEW9NAME : ;ASG91ALY
1IEW9NAME TENT
--------------- --------------------------------------------------
ASG91AL SELECT PROJID, EMPNO, A9START9DATE, A9END9DATE,
BILL9RATE, ASSIGN9T0PE, HO#RS
FR........
0H8
Captulo 16 U Zndices
16.1 Objetivos deste captulo
;ostrar a cria!&o e a utilidade dos 4ndices.
16.2 @inalidades dos ndices
Os 4ndices do Oracle t.m duas finalidades 'rinci'ais.
J Otimizar o tem'o de res'osta de uma consulta.
J Garantir unicidade de %alores 'ara uma coluna ou con5unto de colunas.
+ utiliza!&o de 4ndices altamente recomendada 'ara obter mel*or desem'en*o, e
geralmente um dos 'rimeiros 4ndices a serem criados na tabela o da c*a%e 'rimria.
Os 4ndices s&o criados, normalmente, 'elos donos das tabelas, mas qualquer usurio que
ten*a 'ri%ilgio de 4ndice sobre a tabela tambm 'ode criar 4ndices 'ara a tabela.
-ma %ez criado, o 4ndice ser utilizado 'elo Oracle, sem're que for 'oss4%el, 'ara acelerar o
acesso aos dados. )ote que os 4ndices s&o utilizados automaticamente, sem requerer
qualquer a!&o 'or 'arte do usurio, que nem 'recisa saber da e(ist.ncia dos 4ndices.
16.3 ,strutura dos ndices
O Oracle utiliza r%ores binrias balanceadas 'ara os 4ndices, o que garante o mesmo tem'o,
a'ro(imadamente, 'ara o acesso a qualquer lin*a da tabela, inde'endente de sua 'osi!&o. O
tem'o de acesso tambm bastante inde'endente do %olume de dados inde(ados.
16.4 <ipos de ndices
-)IB-,
Garante que os %alores es'ecificados 'ara a(s) coluna(s) s&o Lnicos.
)O) -)IB-,
3 o 'adr&o, usado 'ara mel*orar o tem'o de acesso.
SI)GG, >OG-;)
undice com'osto de a'enas uma coluna.
>O)>+$,)+$,D
undice com'osto de at 0M colunas.
16.0 Cria#$o dos ndices
0H9
Os 4ndices s&o criados 5untamente com as tabelas, ou atra%s do comando/
>2,+$, `-)IB-,a I)D,f nomeJdoJ4ndice
O) nomeJdaJtabela (coluna0, `,coluna8...a)
16.0.1 Cria#$o de um ndice para mel7orar o acesso.
6ara criar um 4ndice c*amado ,)+;,_IDf 'ara mel*orar o tem'o de acesso das consultas
feitas atra%s do nome do funcionrio/
>2,+$, I)D,f ,)+;,_IDf
O) ,;6(,)+;,)
16.0.2 Cria#$o de um ndice para Karantir unicidade.
6ara e%itar a du'lica!&o do nome do de'artamento/
>2,+$, -)IB-, I)D,f D)+;,_IDf
O) D,6$(D)+;,)
O 4ndice abai(o garante que n&o * du'licidade do 'ar fornecedor1material fornecido.
>2,+$, -)IB-, I)D,f FO2),>_IDf
O) FO2),>I;,)$O ()-;_FO2),>,DO2, )-;J;+$,2I+G)
16.2 ,limina#$o dos ndices
Os 4ndices s&o eliminados atra%s do comando/
D2O6 I)D,f nomeJdoJ4ndice
16.3 'uando um ndice / utiliTado
O Oracle decide quando a'ro'riado utilizar um 4ndice. O Oracle sabe quais colunas est&o
inde(adas e o ti'o do 4ndice, e decide de acordo com regras es'ec4ficas.
a) + coluna inde(ada de%e ser referenciada na clusula W*ere.
+ consulta mostrada abai(o n&o utiliza 4ndice 'orque n&o 'ossui clusula W*ere.
S,G,>$ ,)+;,, 7OB, S+G
F2O; ,;6
+ consulta abai(o utiliza o 4ndice criado 'ara a coluna ,)+;,/
S,G,>$ I
F2O; ,;6
WX,2, ,)+;, : C7O),SD
b) O 4ndice n&o utilizado se a coluna referenciada na clusula W*ere 'arte de uma fun!&o
ou de uma e('ress&o.
0H?
)o e(em'lo abai(o o 4ndice n&o utilizado 'orque a coluna ,)+;, 'arte de uma fun!&o/
S,G,>$ I
F2O; ,;6
WX,2, -66,2(,)+;,) : C7O),SD
)o e(em'lo abai(o o 4ndice n&o utilizado 'orque a coluna 'arte de uma e('ress&o/
S,G,>$ I
F2O; ,;6
WX,2, XI2,D+$,OP : C<0J7+)JQ?D
16.4 Zndices e Sun#.es
Se n&o e(istirem 4ndices nas colunas utilizadas 'ara realizar a 5un!&o equi%alente, o Oracle
obrigado a realizar uma o'era!&o de SO2$1;,2G, 'ara res'onder a consulta. Isto significa
que cada tabela ordenada se'aradamente, e de'ois as duas s&o unidas de acordo com a
condi!&o de 5un!&o.
16.6 SuKest.es para cria#$o dos ndices
+s colunas que n&o 'ermitem %alores du'licados de%em ser inde(adas.
+s colunas que s&o utilizadas *abitualmente na clusula W*ere de%em ser inde(adas.
+s colunas utilizadas nas condi!"es de 5un!&o equi%alente de%em ser inde(adas.
)&o de%em ser utilizados mais de 9 4ndices 'or tabela 'ara n&o 're5udicar as o'era!"es
realizadas atra%s das o'era!"es de D;G.
16.18 ,-erccios
a) >riar um 4ndice Lnico na coluna 62O7ID da tabela 62O7,>$S. $este o 4ndice inserindo
um %alor 'ara 62O7ID 5 e(istente.
b) >riar um 4ndice n&o Lnico na coluna 62O7ID da tabela +SSIG);,)$S.
c) >onsulte o dicionrio de dados 'ara obter as informa!"es de seus 4ndices.
0HH
16.11 ;espostas dos e-erccios
?4 CREATE #NIQ#E INDEN PROJ9PROJID
ON PROJECTS3PROJID4
@4 CREATE INDEN ASG9PROJID
ON ASSIGNMENTS3PROJID4
+4 SELECT /
FROM #SER9INDENES
0HM
Captulo 28: Se!H:ncias
28.1 Objetivos deste captulo
;ostrar a cria!&o e a utiliza!&o das seq^.ncias.
28.2 O Kerador de se!H:ncias
O gerador de seq^.ncias do Oracle utilizado 'ara gerar automaticamente seq^.ncias de
nLmeros 'ara as lin*as das tabelas.
6ara gerar os nLmeros seq^enciais automaticamente, 'rimeiro a seq^.ncia de%e ser definida
utilizando a declara!&o >2,+$, S,B-,)>,, conforme a sinta(e mostrada abai(o/
>2,+$, S,B-,)>, `esquema.anomeJdaJseq^.ncia
`I)>2,;,)$,D BV na
`S$+2$ WI$X na
`;+f=+G-, n R )O;+f=+G-,a
`;I)=+G-, n R )O;I)=+G-,a
esquema identifica!&o do dono da seq^.ncia.
nomeJdaJseq^.ncia nome %lido 'ara a seq^.ncia.
I)>2,;,)$ WI$X incremento 'ositi%o ou negati%o. 6adr&o/ 0.
S$+2$ WI$X 'rimeiro nLmero a ser gerado. 6adr&o/ 0.
;I)=+G-,R)O;I)=+G-, menor %alor a ser gerado. 6adr&o/ 0 'ara seq^.ncias
ascendentes, 0<II8PJ0 'ara seq^.ncias descendentes.
;+f=+G-,R)O;+f=+G-, maior %alor a ser gerado. 6adr&o/ 0 'ara seq^.ncias
descendentes, 0<II8PJ0 'ara seq^.ncias ascendentes.
6ara um usurio 'oder criar uma seq^.ncia de%e 'ossuir o 'ri%ilgio de CresourceD. O
comando mostrada abai(o cria uma seq^.ncia 'ara a coluna D,6$)O da tabela D,6$.
CREATE SEQ#ENCE DEPT9SEQ
INCREMENT B0 !0
START WITH !0
MAN1AL#E !0000
28.1 Gera#$o de n9meros se!Henciais com 1,I<=(
+ 'seudoJcoluna ),f$=+G utilizada 'ara gerar nLmeros seq^enciais sucessi%os de uma
seq^.ncia es'ecificada. Buando a coluna ),f$=+G es'ecificada um no%o nLmero
seq^encial gerado.
SELECT DEPT9SEQ.NENT1AL
FROM S0S.D#AL
NENT1AL
-------
!0
Se o comando for e(ecutado no%amente, o %alor incrementado de 0<.
0HP
SELECT DEPT9SEQ.NENT1AL
FROM S0S.D#AL
NENT1AL
-------
20
$odo os %alores subsequentes ser&o incrementados de 0<.
)otas/
+ coluna ),f$=+G sem're de%e ser 'refi(ada 'elo nome da seq^.ncia.
Se a coluna ),f$=+G for referenciada di%ersas %ezes dentro do mesmo comando
SBG, todas as refer.ncias retornam o mesmo %alor.
+ coluna ),f$=+G mais Ltil em comandos de D;G. 6or e(em'lo, quando s&o inseridas
lin*as na tabela, a seq^.ncia 'ode ser utilizada 'ara gerar %alores Lnicos 'ara a c*a%e
'rimria.
INSERT INTO DEPT
1AL#ES
3DEPT9SEQ.NENT1AL, ;ACCO#NTINGY, ;NEW 0ORY4
Buando o nLmero seq^encial gerado, a seq^.ncia incrementada inde'endentemente de
*a%er um >ommit ou um 2ollbacE 'ara a transa!&o. Buando dois usurios acessam a mesma
seq^.ncia ao mesmo tem'o, os dois usurios 'odem %er descontinuidades na seq^.ncia,
de%ido a %alores gerados 'ara o outro usurio que ainda n&o receberam o >ommit. Os
nLmeros 'roduzidos 'elo gerador de seq^.ncias 'odem ser saltados de%ido a 2ollbacEs.
28.1 =alor atual da se!H:ncia
6ara se referir ao %alor atual da seq^.ncia, 'ode ser utilizada a 'seudoJcoluna >-22=+G.
$oda %ez que a 'seudoJcoluna ),f$=+G utilizada, o %alor gerado armazenado em
>-22=+G, que s@ 'ode ser utilizada a'@s ),f$=+G ser referenciado na sess&o atual do
usurio.
INSERT INTO DEPT9HISTOR0
1AL#ES
3DEPT9SEQ.C#RR1AL, ;ACCO#NTINGY, ;NEW 0ORY4
28.2 ;eKras para utiliTar C+;;=( , 1,I<=(
>urr%al e )e(t%al 'odem ser utilizados na/
>lusula S,G,>$ da declara!&o S,G,>$ (e(ceto 'ara %is"es).
Gista de %alores da declara!&o I)S,2$.
>lusula S,$ da declara!&o -6D+$,.
S,G,>$ mais e(terno (consulta 'rinci'al) de uma subconsulta.
0HQ
>urr%al e )e(t%al n&o 'odem ser utilizados/
,m %is"es.
>om a 'ala%ra c*a%e DIS$I)>$.
>om as clusulas Order BA, Grou' BA, >onnect BA, ou Xa%ing da declara!&o
S,G,>$.
>om os o'eradores Intersect, -nion e ;inus.
Dentro de uma consulta interna.
Seq^.ncias s&o tratadas de maneira similar #s tabelas, 'odendo ser alteradas e eliminadas. O
dono de uma seq^.ncia 'ode conceder 'ri%ilgios a outros usurios.
28.3 lterando uma se!H:ncia
O comando +G$,2 S,B-,)>, utilizado 'ara modificar uma seq^.ncia e(istente.
+G$,2 S,B-,)>, `esquema.anomeJdaJsequencia
`I)>2,;,)$ BV na
`;+f=+G-, n R )O;+f=+G-,a
`;I)=+G-, n R )O;I)=+G-,a
6or e(em'lo, 'ara modificar o %alor m(imo 'ara a seq^.ncia D,6$_S,B/
ALTER SEQ#ENCE -)L,9()=
MAN1AL#E !00000
)otas/
Somente os nLmeros a serem gerados no futuro s&o alterados 'elo comando +lter
Sequence. Os nLmeros que 5 foram gerados n&o s&o alterados.
=alida!"es s&o realizadas. )&o 'ode ser es'ecificado, 'or e(em'lo, um no%o %alor
m(imo menor que o %alor corrente.
O 'aremetro S$+2$ WI$X n&o 'ode ser alterado 'elo comando +lter Sequence.
+ seq^.ncia de%e ser eliminada e recriada 'ara ser iniciada com um no%o nLmero.
28.4 Concedendo privil/Kios em se!H:ncias
O dono de uma seq^.ncia 'ode conceder os 'ri%ilgios Select e +lter.
28.0 ,liminando uma se!H:ncia
O comando Dro' Sequence remo%e a defini!&o da seq^.ncia do dicionrio de dados.
D2O6 S,B-,)>, `esquema.anomeJdaJseq^.ncia
0HS
+'enas o dono da seq^.ncia e o DB+ 'odem utilizar este comando.
28.2 (istando se!H:ncias
+s %is"es -S,2_S,B-,)>,S ou +GG_S,B-,)>,S 'odem ser utilizadas 'ara descobrir
as seq^.ncias e(istentes.
0M<
p:ndice U <abelas do Curso
$abela ,;6 J ,m'regados
,;6)O ,)+;, 7OB ;G2 XI2,D+$, S+G >O;; D,6$)O
P9MS S;I$X >G,2\ PS<8 09J7-)JQ9 Q<< 8<
P?SS +GG,) S+G,S;+) PMSQ 0HJ+-GJQ9 0M<< 9<< 9<
PH80 W+2D S+G,S;+) PMSQ 8MJ;+2JQ9 08H< H< 9<
PHMM 7O),S ;+)+G,2 PQ9S 90JO>$JQ9 8SPH 8<
PMH? ;+2$I) S+G,S;+) PMSQ <HJD,>JQ9 08H< 0?<< 9<
PMSQ BG+\, ;+)+G,2 PQ9S 00J7-)JQ? 8QH< 9<
PPQ8 >G+2\ ;+)+G,2 PQ9S 0?J;+VJQ? 8?H< 0<
PPQQ S>O$$ +)+GVS$ PHMM <HJ;+2JQ? 9<<< 8<
PQ9S \I)G 62,SID,)$ <SJ7-GJQ? H<<< 0<
PQ?? $-2),2 S+G,S;+) PMSQ <?J7-)JQ? 0H<< < 9<
PQPM +D+;S >G,2\ PPQQ <?J7-)JQ? 00<< 8<
PS<< 7+;,S >G,2\ PMSQ 89J7-GJQ? SH< 9<
PS<8 FO2D +)+GVS$ PHMM <HJD,>JQ9 9<<< 8<
PS9? ;IGG,2 >G,2\ PPQ8 80J)O=JQ9 09<< 0<
$abela D,6$ J De'artamentos
D,6$)O D)+;, GO>
0< +>>O-)$I)G ),W VO2\
8< 2,S,+2>X D+GG+S
9< S+G,S >XI>+GO
?< O6,2+$IO)S BOS$O)
$abela S+GG2+D, J Fai(as Salariais
G2+D, GOS+G XIS+G
0 P<< 08<<
8 08<0 0?<<
9 0?<0 8<<<
? 8<<0 9<<<
H 9<<0 SSSS
0M0
C*Z<+(O 1: CO1C,"<OS D, B1CO D, DDOS.........................................................................................1
0.0 OB7,$I=OS D,S$, >+6u$-GO............................................................................................................................. 0
0.8 SIS$,;+ D, G,2,)>I+;,)$O D, B+)>O D, D+DOS........................................................................................ 0
0.9 B+)>O D, D+DOS 2,G+>IO)+G........................................................................................................................ 0
0.? +2B-I$,$-2+ DO O2+>G,............................................................................................................................... ?
C*Z<+(O 2: "1<;OD+[\O ]S CO1S+(<S.................................................................................................2
8.0 OB7,$I=OS D,S$, >+6u$-GO............................................................................................................................. M
8.8 O -$IGI$v2IO SBGI6G-S................................................................................................................................ M
8.9 >O)S$2-qrO BvSI>+ D, -;+ >O)S-G$+......................................................................................................... M
8.? ,f62,SSw,S +2I$;3$I>+S............................................................................................................................... P
8.H )O;,S +G$,2)+$I=OS 6+2+ $u$-GOS D, >OG-)+S.......................................................................................... S
8.M O O6,2+DO2 D, >O)>+$,)+qrO..................................................................................................................... S
8.P GI$,2+IS........................................................................................................................................................ 0<
8.Q ;+)-S,IO D, =+GO2,S )-GOS....................................................................................................................... 00
8.S ,GI;I)+qrO D, GI)X+S D-6GI>+D+S.............................................................................................................. 08
8.0< O2D,)+qrO D+S GI)X+S............................................................................................................................. 09
8.00 >2I$32IOS D, 6,SB-IS+............................................................................................................................... 0?
8.08 >O)S-G$+S >O; >O)DIqw,S ;hG$I6G+S...................................................................................................... 0Q
8.09 62,>,Dt)>I+ DOS O6,2+DO2,S................................................................................................................... 8<
8.0? 2,S-;O DO >O;+)DO S,G,>$.................................................................................................................. 8<
8.0H ,f,2>u>IOS................................................................................................................................................. 8<
8.0M 2,S6OS$+S DOS ,f,2>u>IOS......................................................................................................................... 89
C*Z<+(O 3: =;"V=,"S D, S+BS<"<+"[\O..............................................................................................20
9.0 OB7,$I=OS D,S$, >+6u$-GO........................................................................................................................... 8H
9.8 =+2Iv=,IS D, S-BS$I$-IqrO >O; -; NdN..................................................................................................... 8H
9.9 =+2Iv=,IS D, S-BS$I$-IqrO >O; DOIS NdN................................................................................................... 8H
C*Z<+(O 4: @+1[^,S 1+5_;"CS , D, C;C<,;,S.......................................................................22
?.0 OB7,$I=OS D,S$, >+6u$-GO........................................................................................................................... 8M
?.8 F-)qw,S B-, ;+)I6-G+; >+2+>$,2,S........................................................................................................ 8M
:$9$8 LO%ER=coluna > l('eral;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$95
:$9$9 !!ER=coluna > l('eral;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$95
:$9$? /0/TCA!=coluna > l('eral;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$95
:$9$: L!A@=coluna > l('eral- 'aman,o- Acarac'erA;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$95
:$9$B R!A@=coluna > l('eral- 'aman,o- Acarac'erA;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9C
:$9$5 S"STR=coluna > l('eral- pos(o- compr(men'o;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9C
:$9$C /0STR=coluna > l('eral- DseqEFnc(a de carac'eresA- pos(o- n;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9C
:$9$6 LTR/G=coluna > l('eral- Acarac'eresA;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$96
:$9$H RTR/G=coluna > l('eral- Acarac'eresA;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$96
:$9$87 SO0@EI=coluna > l('eral;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$96
:$9$88 LE0GT&=coluna > l('eral;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9H
:$9$89 TRA0SLATE=coluna > l('eral- de- para;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9H
:$9$8? RE!LACE=coluna > l('eral- de- para;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$9H
:$9$8: 4un*es an(n,adas$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?7
?.9 F-)qw,S )-;32I>+S..................................................................................................................................... 90
:$?$8 RO0@=coluna > l('eral- n;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?8
:$?$9 TR0C=coluna > l('eral- n;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?8
:$?$? CE/L=coluna > l('eral;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?8
:$?$: 4LOOR=coluna > l('eral;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?8
:$?$B !O%ER=coluna > l('eral- n;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?9
:$?$5 EI!=coluna > l('eral;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?9
:$?$C LOG=+ase- coluna > l('eral;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?9
:$?$6 L0=coluna > l('eral;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?9
:$?$H SJRT=coluna > l('eral;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$??
:$?$87 S/G0=coluna > l('eral;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$??
:$?$88 A"S=coluna > l('eral;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$??
:$?$89 GO@=valor8- valor9;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?:
:$?$8? 4un*es 'r(gonom'r(cas$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?:
:$?$8: 4un*es ,(per+Kl(cas$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?:
?.? ,f,2>u>IOS................................................................................................................................................... 9?
0M8
?.H 2,S6OS$+S DOS ,f,2>u>IOS........................................................................................................................... 9P
C*Z<+(O 0: @+1[^,S D, D< , D, CO1=,;S\O................................................................................34
H.0 OB7,$I=OS D,S$, >+6u$-GO........................................................................................................................... 9Q
H.8 F-)qw,S B-, ;+)I6-G+; D+$+S.................................................................................................................. 9Q
B$9$8 S#S@ATE$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?6
B$9$9 Ar('m'(ca de da'as$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?6
B$9$? GO0T&S<"ET%EE0=da'a8-da'a9;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?6
B$9$: A@@<GO0T&S=da'a- meses;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?H
B$9$B 0EIT<@A#=da'a- d(a<da<semana;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?H
B$9$5 LAST<@A#=da'a;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$?H
B$9$C RO0@=da'a;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$:7
B$9$C TR0C=da'a;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$:7
H.9 F-)qw,S D, >O)=,2SrO............................................................................................................................... ?<
B$?$8 4orma'os de @a'a$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$:7
B$?$9 TO<C&AR=n1mero>da'a-LAforma'oAM;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$:8
B$?$? 4orma'os 0umr(cos$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$:9
B$?$: TO<0G"ER=cade(a<de<carac'eres;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$:?
B$?$B TO<@ATE=Acade(a<de<carac'eresA-Aforma'oA;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$:?
H.? F-)qw,S B-, +>,I$+; B-+GB-,2 $I6O D, D+DO.......................................................................................... ?9
B$:$8 @ECO@E=coluna>expresso-pes8-res8-Lpes9-res9-$$$M-defaul';$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$:?
B$:$9 0.L=coluna>valor- valor;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$:B
B$:$? GREATEST=coluna>valor- coluna>valor-$$$;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$:B
B$:$: LEAST=coluna>valor- coluna>valor-$$$;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$:5
B$:$B .S/NE=coluna>valor;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$:5
B$:$B 4un*es an(n,adas rev(s('adas$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$:5
H.H ,f,2>u>IOS................................................................................................................................................... ?M
H.M 2,S6OS$+S DOS ,f,2>u>IOS........................................................................................................................... ?S
C*"<+(O 2: @+1[^,S D, G;+*O..................................................................................................................08
M.0 OB7,$I=OS D,S$, >+6u$-GO........................................................................................................................... H<
M.8 F-)qw,S DIS6O)u=,IS.................................................................................................................................... H<
M.9 -S+)DO F-)qw,S D, G2-6O.......................................................................................................................... H<
M.? + >Gv-S-G+ G2O-6 BV.............................................................................................................................. H0
M.H ,f>G-I)DO GI)X+S DOS G2-6OS.................................................................................................................... H0
M.M G2-6OS D,)$2O D, G2-6OS.......................................................................................................................... H8
M.P F-)qw,S D, G2-6O , 2,S-G$+DOS I)DI=ID-+IS............................................................................................. H8
M.Q + >Gv-S-G+ X+=I)G.................................................................................................................................. H9
M.S O2D,; D+S >Gv-S-G+S................................................................................................................................. H?
M.0< ,f,2>u>IOS................................................................................................................................................. HH
M.00 2,S6OS$+S DOS ,f,2>u>IOS......................................................................................................................... HP
C*Z<+(O 3: ,I<;"1DO DDOS D, 5"S D, +5 <B,(..............................................................04
P.0 OB7,$I=OS D,S$, >+6u$-GO........................................................................................................................... HQ
P.8 7-)qw,S ,B-I=+G,)$,S................................................................................................................................. HQ
P.9 62OD-$O....................................................................................................................................................... HS
P.? 7-)qw,S )rO ,B-I=+G,)$,S......................................................................................................................... HS
P.H 2,G2+ 6+2+ 7-)qrO D, $+B,G+S.................................................................................................................. M<
P.M S-;v2IO D+ SI)$+f,.................................................................................................................................... M<
P.P ,f,2>u>IOS................................................................................................................................................... M<
P.Q SOG-qrO DOS ,f,2>u>IOS............................................................................................................................. M9
C*Z<+(O 4: O+<;OS 5_<ODOS D, S+1[\O............................................................................................24
Q.0 OB7,$I=OS D,S$, >+6u$-GO........................................................................................................................... M?
Q.8 7-)qw,S ,f$,2)+S........................................................................................................................................ M?
Q.9 7-)qrO D, -;+ $+B,G+ >O; ,G+ ;,S;O...................................................................................................... M?
Q.? 7-)qw,S =,2$I>+IS........................................................................................................................................ MH
6$:$8 n(o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$5B
6$:$9 /n'erseo$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$5B
6$:$? Su+'rao$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$55
6$:$: Com+(nao de operadores$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$55
6$:$B A clusula OR@ER "#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$55
6$:$5 Regras para u'(l()ar 3un*es ver'(ca(s$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$55
0M9
Q.H ,f,2>u>IOS................................................................................................................................................... MP
Q.M 2,S6OS$+S DOS ,f,2>u>IOS........................................................................................................................... MS
C*Z<+(O 6: CO1S+(<S 1"1JDS.........................................................................................................38
S.0 OB7,$I=OS D,S$, >+6u$-GO........................................................................................................................... P<
S.8 D,FI)IqrO D, >O)S-G$+S +)I)X+D+S........................................................................................................... P<
S.9 >O)S-G$+S I)$,2)+S B-, 2,$O2)+; +6,)+S -; =+GO2............................................................................. P<
S.? >O;O +S >O)S-G$+S +)I)X+D+S SrO ,f,>-$+D+S...................................................................................... P0
S.H >O)S-G$+S I)$,2)+S B-, 2,$O2)+; ;+IS D, -; =+GO2............................................................................. P0
S.M O6,2+DO2,S +)V , +GG............................................................................................................................. P8
S.P >Gv-S-G+ X+=I)G >O; >O)S-G$+S +)I)X+D+S......................................................................................... P9
S.Q O2D,)+qrO ,; >O)S-G$+S +)I)X+D+S........................................................................................................ P?
S.S GI;I$, 6+2+ O +)I)X+;,)$O....................................................................................................................... P?
S.0< >O)S-G$+ I)$,2)+ >O22,G+>IO)+D+........................................................................................................ P?
S.00 O O6,2+DO2 ,fIS$S.................................................................................................................................. PH
S.08 ,f,2>u>IOS................................................................................................................................................. PM
S.09 2,S6OS$+ DOS ,f,2>u>IOS........................................................................................................................... PS
C*Z<+(O 18: G,;[\O D, ;,(<`;"OS..................................................................................................41
0<.0 OB7,$I=OS D,S$, >+6u$-GO......................................................................................................................... Q0
0<.8 >O)7-)$O D, >O;+)DOS S,$ DO SBGI6G-S............................................................................................ Q0
0<.9 >OG-;)................................................................................................................................................... Q0
87$?$8 4orma'o de ex(+(o para as colunas$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$69
87$?$9 Ou'ras op*es de ex(+(o das colunas$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$69
0<.? ,f,;6GO D, FO2;+$+qrO D, >OG-)+S...................................................................................................... Q8
0<.H ,f,;6GO D, FO2;+$+qrO D, $u$-GO......................................................................................................... Q9
0<.M ,f,;6GO D, 2,;OqrO D+ FO2;+$+qrO..................................................................................................... Q?
C*Z<+(O 11: G,;[\O D, ;,(<`;"OS U *;<, 2..............................................................................40
00.0 OB7,$I=OS D,S$, >+6u$-GO......................................................................................................................... QH
00.8 62O62I,D+D,S DOS >+B,q+GXOS , DOS 2OD+63S......................................................................................... QH
00.9 + >Gv-S-G+ ),W_=+G-,........................................................................................................................ QM
00.? B-,B2+S )OS 2,G+$x2IOS........................................................................................................................... QP
00.H >vG>-GO D, S-;v2IOS................................................................................................................................ QQ
00.M 2,G+$x2IO ;+$2I>I+G................................................................................................................................. S<
00.P +2B-I=O D, >O;+)DOS 6+2+ O SBGI6G-S............................................................................................... S9
00.Q ,f,2>u>IOS................................................................................................................................................. S?
00.S 2,S6OS$+S DOS ,f,2>u>IOS......................................................................................................................... SM
C*Z<+(O 12: J",;;'+"S U C5"1J1DO 1 V;=O;,..................................................................64
08.0 OB7,$I=OS D,S$, >+6u$-GO......................................................................................................................... SQ
08.8 B-+)DO 3 6OSSu=,G >+;I)X+2 )+ v2=O2,................................................................................................. SQ
08.9 ,f>G-I)DO -; )x D+ v2=O2,.................................................................................................................. 0<<
08.? $,2;I)OGOGI+.......................................................................................................................................... 0<8
08.H ,f,2>u>IOS................................................................................................................................................ 0<8
C*Z<+(O 13: D"C"O1V;"O D, DDOS........................................................................................................183
09.0 OB7,$I=OS D,S$, >+6u$-GO....................................................................................................................... 0<9
09.8 O B-, 3 O DI>IO)v2IO D, D+DOS............................................................................................................... 0<9
09.9 I)FO2;+qw,S >O)$ID+S )O DI>IO)v2IO D, D+DOS.................................................................................... 0<9
09.? $+B,G+S DO DI>IO)v2IO D, D+DOS........................................................................................................... 0<9
09.H =ISw,S DO DI>IO)v2IO D, D+DOS.............................................................................................................. 0<9
09.M ,f,;6GOS D, -$IGIU+qrO DO DI>IO)v2IO D, D+DOS................................................................................. 0<Q
09.P ,f,2>u>IOS................................................................................................................................................ 00<
C*Z<+(O 14: ("1G+G,5 D, D,@"1"[\O D, DDOS.........................................................................112
0?.0 OB7,$I=OS D,S$, >+6u$-GO....................................................................................................................... 008
0?.8 ,S$2-$-2+ D, D+DOS DO O2+>G,............................................................................................................ 008
0?.9 >2I+)DO -;+ $+B,G+............................................................................................................................... 008
0?.? 2,>O;,)D+qw,S SOB2, OS )O;,S D+S $+B,G+S....................................................................................... 008
0?.H $I6O D, D+DO D+S >OG-)+S...................................................................................................................... 009
0?.M 2,G+qrO ,)$2, OS $I6OS D, D+DOS +)SI , DO O2+>G,........................................................................... 00?
0?.P 2,G+qrO ,)$2, OS $I6OS D, D+DOS DO SBG1DS , DO O2+>G,.................................................................00?
0M?
0?.Q >2I+qrO D, $+B,G+S................................................................................................................................ 00?
8:$6$8 S(n'axe do comandoO$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$88:
8:$6$9 Cr(ao das 'a+elas do cursoO$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$88B
8:$6$? Exemplos de res'r(*es$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$885
0?.S >2I+)DO -;+ $+B,G+ + 6+2$I2 D, O-$2+ $+B,G+................................................................................... 00P
0?.0< +G$,2+)DO -;+ $+B,G+........................................................................................................................ 00S
0?.00 $2O>+)DO O )O;, D, -;+ $+B,G+........................................................................................................ 08<
0?.08 D,S>2IqrO D+S $+B,G+S , >OG-)+S....................................................................................................... 08<
0?.09 2,;O=,)DO $+B,G+S.............................................................................................................................. 08<
0?.0? ,f,2>u>IOS.............................................................................................................................................. 08<
C*Z<+(O 10: ("1G+G,5 D, 51"*+([\O D, DDOS.................................................................124
0H.0 OB7,$I=OS D,S$, >+6u$-GO....................................................................................................................... 08?
0H.8 I)S,2I)DO )O=+S GI)X+S ,; -;+ $+B,G+................................................................................................ 08?
0H.9 +$-+GIU+)DO GI)X+S ,; -;+ $+B,G+...................................................................................................... 08M
0H.? ,GI;I)+)DO GI)X+S D, -;+ $+B,G+......................................................................................................... 08P
0H.H ,f,2>u>IOS................................................................................................................................................ 08Q
0H.M 2,S6OS$+S DOS ,f,2>u>IOS....................................................................................................................... 08S
C*Z<+(O 12: *;OC,SS5,1<O D, <;1S[^,S...............................................................................138
0M.0 OB7,$I=OS D,S$, >+6u$-GO....................................................................................................................... 09<
0M.8 O B-, 3 -;+ $2+)S+qrO.......................................................................................................................... 09<
0M.9 ,F,$I=+)DO +S ;-D+)q+S........................................................................................................................ 09<
0M.? 2,;O=,)DO ;-D+)q+S............................................................................................................................ 090
0M.H F+GX+S DO SIS$,;+................................................................................................................................... 090
0M.M O SIG)IFI>+DO D, -;+ $2+)S+qrO........................................................................................................... 090
0M.P >O)$2OG+)DO $2+)S+qw,S...................................................................................................................... 090
0M.Q >O;;I$ `WO2\a................................................................................................................................... 090
0M.S S+=,6OI)$ S+=,6OI)$_)+;,................................................................................................................ 098
0M.0< 2OGGB+>\`WO2\a $O `S+=,6OI)$a S+=,6OI)$_)+;,.................................................................... 098
0M.00 2OGGB+>\ + )u=,G D, D,>G+2+qrO........................................................................................................ 098
0M.08 2OGGB+>\S I;6Gu>I$OS............................................................................................................................ 099
0M.09 +-$O>O;;I$.......................................................................................................................................... 099
0M.0? ,f,;6GO D, -$IGIU+qrO D, >O;;I$ , 2OGGB+>\............................................................................ 099
0M.0H >O)SIS$t)>I+ D, G,I$-2+....................................................................................................................... 09M
0M.0M $2+)S+qw,S SO;,)$, D, G,I$-2+.......................................................................................................... 09P
C*Z<+(O 13: CO1CO;;a1C" , B(O'+,"O..........................................................................................136
0P.0 OB7,$I=OS D,S$, >+6u$-GO....................................................................................................................... 09S
0P.8 I)$2OD-qrO +O BGOB-,IO........................................................................................................................ 09S
0P.9 O B-, 3 -; BGOB-,IO............................................................................................................................... 09S
0P.? B-+)DO OS BGOB-,IOS SrO ),>,SSv2IOS.................................................................................................. 09S
0P.H B-+)DO OS BGOB-,IOS SrO GIB,2+DOS..................................................................................................... 0?<
0P.M $I6OS D, BGOB-,IOS.................................................................................................................................. 0?<
8C$5$8 "loque(os do d(c(onr(o de dados =@@L;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$8:7
8C$5$9 "loque(os da man(pulao de dados =@GL;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$8:7
0P.P )u=,IS D, BGOB-,IO.................................................................................................................................. 0?<
0P.Q D,S>2IqrO DOS BGOB-,IOS....................................................................................................................... 0?<
0P.S BGOB-,IOS I;6Gu>I$OS.............................................................................................................................. 0?8
0P.0< BGOB-,IOS ,f6Gu>I$OS............................................................................................................................ 0?8
0P.00 ID,)$IFI>+qrO D+ GI)X+ , BGOB-,IO...................................................................................................... 0?9
0P.08 I;6+SS, (D,+DGO>\)............................................................................................................................... 0?9
C*Z<+(O 14 U ="S^,S.......................................................................................................................................140
0Q.0 OB7,$I=OS D,S$, >+6u$-GO....................................................................................................................... 0?H
0Q.8 O B-, 3 -;+ =ISrO................................................................................................................................... 0?H
0Q.9 >G+SSIFI>+qrO D+S =ISw,S........................................................................................................................ 0?H
86$?$8 .(s*es s(mples$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$8:B
86$?$9 .(s*es complexas$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$8:B
0Q.? O >O;+)DO >2,+$, =I,W.................................................................................................................... 0?H
0Q.H -S+)DO -;+ =ISrO 6+2+ O6,2+qw,S D, D;G.......................................................................................... 0?P
0Q.M +G$,2+)DO D+DOS +$2+=3S D+S =ISw,S................................................................................................... 0?S
0Q.P ,GI;I)+qrO D, =ISw,S.............................................................................................................................. 0?S
0MH
0Q.Q ,f,2>u>IOS................................................................................................................................................ 0H<
0Q.S 2,S6OS$+S DOS ,f,2>u>IOS....................................................................................................................... 0H8
C*Z<+(O 16 U Z1D"C,S.....................................................................................................................................103
0S.0 OB7,$I=OS D,S$, >+6u$-GO....................................................................................................................... 0H9
0S.8 FI)+GID+D,S DOS u)DI>,S.......................................................................................................................... 0H9
0S.9 ,S$2-$-2+ DOS u)DI>,S............................................................................................................................ 0H9
0S.? $I6OS D, u)DI>,S....................................................................................................................................... 0H9
0S.H >2I+qrO DOS u)DI>,S................................................................................................................................ 0H9
8H$B$8 Cr(ao de um 2nd(ce para mel,orar o acesso$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$8B:
8H$B$9 Cr(ao de um 2nd(ce para garan'(r un(c(dade$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$8B:
0S.M ,GI;I)+qrO DOS u)DI>,S.......................................................................................................................... 0H?
0S.P B-+)DO -; u)DI>, 3 -$IGIU+DO............................................................................................................... 0H?
0S.Q u)DI>,S , 7-)qw,S.................................................................................................................................... 0HH
0S.S S-G,S$w,S 6+2+ >2I+qrO DOS u)DI>,S..................................................................................................... 0HH
0S.0< ,f,2>u>IOS.............................................................................................................................................. 0HH
0S.00 2,S6OS$+S DOS ,f,2>u>IOS..................................................................................................................... 0HM
C*Z<+(O 28: S,'ba1C"S.............................................................................................................................103
8<.0 OB7,$I=OS D,S$, >+6u$-GO....................................................................................................................... 0HP
8<.8 O G,2+DO2 D, S,Bst)>I+S....................................................................................................................... 0HP
8<.0 G,2+qrO D, )h;,2OS S,Bs,)>I+IS >O; ),f$=+G............................................................................... 0HP
8<.0 =+GO2 +$-+G D+ S,Bst)>I+..................................................................................................................... 0HQ
8<.8 2,G2+S 6+2+ -$IGIU+2 >-22=+G , ),f$=+G..................................................................................... 0HQ
8<.9 +G$,2+)DO -;+ S,Bst)>I+..................................................................................................................... 0HS
8<.? >O)>,D,)DO 62I=IG3GIOS ,; S,Bst)>I+S................................................................................................ 0HS
8<.H ,GI;I)+)DO -;+ S,Bst)>I+.................................................................................................................... 0HS
8<.M GIS$+)DO S,Bst)>I+S............................................................................................................................... 0M<
*a1D"C, U <B,(S DO C+;SO..............................................................................................................121
0MM

Você também pode gostar