Introdução ao Servidor Oracle e Banco de Dados
Introdução ao Servidor Oracle e Banco de Dados
SERVIDOR ORACLE
Banco de dados
OPapeldaOraclenaComputaçãoCliente/Servidor
AcomputaçãoCliente/Servidoréummétodoemque
Obancodedadoséarmazenadonoservidornarede
Um programa dedicado, chamado back-end, roda no servidor para gerenciar
banadcqm oaetudeo,sbém
aré[Link]
Usuárioacessaosdadosnobancodedadosexecutandoaaplicação,tambémchamadade
baoceknm
q-adcseuxecu,nseçãaotcim
celdno-nrstfo
.dorvires
Appcilaoitnsrunnnigonhteceilnsntietracw thtihteuse.r
Oback-endcuidadagestãototadlobancodedados.
1
Oaplicativoclienteeoback-endsãoexecutadosemmáquinasdiferenteso,que
talvez de tipos diferentes. Por exemplo, o back-end pode rodar em
o mainframe e o front-end podem estar em um PC.
Oracleéumsistemadebancodedadosquerodanoservidoreéusadoparagerenciar
.dE
n-kcB
aé sodadedocnabed rodivres oarapm
[Link]
A
vesrãomercaseindetosevrdioO
rar9é[Link]
[Link]ãoalgunsdos
aopfm
trlnO
qasusaoiercplear.
WindowsNT.
New
t aredeRomance
Unix
eO eacldorviersN
etesO .doaclurabesm
orédosO
eoP
snalcer
ondesborasomcréoutomnãaE
[Link]ácxepodsdois
OracleServerrodanoServidoreoFront-endrodanoCliente.
Cad
crO
iasotecrtíraecl
Asegunesiãtoaglumadsacm
sairscetírpoatnredtsoOarS
celevre.r
LargeDatbaseSupport
OOraclesuportaomaiorbancodedados,potencialmentecentenasdepetabytesdetamanho.
of ,oçapse od etneici fe osu o etm
irepm
ém
bat ossI
gestão.
ConcurrênciadeDados
OOraclesuportaoacessoconcorrenteaobancodedadospormúltiplosusuários.
[Link]
utpnacm
hriasernldáotbeqsaluneti
sdrad
natsecnatpeccayrtsu
d
nI
OOracleServeré100%compatívelcomaentradadasnormasANSI/ISO.
Oracleadherestoindustrystandardsfordataaccesslanguage,network
2
ponrO
[Link]
leum
pstoea,irgbote'ra
lpa rat rop l icáf É .etnei lcodotnm
ei t sevni
3
Poratdb
ilaide
OsoftwareOraclepodeserportadoparadiferentessistemasoperacionaiseéo
nameosynelm satlO
[Link]çõlesmOaercplodsepraodtrpoar
eqm
tusqaisuloerapoacernim
alpouocnausenhummacaoçiãfdoi.
EnforcedIntegrtiy
AOraclepermitequeosusuáriosdefinamregrasdenegó[Link]
nãopercsainerculdíononvídeloapcivalto.
SegurançadeDados
OOraclefornecesegurançaemdiferentesníveis-níveldesistemaeníveldeobjeto.
am
Fdtauem
vrnésiçõabt.eésam
noparltegsácm
diaunfçeãoratsai
Suporp
etarambeinC
eteinleS
t/ervdior
[Link]
[Link]ároaceferntiaazfentC
ienoqloudanbtdaon,escãogtesaodatazf
m
osdinteocprdem
orafnadosadeoncbanom
donarezaajesgoódicoqueem trpeidorvires
ufenspoçIõem
rzcase.içnrãltdoicoódgerieorudaze
.ogefárt
DatabaseArchitecture
Um banco de dados contém informações de qualquer comprimento. Mas, para o usuário final, temos
sa odnat luco ,sairássecen seõçm
arofni sa sanepa rartmso
uasonçm
dãctouvaesdilpfárosaéedçtrãboeatsdo.s
coN
siífvíel
NLvóeílcgoi
NvídeleVsiuazilação
PhycsiaL
level
AceursdiatífaorbancoddeadoepástocsinadnacÉ osniví[Link]
casim
feunem tconuajqênrodsutveiom
[Link]
ArquivosDeDados
ArquviosdeRedoolg
4
Controlfiles
Eseaqsruviosãoacidroasuotmcaitmenqetuandobancoddeadoacéidrso.
ArquivosdeDados
q alebat adC
a .sodad ed ocnab od sodad som
étnoc elE
boSaqndrvuocespiam
dt.séroeasO
doS
eapnrsvateorclide
aqruvios.
RedoLogFiles
CadabancodedadospossuuimconujnotdedosioumasiarquviosdeolgderedoE .sseconujnotdeolgderedo
OaqrsuviedoresãoconhedciosmaqoruvidobesancdoeaO
[Link]
esedoLosãguosadeom
scahdsoflae.
[Link]ãsdosadeoncbanosatiefsõeçaretlasasT
odao.ãçarupecer
)gol .10odersm eanel iF(
ControlFiles
Contéminformaçõesnecessáriasparaverifcaraintegridadedobancodedados,
nab on soviuqra sor tuo sod sm
eon so odniulcni
DatabaseName
Nomeseolcazilaçõesdearquviosdedadosearquviosdeolgderedação.
Cam
nhioPodem
ustarO
caom
ldare\ctrlnhiondvoaesridpteaors
3tiposdeficheiros
5
Erstuu
traLógcai
C
O
[Link]íaurtrE
ndtepiasnedéL
ntcaóugritA
rEts
boandcoaedcoénsm
tcesognm
[Link]
EpsT
adçoeabsel
Segmenots
Exetnsões
Blocos
EspaçodeTabeal
Cadabancodedadoséumacoelçãodeespaç[Link],odemosusarumaatbeal
.gapholfdevaitaciplaàdonsaidA
P
ceaY
leR
lraodcçspO
sm
teL
rnaezL
arpa
Todobancodedadosconé[Link]écraidoauotmacitamenet.
quandoumbancodedadosécriado,oespaçodesistemacontémosdados
aobdctaineoslái.r
nm
eai rarom
pet alebat ad oçapse o ranrot levíssopÉ
et la ,etnm eavon levínops id o-anrot e ahni l
bkcaupo.D
orezaB
fpoA
dn,aeãorfpecasbalt
Segmenots
Osdadosemtablespacesvêmnaformadesegmentos.
ExampelTabeléumsegment
UmbancodedadosOracelrquearét4pitosdesegmenots
Extensões
Oespaçodaem r azenamenoatlcadopasergmenoentásofam
r daE
exetnsõC
[Link]
[Link]éaO
im
bncerlptsab6N
cels5tdqavd3eurosú6i.m
atdeor
um banco de [Link] feito dentro de um arquivo de dados. N Número de contínuos
dbbolcksmakesupanExen.t
6
OveralSystemStructure
Ocsomponenueftsncoindasueim
estm
i dabeancoddeadosão
ComponenteProcessadorDeConsultas
ComponendetG
eerncaimenodtA
em
r azenamenot
ComponenteProcessadorDeConsulta
Ecesotmponenuéetmcaoelçãodosegunepitsorcesos.
DMLCompiler:EletraduzdeclaraçõesDMLemumnívelmaisbaixo
tne sat lusnoc ed oãçai lava ed m
os inacm
e o euq seõçur t sni
Pré-compalidordeDMLn
icorporadoE
. elconvertedecalraçõesDMLn
icorporadas.
t sohehtni s l lacerudecorplm
aronotnm
iargorpnoi taci lppanani
ngíua.l
DDLInterpreterInterpretadeclaraçõesDDLeasregistra.
m
sasedountonjc
MotordeavaliaçãodeconsultasExecutainstruçõesdenívelinferior
DM
doram
clL
opilpedoarge
ComponenetGesotrArmazenamenot
ocnab on sodanezm
ara sodad so er tne ecafretni m
auÉ
porgarm
coeasunsbutm
ledm
stiaoetsa.
AutorziaçãoeGerentedeIntegrd
iadeTestaporsatsifaçãode
psoi ráususodedadi rotuaaaci f i reveedadi rgetniedseõçi r t ser
TransactoinManagerItensuresconcurrentransactoinexecutoins
porcesadseom
[Link]
GerencaidordeArquviosE -elgerencaiaaolcaçãodespaçonodsicoeosdados
m
.oãroçafni ratneserperarapsadsusaruturtse
7
GerencaidordeBuferEstaéresponsávep
lorbuscardadosdodsico
.lapicnirpm
am
eianróom
anertnzae
8
InstânciaOracle
CadabancodedadosOracelesátassocaidoaumanisâtncaiOracelT .odavezqueum
buoam
dnciodm
i,aedáéroasem
cham
óiraÁ
daG
earm
doS
tsblS
ia(lG
aA ou)
ÁeraGolbC alomhlpaidoatrélcadueamoumpsoaricesoãnacsoidos.
A
combniaçãodoSGA
deopsorcesoO
sarcéehlamaddanIeâstnO
caiarcel.
SGAconestimváairesurtuardsememóair:
O pcoom lhladpiuéoatsrdpoam
ruanrzçiestõanS
seasrQL
ercenm
t enxtecuadtas.
.sodaedoiránoicidodsodasuem
etnetnecer sm iasodasoeseõçaralced
EnsuairstçõeSsQL podemesnrvaidapsourmporcesadoduresunoáir,
[Link]áicdoiritpraaielv,osm
laseodcipsearnt
O
cachdebdobuoefrancdoeaduéosadpoam razedonasdrm
osercesnam
it eunsatdos
Odsadoisnãdetolscaeiqrsuviodseados.
Ooearçdltguõaélem
sadesrapostarudnabosnteafçinscdoeadpoosr
.onalpodnugesm
e sossecorpe rodivreso
9
Processodeconsulta
1 Analisar
2 Executar 3
3 Buscar
Servidor
Processo DB
s
1
Usuário
Processo
2
Clie
nt
Quando o usuário se conecta ao banco de dados, ele cria automaticamente duas diferentes
porcescohsamaddopoesrcesdoupesuorácireO [Link]éáir
porgam
rcaduçiprãnqaeolõS
tsuigeasQ
rO
[Link]
[Link]ásdooseocprolpesdanvei sõeçaralcdesaeutcxe
Exestm
iêearstpapnsircpniasoiporcesamenodtuemcaonsaut:l
Aasrnial
Execuatr
Bucsar
Anseáil
Duranteafasedeanálise,ainstruçãoSQLépassadadoprocessodousuário
i lana oãçatneserper m
ua e , rodivres odossecorpo arap
egm
ardcouS
m
Q
eaá[Link]
Duranteaanálise,oprocessodoservidorrealizaasseguintesfunções:
BuscaumacópaeixestinedtadecalarçãoSQLnopoocolmphlaitrdo
exatnisausodnacifiS rQevoLãçaralcedaedilav
E
cuoenlaxbsetdocualndeicsoavtpráalrs
dnçõeifes
Executar
10
ExecuatrI:denfitcarnilhaseelcoinadas
Aeastpsaesrmsegudiasoexecduaetrcalrção
Om oitziadufaoénrçãonoOarS
celevrqerudeem
trnia
m
exadincupezoadçlãtoi.
Bucsar
C [Link]
iáB
roR
es2bdlc0uapeondbsurceao:tsra,
m
.eitonautasortsiger
EtapasDeProcessamentoDML
FaseExecutarDML
Osevrdioporcesoeargdm
stiaagemanopeitraobrlcodervesrãoe
zuaitdlobolquoeidedados.
Ambasasalteraçõessãofeitasnocachedebuferdobancodedados.
Quaqlueborlcoeatrldonocachedebueéfm
racradocomobuefsurojs:useaj,
buefqsruenãosãom sesmoqsueobsolcocsoerspondenetnsodscio.
OporcesamenodtuemcomandoDELETEouN ISERzeaT
itpluiasetmehlanets.
miaagem puoaneim
rtexauclsãconém
tvodascelrounslinhelaxsudclía,
m
iaeagem daouneirm
tN
ISERT coném tnoifam rsaçõodzelacisnçãlihdola.
Porqueasmudançasfeitasnosblocossãoregistradasapenasnamemória
euqrodm
actupedahlafm
ua,ocsidonem
atnetam
idesatircseoãsoãnesaruturtse
SdG
odm
naoucsA
pom
[Link]çbm
éraucs
11
OracleVersions
Oracle6.0 1990
Oracle7.0 1995
Oracle7.1 1996
Oracle7.2 1997
Oracle7.s3 o t e j b mo eo d a e s a B 8 9 9 1
Oracle8.0 DBG S 9 9 9 1
0 0 0 t2 e n r eOraclte8i n aI n a d a e s a ob ã ç a c i l p A
Oracle91i 0 0 o2 ã ç a c i l peArd o d i v r e S
C
B
ecarioseatn
cirtíef
Oracle
Internet
Reliability Habilidade Comum
Conjuntos
Desenvolvedor Único
Modelo
Feautres
AOracleofereceumainfraestruturaabrangentedealtodesempenhopara
negócC [Link]-O
earO
[Link]éeecesáopiradresenvovle,r
m
igepacnrpliçatõ[Link]
Benefits
Escaldbilaidededepatrmenotpsaeartsdieb-unsiesdegarndesmpersas
12
Arquetiutraconfáived,lsiponvíelsegura
Ummodelodedesenvolvimento,opçõesdedesenvolvimentofáceis
ConjuntosdehabildadescomunsincluindoSQLP
,L/SQLJ,AVAeXML
UmaInterfaceDeGerenciamentoParaTodasAsAplicações
9P
irodutos
Exestm
idposriduE
[Link]
pseialtpels.
. tenretni an seõçaci lpa arap
9i 9i
Servd
iordA
epcialção
9Aipocpiantlsevrerxecuaotdasações9diabtasm r azenanosos
dado.s
OservidordeaplicaçãoOracle9iroda
owusPaeisotebris
A caçJiT
õpvealsnroascniai
Fonregictaerçcãuaeopinçsrudõlteáisa,rdos
13
Oracle9i:ORDBMS
OracleéoprimeirobancodedadoscomcapacidadedeobjetodesenvolvidopelaOracleCorporation.
oppusot8elcaOrfosei t i l ibapacgni ledm
oatadehtsdnetxet I
-otejbozart euqm
soinam
ceovonm
uecenrof elcaO rO
coem
noegsdóexcio,psletcodm
bajdoespxos,pilt o,setobjaadompgenrtioração
. lanoicaler odnmuom oc latot edadi l ibi tam poc
Oracle9suporta
Tiposdedadoseobjetosdefinidospelousuário
Toam
tl enectompvaícteolmbancodedadoeraslcoinS
(alupoatrdapsorpeirdadeC
sODD)
)selur
Supoeam
tr m uitldíaegiarndeosbeojts
snoi taci lppadesabbw
ednarevrestnei lct roppusoslat I
Oracle9ipodeescalardezenasdemilharesdeusuáriossimultâneosesuportaraté
512paebtyest
daeU
d(osm pa=
U
1bet0aybrteys0m
ta=
e1br0ytG
0B.)
Envrionment
AOracleusadoistiposdeambientesparaexecutarnossasinstruçõesSQL.
SQL*puleS
sQL*puls.
caO
r od r i t rap a sanepa levínopsid( átse sulpQ
*L
SI
AnEnvroinment
ProprietáriodaOracle
Aspaalvras-chavepodemsearbrevaidas
Execuatremumnavegador
Caregadocentralmenten,ãoprecisaserimplementadoemcadamáquina
DiferençaentreSQL*PluseISQL*Plus
SQL*PuléusmaCUeSIQL*Pulorsdaemumnavegador
SQL*puldsevescraergadoemcadaestimaecinlent,quanot
m
elm
pi res as icerp oãn ,etnm
elar tnec odager rac , sulp*Q
LSi
máquina
14
Resumo
Oracleé[Link]/Servidor,oOraclerodanoservidor.
bdaoóndcégeolisaurtA
tesdcoadm
[Link]-dr
U
s .esabatadeht foerutcur t s laci syhpfotnednepedni
[Link]ógilaurtrtesapenas
UmaInsâtncaidoOraceléacombniaçãodeSGAeprocesoOracel.
m
e sossecorp ed oãçeloc m
aum
étnoc aicnât sni a
[Link]íoabulm
raztf
OOracleusaummecanismodebloqueioparagerenciaraconcorrê[Link]
esgouam
rtevpiteoanrlfpdeonactr,alneshdiralduaoem
nsthia,la
.anêictsoicns
Exerccíoi
a c i f i n g i s AG S
_ _ _ _ _ _ _ _ _ ) 2
quandoumbancodedadosécriado.
l a u q m E ) 3
a é l a uQ ) 4
o v i u q r a s O ) 5
ã s n e t x e A ) 6
u Q _ _ _ _ _ _ _ _ ) 7
a m u é e u q O
a é l a u Q ) 9
1O
0)quém
esevdrciaopets?rl
15
TiposDeDadosOracle
CadavaolrdecoulnaeconsatnetemumanisrtuçãoSQLetmumpitodedadoq,ue
dedailváxaiaumfeasõeçirtser o,cifím cpesram
nezaodenm
torum
ftadoaiocsaátse
uesum
deacapradaodepoium
tracifpicesdvevoêc,abaleum traiA [Link]
[Link] [Link]
CharacterDatatypes
CHARDatatype
TpiosdeDadosVARCHAR2eVARCHAR
TiposdedadosNCHAReNVARCHAR2
TipodedadoLONG
NUMBERDatatype
DATEDatatype
LOBDyatpes
TipodedadoBLOB
tiposdedadosCLOBeNCLOB
TipoBFILE
TpiosdeDadosRAWeLONGRAW
CharacterDatatypes
Opiotdsdeadodscearceatrmazenamdadodscearacef(ntrlumcéiorem
s)nirgsts.
comvaloresdebytecorrespondentesaocaractere.
TIPOchar
Dadodscearcetdrsceompm irenxoiftdatm
eanhoembO
([Link]ãro1ée
o tamanhomáximoé2000).
am
dctom
aatloR
nepstihxarm
çã[Link]àébaonrtco
VARCHAR2(tamanho)
dcnoedcasgm
irS
etstm pircoávenm
iaertlum
am
t anhm
oám
xid4oe00b0eyst
. )1 é oãrdap ohnm
aat O(
Tunrpcaesç[Link]
NVARCHAR2(tamanho)
dcnoedcasgm
irS
etstm
pircoávenm
iaertlum
am
t anhm
oám
xid4oe00b0eyst
)1 é oãrdap ohnm
aat O(
16
Oucaracteres,dependendodaescolhadoconjuntodecaracteresnacional.
.esantesm
rpaenT
sçboucrnca
NÚMERO(tamanhod
,)
ncoudúam sacoid
neilafpeP er odgtsapíiósodem
[Link]
N
xem
m
eU
sou9.,m
rpql9rueM
,m
ndaoraiB
piondãreE2R
)5,(
LONGO
Dadosdecaracetredeatmanhovaráivedleaét2GBdecomprm i enotA
.penasumacoulnaLONG
.eteuqnabm
ume odi t m
irep é oãn
Counlgansaãpsodem
uasderm
asusfbnecxçoõpaen,sõrtude,sl
.secndiouísaulsálc
DATE
d4ao3vner7dja1ãA
C
ioxseá[Link]
.sdb9oer99C
d9..
Y
)M
O
N
-D
- tm
arofetadt luafD
e(
TIMESTAMP(precsião)
Datamaishora,ondeaprecisãoéonúmerodedígitosnapartefracionária
dcaompesdgoeunpo6d.a()éãors
RAW(size)
Databrutabináriata,manhoembyteslongoO
. tamanhomáximoéde2000bytes.
LONGRAW
Dadosbináriosbrutosd,eoutraformaiguaisaLONG.
Espedisotdsdieadopsem
retm
iam
r azenm
iaragens.
CLOB
17
Obejotgrandedecaracetrec,omaét4GBdecomprm
i enot.
BLOB
Objetobináriograndea,té4GBdecomprimento.
BFILE
oem
.nibtásuriom
panscoqirdevaP
luoient
18
Q
SoLtnoitcu
dortnI
l au s s e c o r p o ãN : ATON
descrvqoeudm
ead,ernovcuxidsecrzpoeli,am
rzaeirol
.oãçarepoa
A caqirscetuírdefrinucaimSGBDduemSGBDearlcoinqéauloe
[Link],isso
SQL
queacifgniisosuntonjcadoanteO
iSQ
rL
é.osuntonjcadanteiordosadeoncbam
degnuaila
porcesosduelxfosdedadosemgurpos.
Anaocm
õsP
eidardeN
onlaoicauttitnsIo,õsepdardeõsçeazgnaioD
rusa
zi lm
arN
o ed lanoicanretnI oãçazinagO r a e) IA N
S(
pormopovasedrõrSesQ O
nL [Link]úrdA
sãtroNS9po-Ié2adãro
rom
bE .orvi l et sed ognol oa odasu Q LS o arap
copreopasm retspdigsabopenõisaresdcoaedsgoem
rudstios,
pordbsouaenstdcoeam
rdfoidspoaA dãorNem [Link]
arapaci lpaocinúoiráusuedlairasemrpeoãçaci lpm uaeaigoloncet
.orutuf otnm eicserc
AnOverveiwofSQL
SQL niéalguagempadãrousadapaarmanpiuaerlcupeardradodse
nabuo rom
dargorpm
ueuqetm
irepQ
[Link] sodaded socnab sesse
adm
adraoçfestgnr:uit
19
Atualizaroconteúdodeumbancodedados
20
MORF E RANO I CELES
m
e sodad ed oãçarepucer arap oãçur tsnoc ed ocolbm
uÉ
SniatxS
e:ELECIONE<COLUNAS>DE<TABELA>;
SuaPm
rireaiConsuatl
INPUT:
SQL>selecionar * da EMP;
OUTPUT:
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
------ ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH SECRETÁRIO 7902 17-DEZ-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES GERENTE 7839 02-ABR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK GERENTE 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 09-DEC-82 3000 20
7839 REI PRESIDENTE 17-NOV-81 5000 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 12-JAN-83 1100 20
7900 JAMES CLERK 7698 03-DEC-81 950 30
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7934 MILLER FUNCIONÁRIO 7782 23-JAN-82 1300 10
ANALYSIS:
Note que as colunas 6 e 8 na declaração de saída estão alinhadas à direita e que as colunas 2 e 3 estão alinhadas à esquerda.
justificado. Este formato segue a convenção de alinhamento na qual os tipos de dados numéricos são justificados à direita
e tipos de dados de caractere são justificados à esquerda.
O asterisco (*) emselecionar *diz ao banco de dados para retornar todas as colunas associadas à tabela dada
descrito noDEcláusula. O banco de dados determina a ordem em que as colunas devem ser retornadas.
Uma varredura completa da tabela é utilizada sempre que não houver uma cláusula onde em uma consulta.
21
MudandoaOrdemdasCou
lnas
Podemosmudaraordemdeseleçãodascolunas
INPUT:
SQL>SELECIONE empno, ename, sal, job, comm de EMP;
SAÍDA
EMPNO ENAME SAL JOB COMM
---------- ---------- ---------- --------- ----------
7369 SMITH 800 FUNCIONÁRIO
7499 ALLEN 1600 VENDEDOR 300
7521 WARD 1250 VENDEDOR 500
7566 JONES 2975 GERENTE
7654 MARTIN 1250 SALESMAN 1400
7698 BLAKE 2850 MANAGER
7782 CLARK 2450 MANAGER
7788 SCOTT 3000 ANALISTA
7839 KING 5000 PRESIDENT
7844 TURNER 1500 VENDEDOR 0
7876 ADAMS 1100 SECRETÁRIO
7900 JAMES 950 AUXILIAR
7902 FORD 3000 ANALYST
7934 MILLER 1300 ESCRITURÁRIO
14 linhas selecionadas.
ExpressõesC
, ondçiõeseOperadores
Expressões
:seõsserpxe oãsOA
Á
L
R
IS C
A
R
G
O
,N
O
M,E,oãçaralced etniuges N
a
SELECIONARNOMED
, ESIGNAÇÃOS,ALARIODEEMP;
22
Agorae,xamnieasegunietexpressão:
WHEREENAME='KING'
loB
om
u ed olm
pexem
u é euq , N
G
'K
I ' =N
E
A
M
E,oãçidnoc m
aum étnC
o
a expressã[Link] = 'KING' será verdadeira ou falsa, dependendo de
. =oãçidnoc a
Conditons
é etnatsnoc a A
,L
S é levái rav a ,olm pexe odnuges N o
senatm
eolsenetsdoim seoibasrbaresasiceprVoêc>.ocm
édoãeçapradorpe
Waul.H
ásedaolrcE
peRaeE:soniaicocndisatuolcnsvrercsepodevoêc
ACálusualWHERE
A
nsaitxdecáalusuW
al HEREé
SINTAXE:
SELECIONAR <COLUNAS> DA <TABELA> ONDE <PESQUISA>
CONDIÇÃO>;
[Link])dsela()sa(belt)nsa(osrtsegriodstos
23
rat igid ai redop ,oci f ícepseM
E
G
R
A
D
P
O
mu essesiuq êcov eS
INPUT/OUTPUT:
SQL>SELECIONAR * DA EMP ONDE ENAME = 'KING';
ANALYSIS:
Esexempm
osil pem
lsocarostmovocpêodceolcuarmcaondçiãonodsadoqsuveocê
querorecuperar.
ENTRADA
SAÍDA
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD VENDEDOR 7698 22-FEV-81 1250 500 30
7566 JONES GERENTE 7839 02-ABR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 09-DEC-82 3000 20
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 12-JAN-83 1100 20
7900 JAMES CLERK 7698 03-DEC-81 950 30
7902 FORD ANALISTA 7566 03-DEC-81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10
ANÁLISE:
Exibetodososfuncionários,excetoKING.
24
Operadores
Osoperadoressãooselementosquevocêusadentrodeumaexpressãoparaarticularcomo
u:posgrsdm
eivsidiessedaorpO
[Link]ípcesõsçeocndiqurevoêc
[Link]ócog,licom
e,rcoat,ripaérçtão,
OperadoresArtimétcios
Oospeardom teariscéiostãom m +
(as,i)c*dp(e/[Link])lrti,o)l-(s
Oqsuoarpm
tiroersãioauotexcvpiaM
olts.óduoerltnrnoeardistuem
dvsãoi.
ComparisonOperators
com
dneoam
recuodsptm
açãeordaei,ampdF rõelsxipr
Tu:R esvhalronU teofF
E
A
,LSU
oE
r,nknown.
um
poucrbeasasiceprvêocum
do,D
oinchesrobtpodemcvêoconrdenteaP ra
N
doceontsUbceirLE O m [Link] ,sL daudeêaO
snocsié
inafield. Não significa que uma coluna tenha um zero ou um espaço em branco nela. Um zero ou um
banlvksuaN [Link] asinufieãhonáadnaecsampS [Link]
ircfê
C N
om
aéaU praooL orOvla,ocúniocm eoãçC
a9pram
=kepoiLl
um éD doP
qcuneohsirD [Link]áhsieratocm vloãçapra
condciaoniconfoartvm e,l aoiarisaboresdeSQLmudamDesconhecdioParaFALSO
ofnercuem opeardÉeNospr,eacliULuO am
eprstar,caondçãiN
oULO.
AquiestáumexemplodeNULL:SuponhaqueumaentradanatabelaPREÇOnão
ocmrecpraodm
esaA
tum
T
A
oucnladsepraC
dosm
éoutA
crm
nuvlaseD
rO
O
s.
:etse
25
SELECIONE * DA EMP ONDE COMM É NULO;
OperadoresdeCaracteres
oãseretcaracdengsirm
otrscfm
asom rapuralnieretcaracdesedaoprerauVpsodeêc
oãçacolocedossecorponotnauqsodadedadías anotnat ,odatneserper
coednmscorçadõbsiecorustçdE
ãpoaeídcvsratuceoa.s
oanm
esrctonotceique,| |L oK
adpIoereEoa:dpesor
cdoencnateç.csdãarote
operadoL
rIKE
E se você quisesse selecionar partes de um banco de dados que se encaixam em um padrão, mas
nãoeramcorespondênciasexatas?Vocêpoderiausarosinaldeigualepassarpor
dem
aiE
ersm
opacrdsem
os,.dv,iasevzpeiocíasodstos
L
K IE [Link]êc
Considereoseguinte:
INPUT:
SELECIONE * DE EMP ONDE ENAME LIKE 'A%';
ANÁLISE
INPUT:
SELECIONE * DA EMP ONDE ENAME NÃO SE ASSEMELHA A 'A%';
ANÁLISE
26
INPUT:
SELECIONAR * DO EMP ONDE ENAME LIKE '%A%';
ANÁLISE
INPUT:
SELECIONE * DE EMP ONDE ENAME LIKE '%A%A%';
ANÁLISE
Exibe todos os nomes cujo nome contenha a letra A mais de uma vez
time
INPUT:
SELECIONE * DO EMP ONDE DATA_DE_ADMISSÃO LIKE '%DEZ%';
ANÁLISE
INPUT:
SELECT * FROM EMP WHERE HIREDATE LIKE ‘%81’;
ANALYSIS
INPUT:
SELECIONAR * DE EMP ONDE SAL LIKE '4%';
ANÁLISE
27
Subn
ilhado(_)
Osunbihladoécarcetrunirgdauemúnciocarcetr.
INPUT:
SQL>SELECIONE EMPNO,ENAME DE EMP ONDE ENAME SEMELHANTE A
_A%
SAÍDA:
EMPNO ENAME
---------- ----------
7521 ENFERMEIRA
7654 MARTIN
7900 JAMES
ANÁLISE
Displays all the employees whose second letter is A
INPUT:
SQL>SELECT * FROM EMP WHERE ENAME LIKE '__A%';
SAÍDA:
ENAME
----------
BLAKE
CLARK
ADAMS
ANALYSIS
Mostra todos os funcionários cuja terceira letra é A
__A
INPUT:
SQL>SELECT * FROM EMP WHERE ENAME LIKE 'A%\_%'
ESCAPAR '\';
OUTPUT:
ENAME
----------
AVINASH_K
ANAND_VARDAN
ADAMS_P
ANÁLISE
Exibe todos os funcionários com underscore (_). '\' Caractere de escape
O sublinhado é usado para identificar uma posição na string. Para tratar _ como um
caractere temos que usar o caractere de Escape (\)
28
Operadordeconcatenação)(|
Usadoparacombinarduasstringsdadas
ENTRADA
SELECIONE ENAME || JOB DO EMP;
SAÍDA
ENAME||JOB
-------------------
SMITHCLERK
VENDEDOR ALLEN
VENDEDOR DE DEPTO
JONESMANAGER
MARTIN VENDEDOR
BLAKEMANAGER
CLARKMANAGER
ANALISTA SCOTT
REI PRESIDENTE
VENDENDOR TURNER
ADAMSCLERK
JAMESCLERK
FORDANALYST
MILLERCLERK
ANALYSIS
Combina tanto o nome quanto a designação em uma única string.
ENTRADA
SQL>SELECIONE ENAME || ' , ' || JOB DA EMP;
SAÍDA
NOME||','||CARGO
----------------------
SMITH, SECRETÁRIO
ALLEN, VENDEDOR
WARD, VENDEDOR
JONES, GERENTE
MARTIN, VENDEDOR
BLAKE, GERENTE
CLARK, GERENTE
SCOTT, ANALISTA
REI, PRESIDENTE
TURNER, VENDEDOR
ADAMS, SECRETÁRIO
JAMES, SECRETÁRIO
FORD, ANALISTA
MILLER , SECRETÁRIO
ANÁLISE
Combina tanto o nome quanto a designação em uma única string separada por,
29
LogcaO
ilperaotrs
INPUT:
SELECIONE ENAME DE EMP ONDE ENAME LIKE '%A%' e
ENAME NÃO LIKE '%A%A%'
SAÍDA
ENAME
----------
ALLEN
DISTRITO
MARTIM
BLAKE
CLARK
JAMES
ANÁLISE
Exibe todos os funcionários cujos nomes contêm a letra A exatamente uma vez.
tempo.
30
OperadoresDiversos: EM, ENTRE e DISTINTO
OdsospieardoN
eIrsB
eETWEENoefrcemumofam
r abervaidpaaufrnçõeqsuveocê
e:gsnuotiartgV
dicpoam
cê[Link]áoj
INPUT:
SQL>SELECT ENAME, JOB FROM EMP WHERE JOB= 'CLERK'
ORJOB=‘MANAGER’ ORJOB= 'SALESMAN';
OUTPUT:
ENAME JOB
---------- ---------
SMITH SECRETÁRIO
ALLEN VENDEDOR
WARD SALESMAN
JONES GERENTE
MARTIN SALESMAN
BLAKE GERENTE
CLARK MANAGER
TURNER VENDEDOR
ADAMS ESCRITURÁRIO
JAMES SECRETÁRIO
MILLER SECRETÁRIO
ANÁLISE
Exibir funcionários com as designações de gerente, escrevente e vendedor.
A
decalrçãoacm
INPUT: ielvam
aetm
asipopasernsaidoqlau,erduoz
SQL>SELECIONE
.aincêicife * DO EMP ONDE TRABALHO
IN('ATENDENTE','VENDEDOR','GERENTE');
OUTPUT:
ENAME JOB
---------- ---------
SMITH FUNCIONÁRIO
ALLEN VENDEDOR
WARD SALESMAN
JONES GERENTE
MARTIN VENDEDOR
BLAKE GERENTE
CLARK GERENTE
TURNER VENDEDOR
ADAMS FUNCIONÁRIO
JAMES ESCRIVÃO
MILLER SECRETÁRIO 31
ANÁLISE
Exibir funcionários com designações de gerente, escriturário e vendedor.
INPUT:
SQL>SELECT ENAME,JOB FROM EMP
ONDE O CARGO NÃO ESTÁ EM ('ESCRITURÁRIO', 'VENDEDOR', 'GERENTE');
OUTPUT:
ENAME JOB
---------- ---------
SCOTT ANALISTA
KING PRESIDENT
ANALISTA FORD
ANÁLISE
Exibir designações além de gerente, balconista e vendedor
INPUT:
SQL>SELECIONE NOME, DATA_DE_ADMISSAO
DE EMP
ONDE A DATA_DE_ADMISSAO EM (’01-MAI-1981’,’09-DEC-1982’);
OUTPUT:
ENAME HIREDATE
---------- ---------
BLAKE 01-MAI-81
SCOTT 09-DEZ-82
ANÁLISE
Display employees who joined on two different dates.
INPUT:
OPERADORDISTINTO DISTINTOS TRABALHOS DO EMP;
SQL>SELECIONAR
OUTPUT:
JOB
---------
ANALISTA
ESCRITURÁRIO
GERENTE
PRESIDENTE
VENDEDOR
32
ANÁLISE
O operador distinto exibe designações únicas.
O operador DISTINCT exibe por padrão as informações em ordem crescente.
33
ORDERBYCLAUSE
Exibaasinformaçõesemumaordemespecífica(Ascendenteoudescendente)
dpoei
Sintaxe
ENTRADA
SQL>SELECIONAR ENOME DO EMP ORDENAR POR ENOME;
SAÍDA
ENAME
----------
ADAMS
ALLEN
BLAKE
CLARK
FORD
JAMES
JONES
REI
MARTIN
MILLER
SCOTT
SMITH
TURNER
DEPENDÊNCIA
ANÁLISE
Exibir funcionários em ordem crescente de nomes.
34
ENTRADA
SQL>SELECIONE CARGO, NOME, SALÁRIO DE EMP ORDENAR POR
JOB,ENAME;
SAÍDA
JOB ENAME SAL
--------- ---------- ----------
ANALISTA FORD 3000
ANALYST SCOTT 3000
SECRETÁRIO ADAMS 1100
CLERK JAMES 950
CLERK MILLER 1300
CLERK SMITH 800
MANAGER BLAKE 2850
MANAGER CLARK 2450
GERENTE JONES 2975
PRESIDENTE REI 5000
SALESMAN ALLEN 1600
SALESMAN MARTIN 1250
VENDEDOR TURNER 1500
VENDEDOR WARD 1250
ANÁLISE
Exibir os funcionários em ordem crescente de cargos. Com cada cargo, coloca-se o
INPUT
OUTPUT:
Display employees in ascending order by jobs. With each job it places the
informação em ordem decrescente de nomes.
INPUT
OUTPUT:
Exibir funcionários em ordem decrescente por cargos. Com cada cargo, ele coloca
a informação em ordem decrescente de nomes.
35
ENTRADA
SQL>SELECIONE *
DE EMP onde JOB != 'CLERK'
ORDENAR POR TRABALHO;
OUTPUT:
Exibir funcionários em ordem ascendente de cargos, excluindo os funcionários administrativos.
ANÁLISE
1)SELECT *
DA EMP onde JOB != 'CLERK'
2)ORDER BY TRABALHO;
PodemosusaracláusulaORDERBYcomo
ENTRADA
ANÁLISE
36
Exercício
_ _ _ _ _ _ _ _ _ . 1
_ _ _ _ _ _ _ . 2
o r e m ú n O . 3
a h n o p u S . 4
AsumaqueovaolcroolcadoemambasascoulnaséRAVI.
Qual é o tamanho de sname e sname1
s a t n a u Q . 5
n amo c s O . 6
l y a l p s i D . 7
[Link]áriosemordemascendentedacoluna5natabela ht
37
FUNÇÕES
Esuafsnçõesãcoaiflsdiaesm
pdiotsi
Funçõpeédnrs-eiafs
FunçõesDefinidasPeloUsuário
Funçõep
sredenifdias
Esuafsnçõesãonovamecnaeiflstdiaesm
pdiotsi
FunçõesDeAgrupamentoOuAgregação
FunçõesDeUmaSóLniha
FunçõesAgregadas
Esuafsnçõaetm sbémsãochamadadsufençõedsgeurpE
[Link]
em
coum
[Link]
CONTA
A
ufnçãoCOUNT
eortnroanúmenordihleaqsusafeiztmcaondçião
W
.E
R
H
Ealusuálc an
Dgiaquevocêqueasirbeqruanotufsncoináoirhsá.
INPUT:
SQL>SELECIONE CONTAGEM(*) DE EMP;
OUTPUT:
CONTAR(*)
--------
14
ANÁLISE
Conta se a linha estiver presente na tabela
38
:saium
laenett ,vlegeílm
sgoócdiaonraortaPra
INPUT/OUTPUT:
SQL>SELECIONE CONTAGEM(*) NUM_DE_FUNCIONARIOS DE EMP;
NUM_OF_EMP
-------------------
14
INPUT/OUTPUT:
SQL>SELECIONE CONTAR(COMM)
DE EMP;
CONTAR(*)
--------
4
ANALYSIS
INPUT/OUTPUT:
SQL>SELECIONE CONTAGEM(*) DE EMP ONDE TRABALHO =
GERENTE
CONTAR(*)
-------
4
ANÁLISE
It counts only managers
39
INPUT/OUTPUT:
SQL>SELECIONE a contagem (distinta trabalho) DA EMP;
CONTA (*)
-------
4
ANÁLISE
Conta apenas empregos distintos
SOMA
A função SUM faz exatamente isso. Ela retorna a soma de todos os valores em uma
[Link]
INPUT:
SQL>SELECIONE A SOMA(SAL) SALÁRIO_TOTAL DA EMP;
OUTPUT:
TOTAL_SALARY
-------------
29025
ANÁLISE
Encontre o salário total recebido por todos os funcionários
INPUT/OUTPUT:
SQL>SELECIONAR SOMA(SAL) SALÁRIO_TOTAL, SOMA(COMM)
TOTAL_COMM,
DA EMP;
TOTAL_SALARY TOTAL_COMM
------------- ----------
29025 2200
INPUT/OUTPUT:
SQL> SQL>SELECIONAR SOMA(SAL) SALÁRIO_TOTAL,
SOMA(COMM) TOTAL_COMM,
DE EMP ONDE CARGO = 'VENDEDOR';
TOTAL_SALARY TOTAL_COMM
------------- ----------
5600 2200
40
MÉDIA
ANALYSIS
Find the average salary of all the employees
INPUT:
SQL>SELECIONE AVG(COMM) media_comm DE EMP;
OUTPUT:
AVERAGE_COMM
------------
550
ANÁLISE
As funções ignoram linhas nulas
41
MÁX
INPUT:
SQL>SELECIONAR MÁX(SAL) DE EMP;
SAÍDA:
MÁX(SAL)
--------
5000
ANÁLISE
Toma o valor de diferentes linhas de uma coluna específica
INPUT:
SQL>SELECIONAR MÁX(ENAME) DE EMP;
OUTPUT:
MÁX(ENAME)
--------
ALA
ANALYSIS
O máximo do nome é identificado com base no valor ASCII
INPUT:
SQL>SELECIONE O MÁXIMO (data de contratação) DA EMP;
OUTPUT:
MÁXIMA(DATADEADMISSÃO)
-------------
12-JAN-83
42
MIN
INPUT:
SQL>SELECIONAR MÍNIMO(SAL) DA EMP;
OUTPUT:
MIN(SAL)
--------
800
INPUT:
SQL>SELECIONE MIN(ENAME) DE EMP;
OUTPUT:
MIN (ENAME)
--------
ADAMS
ENTRADA
SAÍDA
SUM(SAL)AVG(SAL) MIN(SAL) MAX(SAL) COUNT(*)
-------------- --------------- -------------- -------------- -------------
29025 2073,21429 800 5000 14
ANÁLISE
Todas as funções de agregação podem ser usadas juntas em uma única instrução SQL
43
SINGLEROWFUNCTIONS
Esuafsnçõuefsncoinamemcandihlaeortnramumvaoplrao
hcm
[Link]
Esuafsnçõesãcoaiflsdiaesmdefprinoets
FunçõesAm
tri écitas
FunçõesDeCaracteres
FunçõesdeData
FunçõesDiversas
FunçõesArtimétcias
Muitos de nós que você tem para os dados que você recupera envolvem matemática.
A maioria das implementações de SQL fornece funções aritméticas semelhantes às de
[Link]
ABS
AufnçãA
oBSeortnroavaolbrsouoldtonúmeorquveonciêdcia.r
exPm
orop:l
INPUT:
SQL>SELECIONAR ABS(-10) VALOR_ABSOLUTO DE dual;
SAÍDA
ABSOLUTE_VALUE
----------------------------
10
ANALYSIS
Dual é uma tabela de sistema ou tabela dummy de onde podemos exibir o sistema
informação (ou seja, data do sistema e nome de usuário, etc.) ou podemos criar o nosso próprio
cálculos.
44
CEILandFLOOR
INPUT:
SQL>SELECIONE CEIL(12.145) DO DUAL;
OUTPUT:
CEIL(12.145)
-----------------
13
INPUT:
SQL>SELECIONE CEIL(12.000) DE DUAL;
OUTPUT:
CEIL(12.000)
-----------------
12
ANÁLISE
Mínimo precisamos de uma casa decimal, para obter o próximo número inteiro maior.
INPUT/OUTPUT:
SQL>SELECIONE ANDAR(12.678) ANDAR DUAL;
OUTPUT:
PISO(12,678)
-----------------
12
INPUT:
SQL>SELECIONAR ANDAR(12.000) DO DUAL;
OUTPUT:
PISO(12.000)
-----------------
12
45
MOD
or tuo rop rolavm
u sm
oidivid odnauq otser o anrotR
e
ENTRADA
ENTRADA
PODER
PO oueãnçW
sfaN
,aE
tseR
incê.potaroutum
anúm
orvaeleaP
ra
:odnuges odaicnêtopàodavele éotm
nuegraorm ieirpo
INPUT:
SQL>SELECIONE POTÊNCIA(5,3) DO DUAL;
OUTPUT:
125
46
FunçõesDeCaractere
CHR
INPUT:
SQL>SELECIONE CHR(65) DO DUAL;
OUTPUT:
A
MINÚSCULASEMAIÚSCULAS
ComovocêpodespeL
ra,rOWERratnsformaotdososcaracetresemmniúscuals;
MAIÚSCULAS FAZ APENAS AS MUDANÇAS TODAS AS LETRAS PARA MAIÚSCULAS.
47
LPAD
R
ePAD
A
decalrçãosegunaeidtcoincnaicocarcedtrsperenchm
i eanosut,mnidoquoecampo
O SOBRENOME é definido como um campo de 15 caracteres:
INPUT:
SQL>SELECIONE LPAD(ENAME,15,'*') DE EMP;
OUTPUT:
LPAD(ENAME,15,'
---------------
**********SMITH
**********ALLEN
***********CÂMARA
**********JONES
*********MARTIN
**********BLAKE
**********CLARK
**********SCOTT
***********REI
*********TURNER
**********ADAMS
**********JAMES
***********FORD
*********MILLER
ANALYSIS:
15 locais alocados para exibir ename, dos quais, nome está ocupando alguns
espaço e no espaço restante à esquerda do nome, preenchido com *.
ENTRADA
OUTPUT:
5000******
48
SUBSTITUIR
SYNTAX :
SUBSTITUIR(STRING,STRING_DE_BUSCA,STRING_DE_SUBSTITUICAO)
INPUT:
SAÍDA
RAVINA
ENTRADA
SQL> SELECIONAR SUBSTITUIR(‘RAMANA’,’MA’) DE DUAL;
SAÍDA
RANA
ANÁLISE
Quando a string de substituição estiver ausente, a string de pesquisa será removida do dado
cadeia
ENTRADA
SQL> SELECT REPLACE ('RAMANA','MA', NULL) FROM DUAL;
SAÍDA
RANA
49
TRANSLATAR
A
ufnçãoTRANSLATE
êargstcauetimneirgnsdatodes:neoist,
DAstring,[Link]
O
Tehtni tm
nelegnidnopserrocehtotdetalsnarteragnirR
F
OM
ethst
.aiedac
INPUT:
RACANA
OUTPUT:
RDCDND
ANALYSIS
SUBSTR
Eufastnçãodêargsteumenoptsem
rqetuiveouerceim
rêtpedaçoduemavlo
oéom
[Link]égnirtsarm ierpA
gouarm
ceoiroO
éentkcoesdrnaoer.çãim
pdacotisrpei
nú[Link]
SINTAXE
INPUT:
SQL>SELECIONE SUBSTR('RAMANA',1,3) DE DUAL;
SAÍDA:
RAM
ANÁLISE
Ele pega os primeiros 3 caracteres do primeiro caractere
50
INPUT:
SQL>SELECIONE SUBSTR(‘RAMANA’,3,3) DE DUAL;
OUTPUT:
HOMEM
ANÁLISE
Ele pega 3 caracteres a partir da terceira posição
INPUT:
SQL>SELECIONE SUBSTR(‘RAMANA’,-2,2) DA DUAL;
OUTPUT:
NA
ANÁLISE
Você usa um número negativo como o segundo argumento, o ponto de partida é
determinado contando para trás a partir do final.
INPUT:
SQL>SELECIONE SUBSTR('RAMANA',1,2) || SUBSTR('RAMANA',-
2,2) DE DUAL;
OUTPUT:
RANA
ANÁLISE
Os dois primeiros caracteres e os dois últimos caracteres são combinados como um
string única
INPUT:
SQL>SELECIONAR SUBSTR('RAMANA',3) DE DUAL;
OUTPUT:
MANA
ANÁLISE
Quando o terceiro argumento está ausente, ele pega todos os caracteres do início
posição
51
INPUT:
SQL>SELECIONE * DE EMP ONDE SUBSTR(HIREDATE,4,3) =
SUBSTR(SYSDATE,4,3);
SAÍDA:
Rã
ANALYSIS
Exibe todos os funcionários que ingressaram no mês atual
SYSDATE é uma função de linha única, que fornece a data atual.
INPUT:
SQL>SELECIONE SUBSTR(‘RAMANA’,1,2) || SUBSTR(‘RAMANA’,-
2,2) DE DUAL;
OUTPUT:
Rã
ANÁLISE
Os dois primeiros caracteres e os dois últimos caracteres são combinados como um
string única
INSTR
om
riN
eprIS
ueTuR
s.,erorcocifícpesoãum
dprangirm
etum
sondeariobcrsdeaP ra
O
[Link]
poaãdoiernétoent
O ectroeqsiuoastãronúmeorqsuerpersenatmondceomeçoahlerar
whichmatchtoreport.
Eesxtempoerltnruamnúmeorpersenatndopam
iroaericoêrndcaiO
e
m
odnucgeaçsoe
ENTRADA
OUTPUT
2
ANÁLISE
52
ENTRADA
SAÍDA
4
ANÁLISE
SAÍDA
0
ANÁLISE
A função é sensível a maiúsculas e minúsculas; ela retorna 0 (zero) quando o caráter dado é
não encontrado.
ENTRADA
OUTPUT
6
ANÁLISE
53
FunçõesDeConversão
Esuafsnçõoefsnrecemummaanpacerdáitceonvuetrm
piotddeadopar
m
pnm
arcpislãnom
rE
eúfiuom
[Link]
. sotm
arof
TO_CHAR
OusopnircpdiT
aelO_CHARcéonvuetrmnúmeormumcarcetr.
Implementaçõesdiferentestambémpodemusá-loparaconverteroutrostiposdedados,como
Data,emumcaráter,ouparaincluirdiferentesargumentosdeformatação.
OseguneixtemuoaplrsitlopnircpdiaoT
lO_CHAR:
INPUT:
OUTPUT:
SAL TO_CHAR(SAL)
---------- ----------------------------------------
800 800
1600 1600
1250 1250
2975 2975
1250 1250
2850 2850
2450 2450
3000 3000
5000 5000
1500 1500
1100 1100
950 950
3000 3000
1300 1300
ANÁLISE
Após a conversão, as informações convertidas são alinhadas à esquerda. Portanto, podemos dizer que
é uma string.
54
Opnircpuiasolduefastnçãom
éudoafrsmaodtsdenatúmeor
sotm
arof
INPUT:
SQL>SELECIONE SYSDATE,TO_CHAR(SYSDATE,'DD/MM/YYYY')
DE DUAL;
OUTPUT:
DATA DO SISTEMA
TO_CHAR(SYSDATE,'DD/MM/YYYY')
--------- ------------------------------
24-MAR-07 24/03/2007
ANÁLISE
INPUT:
SQL>SELECIONE SYSDATE,TO_CHAR(SYSDATE,'DD-MON-YY') DE
DUAL;
SAÍDA:
DATA_SISTEMA
TO_CHAR(SYSDATE,'DD-MON-YY')
--------- ------------------------------
24-MAR-07 24-MAR-07
INPUT:
SQL>SELECIONE SYSDATE,TO_CHAR(SYSDATE,'DY-MON-YY') DE
DUAL;
OUTPUT:
DATA DO SISTEMA
TO_CHAR(SYSDATE,'DY-MON-YY')
--------- ------------------------------
24-MAR-07 SÁB-MAR-07
ANALYSIS:
DY exibe as 3 primeiras letras do nome do dia
55
ENTRADA:
OUTPUT:
DATA DO SISTEMA
TO_CHAR(SYSDATE,'DIA MÊS ANO')
--------- ------------------------------
24-MAR-07 SÁBADO, DOIS DE MARÇO DE DOIS MIL E SETE
ANALYSIS:
DIA dá o nome total do dia
MONTH dá o nome total do mês
YEAR escreve o número do ano por extenso
INPUT:
OUTPUT:
DATAATUAL TO_CHAR(DATAATUAL,'DDSPTHMÊSANO')
--------- -------------------------------------------------------------------
24-MAR-07 VINTAVO DE MARÇO DOIS MIL E SETE
ANÁLISE:
DD dá o número do dia
DDSP Writes day number in words
TH é o formato. Depende do número, dá ST / RD / ST / ND
format
56
INPUT:
OUTPUT:
DATA DE CONTRATAÇÃO TO_CHAR(DATA DE CONTRATAÇÃO,'DDSPTHMONTHYEAR')
--------- -------------------------------------------------------------------
17-DEZ-80 DEZESSETE DE DEZEMBRO DE MIL NOVECENTOS E OITENTA
20-FEV-81 VIGÉSIMO FEVEREIRO DE MIL NOVECENTOS E OITENTA E UM
22-FEV-81 VIGÉSIMO SEGUNDO DE FEVEREIRO DE MIL NOVECENTOS E OITENTA E UM
02-ABR-81 SEGUNDO DE ABRIL DE MIL NOVECENTOS E OITENTA E UM
28-SET-81 VINTAGE DE OITO DE NOVENTA E UM
01-MAI-81 PRIMEIRO DE MAIO MIL NOVECENTOS E OITENTA E UM
09-JUN-81 NONO DE JUNHO MIL NOVECENTOS E OITENTA E UM
09-DEZ-82 NONO DEZEMBRO DEZENOVE OITENTA E DOIS
17-NOV-81 DEZESSETE DE NOVEMBRO DE MIL NOVECENTOS E OITENTA E UM
08-SET-81 OITAVO SETEMBRO DE MIL NOVECENTOS E OITENTA E UM
12-JAN-83 DOZE DE JANEIRO DE MIL NOVECENTOS E OITENTA E TRÊS
03-DEL-81 TERCEIRO DEZEMBRO DEZENOVE OITENTA E UM
03-DEZ-81 TERCEIRO DEZEMBRO MIL NOVECENTOS E OITENTA E UM
23-JAN-82 VINTI E TRÊS DE JANEIRO DE MIL NOVECENTOS E OITENTA E DOIS
ANÁLISE:
Converts all hire dates in EMP table into Words
57
INPUT:
OUTPUT:
TO_CHAR(SYS
-----------
08:40:17 PM
ANALYSIS:
HH retorna Horas }
MI retorna Minutos } Retorna o tempo da data atual
SS returns Seconds }
AM retorna AM / PM depende do horário
INPUT:
OUTPUT:
TO_CHAR(
--------
20:43:12
ANALYSIS:
} horas
HH24 retorna Horas no formato de 24
MI retorna Minutos } Retorna o tempo a partir da data atual
SS retorna Segundos }
INPUT:
OUTPUT:
TO_CHAR(12567,'99,999,99')
-----------------------------
12.567,00
58
ANALYSIS:
Converte o número dado para o formato com vírgula e duas casas decimais
INPUT:
OUTPUT:
TO_CHAR(12567,'L99.999,99')
-----------------------------
$12,567.00
ANALYSIS:
INPUT:
OUTPUT:
TO_CHAR(-12567,'L99.999,99PR')
-----------------------------------
<$12,567.00>
ANALYSIS:
59
FunçõesDeDataeHora
Vivemosemumacivilizaçãogovernadaportempoedatas,eamaioriadasprincipais
rap seõçnuf m
êt Q
LS ed seõçatnm
eelm
pi
ad e om
pet ed seõçnuf sa ar tsnm
oed elE
ADD_MONTHS
Eufastnçãoadcoinuamnúmeordm
eesueasmdaeastpceiacfdia.
um
parecm
aaiqufpom
eisaduncítepdocequainrtxsPgm
eaidocrlop,l
poeídrdom [Link]
aoetanrtduaitrdedoepoótsi
INPUT:
SQL>SELECIONAR ADD_MONTHS (SYSDATE, 6) DATA_DE_VENCIMENTO
DE DUAL;
OUTPUT:
MATURITY_DATE
--------------------
24-SEP-07
ANÁLISE
Adiciona 6 meses à data do sistema
INPUT:
SQL>SELECIONAR DATA_DE_ADMISSAO, ADICIONAR_MÊS(DATA_DE_ADMISSAO,33*12)
TO_CHAR(ADD_MONTHS(HIREDATE,33*12),'DD/MM/YYYY')
DATA_DE_RETIRO DA EMP;
OUTPUT:
HIREDATE RETIRE_DATE
--------- ---------------
17-DEC-80 17/12/2013
20-FEV-81 20/02/2014
22-FEV-81 22/02/2014
02-APR-81 02/04/2014
28-SET-81 28/09/2014
01-MAI-81 01/05/2014
09-JUN-81 09/06/2014
09-DEZ-82 09/12/2015
17-NOV-81 17/11/2014
08-SET-81 08/09/2014
12-JAN-83 12/01/2016
03-DEZ-81 03/12/2014
03-DEC-81 03/12/2014
23-JAN-82 23/01/2015
ANÁLISE
Displaying the retirement date with century.
LAST_DAY
LAST_DAYerotnraom
úitlodaieummêespecifado.
m
doiadtioúêsléquablseraxsP
em
vpcoircêop,l
MONTHS_BETWEEN
Usadoparaencontraronúmerodemesesentredoismesesdados
INPUT:
SQL>SELECIONAR ULTIMO_DIA(SYSDATE) DO DUAL;
SAÍDA:
ÚLTIMO_DIA(SYSDATE)
-------------------------
31-MAR-07
ANÁLISE
Encontre a última data do mês
61
INPUT:
SQL>SELECIONE
ENAME,MESES_ENTRE(SYSDATE,DATA_DE_CONTRATAÇÃO)/12
EXPERIÊNCIA DE EMP;
OUTPUT:
ENAME EXPERIENCE
---------- ----------
SMITH 26.2713494
ALLEN 26.0966182
WARD 26.0912419
JONES 25.9783387
MARTIN 25.4917795
BLAKE 25.8976935
CLARK 25.7928548
SCOTT 24.2928548
REI 25.3546827
TURNER 25.545543
ADAMS 24.2014569
JAMES 25.3089838
FORD 25.3089838
MILLER 25.171887
ANÁLISE
Encontra o número de meses entre a data do sistema e a data de contratação. O resultado é dividido
with 12 to get the experience
62
FunçõesDiversas
Aquiestãotrêsfunçõesdiversasquevocêpodeacharúteis.
MAIOReMENOR
INPUT:
SQL>SELECIONE O MAIOR(10,1,83,2,9,67) DO DUAL;
OUTPUT:
MAIOR
---------
83
ANÁLISE
Asumaquexseitumatbealdesutdanets
ESTUDANTE
ROLLNONAMESUB1SUB2SUB3SUB4
1 5 46RAV82I552
2 2 15KR65IS785
3 7 74 42 25 5UBAB
4 INPUT: 8 86UN65A 5 4 4
SQL>SELECIONAR NOME, SUB1, SUB2, SUB3, SUB4,
sanotm oriasrarEonct GREATEST(SUB1,SUB2,SUB3,SUB4) GREATEST_MARK,
senoersem
MENOR(SUB1,SUB2,SUB3,SUB4) MENOR_MARCAS DE ALUNO
OUTPUT:
ROLLNO NAME SUB1 SUB2 SUB3 SUB4 GREATEST LEAST
MARCA MARCA
1 RAVI 55 22 86
63 45 86 22
2 KRIS 78 55 65 12 78 12
3 BABU 55 22 44 77 77 22
4 ANU 44 55 66 88 88 44
64
USUÁRIO
USERretornaonomedocaracteredousuárioatualdobancodedados.
INPUT:
SQL>SELECIONE O USUÁRIO DO DUAL;
OUTPUT:
USUÁRIO
--------
SCOTT
ANÁLISE
Exibe o nome do usuário da sessão atual
Também podemos exibir o nome de usuário usando o comando de ambiente
SQL> MOSTRAR USUÁRIO
AFunçãoDECODE
A ufnçãoDECODEuémdocsomandom spasoideorsonsoSQL*P
eu-ls
vam
loetzposaindA
[Link]
padãdroS
oQL
caerdcpeorcedm
ienalt
ugni l m
e sadi tnoc oãtse euq seõçnuf
EDOCED o ã ç u r t s n i A
porgarmmniganlguO
[Link]éfedipcaneasáircdesicoaódisetrm
lespexlos,
DECODIFIQUEgeralmenteécapazdepreencheralacunaentreSQLeasfunçõesdeumprocedural
ngíua.l
SINTAXE:
OexempodlnsaeitxezurfainlçãoDECODEncaoulna1.
1eulav ed rolavm
u revi t 1anuloc a eS
.luataorlva
2eulav ed rolavm
u revi t 1anuloc a eS
.luataorlva
neref id rolavm
u revi t 1anuloc a eS
da3em
í[Link]
65
ENTRADA
SQL> SELECT ENAME,JOB,DECODE(JOB,'CLERK','EXEC','SALESMAN',
'[Link]','ANALISTA','PM','GERENTE','VP',PROMOÇÃO DO EMP;
SAÍDA
ENAME JOB PROMOTION
---------- --------- ---------
SMITH CLERK EXEC
ALLEN VENDEDOR OFICIAL S.
WARD SALESMAN [Link]
JONES MANAGER VP
MARTIN VENDEDOR OFICIAL DE VENDAS
BLAKE MANAGER VP
CLARK MANAGER VP
SCOTT ANALISTA PM
REI PRESIDENTE PRESIDENTE
TURNER VENDEDOR OFICIAL
ADAMS CLERK EXEC
JAMES CLERK EXEC
FORD ANALYST PM
MILLER CLERK EXEC
ANÁLISE
Quando JOB tiver o valor CLERK, exiba EXEC em vez de CLERK
Quando JOB tiver o valor VENDEDOR, exiba S. OFICIAL em vez de VENDEDOR
Quando JOB tem o valor ANALISTA, então exiba PM em vez de ANALISTA
Quando JOB tiver o valor MANAGER, exiba VP em vez de MANAGER
CASO CONTRÁRIO, EXIBIR O MESMO TRABALHO
66
ENTRADA
SQL>SELECIONE ENAME, JOB, SAL, DECODE(JOB, 'CLERK', SAL*1.1, 'VENDEDOR',
SAL * 1.2, 'ANALISTA', SAL * 1.25, 'GERENTE', SAL * 1.3, SAL) NOVO_SAL DA EMP;
OUTPUT
ENAME JOB SAL NEW_SAL
---------- --------- ---------- ----------
SMITH CLERK 800 880
ALLEN SALESMAN 1600 1920
WARD SALESMAN 1250 1500
JONES MANAGER 2975 3867.5
MARTIN SALESMAN 1250 1500
BLAKE MANAGER 2850 3705
CLARK MANAGER 2450 3185
SCOTT ANALYST 3000 3750
KING PRESIDENT 5000 5000
TURNER SALESMAN 1500 1800
ADAMS CLERK 1100 1210
JAMES CLERK 950 1045
FORD ANALYST 3000 3750
MILLER CLERK 1300 1430
ANÁLISE
Quando o CARGO é EMPREGADO, então dá um aumento de 10%
Quando o CARGO tem o valor VENDEDOR, então dar um aumento de 20%
Quando o CARGO tem o valor ANALISTA, então dará um aumento de 25%
Quando o CARGO tiver o valor GESTOR, então conceder um aumento de 30%
CASO CONTRÁRIO, nenhum incremento
Suponhaquehajumatbealcomempnoen,amse,xo
ENTRADA
SQL> SELECIONE ENAME, SEXO, DECODE(SEXO, 'MASCULINO', 'SR.' || ENAME,
‘MS.’||ENAME) DE EMP;
ANÁLISE
Adicionar 'Sr.' ou 'Sra.' antes do nome com base no gênero deles.
67
68
CASO
ApadritoOracel9v,iocêpodeusarfunçãoCASEnoulgadreDECODEO
.CASE
esle,neht ,new
hsdrw
oyekehtsesunoi tcnuf
óc o ranrot edop euq o ,odiuges
DECODIFICAR.
Exempol
TRABALHO CASOTRABALHOWH
--------- ---------
CLERK EXEC
VENDEDOR [Link]
VENDAS S. OFICIAL
MANAGER VP
VENDEDOR OFICIAL DE VENDAS
MANAGER VP
MANAGER VP
ANALISTA ANALISTA
PRESIDENTE PRESIDENTE
VENDEDOR [Link]
CLERK EXEC
CLERK EXEC
ANALISTA ANALISTA
CLERK EXEC
ANÁLISE
Funciona de forma semelhante ao DECODE
69
NVL
NVLsinãosem il atianúmerosp,odeserusadocomCHARV
,ARCHAR2D
, ATE,
eopuirostdedadom
s,asvoaelrauçsãtidobestvemseormesmodyatpe.
ENTRADA
SAÍDA
EMPNO SAL COMM TOTAL
---------- ---------- ---------- ----------
7369 800
7499 1600 300 1900
7521 1250 500 1750
7566 2975
7654 1250 1400 2650
7698 2850
7782 2450
7788 3000
7839 5000
7844 1500 0 1500
7876 1100
7900 950
7902 3000
7934 1300
ANÁLISE
A operação aritmética é possível apenas quando há valor em ambas as colunas.
70
INPUT
SAÍDA
EMPNO SAL COMM TOTAL
---------- ---------- ---------- ----------
7369 800 800
7499 1600 300 1900
7521 1250 500 1750
7566 2975 2975
7654 1250 1400 2650
7698 2850 2850
7782 2450 2450
7788 3000 3000
7839 5000 5000
7844 1500 0 1500
7876 1100 1100
7900 950 950
7902 3000 3000
7934 1300 1300
ANÁLISE
Usando NVL, estamos substituindo 0 se COMM for NULL.
ENTRADA
SQL>SELECIONE DEPTNO,SOMA(SAL),RÁCIO_PARA_RELATÓRIO(SOMA(SAL))
OVER() DO EMP GROUP BY DEPTNO;
OUTPUT
DEPTNO SOMA(SAL) RAZÃO_PARA_RELATÓRIO(SOMA(SAL)) SOBRE()
---------- ---------- -------------------------------
10 8750 .301464255
20 10875 .374677003
30 9400 .323858742
ANÁLISE
A FUNÇÃO RATIO_TO_REPORT ENCONTRA A RAZÃO SALARIAL DAQUELA DEPARTAMENTO
SOBRE O SALÁRIO TOTAL DE TODOS OS EMPREGADOS.
71
LENGTH
Enconoecrtompm
irenodtniaofm
r açãodada
ASCI
EnconoevrtA
aolrSC
dIocarcedtrado
Exerccíoi
m
u.m
uaseretcaracedoãçiutitsbusaazilaeroãçnuf_
osnem
E
sotxroptircseorietnipsonaretboarapdasuénoitpom
rotaf_
ufnçãT
oO_CHAR.
seretcaracedsaiedacsaudrm
oancibarapodasuém oílobs_
O que acontece se "replacestring" não for fornecido para a função REPLACE
UmnúmeropodeserconvertidoparaDATA?
ConvertaovalordonomenatabelaEMPparaletrasminúsculas
Exibaosnomesdosfuncionáriosquetêmmaisde4caracteresno
nome.
mIm piraq*uanm otshelm
axstrinnoúmeor
Exibaonome,comissã[Link]ãoforNULA,imprimacomoNOCOMM
Adcioneonúmerodedaiàsdadtada
Exibaosdoisprimeiroseosdoisúltimoscaracteresdeumnomedadoecombine.
)snoi tcnufylnoeU s(gnirtselgnisam seaht
Encondaerftinçeandertuadsadtsadas
Exibatodososnomesquecontêmsublinhado
daaum tdadeamsedsenúm
orreiarubts
72
73
CLÁUSULAGROUPBY
Agruparpordeclaraçãoagrupatodasaslinhascomomesmovalordecoluna.
Usetogeneratesummaryoutputfromtheavailabledata.
Sempre que usamos uma função de grupo na declaração SQL, temos que usar um grupo
áuacsl
INPUT
SQL> SELECIONAR CARGO, CONTAR (*) DE FUNCIONARIOS AGRUPAR POR CARGO;
SAÍDA
JOB COUNT(*)
--------- ----------
ANALISTA 2
FUNCIONÁRIO 4
MANAGER 3
PRESIDENTE 1
SALESMAN 4
ANALYSIS
Conta o número de funcionários em cada um dos empregos.
Quando estamos agrupando por trabalho, inicialmente os trabalhos são colocados em ordem ascendente
pedido em um segmento temporário.
No segmento temporário, a cláusula group by é aplicada, de modo que em cada
função de contagem de trabalhos semelhantes aplicada.
ENTRADA
SQL> SELECIONE JOB, SOMA (SAL) DE EMP GRUPO POR JOB;
SAÍDA
JOB SUM(SAL)
--------- ----------
ANALYST 6000
ESCRITURÁRIO 4150
GERENTE 8275
PRESIDENT 5000
SALESMAN 5600
ANÁLISE
74
75
ERROcomCLÁUSULAGROUPBY
Noat:
ApenascolunasagrupadassãopermitidasnacláusulaGROUPBY
WheneverweareusingagroupfunctionintheSQLstatement,wehaveto
usegroupbycaluse.
INPUT
SAÍDA
SELECIONE CARGO, CONTAR(*) DE EMP
*
ERRO na linha 1:
ORA-00937: not a single-group group function
ANÁLISE
Isto resultado ocorre porque o grupo funções, tal como SOMA e
CONTAGEM são designados para lhe contar algo sobre um grupo ou linhas,
não as linhas individuais da tabela. Este erro é evitado utilizando
TRABALHO na cláusula GROUP BY, que força o COUNT a contar todos os
linhas agrupadas dentro de cada trabalho.
ENTRADA
SÁIDA
ANÁLISE
Quaisquer que sejam as colunas que estamos agrupando, a mesma coluna é permitida.
exibir
76
ENTRADA
SQL> SELECIONE CARGO, MIN(SAL), MAX(SAL) DO EMP AGRUPAR POR CARGO;
OUTPUT
JOB MIN(SAL) MAX(SAL)
--------- ---------- ----------
ANALYST 3000 3000
CLERK 800 1300
MANAGER 2450 2975
PRESIDENT 5000 5000
SALESMAN 1250 1600
ANÁLISE
Com cada trabalho, encontra o SALÁRIO MÍNIMO E MÁXIMO
[Link]
aonrfuesim
raldoaeçtõresboxiPar
INPUT
SQL> SELECIONAR CARGO, SOMA(SAL), MÉDIA(SAL), MÍNIMO(SAL), MÁXIMO(SAL), CONTAR(*)
DE EMP GRUPAR POR TRABALHO;
SAÍDA
JOB SUM(SAL) AVG(SAL) MIN(SAL) MAX(SAL) COUNT(*)
--------- ---------- ---------- ---------- ---------- ----------
ANALYST 6000 3000 3000 3000 2
CLERK 4150 1037.5 800 1300 4
MANAGER 8275 2758.33333 2450 2975 3
PRESIDENT 5000 5000 5000 5000 1
SALESMAN 5600 1400 1250 1600 4
ANÁLISE
77
seiralaslaotm
tew
D
stnterp,oiaw
siigtnaD
iputseohutytaplsT
odi
Com um relatório estilo matriz.
ENTRADA
SAÍDA
ANALYSIS
Quando aplicamos o agrupamento, inicialmente todos os cargos são colocados em ordem crescente de
designações.
Então, a cláusula GROUP BY agrupa designações semelhantes, em seguida, a função DECODE (Único
a função de linha) se aplica em cada uma das linhas daquele grupo e verifica o DEPTNO. Se
DEPTNO=10, ele passa o salário correspondente como um argumento para SUM().
ENTRADA
SAÍDA
DEPTNO JOB COUNT(*)
---------- --------- ----------
10 SECRETÁRIO 1
10 GERENTE 1
10 PRESIDENTE 1
20 SECRETÁRIO 2
20 ANALISTA 2
20 GERENTE 1
30 OFICIAL 1
30 GERENTE 78
30 VENDEDOR 4
ANÁLISE
79
D
oEPT
urm
N
zvebiE
snpO
aexi
ENTRADA
SAÍDA
DEPTNO JOB COUNT(*)
---------- --------- ----------
10 CLERK 1
GERENTE 1
PRESIDENTE
20 EMPREGADO 2
ANALISTA 2
GERENTE
30 FUNCIONÁRIO 1
GERENTE
VENDEDOR 4
ANÁLISE
uA
m
[Link]
ornatedousbim
qeutos,daaqbuream
erorveaP
ra
80
funçãoCUBE
PodemosusarafunçãoCUBEparagerarsubtotaisparatodasascombinaçõesdosvalores
eU
PL
O
Re E
U
B
C( .yb puorg alusuálc an
ENTRADA
SQL> SELECIONE DEPTNO, JOB, CONTAR(*) DE EMP GRUPO POR
CUBE(DEPTNO,JOB);
OUTPUT
DEPTNO JOB COUNT(*)
---------- --------- ----------
14
ATENDENTE
ANALYST 2
GERENTE 3
VENDEDOR 4
PRESIDENTE
10 3
10 FUNCIONÁRIO 1
10 GERENTE 1
10 PRESIDENTE
20 5
20 SECRETÁRIO 2
20 ANALISTA 2
20 GERENTE 1
30 6
30 ATENDENTE 1
30 GERENTE 1
ANÁLISE
81
82
FUNÇÃOROLLUP
C
U
B
Eoãçnuf ad oa etnahlm
ees É
ENTRADA
SQL> SELECIONE DEPTNO, JOB, CONTAR(*) DE EMP GRUPAR POR
ROLLUP(DEPTNO,JOB)
SAÍDA
DEPTNO JOB COUNT(*)
---------- --------- ----------
10 ATENDENTE 1
10 GERENTE 1
10 PRESIDENTE 1
10 3
20 FUNCIONÁRIO 2
20 ANALISTA 2
20 GERENTE 1
20 5
30 FUNCIONÁRIO 1
30 GERENTE
30 VENDEDOR 4
30 6
14
HAVINGCLAUSE
Sempre que estivermos usando uma função de grupo na condição, temos que usar having
GR
aO
ulsáU
B
lcY
Po.m
caountH
jA
adV
usN
lusáIG
élcA
gcoarporsaiotosiáralsrbexiP
em
paorop,l
ENTRADA
SQL> SELECIONAR CARGO,SOMA(SALÁRIO) DA EMP AGRUPAR POR CARGO;
SAÍDA
SQL> SELECT JOB,SUM(SAL) FROM EMP GROUP BY JOB;
JOB SUM(SAL)
--------- ----------
ANALYST 6000
SECRETÁRIO 4150
MANAGER 8275
PRESIDENT 5000
SALESMAN 5600
83
84
50aoriurpesélaottoirálasoujc,sõgeçnaisdesaqluaesnpaerbixieaP
ra
INPUT
SQL> SELECIONE CARGO, SOMA(SAL) DE EMP ONDE SOMA(SAL) > 5000
AGRUPAR POR CARGO;
SAÍDA
SELECIONE CARGO, SOMA(SAL) DE EMP ONDE SOMA(SAL) > 5000 AGRUPAR POR CARGO
*
ERRO na linha 1:
ORA-00934: função de grupo não é permitida aqui
ANÁLISE
A cláusula Where não permite usar função de grupo na condição.
Quando usamos a função de grupo na condição, devemos usar a cláusula having.
ENTRADA
SQL> SELECIONAR CARGO, SOMA(SAL) DE EMP GRUPO POR CARGO TENDO
SOMA(SAL) > 5000;
SAÍDA
JOB SUM(SAL)
--------- ----------
ANALYST 6000
GERENTE 8275
SALESMAN 5600
ANÁLISE
85
ENTRADA
SQL> SELECIONE JOB, CONTAGEM(*) DE EMP GRUPO POR JOB TENDO
CONTA(*) ENTRE 3 E 5;
OUTPUT
JOB COUNT(*)
--------- ----------
ATENDENTE 4
GERENTE 3
SALESMAN 4
ANÁLISE
INPUT
SQL> SELECIONAR SAL DO EMP AGRUPAR POR SAL TENDO CONTAGEM(SAL) > 1;
SAÍDA
SAL
----------
1250
3000
ANALYSIS
86
PONTOS A LEMBRAR
ORDEMDEEXECUÇÃO
Aqui estão as regras que o ORACLE usa para executar diferentes cláusulas dadas em SELECT
comando
EXERCÍCIO
ANEXO–ACONSULTA2
SubconsultasAninhadas
Annihamenotéoaotdenicorporarumasubconsuatldenrtodeourtasubconsuatl.
SN
I TAXE
Sempre que informações particulares não estiverem acessíveis através de uma única consulta, então nós
etqrueescervecronsuatdslefiernuetsm
, naiculdíanaouart.
Subconsuatplsodemsearnnihadaãtsoprofundameneqtuanotsum
ai pelmenatçãodeSQLperm
.riti
Podemosescreverdiferentestiposdesubconsultas
Subconsuatdslnielhaúncia
Subconsultas de várias linhas
Subconsultas Multicolunas
Subconsultascorelacionadas.
88
Subconsuatd
lnielhaúncia
Uma subconsulta que retorna apenas um valor.
ENTRADA
PoerxeSQL>
mpol, SELECIONE ENAME, SAL DE EMP ONDE SAL = ( SELECIONE
MAX(SAL) DE EMP);
o?irálasm
oroianbdeocrátseqm
uedgoaeprreobtaP
ra
SAÍDA
ENAME SAL
------------ ----------
REI 5000
ANÁLISE 89
A consulta do lado direito é chamada de consulta filha e a consulta do lado esquerdo é chamada de consulta pai.
consulta. Em consultas aninhadas, a consulta filho é executada primeiro antes da execução da consulta pai
consulta.
ENTRADA
SQL> SELECIONE ENAME, DATA_DE_ADMISSAO DE EMP ONDE DATA_DE_ADMISSAO =
( SELECIONAR MÁXIMO(HIREDATE) DA EMP);
OUTPUT
ENAME HIREDATE
---------- ---------
ADAMS 12-JAN-83
ANÁLISE
Exibir o funcionário menos experiente
90
ENTRADA
SQL> SELECIONE ENAME, SAL DE EMP ONDE SAL < (SELECIONE
MÁX(SAL) DE EMP);
SAÍDA
ENAME SAL
---------- ----------
SMITH 800
ALLEN 1600
WARD 1250
JONES 2975
MARTIN 1250
BLAKE 2850
CLARK 2450
SCOTT 3000
TURNER 1500
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300
ANÁLISE
Consulta
m
m
oxiám
oenioíernteoãtseosirálasosujcosiornáuincfosodst rbixieaPra
osirálas
ENTRADA
91
Displayaltheemployeeswhoaregetingmaximumcommissioninthe
zaçãgonri
Consulta
Exibirtodososfuncionáriosdodepartamento30cujosalárioémenorqueomáximo
m
[Link]
ENTRADA
SQL>SELECIONE ENAME,SAL DO EMP ONDE SAL EM( SELECIONE
SAL DO GRUPO EMP POR SALTANDO HAVENDO CONTAGEM(*)> 1);
SAÍDA
ENAME SAL
---------- - ---------
ALA 1250
MARTIN 1250
SCOTT 3000
FORD 3000
ANÁLISE
Exibe todos os funcionários que estão recebendo salários semelhantes
When child query returns more than one value, we have to use IN operator for
comparação.
92
SubconsultasMulticoluna
ANÁLISE
Exibir todos os funcionários que estão recebendo os salários máximos em cada departamento
INSTRUÇÕESDMLEMSUBCONSULTAS
m
eap1lbeatnaaizvaalbeatdaosdnaicelesnshail rirensiaP
ra
INPUT
SQL> INSERIR EM EMP1
SELECIONE * DE EMP ;
ANÁLISE
EMP1 é uma tabela existente. Insere todas as linhas selecionadas na tabela EMP1.
93
Exerccíoi
Exibatodososfuncionárioscujosalárioestádentrode±1000damédia
hm
[Link]
ExibaosfuncionáriosquereportaramaKING
Exibatodososfuncionárioscujosalárioéinferioraosaláriomínimode
GERENTES.
94
INTEGRITYCONSTRAINTS
Restriçõessãousadasparaimplementaregraspadrãoc,omoaexclusividadenachave.
O camerdgpnaerogcoóm
cis,coaulA
naGdE
ev,em
counm
ert1veno5raltr
e60ce.t
OservidorOraclegarantequeasrestriçõesnãosejamvioladassemprequeumalinhaé
dazi lauta uo odíulcxe ,odi resni
AsrestriçõesnormalmentesãodefinidasnomomentodacriaçãodatabelaM
. astambémé
[Link]ósõçseirtserrniidfevleípsoé
TYPESOFCONSTRAN
ITS
Asrestriçõessãoclassifcadasemdoistipos
T
çR
dõieabsretsl
RestriçõesdeColuna
Um exemplo atípico é a restrição PRIMARY KEY que é usada para definir composite.
chavem
pira.áir
Váporitosdsreçrstõid
en
sietgd
riade
PRM
I ARYKEY
ÚNICO
NOTNULL
VERIFICAÇÃO
95
tm
aum eavisulcxe raci fC
e sahni l etnm iH tneA
dV
iEP
aR
raIM
pÁ
odaR
suIAÉ
émis,esuem dum
encoa,lrsaiatspconidsE
aelem [Link]áea
onuledaosnosdaeviium sxelcméaE
an(tlocm [Link]ám
avededa
.)sváietnioeãcasorvla
A
MIÁ
R
IR
PVE
H
A
C
O
=
N
U
LNÃ
O
+
CÚ
N
I ,ajes uo
Auotmcaiytlceraetsunqiuenidexotenofcreunqiuenes.
OOraclecriaautomaticamenteumíndiceúnicoparaacoluna.
NÃONULOAexclusividadenãoémantidaevaloresnulosnãosãoaceitos.
DR
efiA
naCacoIndFiçãIoqRuEedVevesersatisfeitaantesdainserção
[Link]çeãlofi
DDL(LinguagemdeDefiniçãodeDados)
CreateA
, lterD
, rop
CreateTable
Sniatxe-:
ColumnDef:
<Nome>T
poiDeDadoV
ç[ãoP
iar<
laedtsãrno[]mçpeã>
oi]rdtesr
Noat=
:MniC
. oulnaniaátve=
l1
96
[Link]=1000
97
Regras:-
e m o n m U . 1
númerosnels
ã n s e l E . 2
ap etnm
elapicni rp sodasu oãs #,$ ,ajes uo
Exempol:
Nota:
Onomedarestriçãoéútiplaramanipulararestriçãodada.
Quando o nome da restrição não é dado no momento de definir as restrições,
nom
SY
om
ceS_C
oãç[Link]
rairm cetasis
Asrestriçõesdefinidasemumatabelaparticularsãoarmazenadasemumatabeladodicionáriodedados.
USER_CONSTRAINTS,USER_CONS_COLUMNS.
updnm
oA
aisberfm
taãsurolsiárazenaedm
asudom
canediU
báeaortslaSER_TABLES
SAÍDA
CONSTRAINT_NAME TIPODERESTRIÇÃO SEARCH_CONDITION
------------------------------ - ------------------------------------------------------------------------------
SYS_C003018 C "ENAME" NÃO É NULO
PK_EMPL47473_EMPNO P
SYS_C003022 Você
ANÁLISE
SAÍDA
CONSTRAINT_NAME COLUMN_NAME
------------------------------ - --------------------------------
CHK_EMPL47473_GENDER GENDER
PK_EMPL47473_EMPNO EMPNO
SYS_C003018 ENAME
SYS_C003020 SALARY
SYS_C003022 EMAIL_ID
ANÁLISE
99
ALTERARTABELA
Usadoparamodificaraestruturadeumatabela
SINTAXE
ALTER TABLE <NOME_DA_TABELA> [ ADICIONAR | MODIFICAR |
DESCARTAR | RENOMEAR] ( COLUNA(S));
Nota:Estecomandotambéméútp
liaramanp
iualrrestrçiões
ENTRADA
SQL> ALTER TABLE EMPL47473 DROP PRIMARY KEY;
ANÁLISE
Para remover a chave primária da tabela. Outras restrições são removidas
apenas mencionando o nome da restrição.
INPUT
SQL>ALTER TABLE EMPL47473 ADD PRIMARY KEY(EMPNO);
ANALYSIS
Para adicionar uma chave primária na tabela sem
100nome de restrição. Ele cria
nome da restrição com SYS_Cn.
ENTRADA
SQL>ALTER TABLE EMPL47473 ADD CONSTRAINT
PK_EMPL47473_EMPNO CHAVE PRIMÁRIA(EMPNO);
ANÁLISE
To add primary key in the table with constraint name
MANIPULAÇÃODEDADOS
INSERINDOLINHAS
SINTAXE
INSERIR NA TABELA [ NOME DA COLUNA, NOME DA COLUNA,
….]
VALUES(VALUE1,VALUE2,VALUE3, …..);
SQL> INSERIR EM
EMPL47473(COD_EMP, NOME_EMP, SALÁRIO)
VALORES(101, 'RAVI', 5000);
OU
SQL>INSERIR EM
EMPL47473(CODIGO_DO_EMPREGADO, NOME_DO_EMPREGADO, SALARIO)
VALORES(&EMPNO,'7EMPNAME',&SALARY);
101
sodad ed ocnab on sat ief seõçaretN laotaAs
m
oarqusenõfçanvudm
oislaosm
cCndaO
oMMT
,I
ROLLBACKS .AVEPOINT(ChamadoscomoesatetmenstdeprocesamenotTransacoina)l
SQL>CONFIRMAR;
ANALYSIS
SQL>RETORNAR;
ANÁLISE
PONTODESALVAMENTO
Podemosusarpontosdesalvamentoparareverterpartesdoseuconjuntoatualdetransações.
exPm
oropl
SQL> SAVEPOINT A
SQL> SAVEPOINT B
102
SQL> INSERIR NA EMPL47473
VALORES(107, 'RADHA', 'F',
‘RADHA_V@[Link]’,15000,’15-JAN-2002’);
Asadím
aênorastosvoergsqtiuaedcoinamA
[Link],ptrenm
aoiústlo.
: t resni
Aasçõeqsuofeçraãroumcompormsoiam
coe,resmosemsunirastçãoposaiur,
com
queralanD
d,ou)m
D
rçaocirm
sfLam
.entveqaluio(rais,rais
AUTORREVERSÃO
,seõçresni ed ei rés m
au uotelm poc êcov eS
ov e ,uetm eorm
poc so etnmeat ici lm pi
hebkcnaytunolcfmdeow
Ilyrtkm
.lortlacoim
uaietO
tlac,eruliaocm freput
quandoobancodemaqurinasocorre, ele fazesse trabalho de limpeza na próxima vez que o
[Link]éos
Nota:
103
Roblackfuncoinaapenasemdadosnãoconfrimados
A transação ADDL após uma transação DML é automaticamente confirmada.
Podemos usar um comando Environment SETVERIFYOFF para remover o antigo
novm
asensagdenardiosers.
104
CRIANDOUMATABELAAPARTIRDEOUTRATABELA
SINTAXE
CRIE A TABELA <TABLENAME> COMO SELECIONE <COLUMNS>
DE
<TABELA EXISTENTE> [ONDE <CONDIÇÃO>];
Exempol
SQL> CRIAR TABELA EMP47473 COMO SELECIONAR
EMPNO,ENAME,SAL,JOB
FROM EMP;
Adcoinau
rmanovacoulnanatbeal
ATUALIZANDOLINHAS
Ecesotmandouésadopam
r udoadrsadodastbaeal
SINTAXE
106
SQL> ATUALIZAR EMP47473 DEFINIR SEXO = 'M' ONDE NOME EM
('REI','MILLER','BLAKE');
SQL> CONFIRMAR / DESFAZER;
SQL> SELECIONE * DO EMP47473;
107
EXCLUINDOLINHAS
SINTAXE
TRUNCANDOTABELA
SINTAXE
Descartandotabela
SINTAXE
DELETAR TABELA <NOMEDATABELA>
108
RESTRIÇÕESDEINTEGRIDADEREFERENCIAL
Epçseiãarm
loútéitaernlçeãtrocomoautbarteal.
qdeupngairefotdV
lceisncoam
tirnsátsnO
uoasãroeacrl
Referêncais
Ondeletecascade
elaR
evahc rai rc arap l i tú etnm piecfenrêinrcpiasé
Areferêncaiésempredadapenasaoscampos-chavedeourtasatbeals.
Uma tabela pode ter quaisquer referências
AchavedereferêncaiceativaolresNULLedupcilados.
euq et m O
ocnodtenluetjecaodscaasudeé
irep elE . saicnêrefer m
Regsirtosdeatbealdecrainçaqs,uandoremovemosoregsirtodatbealmesrte.
Exemplo
Department47473 (Deptno , dname)
Soulção
109
110
Asumaocasoondeosupermercadovendedviersoetsinseosceilnetsfazempeddios.
.snet i so
SQL> Criar tabela itemmaster (itemno número (3) chave primária, itemname
varchar2 (10), número de estoque (3) verificação (estoque > 0));
SQL>Criar tabela itemtran (trnno número (3), itemno número (3) referências
itemmaster (itemno), trndate data, trntype char (1) cheque (superior (trntype) em
(‘R’,’I’)), número da quantidade (3) verificar (estoque > 0), chave primária (trnno, itemno));
Mestre de Itens
Itemno itemname estoque
Itemtran
Trnno itemno trndate trntype quantidade
ANÁLISE
Removendo a chave primária junto com a chave de referência
111
ALTER TABLE <TABLENAME> DESABILITAR CHAVE PRIMÁRIA
Exerccíoi
Considereuminstiutodetreinamentoconduzindodiferentescursosn,oquaol
em
uqosacoem
uss-sea ,ossm
idéA
(l sosrucsoirávarapodnevrcsni esoãtsesonulaso
mepram
iscemudinesom
platdipeora)sucr
Oualnspoosdem paxteam garpacresl
112
JUNTAS
Objetivos
m
.asbeqúvrlutdnoáeacm
dA
pênrosjum
çãielvrárti
UmadascaracterísticasmaispoderosasdoSQLésuacapacidadedereunire
[Link]
etqrueam
r azenoatrdooseslmenotdsedadonsecesáoirpsaarcadapcivaltoemum
odadm
som
seso ranem
zara airasicerpêcov ,sm
nouc salebatm
eS .alebat
.salbeat sairvá
Demsunçãojpendho
unçãojum
deãnouzar-R
ieal
naeruxntçãojEarxecut
m
aelm
esaabeltaaueJnt
Equjion
i
Exrtanidoasniformaçõesdemasideumaatbealcomparando(=)o
m
ocrnfõç[Link]
Todsp
ialycommoncoulmnniofrmaoitn
ANALYSIS
A eficiência é maior quando comparamos as informações de dados inferiores
tabela (tabela principal) para tabela de dados superior (tabela filha).
Quando o Oracle processa várias tabelas, ele utiliza uma ordenação/mesclagem interna.
procedimento para juntar essas tabelas. Primeiro, ele escaneia e classifica a primeira tabela
(o especificado por último na cláusula FROM1
)1.3Em seguida, escaneia a segunda tabela
(o anterior ao último na cláusula FROM) e mescla todos os
recuperado da segunda tabela com aqueles recuperados da primeira
mesa. Leva cerca de 0,96 segundos
SQL> SELECIONE EMPNO, ENAME, JOB, SAL, DNAME DE
DEPT, EMP ON [Link] = [Link];
ANÁLISE
Não-Equiouins
Obtendoinformaçõesdemaisdeumatabelasemusarcomparação
opa=
[Link]()
ENTRADA
SQL> SELECIONE * DOS DEPT ONDE DEPTNO NÃO ESTÁ EM
(SELECIONE DISTINTAMENTE DEPTNO DO EMP);
SAÍDA
DEPTNO DNAME LOC
---------- -------------- -------------
40 OPERAÇÕES BOSTON
ANÁLISE
Exibe os detalhes do departamento onde não há funcionários
Tambémpodemosobterasaídaacimausandooperadoresdeálgebrarelacional.
JUNÇÃOEXTERNA
SAÍDA
EMPNO ENAME JOB SAL DNAME
---------- ---------- --------- ---------- --------------
7782 CLARK GERENTE 2450 CONTABILIDADE
7839 KING PRESIDENT 5000 ACCOUNTING
7934 MILLER SECRETÁRIO 1300 CONTABILIDADE
7369 SMITH CLERK 800 PESQUISA
7876 ADAMS FUNCIONÁRIO 1100 PESQUISA
7902 FORD ANALISTA 3000 PESQUISA
7788 SCOTT ANALYST 3000 RESEARCH
7566 JONES MANAGER 2975 RESEARCH
7499 ALLEN VENDEDOR 1600 VENDAS
7698 BLAKE MANAGER 2850 SALES
7654 MARTIN SALESMAN 1250 SALES
7900 JAMES CLERK 950 SALES
7844 TURNER SALESMAN 1500 SALES
7521 WARD VENDEDOR 1250 VENDAS
OPERAÇÕES
115
AUTOJUNÇÃO
mism
edcheam
ébeltuanajoçã[Link]
ANÁLISE
Ele mostra quem está trabalhando sob quem.
O número MGR que aparece contra o funcionário é o número do funcionário de
gerente
EXERCÍCIO
116
OUTROSOBJETOS
OBJETODESEQUÊNCIA
Usadoparagerarsequência(Única)Inteirosparausodechavesprimárias.
SINTAXE
CRIAR SEQUÊNCIA
[INCREMENTAR EM n]
[COMEÇAR COMn]
[{VALORMÁXIMO| SEMVALORMÁXIMO}]
[{MINVALUEn| NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHEn| NOCACHE}];
Sequenceisthenameofthesequencegenerator
INCREMENT BYnspecifiestheintervalbetweensequencenumberswheren
nas i
aicnêuqes a ,adi t m
io rof alusuálc at seeS(or ietni
) .1ybs tnm
eercni
COMECE COM especifica o primeiro número de sequência a ser gerado (Se este
saulsálc
com
eqsaucoênm
i)aeç[Link],m
iti
eaqeuniêcs
oãdrpaoéeE
ts(entdecsdeaincquêesarpa1-
op)ção.
MINVALUEnespecificaovaleorminimodoasequência
117
NOMINVALUE especifica um valor mínimo de 1 para uma sequência ascendente
e–
1(0^2pse6qar)uêdnaeciporscE
(éeandãstro
op)ção.
CACHEn| NOCACHEespecifiquequantosvaloresoServidordeOracle
poém
ar-lecaaném
tnm
aem
P
(paóoiaserovdO
ãiror,am
reclazenem
acach2e0
M
m
queneA
rosdX
veV
seoA
rvlaL
deU
oum
nO
tE
ocnjneo)[Link]
Exemplo
CRIE SEQUÊNCIA SQNO47473
COMECE COM 1
INCREMENTAR EM 1
VALOR MÁXIMO 10;
NoatE :ssasequêncaisãoarmazenadasemumaatbealdedcioinároidedados
SEQUÊNCIAS_DO_USUÁRIO.
Eoestbeodjtsequênofcanirecdeuuafsnçõedsm
eemborpúcbials
NEXTVALeCURRVAL
NEXTVALéumafunçãoquegeraopróxm
i ovaolrdeumobejotdesequêncai
CURRVALéumafunçãoqueforneceovaloratualdoobjetodesequência
Asumqriuexseitumatbeal
SAMPLE47473
EMPNO ENAME SAL
Inseroivsaolren
satbeal
118
SQL> INSERIR EM SAMPLE47473 VALORES([Link],
'&ENAME', &SAL);
MODIFICAROOBJETOSEQUENCIAL
Removeorbejotdesquêncai
VISTAS
w
seiv ed sopi t setneref id rai rc sm
oedop ,elcaO
rN
o
SM
I PLES COMPLEXO N
EILN
-I
SM
I PLEveiwéumavsãiqou,eécairdausandoapenausmatbeablase.
COMPLEXviewéumavista,queécriadausandomaisdeumatableou
usandofunçõesdegrupo
m
euqsm
euéoãneuqed(oãçi rcsnim
auodnasuadai rcéeuq,oãsivm
auw
éeiN
vEN
ILI
objeto.• É uma subconsulta nomeada na cláusula FROM da consulta principal. Geralmente
usado na Análise TOP N.
SINTAXE
119
CRIAR OU SUBSTITUIR [FORÇAR] VISÃO <VIEWNAME> COMO SELECIONAR
<COLUNAS> DE <TABELA> [COM SOMENTE LEITURA];
A
atbnealqauam
l vasãiobéaseadcéahamaddatbebealase
AopçãoFORCEpem rqetuviaseuziaçlãaocsedirjm
aesmoqaubtaelanseã[Link]
Noentanto,atabelabasedeveexistirantesqueavisualizaçãosejautilizada.
ObservaçãoE
:ssasvsiõesãoarmazenadasemumaatbealdedcioinároidedadosUSER_VIEWS
ANÁLISE
COMVERIFICAÇÃO
Eoastpçãouésadpaaeqrvtuiasqiueatreçlrõatbeàsbealasrevtédsvauizalção.
bat an sadi tm
irep oãs oãn oãçazi lauta e oãçresnI
m
[Link]
saonãocoçãn,dieuncoalazeiualatvoqcêuN em pertãoi
com
uonfsdicD
oáhrsealdetoE
saP
rnT
iqsvpm
uo2N
erdc0ê[Link]
irtfdi
Podemostambémcriarumavisãousandofunçõ[Link]õessãochamadasde
t iel etnm
eos ,oãrdap rop ,oãs salE N
.EN
ILI w
seiv A
s
120
ÍNDICE
OconcodnetidexaçãonoOaroém
cel esmoquuem
nídA
cvdieorle.m
sicomoum
nídcvdieorle
tnednecsam
edro an sodaci f i ssalc secidní so
éovrildoecnOdinuúeom
sí.eonurdamnopevcgtrálaiserc
.eO lcardeom R
acnçhsnO dileíW
eD
sI
Umnídciedeanáetmaé[Link]étmosvaolresdonídcie
[Link]çenodcrm
eountjednm
coestrana)sun(aocl
O endouhéibaesnçdrtlopaseoudocuonlR
aOWD
I.
PorQueUsarUmÍNDICE
OSÍNDICESNOORACLESÃOUSADOSPARADOISPROPÓSITOS
m
esdenpoheram
horm
leis,a,edoasdeoãçaurpcerararelecaaP ra
atconusl
deaviiusE
A
lxcraçFor
121
Noet-:AUNIQUEnidexsiauotmacitaylcreaetdwhenyouusePRIMARY
resrtçiõesdeCHAVEeÚNICA
Umnídciepodetarét32coulnas.
SINTAXE
CRIE ÍNDICE [ÚNICO] index_name NA tabela(coluna1,coluna2,…);
NoatO
: snídciesãoarmazenadosnaatbealdodcioinároidedadosUSER_INDEXES.
QuandoOOracleNaoUsaIndice
Oracleindexécompletamenteautomá[Link],vocênuncaprecisaabriroufecharum
onroxedninaesuot rehtew
hsedicedrevreselcaO
r .xedni
OsegunesiãtocsaoesmquoeOarN
celÃO
nzíiadlcuiet.
SELECTnãoconétmcálusualWHERE
Quando o tamanho dos dados é menor
SELECTconétmcálusualWHEREm, asacálusualWHEREnãosereferea
.adaxednianuloc
SELECIONEconétmcálusualWHEREeacálusualWHEREusanidexado
W
aH
ulsáE
lcRE
[Link]
féodidaxneiunaolcam
sa,sunaolc
RemovendoumÍndice
SINTAXE
Removeurmnídcienãonivadilasapcilaçõesexsietnetps,orque
casçipõlensãoam
etsrdiendtependendstnom
cdíe,iasomem
seom
t ponão
eutrmnídciepodeaefaotdresempenho.
PSEUDOCOLUNA
122
Uma pseudo-coluna é uma coluna que gera um valor quando selecionada, mas que é
naoéumacoulnadoatbealvedradeari.
Exempol
ROWID
ROWNUM
SYADATE
PRÓXIMOVAL
CURRVAL
NULL
SãochamadasdePseudo-coulnas.
SELECIONARNÚMERODALINHAN
, ÚMERODOEMPREGADON
, OMEDOEMPREGADODAEMPRESA;
PARAEXIBIROS3MAISALTOSALARIOS
ANEXO
Tabel:Studeis
TABLE : SOFTWARE
123
NAME NULL ? TYPE
(PNOME) NÃO NULO VARCHAR2(20) NAME
TITLE NÃO NULO VARCHAR2(20) DESENVOLVIDO
NOME DO PROJETO
DEV_IN NÃO NULO VARCHAR2(10) IDIOMA
DESENVOLVIDO
SCOST NÚMERO(7,2) CUSTO DE SOFTWARE
DCOST NÚMERO(7,2) DESENVOLVIMENTO
COST
VENDIDO NÚMERO(4) Nº DE SOFTWARE
VENDIDO
DatainTable:STUDIES
TABLE:SOFTWARE
DatainTable:PROGRAMMER
QUERY–I
Descuboacruom
stédodiveendpaapracoedtsesenvovdlioesmPasca.l
Exibirosnomeseidadesdetodososprogramadores
ExibaosnomesdaquelesquefizeramocursoDAP
Qual é o maior número de cópias vendidas por um pacote
125
Exibaosnomesedatasdenascimentodetodososprogramadoresnascidosem
Janorei
Exibiromenorvalordocurso
QuantosprogramadoresfizeramocursodePGDCA
Quantodereceitafoiobtidoatravésdavendadepacotes
desnvovdleiom C
ExibaosoftwaredesenvolvidoporRamesh
QuantosprogramadoresestudaramnaSabhari?
Exibaosdetalhesdospacotescujasvendasultrapassaramamarcade2000.
Descuboanrúmeordceópaqisudeevemvserendiapsar
.eotcpadacdem
ovintevolsdedeotuscoraurpcer
Exibirosdetalhesdospacotesparaosquaisoscustosdedesenvolvimentoforam
[Link]
Qual é o preço do software mais caro desenvolvido em BASIC
QuantospacotesforamdesenvolvidosnoDBASE?
QuantosprogramadoresestudaramnaPragathi?
Quantosprogramadorespagaramde5000a10000peloseucurso?
Qual é a taxa média do curso?
ExibaosdetalhesdosprogramadoresqueconhecemC
QuantosprogramadoresconhecemCOBOLouPASCAL?
QuantosprogramadoresnãoconhecemPASCALeC?
Qualéaidadedoprogramadormasculinomaisvelho?
Qual é a idade média das programadoras?
Calculatetheexperienceinyearsforeachprogrammeranddisplay
coum
njtom esdoerm
,[Link]
Quem são os programadores que celebram seu aniversário durante o
m h?nteontrurc
Quantasprogramadorasexistem?
Quais são as linguagens conhecidas pelos programadores homens
Qual é o salário médio
Quantaspessoasdesenhamde2000a4000?
ExibaosdetalhesdaquelesquenãoconhecemClipper,COBOLouPascal
Exibirosdetalhesdaquelesquecompletarão2anosdeserviço
?ona etse
Calculeovaloraserecuperadoparaaquelespacotescujo
cudosetsenvovm lienaoiedtrncauoãfpieardo?
pqonacusdeoiL
afãm
rtsoivaegnéoda?trois
Descuboacruodstosw tfaderesenvovdliopoM r ayr?
Exibaosnomesdasinstituiçõesdatabeladeestúdiossemo
ducpaistl
Quantoscursosdiferentessãomencionadosnatabeladoestudo?
Exibaosnomesdosprogramadorescujosnomescontêm2
A'arteldasaniêcrocr
126
Exibaosnomesdosprogramadorescujosnomescontêm5
sneganosrep
QuantasprogramadorasqueconhecemCOBOLtêmmaisde2
xeulasaniêcixepr
Qual é o comprimento do nome mais curto na tabela de programadores
Qual é o custo médio de desenvolvimento de um pacote desenvolvido em
COBOL
Displaythename,sex,dob(dd/mm/yyformat),DOJ(dd/mm/yy
serodm
aargorp so sodot arap )otm arof
Qual é o valor pago em salários dos programadores masculinos que
C neãsiO
oBOL
Displaythetitle,scost,dcostanddifferencebetweenscostanddcost
açneref id ed etnecsercedm edro
Exibaosnomesdospacotescujosnomescontêmmaisde1
palavra
Displaythename,dob,dojofthosemonthofbirthandmonthof
m
easeragninioj
QUERY–II
Exibaocustodopacotedesenvolvidoporcadaprogramador
Exibaosvaloresdevendasdospacotesdesenvolvidosporcadaum
porgarmador
Exibaonúmerodepacotesvendidosporcadaprogramador
Exibaocustodevendasdospacotesdesenvolvidosporcadaprogramador
Exibaonomedecadalínguacomocustomédiodedesenvolvimento,média
opycrpeciprgearvnedatonsgcilles
Displayeachprogrammer’sname,costliestpackageandcheapest
[Link]/dpolisr
Displayeachinstitutenamewithnumberofcourses,averagecostper
osucr
DisplayeachInstitutenamewithnumberofstudents
Exibaosnomesdeprogramadoresmasculinosefemininos
Exibaonomedoprogramadoreseuspacotes
Exibaonúmerodepacotesemcadalinguagem,excetoCeC++
Mostreonúmerodepacotesemcadaidiomaparaoqual
ocudosetsenvovm lim
eénotenqou1re000
ExibaadiferençamédiaentreSCOSTeDCOSTparacada
anlguage
ExibaototaldeSCOST,DCOSTeovaloraserrecuperadoparacadaum
porgarmadoprarqusceuolstnãoêm tercupeardos
Displaythehighest,lowestandaveragesalariesforthoseearning
mais de 2000
127