Escolar Documentos
Profissional Documentos
Cultura Documentos
AlfredoFonsecaJunior
Indice
IntroduodeBancodeDados..................................................................................................................3
FunesinternascomunsemBancosdeDados...............................................................................6
DML:DataManipulationLanguage...............................................................................................7
DDL:DataDefinitionLanguage....................................................................................................7
DCLLinguagemdeControledeDados........................................................................................8
DTLLinguagemdeTransaodeDados......................................................................................8
DQLLinguagemdeConsultadeDados........................................................................................8
HabilitaracessoaAPEX.................................................................................................................13
AcessandoApex..............................................................................................................................14
SELECTFROM.............................................................................................................................22
Exerccios:SELECTFROM...........................................................................................................23
Soluo:SELECTFROM..............................................................................................................23
WHEREANDORBERBY............................................................................................................24
Exerccios:WHERE.......................................................................................................................25
Soluo:WHERE...........................................................................................................................25
BETWEEN....................................................................................................................................26
LIKE...............................................................................................................................................26
INeSubSELECT...........................................................................................................................26
JOIN................................................................................................................................................27
IntroduodeBancodeDados
Tabela
Todososdadosdeumbancodedadosrelacional(BDR)soarmazenadosemtabelas.
Umatabelaumasimplesestruturadelinhasecolunas.Emumatabela,cadalinhacontmum
mesmoconjuntodecolunas.
Funcionario
cpf
nome
Datanasc
35103778988
EduardoSilva
05/05/80
35158687455
JoseSousa
07/07/70
45226558977
PedroLima
06/06/88
45223669888
JorgeSoares
07/07/77
Registro
Cadalinhaformadaporumalistaordenadadecolunasrepresentaumregistro,outupla.Os
registrosnoprecisamconterinformaesemtodasascolunas,podendoassumirvaloresnulosquando
assimsefizernecessrio.
Colunas(ouatributos)
AscolunasdeumatabelasotambmchamadasdeAtributos.Aoconjuntodevaloresqueum
atributopodeassumirchamasedomnio.Porexemplo:emumcampodotiponumrico,serosomente
armazenadosnmeros.
ChavePrimria
Conjuntosdeumoumaiscampos,cujosvaloresnuncaserepetemequepodemserusadascomo
umndice.Emchavesprimriasnopodehavervaloresnulosnemrepeties.
ChamadatambmdePrimarykey(PK).
Quandoachaveprimriasimples,ouseja,formadaporumnicocampodatabela,esse
camponopodeterdoisoumaisregistrosdemesmovalor,etambmnopodeconternenhumregistro
nulo.Seachaveprimriacomposta,ouseja,formadapormaisdeumcampo,osvaloresdecada
campopodemserepetir,masnoacombinao
3
ModeloRelacional
ModeloRelacionalevitareplicaodedados.
TabelaBairro
#id
nome
cidade
VilaMadalena
SoPaulo
VilaMafra
SaoPaulo
VilaInvernada
SAOPAULO
Centro
saopaulo
Ipiranga
SaoPulo
Normalizando
TabelaCidade
#id
nome
SoPaulo
SoCarlos
SoBernardo
Osasco
TabelaBairro
#id
nome
cidade_id
VilaMadalena
VilaMafra
VilaX
Centro
Centro
Chaveestrangeira
Noexemploanteriorocampocidade_iddaTabelabairroreferenciaocampoiddaTabela
cidade.Entocidade_idumachaveestrangeira(FK:forwardkey).
Abaixotemosumoutroexemploderelacionamentoentreastabelasfuncionarioedepartamento.
depto_idachaveestrangeira.
Funcionario
#id
cpf
nome
Datanasc
depto_id
35103778988 EduardoSilva
05/05/80
35158687455 JoseSousa
07/07/70
45226558977 PedroLima
06/06/88
45223669888 JorgeSoares
07/07/77
Departamento
#id
nome
descricao
Administrativo
Departamentoquecontrola
Desenvolvimento DesenvolvimentodeSoftware
InfraEstrutura
DepartamentodeInfraEstrutura
Design
Departamentoresponsvelpelodesignartstico
SGBD
SistemaGerenciadordeBasedeDados(SGBD)oconjuntodeprogramasdecomputador
(softwares)responsveispelogerenciamentodeumabasededados.Oprincipalobjetivoretirarda
aplicaoclientearesponsabilidadedegerenciaroacesso,manipulaoeorganizaodosdados.
OSGBDdisponibilizaumainterfaceparaqueosseusclientespossamincluir,alterarou
consultardados.EmbancosdedadosrelacionaisainterfaceconstitudapelasAPIsoudriversdo
SGBD,queexecutamcomandosnalinguagemSQL.
SGBD
=SistemaGerenciadordeBasedeDados
SGBDR
=SistemaGerenciadordeBancodeDadosRelacional
DBMS
=DatabaseManagementSystem
RDBMS
=RelationalDatabaseManagementSystem
Exemplosdeaplicativosdebancodedadosso:
MySQL
PostgreSQL
Firebird
MicrosoftSQLServer
Oracle
Informix
DB2
Sybase.
FunesinternascomunsemBancosdeDados
Tabelas
Views
Indexes
StoredProcedures
Triggers
SQL
StructuredQueryLanguage,ouLinguagemdeConsultaEstruturadaouSQL,umalinguagem
depesquisadeclarativaparabancodedadosrelacional(basededadosrelacional).Muitasdas
caractersticasoriginaisdoSQLforaminspiradasnalgebrarelacional.
DML:DataManipulationLanguage
ADMLumsubconjuntodalinguagemusadaparainserir,atualizareapagardados.
Comandos:
*INSERTusadaparainserirumregistro(formalmenteumatupla)aumatabelaexistente.
*UPDATEparamudarosvaloresdedadosemumaoumaislinhasdatabelaexistente.
*DELETEpermiteremoverlinhasexistentesdeumatabela.
DDL:DataDefinitionLanguage
ADDLpermiteaoutilizadordefinirtabelasnovaseelementosassociados.Amaioriados
bancosdedadosdeSQLcomerciaistemextensesproprietriasnoDDL.
OscomandosbsicosdaDDLsopoucos
*CREATEcriaumobjeto(umaTabela,porexemplo)dentrodabasededados.
*DROPapagaumobjetodobancodedados.
AlgunssistemasdebancodedadosusamocomandoALTER,quepermiteaousurioalterarumobjeto,
porexemplo,adicionandoumacolunaaumatabelaexistente.
outroscomandosDDL:
*ALTERTABLE
*CREATEINDEX
*ALTERINDEX
*DROPINDEX
*CREATEVIEW
7
*DROPVIEW
DCLLinguagemdeControledeDados
DCLcontrolaosaspectosdeautorizaodedadoselicenasdeusuriosparacontrolarquem
temacessoparaveroumanipulardadosdentrodobancodedados.
DuaspalavraschavesdaDCL:
*GRANTautorizaaousurioexecutarousetaroperaes.
*REVOKEremoveourestringeacapacidadedeumusuriodeexecutaroperaes.
outroscomandosDCL:
*ALTERPASSWORD
*CREATESYNONYM
DTLLinguagemdeTransaodeDados
*BEGINWORK(ouSTARTTRANSACTION,dependendododialetoSQL)podeserusadopara
marcarocomeodeumatransaodebancodedadosquepodesercompletadaouno.
*COMMITenviatodososdadosdasmudanaspermanentemente.
*ROLLBACKfazcomqueasmudanasnosdadosexistentesdesdeoltimoCOMMITou
ROLLBACKsejamdescartadas.
COMMITeROLLBACKinteragemcomreasdecontrolecomotransaoelocao.Ambosterminam
qualquertransaoabertaeliberamqualquercadeadoligadoadados.NaausnciadeumBEGIN
WORKouumadeclaraosemelhante,asemnticadeSQLdependentedaimplementao.
DQLLinguagemdeConsultadeDados
Emboratenhaapenasumcomando,aDQLapartedaSQLmaisutilizada.Ocomando
8
SELECTpermiteaousurioespecificarumaconsulta("query")comoumadescriodoresultado
desejado.Essecomandocompostodevriasclusulaseopes,possibilitandoelaborarconsultasdas
maissimplessmaiselaboradas.
Transao
umconjuntodeprocedimentosqueexecutadonumbancodedados,queparaousurio
vistocomoumanicaao.
Aintegridadedeumatransaodependede4propriedades,conhecidascomoACID.
*Atomicidade
oTodasasaesquecompemaunidadedetrabalhodatransaodevemserconcludascom
sucesso,paraquesejaefetivada.Qualqueraoqueconstituifalhanaunidadedetrabalho,atransao
deveserdesfeita(rollback).Quandotodasasaessoefetuadascomsucesso,atransaopodeser
efetivada(commit).
*Consistncia
Regrasdeintegridadedosdadossoasseguradas.
*Isolamento
oCadatransaofuncionacompletamentepartedeoutrasestaes.Todasasoperaesso
partedeumatransaonica.Oprincipioquenenhumaoutratransao,operandonomesmosistema,
podeinterferirnofuncionamentodatransaocorrente(ummecanismodecontrole).Outras
transaesnopodemvisualizarosresultadosparciaisdasoperaesdeumatransaoemandamento.
*Durabilidade
oSignificaqueosresultadosdeumatransaosopermanentesepodemserdesfeitossomente
porumatransaosubseqente.Porexemplo:todososdadosestatusrelativosaumatransaodevem
serarmazenadosnumrepositriopermanente,nosendopassveisdefalhaporumafalhadehardware.
Naprtica,algunsSGBDsrelaxamnaimplementaodestaspropriedadesbuscando
desempenho.
Controledeconcorrnciaummtodousadoparagarantirqueastransaessejamexecutadas
deumaformaseguraesigamasregrasACID.OsSGBDdevemsercapazesdeassegurarquenenhuma
aodetransaescompletadascomsucesso(committedtransactions)sejaperdidaaodesfazer
transaesabortadas(rollback).
Umatransaoumaunidadequepreservaconsistncia.Requeremos,portanto,quequalquer
escalonamentoproduzidoaoseprocessarumconjuntodetransaesconcorrentementeseja
computacionalmenteequivalenteaumescalonamentoproduzindoexecutandoessastransaes
serialmenteemalgumaordem.Dizsequeumsistemaquegaranteestapropriedadeasseguraa
seriabilidade.
10
OracleSGBD
Surgiunofimdosanos70,quandoLarryEllisonvislumbrouumaoportunidadequeoutras
companhiasnohaviampercebido,quandoencontrouumadescriodeumprottipofuncionaldeum
bancodedadosrelacionaledescobriuquenenhumaempresatinhaseempenhadoemcomercializar
essatecnologia.
EllisoneoscofundadoresdaOracleCorporation,BobMinereEdOates,perceberamquehavia
umtremendopotencialdenegciosnomodelodebancodedadosrelacionaltornandoassimamaior
empresadesoftwareempresarialdomundo.
Lderdemercado.OOracle9ifoipioneironosuporteaomodeloweb.OOracle10g,mais
recente,sebaseianatecnologiadegrid.RecentementeforalanadooOracle11gqueveiocom
melhoriasemrelaoaoOracle10g.
ExpressEditionXE
Gratuito,podeserinstaladoemmquinascomqualquernmerodeprocessadores(umbancode
dadospormquina),PORMirselimitara4GBdedados,1GBdememriaeutilizarapenasuma
CPU.
11
SQLPLUS
ConsoleparaacessaroservidorOracle.
12
OracleApplicationExpress(APEX)
AplicaowebquepossibilitaacessoaoServidordeBancodeDados.
OBS:AAPEXpodeserutilizadaparageraraplicaescustomizadaswebqueacessamoB.D.,ouseja
oapexumaaplicaowebquegeraaplicaesweb.
HabilitaracessoaAPEX
Inicialmentepodeseacessaraaplicaowebapexsomentedoservidor.
Parahabilitaracessoremoto:
AdministratonManageHTTPAccess
13
AcessandoApex
LogandocomoDatabaseAdministrator
http://xxx.xxx.xxx.xxx:8080/apex
user:system
password:xxx
14
CriandoTabelas
HomeObjectBrowserCreateTable
next
15
finish
create
ClicandoemSQLObservamosaDDLgerada
"BI_DEPTO" ENABLE
16
HomeObjectBrowserCreateTable
17
clicaremadd
next
nextfinishcreate
18
ClicandoemSQLvemosaDDLgerada
CREATETABLE"FUNCIONARIO"
(
"ID"NUMBER,
"PRIMEIRO_NOME"VARCHAR2(4000)NOTNULLENABLE,
"SOBRENOME"VARCHAR2(4000),
"CPF"VARCHAR2(4000)NOTNULLENABLE,
"DATA_NASC"DATENOTNULLENABLE,
"DEPTO_ID"NUMBER,
CONSTRAINT"FUNCIONARIO_PK"PRIMARYKEY("ID")ENABLE,
CONSTRAINT"FUNCIONARIO_FK"FOREIGNKEY("DEPTO_ID")
REFERENCES"DEPTO"("ID")ENABLE
)
/
CREATEORREPLACETRIGGER"BI_FUNCIONARIO"
beforeinserton"FUNCIONARIO"
foreachrow
begin
select"FUNCIONARIO_SEQ".nextvalinto:NEW.IDfromdual;
end;
/
ALTERTRIGGER"BI_FUNCIONARIO"ENABLE
/
19
Insert
INSERTINTOdeptoVALUES(depto_seq.nextval,'deptoX','deptodeX')
Update
UPDATEdeptosetdescricao='departamento__X'WHEREdepto.nome='deptoX'
PreferencialmenteutilizarPKaosereferiraumregistroespecifico.
Delete
DELETEFROMdeptoWHEREdepto.nome='deptoX'
20
Consultas(Select)
EstaediodoOraclevemcomumconjuntodetabelaspopuladascomdadosque
formamumBancodeDadosdeexemplosobrerecursoshumanos(hr).
Utilizaremosestastabelasnosexercciosdeconsultas.
Parautilizarobancoderecursoshumanosquevemnooraclexenecessriologarcomo
usuriohr.
Antesdelogarcomohrnecessriodesbloquearesteusurio:
1Estandologadocomosystem,cliqueemAdministration>DataBaseUsersManageUsers
2CliqueemHR
3Coloquehrcomosenhanasduascaixasdetexto
4ColoqueostatusUnlocked
5CliqueemAlterUser
Agoravocpodeefetuarlogout,elogarnosistemacomousuriohr(senhahr)
21
SELECTFROM
Selecionar3camposdetodosempregados:
SELECTfirst_name,last_name,emailFROMemployees;
SelecionarTodoscamposdetodosempregados:
SELECT*FROMemployees
Selecionar3campos,sendoummontadoemruntime:
SELECTfirst_name,last_name,CONCAT(email,'@xxx.com')ascool_mailFROMemployees
22
Exerccios:SELECTFROM
1)Elaborarumaconsultaquetragaoprimeironomedecadafuncionario.
2)Elaborarumaconsultaquetragatodososcamposdecadafuncionario.
3)Elaborarumaconsultaquetragaumcampomontadoemruntimequesejaajunodoprimeiroedo
ultimonomeseparadoporespao.(Ex:MickeyMouse)
?
Soluo:SELECTFROM
1)SELECTfirst_nameFROMemployees
2)SELECT*FROMemployees
3)SELECTCONCAT(CONCAT(first_name,''),last_name)FROMemployees
23
WHEREANDORBERBY
SelecionartodoscamposdetodosfuncionariosdesobrenomeKing:
SELECT*FROMemployeesWHERElast_name='King'
Selecionarprimeironomedetodosprogramadores:
SELECTfirst_nameFROMemployeesWHEREJOB_ID='IT_PROG'
Selecionarprimeironomedetodososnoprogramadoresemordemalfabtica:
SELECTfirst_nameFROMemployeesWHEREJOB_ID<>'IT_PROG'ORDERBYfirst_name
Selecionartodoscamposdetodosfuncionarioscontratadosdia23nov99ouaps:
SELECT*FROMemployeesWHEREhire_date>=TO_DATE('11/23/1999','MM/DD/YYYY')
24
Exerccios:WHERE
1)Selecionartodoscamposdetodosfuncionarioscontratadosdiaaps24/mar/2000.
2)Selecionartodoscamposdetodosfuncionarioscontratadosantesdoano2000,ordenandopordata
decontrataoeprimeironome.
?
Soluo:WHERE
1)SELECT*FROMemployeesWHEREhire_date>TO_DATE('03/24/2000','MM/DD/YYYY')
ORDERBYhire_date
2)SELECT*FROMemployeesWHEREhire_date<TO_DATE('01/01/2000','MM/DD/YYYY')
ORDERBYhire_date,first_name
25
BETWEEN
Betweensignifica'entre'.Asextremidadessoinclusas.
Selecionarprimeironomedetodoscontratadosentre3/fev/2000e23/fev/2000emordemdadatade
contratao:
SELECTfirst_name,hire_dateFROMemployees
WHEREhire_date
BETWEENTO_DATE('02/03/2000','MM/DD/YYYY')AND
TO_DATE('02/23/2000','MM/DD/YYYY')
ORDERBYhire_date
LIKE
Sobrenomecomeandocom'Mar'
SELECTfirst_name,last_nameFROMemployeesWHERElast_nameLIKE'Mar%'
INeSubSELECT
Selecionartodospresidentes,vicepresidenteseassistentesadministrativos:
SELECT*FROMemployeeswherejob_idIN('AD_PRES','AD_VP','AD_ASST')
Selecionartodosgerentes(lderdepartamental):
SELECT*FROMemployees
WHEREemployee_idIN(SELECTmanager_idFROMDEPARTMENTs)
26
JOIN
Fazendojunodatabeladefuncionrioseadedepartamentos
SELECT*
FROMemployees
INNERJOINdepartmentsONemployees.department_id=departments.department_id
SELECTemployees.first_name,employees.last_name,departments.department_name
FROMemployees
INNERJOINdepartmentsONemployees.department_id=departments.department_id
UtilizandoALIAS,apelidosparaastabelas:
SELECTe.first_name,e.last_name,d.department_name
FROMemployeese
INNERJOINdepartmentsdONe.department_id=d.department_id
Tabeladepartments
ColumnName
DEPARTMENT_ID
DEPARTMENT_NAME
MANAGER_ID
LOCATION_ID
DataType
NUMBER(4,0)
VARCHAR2(30)
NUMBER(6,0)
NUMBER(4,0)
Tabelaemployees
ColumnName
DataType
EMPLOYEE_ID
NUMBER(6,0)
FIRST_NAME
VARCHAR2(20)
LAST_NAMEVARCHAR2(25)
EMAIL
VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE
DATE
JOB_ID
VARCHAR2(10)
SALARY
NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID
NUMBER(6,0)
DEPARTMENT_ID NUMBER(4,0)
Nullable
No
No
Yes
Yes
Nullable
No
Yes
No
No
Yes
No
No
Yes
Yes
Yes
Yes
Default
Default
PrimaryKey
yes
PrimaryKey
yes
27
ExportaodeMetadados(DDL)
PensandoemexportaraddldatabeladeEstados(estadosdafederao).
HomeUtilitiesGenerateDDL
CreateScript
SelecionarSchema
saveasascriptFile
selecionaratabela
generateddl
CREATETABLE"ESTADOS"("ABREV"VARCHAR2(2),"NOME"VARCHAR2(50),
CONSTRAINT"ESTADOS_PK"PRIMARYKEY("ABREV")ENABLE)/
28
ExportaodeDados
HomeUtilitiesDataLoad/UnloadUnload
UnloadtoXML
EscolherSchema,TabelaeColunas
Dropandotabela
HomesqlSqlComand
DROPTABLEestados
Tabelaestadosinteirafoideletada.
ImportandoMetaDados(DDL)
HomeSQLSQLScripts
OU
rodarcomandoSQLnoHome>SQLSQLCommand
CREATETABLE"ESTADOS"("ABREV"VARCHAR2(2),"NOME"VARCHAR2(50),
CONSTRAINT"ESTADOS_PK"PRIMARYKEY("ABREV")ENABLE)/
29
ImportandoDados
UtilitiesDataUnload/Loadxml
escolherschemaetabela
choosefile
DadosImportados!
SELECT*FROMestados
ABREV
RJ
SP
SC
NOME
RiodeJaneiro
SoPaulo
SantaCatarina
Nesteexemploatabelaestavavazia,senoestivesseosdadosdoarquivoseriamacrescidosaosdados
prexistentes.
30
Links:
TutorialSQL:
http://www.w3schools.com/sql/default.asp
DocumentaoOracle:
http://www.oracle.com/pls/xe102/homepage
deMySQLparaOracle:
http://www.raelcunha.com/oracle.php
Tablespaces:
http://eduardolegatti.blogspot.com/2008/03/introduoaoconceitodetablespaces.html
WorkingwithOtherSchemaObjects
http://download.oracle.com/docs/cd/B28359_01/server.111/b28301/admqs_other_schema.htm
InstalaoOracle10gR2CentOS5x8664:
http://www.vivaolinux.com.br/artigo/InstalandoOracle10gR2noCENTOS5x8664
InstalaoOracle10gnoUbuntu:
https://help.ubuntu.com/community/Oracle10g
31