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*
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=
(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=
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=
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%=
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*
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%*
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;
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%*
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;
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;
*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);
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;
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*
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`+*
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*
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);
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*