Sie sind auf Seite 1von 38

SUMRIO

1. SQL: HISTRICO E NOES GERAIS


2. CRIAO DE TABELAS E CONSTRAINTS
3. EXCLUSO E ALTERAO DE TABELAS
4. INSERT UPDATE E DELETE
. TRANSAES
!. CLUSULA "HERE
!. SELECT
#. $UNES DE LINHA
%. $UNES DE GRUPO
1&. $UNES NUM'RICAS
11. $UNES DE CON(ERSO
12. OUTRAS $UNES
13. SUBQUER)
14. *OINS +*UNES DE TABELAS,
1. OPERAES DE CON*UNTO
1-. MERGE
1!. (IE"
1#. INDEX
1%. SEQUENCE
2&. RO"ID
AP.NDICE: USANDO O SQL/PLUS
RE$ER.NCIAS BIBLIOGR$ICAS


BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 1 ???.=;@8@A237.63B.C2
1. SQL: HISTRICO E NOES GERAIS
BRE(E HISTRIA DA LINGUAGEM SQL
Pesquisadores da IBM desenvolveram, no incio da dcada de 1970, a SEQUEL S!ruc!ured En"lis# Quer$
Lan"ua"e%, &rimeira lin"ua"em de acesso a S'B() Sis!emas 'erenciadores de Banco de (ados
)elacionais%* +l"uns anos de&ois a lin"ua"em &assou a ser denominada sim&lesmen!e SQL S!ruc!ured
Quer$ Lan"ua"e%*
,om o sur"imen!o de um n-mero cada ve. maior de S'B()s Sis!emas de 'erenciamen!o de Bancos de
(ados )elacionais%, /e.0se necess1rio es&eci/icar um &adr2o &ara a lin"ua"em de acesso*
Por!an!o, em 1934, sur"iu o SQL034, a &rimeira vers2o da lin"ua"em SQL S!ruc!ured Quer$ Lan"ua"e%, em
um !ra5al#o con6un!o da IS7 In!erna!ional 7r"ani.a!ion /or S!andardi.a!ion% e da +8SI +merican 8a!ional
S!andards Ins!i!u!e%*
+ lin"ua"em &assou &or a&er/ei9oamen!os e em 199: /oi lan9ada a SQL09: ou SQL0:*
Em 1999, /oi lan9ado um novo &adr2o c#amado SQL099 ou SQL0;* Es!e &adr2o &ermi!iu a u!ili.a92o de !i&os
de dados com&le<os e<em&lo= BL7B 0 Binar$ Lar"e 756ec!% e incor&orou carac!ers!icas de orien!a92o a
o56e!os*
+ mais nova vers2o do &adr2o SQL a SQL=:00;* >e.0se uma revis2o do &adr2o SQL0; e acrescen!ou0se
uma nova &ar!e que con!em&la o !ra!amen!o de ?ML*

PRINCIPAIS SISTEMAS DE BANCO DE DADOS QUE UTILIDAM SQL
(B:
In"res
M$SQL
7racle (a!a5ase
Pos!"reSQL
Microso/! SQL Server
SQLi!e
S$5ase
In/ormi<
>ire5ird

ORACLE: HISTRICO
1%!! Larr$ Ellison, Bo5 Miner e Ed 7a!es /undam a S(L So/!@are Level La5ora!ories%*
1%!# 7 nome da em&resa mudado &ara )SI )a!ional So/!@are Inc*%* 7 7racle 1*0 escri!o em
assem5l$ u!ili.ando no m1<imo 1:3 AB de memBria%*
1%!% + )SI lan9a o &rimeiro &rodu!o comercial de 5anco de dados relacional u!ili.ando a lin"ua"em SQL*
1%#& 7 nome da )SI mudado &ara 7racle S$s!em ,or&ora!ion* C lan9ado o 7racle :*0*
1%#3 Lan9ado o 7racle ; escri!o em ,%, o &rimeiro a rodar em main/rames e em minicom&u!adores*
1%#4 (esenvolvida a vers2o &ara P, do 7racle* Lan9ada a vers2o D do 7racle*
1%#- 7 7racle E lan9ado com ca&acidades dis!ri5udas SQLFS!ar%* C &ossvel reunir in/orma9Ges de
5ancos de dados locali.ados em si!es locais% di/eren!es*
1%## + 7racle muda sua sede &ara )ed@ood ,i!$*
1%#% Lan9ado o 7racle 4*:*
1%%3 Lan9ado o 7racle 7 &ara U8I?*
1%%4 Lan9ado o 7racle 7 &ara P,*
1%%% Lan9ado o 7racle 3i, o &rimeiro 5anco de dados com su&or!e na!ivo &ara ?ML*
2&&& Lan9ado o 7racle 9i, &rimeiro 5anco de dados com )eal +&&lica!ion ,lus!ers )+,%*
2&&3 Lan9ado o 7racle 10"*
2&&! Lan9ado o 7racle 11"*

BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 2 ???.=;@8@A237.63B.C2
NOES GERAIS DA LINGUAGEM SQL
7s comandos SQL es!2o divididos em ca!e"orias de acordo com sua /uncionalidade=
DDL +DATA DE$INITION LANGUAGE,
Lin"ua"em de (e/ini92o de (ados= usada &ara de/inir dados e o56e!os de um 5anco de dados*
COMANDO $UNO
,)E+HE H+BLE ,ria uma !a5ela
+LHE) H+BLE +l!era uma !a5ela
()7P H+BLE Elimina uma !a5ela
,)E+HE IIEJ ,ria uma vis2o
+LHE) IIEJ +l!era uma vis2o
()7P IIEJ Elimina uma vis2o
,)E+HE I8(E? ,ria um ndice
+LHE) I8(E? +l!era um ndice
()7P I8(E? Elimina um ndice
H)U8,+HE )emove !odas as lin#as da !a5ela n2o &ode ser des/ei!o%

DML +DATA MANIPULATION LANGUAGE,
Lin"ua"em de Mani&ula92o de (ados= usada &ara mani&ular dados*
COMANDO $UNO
I8SE)H Insere as lin#as na !a5ela
(ELEHE E<clui as lin#as da !a5ela
UP(+HE +l!era os dados con!e-dos% da !a5ela

DQL +DATA QUER) LANGUAGE,
Lin"ua"em de ,onsul!a de (ados= usada &ara recu&erar dados*
COMANDO $UNO
SELE,H Seleciona recu&era% dados de uma !a5ela ou vis2o vie@%

OC792A5EF3: 7 SELE,H !am5m considerado um comando (ML*

DCL +DATA CONTROL LANGUAGE,
Lin"ua"em de ,on!role de (ados= usada &ara conceder ou remover direi!os de acesso aos usu1rios do
5anco de dados*
COMANDO $UNO
')+8H ,oncede &rivil"ios de acesso &ara um usu1rio
)EI7AE )evo"a &rivil"ios de acesso &ara um usu1rio

DTL +DATA TRANSACTION LANGUAGE,
Lin"ua"em de Hransa92o de (ados= usada &ara con!rolar as !ransa9Ges do 5anco de dados*
COMANDO $UNO
BE'I8 J7)A SH+)H H)+8S+,HI78 Marca o come9o de uma !ransa92o
,7MMIH Envia !odos os dados das mudan9as &ermanen!emen!e
)7LLB+,A (escar!a as mudan9as nos dados e<is!en!es desde o -l!imo ,7MMIH ou )7LLB+,A
BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 3 ???.=;@8@A237.63B.C2
NOMES DE TABELAS E COLUNAS
82o u!ili.ar carac!eres es&eciais e<ce!o o underscore KLM%N
,ome9ar com uma le!ra e n2o com um n-meroN
Evi!ar acen!ua92o e K9MN
82o u!ili.ar es&a9os*
PRINCIPAIS TIPOS DE DADOS
DATAT)PE DESCRIO
,O+) +l/anumrico de !aman#o /i<o* Haman#o m1<imo :*000 carac!eres* Ialor de/aul!= 1*
I+),O+): +l/anumrico de !aman#o vari1vel* Haman#o m1<imo D*000 carac!eres*
8UMBE) Ialores numricos* E<= 8UMBE) E,:% arma.ena 0999,99 a P999,99* M1<imo= 8UMBE) ;3%
(+HE +rma.ena da!a e #ora inclusive minu!o e se"undo%* (e 01Q01QD71: +, a! ;1Q1:Q9999 (,
HIMESH+MP +rma.ena da!a e #ora minu!o, se"undo e milsimo de se"undo%*
,L7B ,#arac!er Lon" 756ec!* Haman#o m1<imo D 'B*
BL7B Binar$ Lon" 756ec!* Haman#o m1<imo D 'B*
B>ILE Binar$ >ile* )e/erRncia a um arquivo e<!erno ao 5anco*

ALGUNS COMANDOS GTEIS
COMANDO DESCRIO
P+SSJ7)( nomeLusuarioN +l!era sen#a do usu1rio
P+SSJ7)( +l!era sen#a do usu1rio a!ual
SELE,H F >)7M +LLLUSE)SN Lis!a !odos os usu1rios
SELE,H H+BLEL8+ME >)7M USE)LH+BLESN Lis!a !odas as !a5elas
SELE,H F >)7M ,+HN Lis!a !odas as !a5elas
SO7J USE) Mos!ra usu1rio a!ual
SELE,H F >)7M USE)L,78SH)+I8HS
JOE)E H+BLEL8+ME S TnomeLdaL!a5elaTN
+&resen!a in/orma9Ges so5re as cons!rain!s da !a5ela=
7J8E) Usu1rio que criou a cons!rain!
,78SH)+I8HL8+ME 8ome da cons!rain!
,78SH)+I8HLHUPE Hi&o da cons!rain!=
P S Primar$ Ae$
) S >orei"n Ae$
, S ,#ecV
U S Unique
H+BLE 8+ME 8ome da Ha5ela
SE+),OL,78(IHI78 (omnio &ermi!ido ,OE,A%
)L,78SH)+I8HL8+ME U!ili.ada em cons!rain!s >A, indica a
cons!rain! PA na !a5ela re/erenciada
SH+HUS Indica se a cons!rain! es!1 #a5ili!ada

OC792A5EF3: +l"uns comandos requerem &rivil"io de adminis!rador*

"EBSITES RECOMENTADOS
#!!&=QQ@@@*oracle*comQ!ec#nolo"$Qdocumen!a!ionQinde<*#!ml
#!!&=QQ@@@*ss4D*comQoraQ

BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 4 ???.=;@8@A237.63B.C2
2. CRIAO DE TABELAS E CONSTRAINTS
CRIANDO UMA TABELA
Para criar uma !a5ela u!ili.e o comando ,)E+HE H+BLE=

CREATE TABLE NOME_DA_TABELA (
NOME_DA_COLUNA_1 TIPO_DE_DADO(TAMANHO),
NOME_DA_COLUNA_2 TIPO_DE_DADO(TAMANHO));

7 e<em&lo a se"uir a&resen!a a cria92o de uma !a5ela denominada CLIENTE com a se"uin!e es!ru!ura=

NOME DA COLUNA TIPO DE DADO TAMANHO
,7(,LI 8UMBE) D
87ME I+),O+): E0
U> ,O+) :
,P> ,O+) 11

CREATE TABLE CLIENTE (
CODCLI NUMBER(4),
NOME VARCHAR2(50),
UF CHAR(2),
CPF CHAR(11));

(ERI$ICANDO A ESTRUTURA DE UMA TABELA
Para veri/icar a es!ru!ura da !a5ela criada u!ili.e o comando (ES,)IBE ou a /orma a5reviada (ES,=

DESCRIBE CLIENTE ou DESC CLIENTE

CONSTRAINTS

+s res!ri9Ges cons!rain!s% es!a5elecem as rela9Ges en!re as v1rias !a5elas em um 5anco de dados e
reali.am !rRs !are/as /undamen!ais=

Man!Rm a in!e"ridade dos dadosN
82o &ermi!em a inclus2o de valores Windese61veisWN
Im&edem a e<clus2o de dados se e<is!irem de&endRncias en!re !a5elas*

CHA(E PRIMRIA +PH I PRIMAR) HE),
,oluna ou "ru&o de colunas que &ermi!e iden!i/icar uma -nica lin#a !u&la% da !a5ela*
Para c#ave &rim1ria 7@BJ897 u!ili.e=

CREATE TABLE NOME_DA_TABELA (
NOME_DA_COLUNA_1 TIPO_DE_DADO(TAMANHO),
NOME_DA_COLUNA_2 TIPO_DE_DADO(TAMANHO),
CONSTRAINT NOME_DA_CONSTRAINT PRIMARY_KEY(NOME_DA_COLUNA_1));

Para c#ave &rim1ria 63BJ37K5 u!ili.e=

CREATE TABLE NOME_DA_TABELA (
NOME_DA_COLUNA_1 TIPO_DE_DADO(TAMANHO),
NOME_DA_COLUNA_2 TIPO_DE_DADO(TAMANHO),
CONSTRAINT NOME_DA_CONSTRAINT PRIMARY_KEY(NOME_DA_COLUNA_1,NOME_DA_COLUNA_2));

BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> ???.=;@8@A237.63B.C2
7 e<em&lo a se"uir a&resen!a a cria92o CLIENTE com a coluna ,7(,LI como c#ave &rim1ria=

CREATE TABLE CLIENTE (
CODCLI NUMBER(4),
NOME VARCHAR2(50),
UF CHAR(2),
CPF CHAR(11),
CONSTRAINT CLIENTE_PK PRIMARY KEY(CODCLI));

CHA(E ESTRANGEIRA +$H I $OREIGN HE),
,oluna que es!a5elece o relacionamen!o en!re duas !a5elas* ,orres&onde X c#ave &rim1ria da !a5ela0&ai*
CREATE TABLE NOME_DA_TABELA_1 (
NOME_DA_COLUNA_1_1 TIPO_DE_DADO(TAMANHO),
NOME_DA_COLUNA_1_2 TIPO_DE_DADO(TAMANHO),
CONSTRAINT NOME_DA_CONSTRAINT PRIMARY_KEY(NOME_DA_COLUNA_1_1));

CREATE TABLE NOME_DA_TABELA_2 (
NOME_DA_COLUNA_2_1 TIPO_DE_DADO(TAMANHO),
NOME_DA_COLUNA_2_2 TIPO_DE_DADO(TAMANHO),
CONSTRAINT NOME_DA_CONSTRAINT PRIMARY_KEY(NOME_DA_COLUNA_2_1),
CONSTRAINT NOME_DA_CONSTRAINT FOREIGN_KEY(NOME_DA_COLUNA_2_2
REFERENCES NOME_DA_TABELA_1(NOME_DA_COLUNA_1_1));

7 e<em&lo a se"uir a&resen!a coluna ,7(,LI da !a5ela PE(I(7 como c#ave es!ran"eira relacionando0a
com a coluna ,7(,LI da !a5ela ,LIE8HE an!eriormen!e criada%=

CREATE TABLE PEDIDO (
NRPED NUMBER(5),
DATA_EMISSAO DATE,
CODCLI NUMBER(4),
CONSTRAINT PEDIDO_PK PRIMARY KEY(NRPED),
CONSTRAINT PEDIDO_CLIENTE_FK FOREIGN KEY(CODCLI) REFERENCES CLIENTE(CODCLI));

75serve que o !i&o de dado e o !aman#o da coluna ,7(,LI da !a5ela PE(I(7 deve ser o mesmo que o
a&resen!ado na !a5ela ,LIE8HE, is!o , 8UMBE)D%*

+ c#ave es!ran"eira !em im&or!Yncia /undamen!al &ara "aran!ir a I8HE')I(+(E re/erencial dos dados*
Por!an!o, nos e<em&los a&resen!ados, se o usu1rio !en!ar inserir na !a5ela PE(I(7 um cBdi"o de clien!e
,7(,LI% que n2o cons!e na !a5ela ,LIE8HE es!e ser1 re6ei!ado &elo 5anco de dados* Por ou!ro lado, se o
usu1rio !en!ar e<cluir da !a5ela ,LIE8HE um cBdi"o que cons!e na !a5ela PE(I(7, is!o !am5m n2o ser1
&ossvel* 8o en!an!o, as se"uin!es cl1usulas &odem ser acrescen!adas X c#ave es!ran"eira al!erando o seu
/uncionamen!o=

CLUSULA $UNO
78 (ELEHE SEH 8ULL
Quando /or removido um valor da !a5ela0&ai o 5anco de/ine os valores
corres&onden!es da !a5ela0/il#o como 8ULL*
78 (ELEHE ,+S,+(E
Quando for removido um valor da tabela-pai o banco remove os valores
correspondentes da tabela-filho.

E<em&lo=

...
CONSTRAINT PEDIDO_CLIENTE_FK FOREIGN KEY(CODCLI)
REFERENCES CLIENTE(CODCLI) ON DELETE SET NULL);
BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> - ???.=;@8@A237.63B.C2
NOT NULL
Indica que o con!e-do de uma coluna n2o &oder1 ser nulo va.io%*

CREATE TABLE CLIENTE (
CODCLI NUMBER(4),
NOME VARCHAR2(50) NOT NULL,
UF CHAR(2),
CPF CHAR(11),
CONSTRAINT CLIENTE_PK PRIMARY KEY(CODCLI));

UNIQUE
Indica que n2o &oder1 #aver re&e!i92o no con!e-do da coluna*

CREATE TABLE CLIENTE (
CODCLI NUMBER(4),
NOME VARCHAR2(50),
UF CHAR(2),
CPF CHAR(11) UNIQUE,
CONSTRAINT CLIENTE_PK PRIMARY KEY(CODCLI));

ou=

CREATE TABLE CLIENTE (
CODCLI NUMBER(4),
NOME VARCHAR2(50),
UF CHAR(2),
CPF CHAR(11),
CONSTRAINT CLIENTE_PK PRIMARY KEY(CODCLI),
CONSTRAINT CLIENTE_UK UNIQUE(CPF));

75serve a se"uir al"umas di/eren9as en!re as cons!rain!s P)IM+)U AEU e U8IQUE=

PRIMAR) HE) UNIQUE
Permi!e re&e!i92o de valoresZ 8[7 Permi!e re&e!i92o de valoresZ 8[7
Permi!e valores nulos 8ULL%Z 8[7 Permi!e valores nulos 8ULL%Z SIM

CHECH
(e/ine um domnio de valores &ara o con!e-do da coluna*

CREATE TABLE TABELA_1 (
COLUNA_1 NUMBER(5),
COLUNA_2 CHAR(1),
CONSTRAINT TABELA_1_CK CHECK (COLUNA_2 = 'M' OR COLUNA_2 = 'F'));

CREATE TABLE TABELA_2 (
COLUNA_1 NUMBER(5),
COLUNA_2 CHAR(2),
CONSTRAINT TABELA_2_CK CHECK (COLUNA_2 IN ('SP','RJ','MG')));

CREATE TABLE TABELA_3 (
COLUNA_1 NUMBER(5),
COLUNA_2 NUMBER(5),
CONSTRAINT TABELA_3_CK CHECK (COLUNA_2 < 1000));

BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> ! ???.=;@8@A237.63B.C2
DESABILITANDO CONSTRAINTS
Para desa5ili!ar uma cons!rain! u!ili.e=

ALTER TABLE NOME_DA_TABELA DISABLE CONSTRAINT NOME_DA_CONSTRAINT;

E<em&lo=

ALTER TABLE TABELA_1 DISABLE CONSTRAINT TABELA_1_PK;

HABILITANDO CONSTRAINTS
Para #a5ili!ar uma cons!rain! u!ili.e=

ALTER TABLE NOME_DA_TABELA ENABLE CONSTRAINT NOME_DA_CONSTRAINT;

E<em&lo=

ALTER TABLE TABELA_1 ENABLE CONSTRAINT TABELA_1_PK;

OC792A5EF3: (esa!ivar uma ,78SH)+I8H, inserir valores que violem a res!ri92o de in!e"ridade e !en!ar
a!ivar a res!ri92o &os!eriormen!e com o comando E8+BLE &rovocar1 um erro*

+! a vers2o a!ual do 7racle n2o #1 &ossi5ilidade de incluir a cl1usula 78 UP(+HE ,+S,+(E em uma
res!ri92o do !i&o >orei"n Ae$* Por!an!o, &ara al!erar os valores em colunas Primar$ Ae$ que con!m
re/erencias em !a5elas0/il#o &reciso desa!ivar a res!ri92o >orei"n Ae$ na !a5ela0/il#o, al!erar os valores na
coluna Primar$ Ae$ na !a5ela0&ai, al!erar se necess1rio% os valores na coluna >orei"n Ae$ na !a5ela0/il#o e
a!ivar novamen!e a res!ri92o >orei"n Ae$*

REMO(ENDO CONSTRAINTS
Para remover uma cons!rain! u!ili.e=

ALTER TABLE NOME_DA_TABELA
DROP CONSTRAINT NOME_DA_CONSTRAINT;

E<em&lo=

ALTER TABLE TABELA_1 DROP CONSTRAINT TABELA_1_PK;

ADICIONANDO CONSTRAINTS
Para adicionar uma cons!rain! u!ili.e=

ALTER TABLE NOME_DA_TABELA
ADD CONSTRAINT NOME_DA_CONSTRAINT TIPO_DA_CONSTRAINT(NOME_DA_COLUNA);

E<em&lo=

ALTER TABLE TABELA_1 ADD CONSTRAINT TABELA_1_PK PRIMARY KEY(COLUNA_1);






BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> # ???.=;@8@A237.63B.C2
3. EXCLUSO E ALTERAO DE TABELAS
EXCLUINDO UMA TABELA
Para e<cluir uma !a5ela u!ili.e o comando ()7P H+BLE=

DROP TABLE NOME_DA_TABELA;

Para e<cluir uma !a5ela e suas res&ec!ivas cons!rain!s u!ili.e o comando ()7P H+BLE com a o&92o
,+S,+(E ,78SH)+I8HS=

DROP TABLE NOME_DA_TABELA CASCADE CONSTRAINTS;

+ &ar!ir da vers2o 10", quando uma !a5ela Wdro&adaW, o 7racle n2o remove au!oma!icamen!e o es&a9o
dela da !a5les&ace, a n2o ser que o &arYme!ro PU)'E se6a es&eci/icado no comando ()7P* 7s me!adados
da !a5ela, dos ndices e das cons!rain!s associadas a ela s2o renomeados e enviados a uma !a5ela
con#ecida como )E,U,LE BI8 li<eira%* (es!a /orma, caso a !a5ela !en#a sido e<cluda erroneamen!e
&ossvel recu&er10la &os!eriormen!e a!ravs do comando >L+SOB+,A H+BLE*
Para sa5er quais o56e!os es!2o na li<eira u!ili.e=

SELECT * FROM RECYCLEBIN;

RECUPERANDO UMA TABELA DA LIXEIRA
Para recu&erar uma !a5ela da li<eira u!ili.e*

FLASHBACK TABLE NOME_DA_TABELA TO BEFORE DROP;

E<em&lo=

CREATE TABLE TESTE (
CODIGO NUMBER(4));

DROP TABLE TESTE CASCADE CONSTRAINTS;

SELECT * FROM CAT;

FLASHBACK TABLE TESTE TO BEFORE DROP;

SELECT * FROM CAT;

+ cl1usula )E8+ME H7 &ermi!e que a !a5ela rece5a um novo nome na recu&era92o* C uma cl1usula
o&cional &orm necess1ria caso e<is!a uma !a5ela com o mesmo nome da ori"inal no esquema do usu1rio*

FLASHBACK TABLE NOME_DA_TABELA TO BEFORE DROP RENAME TO NOVO_NOME_DA_TABELA;

PURGE
U!ili.e o comando PU)'E &ara eliminar da li<eira uma !a5ela que n2o se6a mais necess1ria=

PURGE "NOME_DA_TABELA";

Para lim&ar !oda a li<eira do usu1rio u!ili.e=

PURGE RECYCLEBIN;

Para lim&ar a li<eira de !odos os esquemas do 5anco de dados de &re/erRncia a&Bs um 5acVu& com&le!o%
u!ili.e o comando a5ai<o conec!ado como s$s as s$sd5a%=

PURGE DBA_RECYCLEBIN;

Para a remo92o /sica da !a5ela e dos o56e!os relacionados a ela sem !rans/eri0los &ara a li<eira u!ili.e=

DROP TABLE NOME_DA_TABELA CASCADE CONSTRAINTS PURGE;

BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> % ???.=;@8@A237.63B.C2
ALTERANDO UMA TABELA
Para al!erar as de/ini9Ges de uma !a5ela u!ili.e o comando +LHE) H+BLE*

ADICIONANDO COLUNAS
Para adicionar uma coluna u!ili.e=

ALTER TABLE NOME_DA_TABELA ADD NOME_DA_COLUNA TIPO_DE_DADO(TAMANHO);

E<em&lo=

ALTER TABLE CLIENTE ADD E_MAIL VARCHAR2(40);

ALTERANDO A LARGURA DE UMA COLUNA
Para al!erar a lar"ura de uma coluna u!ili.e=

ALTER TABLE NOME_DA_TABELA MODIFY NOME_DA_COLUNA TIPO_DE_DADO(NOVO_TAMANHO);

E<em&lo=

ALTER TABLE CLIENTE MODIFY E_MAIL VARCHAR2(50);

ALTERANDO O NOME DE UMA COLUNA
Para al!erar o nome de uma coluna u!ili.e=

ALTER TABLE NOME_DA_TABELA
RENAME COLUMN NOME_ANTIGO_DA_COLUNA TO NOME_NOVO_DA_COLUNA;

E<em&lo=

ALTER TABLE CLIENTE RENAME COLUMN E_MAIL TO EMAIL;

EXCLUINDO COLUNAS
Para e<cluir uma coluna de uma coluna u!ili.e=

ALTER TABLE NOME_DA_TABELA DROP COLUMN NOME_DA_COLUNA;

E<em&lo=

ALTER TABLE CLIENTE DROP COLUMN EMAIL;

Para e<cluir uma coluna com cons!rain!s u!ili.e=

ALTER TABLE NOME_DA_TABELA DROP COLUMN NOME_DA_COLUNA CASCADE CONSTRAINTS;
RENOMEANDO UMA TABELA
Para al!erar o nome de uma !a5ela u!ili.e=

RENAME NOME_ANTIGO_DA_TABELA TO NOME_NOVO_DA_TABELA;
CRIANDO UMA TABELA COM BASE EM OUTRA
Para criar uma !a5ela com !odas as lin#as e colunas de ou!ra u!ili.e=

CREATE TABLE NOME_DA_NOVA_TABELA AS SELECT * FROM NOME_DA_TABELA_BASE;

E<em&lo=

CREATE TABLE CLIENTE_2 AS SELECT * FROM CLIENTE;
BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 1& ???.=;@8@A237.63B.C2
Para criar uma !a5ela com !odas as lin#as e al"umas colunas selecionadas de ou!ra=

CREATE TABLE NOME_DA_NOVA_TABELA (NOME_DA_COLUNA_1,NOME_DA_COLUNA_2)
AS SELECT NOME_DA_COLUNA_1,NOME_DA_COLUNA_2 FROM NOME_DA_TABELA_BASE;

E<em&lo=

CREATE TABLE CLIENTE_3 (CODCLI,NOME) AS SELECT CODCLI,NOME FROM CLIENTE;

TRUNCATE
,omando ((L u!ili.ado &ara Tcor!arT uma !a5ela* Hodas as lin#as da !a5ela s2o eliminadas*

Para Tcor!arT uma !a5ela u!ili.e=

TRUNCATE TABLE NOME_DA_TABELA;

E<em&lo=

TRUNCATE TABLE CLIENTE;

+l"umas considera9Ges im&or!an!es so5re o comando H)U8,+HE=

Mais r1&ido do que e<ecu!ar um (ELEHE sem a cl1usula JOE)E*
7s dados n2o &oder2o ser recu&erados a n2o ser a!ravs do 5acVu&%*































BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 11 ???.=;@8@A237.63B.C2
4. INSERTL UPDATE E DELETE
INSERT
Para incluir dados em uma !a5ela u!ili.e o comando I8SE)H=

INSERT INTO NOME_DA_TABELA (NOME_DA_COLUNA_1,NOME_DA_COLUNA_2...)
VALUES (VALOR_DA_COLUNA_1, VALOR_DA_COLUNA_2...);

E<em&lo=

INSERT INTO CLIENTE (CODCLI,NOME,UF,CPF)
VALUES (1001,'Antonio Alves','SP''11122233344',);

OC792A5EF3: Ialores cu6o !i&o de dado 8UMBE) n2o &recisam ser envolvidos &or T as&as sim&les%*
7u!ros valores com !i&os de dados I+),O+):, ,O+) e (+HE <9A9B ser envolvidos &or T as&as sim&es%*

UPDATE
Para modi/icar a!uali.ar% os dados inseridos em uma !a5ela u!ili.e o comando UP(+HE=

UPDATE NOME_DA_TABELA
SET NOME_DA_COLUNA_1 = NOVO_VALOR_1, NOME_DA_COLUNA_2 = NOVO_VALOR_2
WHERE ...;

E<em&lo a!uali.ando um valor= 87ME%=

UPDATE CLIENTE
SET NOME = 'Antonio Alvares'
WHERE CODCLI = 1001;

E<em&lo a!uali.ando dois valores= 87ME e U>%=

UPDATE CLIENTE
SET NOME = 'Antonio Alvares', UF = 'RJ'
WHERE CODCLI = 1001;

OC792A5EF3: ,aso n2o se6a u!ili.ada a cl1usula JOE)E, indicando a lin#a em que a al!era92o deve ser
reali.ada, H7(+S as lin#as da !a5ela ser2o al!eradas* 8o e<em&lo acima, a n2o u!ili.a92o da cl1usula
JOE)E &rovocaria a al!era92o dos nomes de H7(7S os clien!es &ara A;K3;@3 A8A5297*

DELETE
Para e<cluir lin#as de uma !a5ela u!ili.e o comando (ELEHE=

DELETE NOME_DA_TABELA ou DELETE FROM NOME_DA_TABELA
WHERE ...; WHERE ...;

E<em&lo=

DELETE FROM CLIENTE
WHERE CODCLI = 1001;

OC792A5EF3: ,aso n2o se6a u!ili.ada a cl1usula JOE)E, indicando a lin#a em que a e<clus2o deve ser
reali.ada, H7(+S as lin#as da !a5ela ser2o e<cludas*


BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 12 ???.=;@8@A237.63B.C2
. TRANSAES
Uma !ransa92o re&resen!a um con6un!o que comandos cu6o resul!ado dever1 ser "ravado de uma ve. no
5anco de dados*
Uma !ransa92o &ode !erminar das se"uin!es maneiras=
COMMIT
'rava de/ini!ivamen!e no 5anco os e/ei!os dos comandos da !ransa92o I8SE)H, UP(+HE, (ELEHE%*

OC792A5EM97:
Encerramen!o normal da se92o= Provoca um ,7MMIH im&lci!oN
U!ili.a92o de comandos ((L ou (,L= Provoca um ,7MMIH im&lci!o*

ROLLBACH
(escar!a os e/ei!os dos comandos da !ransa92o*

OC792A5EF3:
Encerramen!o anormal da se92o= Provoca um )7LLB+,A im&lci!oN

AUTOCOMMIT
,on/irma imedia!amen!e cada ins!ru92o (ML I8SE)H, UP(+HE e (ELEHE%* 8es!e caso, a ins!ru92o
)7LLB+,A n2o !er1 nen#um e/ei!o*

Para 5K@A52 o +UH7,7MMIH no SQLFPlus u!ili.e=

SET AUTOCOMMIT ON

Para <975K@A52 o +UH7,7MMIH no SQLFPlus u!ili.e=

SET AUTOCOMMIT OFF



















BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 13 ???.=;@8@A237.63B.C2
-. CLUSULA "HERE
Permi!e que se6am es&eci/icadas lin#as so5re as quais ser1 a&licada de!erminada ins!ru92o* C sem&re
se"uida &or uma e<&ress2o lB"ica que &ode con!er os se"uin!es o&eradores=

DE COMPARAO \, ], S, \S, ]S, ]\
LGICOS +8(, 7), 87H
DA LINGUAGEM SQL
IS NULL, IS NOT NULL, LIK, NOT LIK, IN, NOT IN, !T"N, NOT
!T"N, #ISTS, NOT #ISTS


OPERADORES SQL
IS NULL Ieri/ica se o con!e-do da coluna 8ULL va.io%
IS NOT NULL 8e"a92o do o&erador IS 8ULL
LIHE
,om&ara cadeia de carac!eres u!ili.ando &adrGes de com&ara92o=

^ su5s!i!ui .ero, um ou mais carac!eres
L su5s!i!ui um carac!ere

LIAE T+^T
LIAE T^+T
LIAE T^+^T
LIAE T+LT
LIAE TL+T
LIAE TL+LT
LIAE T^+LT
LIAE TL+^T
inicia com a le!ra +
!ermina com a le!ra +
!em a le!ra + em qualquer &osi92o
s!rin" de dois carac!eres, inicia com a le!ra +
s!rin" de dois carac!eres, !ermina com a le!ra +
s!rin" de !rRs carac!eres, le!ra + na se"unda &osi92o
!em a le!ra + na &en-l!ima &osi92o
!em a le!ra + na se"unda &osi92o
NOT LIHE 8e"a92o do o&erador LIAE
IN Hes!a se um valor &er!ence a um con6un!o de valores
NOT IN 8e"a92o do o&erador I8
BET"EEN (e!ermina um in!ervalo de 5usca= BEHJE88 Tvalor1T +8( Tvalor:T
NOT BET"EEN 8e"a92o do o&erador BEHJEE8
EXISTS Ieri/ica se um valor e<is!e em um con6un!o, levando em con!a os valores nulos* >a!o
n2o considerado &elo o&erador I8
NOT EXISTS 8e"a92o do o&erador E?ISHS

















BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 14 ???.=;@8@A237.63B.C2
!. SELECT
SELECT [DISTINCT | ALL] NOME_DA_COLUNA,NOME_DA_COLUNA
FROM NOME_DA_TABELA
[WHERE condio]
[GROUP BY NOME_DA_COLUNA
HAVING codio]
[ORDER BY NOME_DA_COLUNA,NOME_DA_COLUNA];

Selecionar !odos os cam&os da !a5ela=

SELECT * FROM CLIENTE;

Selecionar um cam&o da !a5ela=

SELECT NOME FROM CLIENTE;

Selecionar mais de um cam&o da !a5ela=

SELECT CODCLI, NOME FROM CLIENTE;

ALIAS= +!ri5ui um a&elido ao nome da coluna somen!e na consul!a%=

SELECT NOME NOMECLI FROM CLIENTE;

DISTINCT= n2o e<i5e dados du&licados

SELECT DISTINCT UF FROM CLIENTE;

ORDER B)= ,lassi/ica os resul!ados da &esquisa +S,= ordem ascenden!e, (ES,= ordem descenden!e%

SELECT * FROM CLIENTE ORDER BY NOME ASC;
ou
SELECT * FROM CLIENTE ORDER BY NOME;

SELECT * FROM CLIENTE ORDER BY NOME DESC;

"HERE= Seleciona lin#as que sa!is/a.em de!erminado cri!rio

SELECT * FROM CLIENTE WHERE UF = 'SP';
SELECT * FROM CLIENTE WHERE UF = 'SP' AND CODCLI > 1003;

GROUP B)= +"ru&a as lin#as selecionadas e re!orna uma -nica lin#a de in/orma92o &ara cada "ru&o

SELECT COUNT(NOME), UF FROM CLIENTE GROUP BY UF;

OC792A5EF3: + consul!a acima re!ornar1 as quan!idades de clien!es a"ru&ados% &or U> es!ado%*

HA(ING= >il!ra as lin#as re!ornadas e<i5indo a&enas aquelas cu6a e<&ress2o se6a H)UE

SELECT COUNT(NOME), UF FROM CLIENTE GROUP BY UF HAVING UF <> 'SP';

OC792A5EF3: + consul!a acima re!ornar1 as quan!idades de clien!es a"ru&ados% &or U> es!ado% &ara U>
di/eren!e de TSPT*


BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 1 ???.=;@8@A237.63B.C2
SELECT $OR UPDATE
Bloqueia !odas as lin#as selecionadas* 8en#uma al!era92o &oder1 ser reali.ada em sessGes di/eren!es
daquela que emi!iu o comando* 7 5loqueio ser1 man!ido a! que a sess2o que emi!iu o comando reali.e o
,7MMIH ou o )7LLB+,A*

SELECT * FROM NOME DA TABELA FOR UPDATE;

E<em&lo=

SELECT * FROM CLIENTE WHERE CODCLI BETWEEN 1 AND 10 FOR UPDATE;

OC792A5EF3: +s lin#as com ,7(,LI en!re 1 e 10 es!ar2o 5loqueadas &ara as ou!ras sessGes a! que se6a
emi!ido o ,7MMIH ou o )7LLB+,A*

CASE
Permi!e a u!ili.a92o da es!ru!ura I>***HOE8***ELSE em uma consul!a=

E<em&lo=

SELECT NOME,
CASE UF
WHEN 'SP' THEN 'SO PAULO'
WHEN 'RJ' THEN 'RIO DE JANEIRO'
ELSE 'OUTRO ESTADO'
END "ESTADO"
FROM CLIENTE;




























BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 1- ???.=;@8@A237.63B.C2
#. $UNES DE LINHA
UPPER
)e!orna !odas as le!ras de !odas as &alavras que com&Gem o ar"umen!o em le!ras mai-sculas*

SELECT UPPER(NOME) FROM CLIENTE;

OC792A5EF3: Para locali.ar um de!erminado nome e n2o !iver cer!e.a de como es!e nome /oi inserido na
!a5ela !odos carac!eres em mai-sculas, somen!e o &rimeiro carac!ere em mai-scula, e!c*%, u!ili.e=

SELECT * FROM CLIENTE WHERE UPPER(NOME) = 'ANTONIO ALVARES';
LO"ER
)e!orna !odas as le!ras de !odas as &alavras que com&Gem o ar"umen!o em le!ras min-sculas*

SELECT LOWER(NOME) FROM CLIENTE;
INITCAP
)e!orna a le!ra inicial de cada &alavra em mai-scula e as demais em min-sculas*

SELECT INITCAP(NOME) FROM CLIENTE;
LPAD
Preenc#imen!o X esquerda*

SELECT LPAD (NOME_DA_COLUNA,tamanho,caracter_de_preenchimento) FROM NOME_DA_TABELA;

E<em&lo 1= Preenc#imen!o com TFT X esquerda

SELECT LPAD(UF,10,'*') ESTADO FROM CLIENTE;

OC792A5EF3: + &alavra ESH+(7 acima u!ili.ada como TrB!uloT &ara a coluna U>*

E<em&lo := Preenc#imen!o com es&a9os em 5ranco X esquerda

SELECT LPAD(UF,10) ESTADO FROM CLIENTE;
RPAD
Preenc#imen!o X direi!a*

SELECT LPAD (NOME_DA_COLUNA,tamanho,caracter_de_preenchimento) FROM NOME_DA_TABELA;

E<em&lo= Preenc#imen!o com TFT X direi!a*

SELECT LPAD(UF,10,'*') ESTADO FROM CLIENTE;
SUBSTR
)e!orna uma s!rin" e<!rada de uma coluna, e<&ress2o ou cons!an!e% cu6o com&rimen!o ser1 de!erminado
&elo &arYme!ro !aman#o*

SELECT SUBSTR(NOME_DA_COLUNA,posicao_inicial,tamanho) FROM NOME_DA_TABELA;

E<em&lo 1= )e!orna qua!ro carac!eres a &ar!ir da &osi92o um con!idos na coluna 87ME da !a5ela ,LIE8HE

SELECT SUBSTR(NOME,1,4) NOME FROM CLIENTE;

E<em&lo := )e!orna os qua!ro -l!imos carac!eres con!idos na coluna 87ME da !a5ela ,LIE8HE

SELECT SUBSTR(NOME,4) NOME FROM CLIENTE;

BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 1! ???.=;@8@A237.63B.C2
%. $UNES DE GRUPO
PRO*ETO
CODPRO* (ALOR CODDEPT
1001 :E0*000,00 (1
100: ;00*000,00 (:
100; E00*000,00 (1
100D 400*000,00 (:
A(G
)e!orna a BN<@5 ari!m!ica de uma coluna ou e<&ress2o &ara o a"ru&amen!o*

E<em&lo= )e!orna o valor mdio dos &ro6e!os a"ru&ados &or de&ar!amen!o

SELECT CODDEPT, AVG(VALOR) FROM PROJETO GROUP BY CODDEPT;
MAX
)e!orna o B5@32 valor de uma coluna ou e<&ress2o &ara o a"ru&amen!o*

E<em&lo= )e!orna o maior valor dos &ro6e!os de cada de&ar!amen!o

SELECT CODDEPT, MAX(VALOR) FROM PROJETO GROUP BY CODDEPT;
MIN
)e!orna o B9;32 valor de uma coluna ou e<&ress2o &ara o a"ru&amen!o*

E<em&lo= )e!orna o menor valor dos &ro6e!os de cada de&ar!amen!o

SELECT CODDEPT, MIN(VALOR) FROM PROJETO GROUP BY CODDEPT;
COUNT
,on!a o n-mero de ve.es que o ar"umen!o mudou de valor &ara o a"ru&amen!o*

Se o ar"umen!o /or F, con!a as lin#as selecionadas incluindo as de valor 8ULL*

E<em&lo= )e!orna a quan!idade &ro6e!os de cada de&ar!amen!o

SELECT CODDEPT, COUNT(CODPROJ) FROM PROJETO GROUP BY CODDEPT;
SUM
)e!orna a 73B5KO2@5 de uma coluna ou e<&ress2o de a"ru&amen!o*

Se o ar"umen!o /or F, con!a as lin#as selecionadas incluindo as de valor 8ULL*

E<em&lo= )e!orna o valor !o!al dos &ro6e!os de cada de&ar!amen!o

SELECT CODDEPT, SUM(VALOR) FROM PROJETO GROUP BY CODDEPT;










BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 1# ???.=;@8@A237.63B.C2
1&. $UNES NUM'RICAS
ABS
)e!orna o valor a5solu!o do n-mero &assado como &arYme!ro*

SELECT ABS (-10) FROM DUAL;

ABS(-10)
----------
10
CEIL
)e!orna n-mero in!eiro maior ou i"ual ao n-mero do ar"umen!o*

SELECT CEIL (10.1) FROM DUAL;

CEIL(10.1)
----------
11
$LOOR
)e!orna o maior n-mero in!eiro menor ou i"ual ao ar"umen!o*

SELECT FLOOR (10.1) FROM DUAL;

FLOOR(10.1)
-----------
10
ROUND
)e!orna o n-mero arredondado em n casas decimais*

SELECT ROUND (10.8475,2) FROM DUAL;

ROUND(10.8475,2)
----------------
10,85
TRUNC
)e!orna o n-mero !runcado em n casas decimais*

SELECT TRUNC (10.8475,2) FROM DUAL;

TRUNC(10.8475,2)
----------------
10,84
MOD
)e!orna o res!o da divis2o do dividendo &elo divisor*

SELECT MOD (5,2) FROM DUAL;

MOD(5,2)
----------
1

BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 1% ???.=;@8@A237.63B.C2
PO"ER
)e!orna o valor da &o!encia92o*

SELECT POWER (4,2) FROM DUAL;

POWER(4,2)
----------
16
SQRT
)e!orna a rai. quadrada do n-mero*

SELECT SQRT (16) FROM DUAL;

SQRT(16)
----------
4
SIGN
)e!orna 1 &ara valores maiores que .ero, 0 quando o valor /or .ero e 01 quando o valor /or menor que .ero*

SELECT SIGN (10) FROM DUAL;

SIGN(10)
----------
1

SELECT SIGN (0) FROM DUAL;

SIGN(0)
----------
0

SELECT SIGN (-10) FROM DUAL;

SIGN(-10)
----------
-1


















BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 2& ???.=;@8@A237.63B.C2
11. $UNES DE CON(ERSO
TOPCHAR
,onver!e um valor !i&o (+HE ou 8UMBE) &ara um valor ,O+)*

OC792A5EF3: Para o &rB<imo e<em&lo al!ere no SQLFPlus a lar"ura das colunas (I+ e MES &ara ;* U!ili.e
&ara isso os se"uin!es comandos=

COL DIA FORMAT A3
COL MES FORMAT A3

SELECT TO_CHAR (SYSDATE,'DD') DIA,
TO_CHAR (SYSDATE,'MM') MES,
TO_CHAR (SYSDATE,'YYYY') ANO
FROM DUAL;

DIA MES ANO
--- --- ----
12 10 2011

SELECT TO_CHAR (SYSDATE,'DD "DE" MONTH "DE" YYYY') "DATA ATUAL" FROM DUAL;

DATA ATUAL
---------------------
12 DE OUTUBRO DE 2011

SELECT TO_CHAR(1250,'999,999.99') FROM DUAL;

1,250.00

TOPDATE
,onver!e uma e<&ress2o !i&o ,O+) &ara (+HE*

INSERT INTO TESTE (DATA_NASC)
VALUES (TO_DATE('10/20/1980','MM/DD/YYYY'));

OC792A5EF3: U!ili.e a /un92o H7L(+HE &ara inserir da!as em !a5elas quando n2o sou5er o /orma!o
u!ili.ado no servidor ((QMMQUUUU ou MMQ((QUUUU%*

TOPNUMBER
,onver!e uma e<&ress2o v1lida% do !i&o ,O+) &ara 8UMBE)*

SELECT TO_NUMBER('$1,250.00','$999,999.99') FROM DUAL;

1250









BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 21 ???.=;@8@A237.63B.C2
12. OUTRAS $UNES
N(L
)e!orna um valor n2o nulo quando o !ermo nulo /or encon!rado*
Para re!ornar 0 .ero% quando o !ermo nulo /or encon!rado=

SELECT NVL(NOME_DA_COLUNA,0) FROM NOME_DA_TABELA;

NULLI$
)e!orna 8ULL se os dois valores /orem i"uais, sen2o re!orna o &rimeiro valor*

SELECT NULLIF(15,15) FROM DUAL; -- RETORNA NULL

SELECT NULLIF(15,20) FROM DUAL; -- RETORNA 15

DECODE
Im&lemen!a a lB"ica condicional i/0!#en0else*

SELECT DECODE(15,15,'IGUAIS','DIFERENTES') FROM DUAL; -- RETORNA IGUAIS

SELECT DECODE(15,20,'IGUAIS','DIFERENTES') FROM DUAL; -- RETORNA DIFERENTES





























BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 22 ???.=;@8@A237.63B.C2
13. SUBQUER)
,onsul!a den!ro de um comando SQL SELE,H, UP(+HE, (ELEHE ou I8SE)H%*

CLIENTE PEDIDO
CODCLI NOME NRPED CODCLI
1001 +n!onio +lvares 1 100:
100: Bea!ri. Bernardes : 100;
100; ,laudio ,ardoso ; 100:
100D (aniela (an!as D

Qual o nome do clien!e que e/e!uou o &edido n-mero 1Z

SELECT NOME FROM CLIENTE WHERE CODCLI =
(SELECT CODCLI FROM PEDIDO WHERE NRPED = 1);

OC792A5EF3: + quer$ SELECT CODCLI FROM PEDIDO WHERE NRPED = 1 e<ecu!ada J2@B9@23 e
a&resen!a como resul!ado 1&&2* + quer$ SELECT NOME FROM CLIENTE WHERE CODCLI = 1&&2
a&resen!a o nome do clien!e= B95K2@Q B92;52<97*

Qual o cBdi"o do clien!e que e/e!uou o -l!imo &edidoZ

SELECT CODCLI FROM PEDIDO WHERE NRPED =
(SELECT MAX(NRPED) FROM PEDIDO);

Quais os nomes clien!es que e/e!uaram &elo menos um &edidoZ

SELECT NOME FROM CLIENTE WHERE CODCLI IN
(SELECT CODCLI FROM PEDIDO);

7s se"uin!es o&eradores &odem ser u!ili.ados=

OPERADOR $UNO
S, ]\, ], ]S, \, \S )elacionais usados em su5queries do !i&o uma lin#a*
I8 Hes!a se um valor &er!ence a um con6un!o de valores*
87H I8 Hes!a se um valor n2o &er!ence a um con6un!o de valores*
+8U Ieri/ica se um de!erminado ar"umen!o casa com qualquer mem5ro de um con6un!o*
+LL Ieri/ica se um de!erminado ar"umen!o casa com !odos os mem5ros de um con6un!o*
E?ISHS
Ieri/ica se um valor e<is!e em um con6un!o, levando em con!a os valores nulos* >a!o
n2o considerado &elo o&erador I8*
87H E?ISHS 8e"a92o do o&erador E?ISHS*










BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 23 ???.=;@8@A237.63B.C2
14. *OINS I *UNES DE TABELAS
EQUI *OIN
)e-ne cam&os i"uais de !a5elas di/eren!es*

SELECT C.NOME, P.NRPED
FROM CLIENTE C
INNER JOIN PEDIDO P
ON C.CODCLI = P.CODCLI;

NOME NRPED
-------------------- ----------
Beatriz Bernardes 1
Claudio Cardoso 2
Beatriz Bernardes 3

OC792A5EF3: C e P /oram os alias a&elidos% u!ili.ados res&ec!ivamen!e &ara as !a5elas CLIENTE e PEDIDO*

NATURAL *OIN +*UNO NATURAL,
Quando as !a5elas so5re as quais queremos reali.ar a 6un92o a&resen!am colunas com o mesmo nome e
&ara que, nesses casos, n2o se6a necess1rio e<&lici!ar o nome das colunas, u!ili.amos a _U8`[7 8+HU)+L*

SELECT C.NOME, P.NRPED
FROM CLIENTE C
NATURAL INNER JOIN PEDIDO P;

NOME NRPED
-------------------- ----------
Beatriz Bernardes 1
Claudio Cardoso 2
Beatriz Bernardes 3

*UNO BASEADA EM NOMES DE COLUNAS
8a _U8`[7 8+HU)+L !odas as colunas de mesmo nome nas !a5elas s2o u!ili.adas &ara reali.ar a 6un92o*
Porm, na _U8`[7 B+SE+(+ EM 87MES (E ,7LU8+S somen!e s2o u!ili.adas as colunas lis!adas na
cl1usula USI8'*

SELECT C.NOME, P.NRPED
FROM CLIENTE C
INNER JOIN PEDIDO P
USING (CODCLI);

NOME NRPED
-------------------- ----------
Beatriz Bernardes 1
Claudio Cardoso 2
Beatriz Bernardes 3



BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 24 ???.=;@8@A237.63B.C2
OUTER *OIN +*UNO EXTERNA,
+lm de mos!rar re"is!ros cu6os cam&os em comum es!e6am &resen!es nas duas !a5elas, ainda mos!ra os
que /al!am*

LE$T OUTER *OIN +*UNO EXTERNA R ESQUERDA,
+&resen!ar os nomes de H7(7S os clien!es e os n-meros dos &edidos=

SELECT C.NOME, P.NRPED
FROM CLIENTE C
LEFT OUTER JOIN PEDIDO P
ON C.CODCLI = P.CODCLI;

NOME NRPED
-------------------- ----------
Beatriz Bernardes 1
Claudio Cardoso 2
Beatriz Bernardes 3
Antonio Alvares
Daniela Dantas

OC792A5EF3: + J2@B9@25 K5C985 da consul!a considerada 97S=92<5*

RIGHT OUTER *OIN +*UNO EXTERNA R DIREITA,
+&resen!ar os nomes dos clien!es e os n-meros de H7(7S os &edidos=

SELECT C.NOME, P.NRPED
FROM CLIENTE C
RIGHT OUTER JOIN PEDIDO P
ON C.CODCLI = P.CODCLI;

NOME NRPED
-------------------- ----------
Beatriz Bernardes 1
Claudio Cardoso 2
Beatriz Bernardes 3
4

LE$T OUTER *OIN +*UNO EXTERNA R ESQUERDA,
+&resen!ar os nomes de H7(7S os clien!es e os n-meros de H7(7S os &edidos=

SELECT C.NOME, P.NRPED
FROM CLIENTE C
FULL OUTER JOIN PEDIDO P
ON C.CODCLI = P.CODCLI;

NOME NRPED
-------------------- ----------
Beatriz Bernardes 1
Claudio Cardoso 2
Beatriz Bernardes 3
Antonio Alvares
Daniela Dantas
4

BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 2 ???.=;@8@A237.63B.C2
NON EQUI *OIN
)e-ne cam&os de !a5elas que n2o !Rm valores em comum*

PRODUTO CLASSE
CODPROD (ALOR $AIXA (ALORMIN (ALORMAX
101 7E*00 + 0*00 E0*00
10: 1:0*00 B E0*01 100*00
10; ;0*00 , 100*01 1E0*00

SELECT P.CODPROD, P.VALOR, C.FAIXA
FROM PRODUTO P
INNER JOIN CLASSE C
ON P.VALOR BETWEEN C.VALORMIN AND C.VALORMAX;

CODPROD VALOR FAIXA
------- ------ -----
101 75.00 B
102 120.00 C
103 30.00 A

OC792A5EF3: 8o e<em&lo acima /oi u!ili.ado o o&erador relacional BEHJEE8* Pode0se u!ili.ar em _U8`aES
do !i&o 878 EQUI _7I8 qualquer o&erador relacional, e<ce!o S i"ual%*

SEL$ *OIN
)elaciona dois cam&os de uma mesma !a5ela que se6am do mesmo !i&o*

CURSO
CODCURSO NOMECURSO CODPREREQ
11 JI8(7JS BbSI,7
1: JI8(7JS +I+8`+(7 11
1; J7)( BbSI,7
1D J7)( +I+8`+(7 1;
1E E?,EL BbSI,7
14 E?,EL +I+8`+(7 1E

SELECT C.NOMECURSO, P.NOMECURSO "PR-REQUISITO"
FROM CURSO C
INNER JOIN CURSO P
ON C.CODPREREQ = P.CODCURSO;

NM_CURSO PR-REQUISITO
----------------------- -----------------------
WINDOWS AVANADO WINDOWS BSICO
WORD AVANADO WORD BSICO
EXCEL AVANADO EXCEL BSICO






BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 2- ???.=;@8@A237.63B.C2
CROSS *OIN +*UNO CRUDADA,
+&resen!a !odas as com5ina9Ges &ossveis en!re elemen!os de duas !a5elas*

TIMEPSP TIMEPR*
CODTIME NOMETIME CODTIME NOMETIME
101 ,7)I8HOI+8S :01 >L+ME8'7
10: P+LMEI)+S :0: I+S,7
10; S+8H7S :0; >LUMI8E8SE
10D S[7 P+UL7 :0D I+S,7

SELECT SP.NOMETIME "TIME SP",RJ.NOMETIME "TIME RJ"
FROM TIME_SP SP
CROSS JOIN TIME_RJ RJ;

TIME SP TIME RJ
--------------- ---------------
CORINTHIANS BOTAFOGO
CORINTHIANS FLAMENGO
CORINTHIANS FLUMINENSE
CORINTHIANS VASCO
PALMEIRAS BOTAFOGO
PALMEIRAS FLAMENGO
PALMEIRAS FLUMINENSE
PALMEIRAS VASCO
SANTOS BOTAFOGO
SANTOS FLAMENGO
SANTOS FLUMINENSE
SANTOS VASCO
SO PAULO BOTAFOGO
SO PAULO FLAMENGO
SO PAULO FLUMINENSE
SO PAULO VASCO




















BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 2! ???.=;@8@A237.63B.C2
1. OPERAES DE CON*UNTO
UNION +UNIO,
+&resen!a como resul!ado a =;@F3 de !odas as lin#as que /oram recu&eradas &or dois comandos SQL
reali.ados em se&arado*
7s comandos devem re!ornar o mesmo n-mero de colunasN
+s colunas corres&onden!es em cada comando devem &ossuir os mesmos !i&os de dados*

SELECT NOME_DA_COLUNA_1, NOME_DA_COLUNA_2
FROM NOME_DA_TABELA_1
UNION [ALL]
SELECT NOME_DA_COLUNA_3, NOME_DA_COLUNA_4
FROM NOME_DA_TABELA_2;

7 &redicado +LL /ar1 com que a&are9am lin#as re&e!idas se /or o caso%*

INTERSECT +INTERSEO,
+&resen!a como resul!ado a @;K9279EF3 de !odas as lin#as que /oram recu&eradas &or dois comandos SQL
reali.ados em se&arado*
7s comandos devem re!ornar o mesmo n-mero de colunasN
+s colunas corres&onden!es em cada comando devem &ossuir os mesmos !i&os de dados*

SELECT NOME_DA_COLUNA_1, NOME_DA_COLUNA_2
FROM NOME_DA_TABELA_1
INTERSECT
SELECT NOME_DA_COLUNA_3, NOME_DA_COLUNA_4
FROM NOME_DA_TABELA_2;

MINUS +DI$ERENA,
+&resen!a como resul!ado a <@4929;E5 en!re as lin#as que /oram recu&eradas &or dois comandos SQL
reali.ados em se&arado*
7s comandos devem re!ornar o mesmo n-mero de colunas
+s colunas corres&onden!es em cada comando devem &ossuir os mesmos !i&os de dados
+ ordem de declara92o das consul!as com rela92o ao &redicado MI8US al!era o resul!ado /inal*

SELECT NOME_DA_COLUNA_1, NOME_DA_COLUNA_2
FROM NOME_DA_TABELA_1
MINUS
SELECT NOME_DA_COLUNA_3, NOME_DA_COLUNA_4
FROM NOME_DA_TABELA_2;

OC792A5EF3: 7u!ros 5ancos de dados u!ili.am o &redicado E?,EPH &ara (I>E)E8`+*

CLIENTEPA CLIENTEPB
CP$ NOME CP$ NOME
111:::;;;DD +n!onio +lvares :::;;;DDDEE Bea!ri. Bernardes
:::;;;DDDEE Bea!ri. Bernardes DDDEEE44477 (aniela (an!as
;;;DDDEEE44 ,laudio ,ardoso EEE44477733 Ernes!o Ermene"ildo
DDDEEE44477 (aniela (an!as 44477733399 >a5iana >onseca

BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 2# ???.=;@8@A237.63B.C2

SELECT * FROM CLIENTE_A
UNION
SELECT * FROM CLIENTE_B;

CPF NOME
----------- --------------------
11122233344 Antonio Alvares
22233344455 Beatriz Bernardes
33344455566 Claudio Cardoso
44455566677 Daniela Dantas
55566677788 Ernesto Ermenegildo
66677788899 Fabiana Fonseca


SELECT * FROM CLIENTE_A
INTERSECT
SELECT * FROM CLIENTE_B;

CPF NOME
----------- --------------------
22233344455 Beatriz Bernardes
44455566677 Daniela Dantas


SELECT * FROM CLIENTE_A
MINUS
SELECT * FROM CLIENTE_B;

CPF NOME
----------- --------------------
11122233344 Antonio Alvares
33344455566 Claudio Cardoso





















BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 2% ???.=;@8@A237.63B.C2
1-. MERGE
Permi!e selecionar lin#as de uma ou mais /on!es !a5elas, &or e<em&lo% &ara inser92o ou a!uali.a92o* Pode
e<ecu!ar em um -nico comando as !rRs o&era9Ges= I8SE)H, UP(+HE e (ELEHE*
8o e<em&lo a se"uir s2o a&resen!adas duas !a5elas P)7(UH7 e P)7(UH7L87I7%* + !a5ela P)7(UH7
dever1 ser a!uali.ada con/orme se"ue=
1* Se o &rodu!o 61 cons!ar na !a5ela P)7(UH7, seu valor dever1 ser sim&lesmen!e a!uali.ado con/orme o
valor da !a5ela P)7(UH7L87I7N
:* Se o &rodu!o n2o e<is!ir na !a5ela P)7(UH7, dever1 ser inserido con/orme os dados da !a5ela
P)7(UH7L87I7*

PRODUTO
CODPRO DESCPRO (ALORPRO
11 P)7(UH7 11 10*;E
1: P)7(UH7 1: 1:*EE

PRODUTOPNO(O
CODPRO DESCPRO (ALORPRO
1: P)7(UH7 1: 1D*9E
1; P)7(UH7 1; 13*DE

75serve como reali.ar as al!era9Ges na !a5ela P)7(UH7 u!ili.ando ME)'E=

MERGE INTO PRODUTO P
USING PRODUTO_NOVO N
ON (P.CODPRO = N.CODPRO)
WHEN MATCHED THEN
UPDATE SET P.VALORPRO = N.VALORPRO
WHEN NOT MATCHED THEN
INSERT (CODPRO,DESCPRO,VALORPRO)
VALUES (N.CODPRO,N.DESCPRO,N.VALORPRO);

7 resul!ado ser1 o se"uin!e=

PRODUTO
CODPRO DESCPRO (ALORPRO
11 P)7(UH7 11 10*;E
1: P)7(UH7 1: 1D*9E
1; P)7(UH7 1; 13*DE










BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 3& ???.=;@8@A237.63B.C2
1!. (IE"
Ha5ela vir!ual que n2o arma.ena /isicamen!e os dados* +&resen!a colunas de uma ou mais !a5elas*

CRIANDO UMA (IE"
Para criar uma vie@ u!ili.e=

CREATE OR REPLACE VIEW NOME_DA_VIEW AS ...;

OC792A5EF3: )EPL+,E recria a vie@, se ela 61 e<is!ir*

E<em&lo=

CREATE VIEW CLIENTE_SP AS SELECT * FROM CLIENTE WHERE UF = 'SP';

+ vie@ /oi criada com 5ase na !a5ela ,LIE8HE, a&enas com as lin#as dos clien!es do es!ado de S2o Paulo*

EXCLUINDO UMA (IE"
Para e<cluir uma vie@ u!ili.e=

DROP VIEW NOME_DA_VIEW;

E<em&lo=

DROP VIEW CLIENTE_SP;

OC792A5EF3: 7 comando ()7P IIEJ e<clui a vie@ do dicion1rio de dados* 82o !er1 nen#um ou!ro e/ei!o
so5re as !a5elas re/erenciadas*




































BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 31 ???.=;@8@A237.63B.C2
1#. INDEX
>ornece acesso mais r1&ido a lin#as es&ec/icas, eliminando a necessidade de uma varredura com&le!a na
!a5ela*

CRIANDO UM INDEX
Para criar um ndice u!ili.e o comando ,)E+HE I8(E?=

CREATE INDEX NOME_DO_INDEX ON NOME_DA_TABELA(NOME_DA_COLUNA);

E<em&lo=

CREATE INDEX CLIENTE_NOME_IN ON CLIENTE(NOME);

EXCLUINDO UM TNDICE
Para e<cluir um ndice u!ili.e o comando ()7P I8(E?=

DROP INDEX NOME_DO_INDEX;

E<em&lo=

DROP INDEX CLIENTE_NOME_IN;

































BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 32 ???.=;@8@A237.63B.C2
1%. SEQUENCE
SequRncia ou con!ador au!om1!ico u!ili.ado &ara "erar iden!i/icadores -nicos cBdi"os de &rodu!os,
n-meros de &edidos, e!c*%*

Para criar uma SEQUE8,E u!ili.amos o se"uin!e comando=

CREATE SEQUENCE NOME_DA_SEQUENCE;

7 comando acima criar1 uma nova sequRncia que inicia em 1 e incremen!ada !am5m em 1*

8o e<em&lo a se"uir criamos uma sequRncia que !em incio em 10 e incremen!ada em 10* Quando a!in"ir o
valor 1000 M+?I+LUE% vol!ar1 ao valor inicial 10 ,U,LE%*

CREATE SEQUENCE TESTE
START WITH 10
INCREMENT BY 10
MAXVALUE 1000
CYCLE;

Para consul!ar a sequRncia u!ili.amos o comando=

SELECT NOME_DA_SEQUENCE.CURRVAL FROM DUAL;

E<em&lo= Inserir uma lin#a na !a5ela ,LIE8HE u!ili.ando a sequRncia SEQL,LI=

INSERT INTO CLIENTE (CODIGO,NOME) VALUES (SEQ_CLI.NEXTVAL,'ANTONIO');

Para veri/icar as sequRncias criadas &ara um usu1rio e os seus &arYme!ros u!ili.amos o se"uin!e comando=

SELECT * FROM USER_SEQUENCES;

Para al!erar a sequRncia criada no e<em&lo acima u!ili.amos o se"uin!e comando=

ALTER SEQUENCE TESTE
MINVALUE 50
INCREMENT BY 5;

Para eliminar uma sequRncia u!ili.amos o comando=

DROP SEQUENCE NOME_DA_SEQUENCE;














BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 33 ???.=;@8@A237.63B.C2
2&. RO"ID
Pseudo coluna coluna vir!ual% que in/orma como o 7racle &ode locali.ar em disco as lin#as das !a5elas &or
arquivo, 5loco den!ro daquele arquivo e lin#a den!ro daquele 5loco%*

SELECT ROWID FROM NOME_DA_TABELA;

E<em&lo=

SELECT ROWID FROM CLIENTE;











































BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 34 ???.=;@8@A237.63B.C2
AP.NDICE: USANDO O SQL/PLUS
EDITAR INSTRUES SQL
COMANDOS DE EDIO
COMANDO DESCRIO
+cPPE8(d !e<!o +ne<a o !e<!o na lin#a a!ual*
,cO+8'Ed Qan!i"oQnovo +l!era o !e<!o an!i"o &ara novo na lin#a a!ual*
,LcE+)d BU>>cE)d +&a"a !odas as lin#as do 5u//er*
(EL E<clui a lin#a a!ual*
(EL < E<clui a lin#a es&eci/icada em <*
LcISHd Lis!a !odas as lin#as no 5u//er*
LcISHd < Lis!a a lin#a es&eci/icada em <*
)cU8d ou Q E<ecu!a a ins!ru92o arma.enada no 5u//er*
< Horna corren!e a lin#a es&eci/icada em <*

SAL(ARL RECUPERAR E EXECUTAR ARQUI(OS
OPES PARA $ORMATAO DE COLUNAS
OPO DESCRIO
S+IcEd nomeLarquivo Salva o con!e-do do 5u//er em um arquivo*
)EPL+,E nomeLarquivo So5rescreve o con!e-do do 5u//er em um arquivo*
+PPE8( nomeLarquivo +ne<a o con!e-do do 5u//er em um arquivo*
'EH nomeLarquivo )ecu&era o con!e-do do arquivo*
SH+c)Hd nomeLarquivo )ecu&era o con!e-do do arquico e !en!a e<ecu!10lo*
e nomeLarquivo Idem ao SH+c)Hd*
E(cIHd
,o&ia o con!e-do do 5u//er em um arquivo c#amado a/iedi!*5u/ e inicia o
edi!or de !e<!o* Quando o edi!or /ec#ado, o con!e-do do arquivo
edi!ado co&iado &ara o 5u//er do SQLFPlus*
E(cIHd nomeLarquivo Idem ao E(cIHd, &orm &ode0se es&eci/icar o nome do arquivo &ara edi92o*
SP7c7Ld nomeLarquivo ,o&ia a sada do SQLFPlus &ara o arquivo*
SP7c7Ld 7>> In!errom&e a cB&ia da sada do SQLFPlus no arquivo e /ec#a o arquivo*

$ORMATAR COLUNAS

COL[UMN] coluna | apelido opes

COMANDOS DE EDIO
OPO DESCRIO
>7)cM+Hd /orma!o (e/ine o /orma!o de e<i5i92o da coluna* ,onsul!e as o&9Ges &ara= s!rin"s,
n-meros e da!as*%
OE+c(I8'd (e/ine o ca5e9al#o da coluna*
_UScHI>Ud
LE>H f ,E8HE) f )I'OH
Posiciona a sada da coluna na esquerda, no cen!ro ou na direi!a*
J)+cPPE(d
Passa o /inal de uma s!rin" &ara a &rB<ima lin#a* Palavras &odem ser
divididas*
J7)c(LJ)+PPE(d
Passa o /inal de uma s!rin" &ara a &rB<ima lin#a* Palavras n2o s2o
divididas*
,LEc+)d Lim&a a /orma!a92o de colunas*
BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 3 ???.=;@8@A237.63B.C2
,olunas com carac!eres= U!ili.e +<* Por e<em&lo= +1E de/ine a lar"ura da coluna como 1E carac!eres*
,olunas com n-meros= O1 v1rias o&9Ges* Por e<em&lo= 99*99 e<i5ir1 E como E*00* g99*99 e<i5ir1 E
como gE*00*
,olunas com da!as= ((0MM0UUUU (ia e mRs ser2o e<i5idos com dois d"i!os e ano com qua!ro d"i!os%*

E<em&lo=

CREATE TABLE PRODUTO (
CODIGO NUMBER(4),
NOME VARCHAR2(30),
VALOR NUMBER(4,2));

INSERT INTO PRODUTO VALUES (1,'IMPRESSORA JATO DE TINTA',99);

COLUMN CODIGO FORMAT 99
COLUMN NOME FORMAT A15 WORD WRAPPED
COLUMN VALOR FORMAT 99.99

SELECT * FROM PRODUTO;

CODIGO NOME VALOR
------ --------------- ------
1 IMPRESSORA JATO 99.00
DE TINTA

-- LIMPAR A FORMATAO DA COLUNA NOME

COLUMN NOME CLEAR

CODIGO NOME VALOR
------ ------------------------------ ------
1 IMPRESSORA JATO DE TINTA 99.00

-- LIMPAR A FORMATAO DE TODAS AS COLUNAS

CLEAR COLUMNS


DE$INIR O TAMANHO DA PGINA

(e/ine que a&Bs de!erminado n-mero de lin#as o SQLFPlus e<i5ir1 novamen!e o ca5e9al#o com nomes de
colunas ou a&elidos, e!c*%
8-mero m1<imo &ara !aman#o de &1"ina= E0*000*

SET PAGESIZE 100


DE$INIR O TAMANHO DA LINHA

(e/ine o !aman#o da lin#a em quan!idade de carac!eres*
8-mero m1<imo &ara !aman#o de lin#a= ;:*747*

SET LINESIZE 80





BANCO DE DADOS 0 SQL
1 2&12 P234. M52637 A89:5;<2=> 3- ???.=;@8@A237.63B.C2
RE$ER.NCIAS BIBLIOGR$ICAS
BEI'OLEU, L$nn* Use a ca5e9a SQL* )io de _aneiro= +l!a BooVs, :003*
>+8(E)U>>, (amaris* (ominando o 7racle 9i= Modela"em e (esenvolvimen!o* S2o Paulo= MaVron, :00;*
')+IES, MarV* Pro6e!o de 5anco de dados com ?ML* 1a ed* S2o Paulo= Pearson, :00;*
M7)ELLI, Eduardo Herra* 7racle 9i /undamen!al= SQL, PLQSQL e adminis!ra92o* S2o Paulo= Crica, :00E*
SILI+, )o5son S*, 7racle (a!a5ase 10" E<&ress Edi!ion* 1a ed* S2o Paulo= Crica, :007*
J+HS78, _o#n, )+MAL+SS, )oo&es#* 7racle 11" 0 >undamen!os SQL I* )io de _aneiro= +l!a BooVs, :010*

Das könnte Ihnen auch gefallen