Você está na página 1de 31

IntroduoaBancodeDados

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

CREATE TABLE "DEPTO"


(
"ID" NUMBER,
"NOME" VARCHAR2(40) NOT NULL ENABLE,
"DESCRICAO" VARCHAR2(60),
CONSTRAINT "DEPTO_PK" PRIMARY KEY ("ID") ENABLE
)
/
CREATE OR REPLACE TRIGGER "BI_DEPTO"
before insert on "DEPTO"
for each row
begin
select "DEPTO_SEQ".nextval into :NEW.ID from dual;
end;
/
ALTER TRIGGER
/

"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

Você também pode gostar