Upload
nathalia-molina
View
215
Download
0
Embed Size (px)
DESCRIPTION
Apostila de banco de dados
Citation preview
IntroduoaBancodeDadosAlfredoFonsecaJunior
1
IndiceIntroduodeBancodeDados..................................................................................................................3
FunesinternascomunsemBancosdeDados...............................................................................6DML:DataManipulationLanguage...............................................................................................7DDL:DataDefinitionLanguage....................................................................................................7DCLLinguagemdeControledeDados........................................................................................8DTLLinguagemdeTransaodeDados......................................................................................8DQLLinguagemdeConsultadeDados........................................................................................8HabilitaracessoaAPEX.................................................................................................................13AcessandoApex..............................................................................................................................14SELECTFROM.............................................................................................................................22Exerccios:SELECTFROM...........................................................................................................23Soluo:SELECTFROM..............................................................................................................23WHEREANDORBERBY............................................................................................................24Exerccios:WHERE.......................................................................................................................25Soluo:WHERE...........................................................................................................................25BETWEEN....................................................................................................................................26LIKE...............................................................................................................................................26INeSubSELECT...........................................................................................................................26JOIN................................................................................................................................................27
2
IntroduodeBancodeDados
TabelaTodososdadosdeumbancodedadosrelacional(BDR)soarmazenadosemtabelas.
Umatabelaumasimplesestruturadelinhasecolunas.Emumatabela,cadalinhacontmummesmoconjuntodecolunas.
Funcionario
cpf nome Datanasc
35103778988 EduardoSilva 05/05/80
35158687455 JoseSousa 07/07/70
45226558977 PedroLima 06/06/88
45223669888 JorgeSoares 07/07/77
RegistroCadalinhaformadaporumalistaordenadadecolunasrepresentaumregistro,outupla.Os
registrosnoprecisamconterinformaesemtodasascolunas,podendoassumirvaloresnulosquandoassimsefizernecessrio.
Colunas(ouatributos)
AscolunasdeumatabelasotambmchamadasdeAtributos.Aoconjuntodevaloresqueumatributopodeassumirchamasedomnio.Porexemplo:emumcampodotiponumrico,serosomentearmazenadosnmeros.
ChavePrimriaConjuntosdeumoumaiscampos,cujosvaloresnuncaserepetemequepodemserusadascomo
umndice.Emchavesprimriasnopodehavervaloresnulosnemrepeties.ChamadatambmdePrimarykey(PK).Quandoachaveprimriasimples,ouseja,formadaporumnicocampodatabela,esse
camponopodeterdoisoumaisregistrosdemesmovalor,etambmnopodeconternenhumregistronulo.Seachaveprimriacomposta,ouseja,formadapormaisdeumcampo,osvaloresdecadacampopodemserepetir,masnoacombinao
3
ModeloRelacionalModeloRelacionalevitareplicaodedados.
TabelaBairro
#id nome cidade
1 VilaMadalena SoPaulo
2 VilaMafra SaoPaulo
3 VilaInvernada SAOPAULO
4 Centro saopaulo
5 Ipiranga SaoPulo
Normalizando
TabelaCidade
#id nome
1 SoPaulo
2 SoCarlos
3 SoBernardo
4 Osasco
TabelaBairro#id nome cidade_id
1 VilaMadalena 1
2 VilaMafra 1
3 VilaX 3
4 Centro 1
5 Centro 4
4
ChaveestrangeiraNoexemploanteriorocampocidade_iddaTabelabairroreferenciaocampoiddaTabela
cidade.Entocidade_idumachaveestrangeira(FK:forwardkey).
Abaixotemosumoutroexemploderelacionamentoentreastabelasfuncionarioedepartamento.
depto_idachaveestrangeira.
Funcionario
#id cpf nome Datanasc depto_id
1 35103778988 EduardoSilva 05/05/80 1
2 35158687455 JoseSousa 07/07/70 3
3 45226558977 PedroLima 06/06/88 2
4 45223669888 JorgeSoares 07/07/77 2
Departamento
#id nome descricao
1 Administrativo Departamentoquecontrola
2 Desenvolvimento DesenvolvimentodeSoftware
3 InfraEstrutura DepartamentodeInfraEstrutura
4 Design Departamentoresponsvelpelodesignartstico
5
SGBDSistemaGerenciadordeBasedeDados(SGBD)oconjuntodeprogramasdecomputador
(softwares)responsveispelogerenciamentodeumabasededados.Oprincipalobjetivoretirardaaplicaoclientearesponsabilidadedegerenciaroacesso,manipulaoeorganizaodosdados.
OSGBDdisponibilizaumainterfaceparaqueosseusclientespossamincluir,alterarouconsultardados.EmbancosdedadosrelacionaisainterfaceconstitudapelasAPIsoudriversdoSGBD,queexecutamcomandosnalinguagemSQL.
SGBD =SistemaGerenciadordeBasedeDados
SGBDR =SistemaGerenciadordeBancodeDadosRelacional
DBMS =DatabaseManagementSystem
RDBMS =RelationalDatabaseManagementSystem
Exemplosdeaplicativosdebancodedadosso:
MySQL
PostgreSQL
Firebird
MicrosoftSQLServer
Oracle
Informix
DB2
Sybase.
FunesinternascomunsemBancosdeDados
Tabelas
Views
Indexes
StoredProcedures
Triggers
6
SQL
StructuredQueryLanguage,ouLinguagemdeConsultaEstruturadaouSQL,umalinguagemdepesquisadeclarativaparabancodedadosrelacional(basededadosrelacional).MuitasdascaractersticasoriginaisdoSQLforaminspiradasnalgebrarelacional.
DML:DataManipulationLanguageADMLumsubconjuntodalinguagemusadaparainserir,atualizareapagardados.
Comandos:
*INSERTusadaparainserirumregistro(formalmenteumatupla)aumatabelaexistente.
*UPDATEparamudarosvaloresdedadosemumaoumaislinhasdatabelaexistente.
*DELETEpermiteremoverlinhasexistentesdeumatabela.
DDL:DataDefinitionLanguageADDLpermiteaoutilizadordefinirtabelasnovaseelementosassociados.Amaioriados
bancosdedadosdeSQLcomerciaistemextensesproprietriasnoDDL.
OscomandosbsicosdaDDLsopoucos
*CREATEcriaumobjeto(umaTabela,porexemplo)dentrodabasededados.
*DROPapagaumobjetodobancodedados.
AlgunssistemasdebancodedadosusamocomandoALTER,quepermiteaousurioalterarumobjeto,porexemplo,adicionandoumacolunaaumatabelaexistente.
outroscomandosDDL:
*ALTERTABLE
*CREATEINDEX
*ALTERINDEX
*DROPINDEX
*CREATEVIEW
7
*DROPVIEW
DCLLinguagemdeControledeDados
DCLcontrolaosaspectosdeautorizaodedadoselicenasdeusuriosparacontrolarquemtemacessoparaveroumanipulardadosdentrodobancodedados.
DuaspalavraschavesdaDCL:
*GRANTautorizaaousurioexecutarousetaroperaes.
*REVOKEremoveourestringeacapacidadedeumusuriodeexecutaroperaes.
outroscomandosDCL:
*ALTERPASSWORD
*CREATESYNONYM
DTLLinguagemdeTransaodeDados
*BEGINWORK(ouSTARTTRANSACTION,dependendododialetoSQL)podeserusadoparamarcarocomeodeumatransaodebancodedadosquepodesercompletadaouno.
*COMMITenviatodososdadosdasmudanaspermanentemente.
*ROLLBACKfazcomqueasmudanasnosdadosexistentesdesdeoltimoCOMMITouROLLBACKsejamdescartadas.
COMMITeROLLBACKinteragemcomreasdecontrolecomotransaoelocao.Ambosterminamqualquertransaoabertaeliberamqualquercadeadoligadoadados.NaausnciadeumBEGINWORKouumadeclaraosemelhante,asemnticadeSQLdependentedaimplementao.
DQLLinguagemdeConsultadeDados
Emboratenhaapenasumcomando,aDQLapartedaSQLmaisutilizada.Ocomando
8
SELECTpermiteaousurioespecificarumaconsulta("query")comoumadescriodoresultadodesejado.Essecomandocompostodevriasclusulaseopes,possibilitandoelaborarconsultasdasmaissimplessmaiselaboradas.
9
Transao
umconjuntodeprocedimentosqueexecutadonumbancodedados,queparaousuriovistocomoumanicaao.
Aintegridadedeumatransaodependede4propriedades,conhecidascomoACID.
*AtomicidadeoTodasasaesquecompemaunidadedetrabalhodatransaodevemserconcludascomsucesso,paraquesejaefetivada.Qualqueraoqueconstituifalhanaunidadedetrabalho,atransaodeveserdesfeita(rollback).Quandotodasasaessoefetuadascomsucesso,atransaopodeserefetivada(commit).
*ConsistnciaRegrasdeintegridadedosdadossoasseguradas.
*IsolamentooCadatransaofuncionacompletamentepartedeoutrasestaes.Todasasoperaessopartedeumatransaonica.Oprincipioquenenhumaoutratransao,operandonomesmosistema,podeinterferirnofuncionamentodatransaocorrente(ummecanismodecontrole).Outrastransaesnopodemvisualizarosresultadosparciaisdasoperaesdeumatransaoemandamento.
*DurabilidadeoSignificaqueosresultadosdeumatransaosopermanentesepodemserdesfeitossomenteporumatransaosubseqente.Porexemplo:todososdadosestatusrelativosaumatransaodevemserarmazenadosnumrepositriopermanente,nosendopassveisdefalhaporumafalhadehardware.
Naprtica,algunsSGBDsrelaxamnaimplementaodestaspropriedadesbuscandodesempenho.
ControledeconcorrnciaummtodousadoparagarantirqueastransaessejamexecutadasdeumaformaseguraesigamasregrasACID.OsSGBDdevemsercapazesdeassegurarquenenhumaaodetransaescompletadascomsucesso(committedtransactions)sejaperdidaaodesfazertransaesabortadas(rollback).
Umatransaoumaunidadequepreservaconsistncia.Requeremos,portanto,quequalquerescalonamentoproduzidoaoseprocessarumconjuntodetransaesconcorrentementesejacomputacionalmenteequivalenteaumescalonamentoproduzindoexecutandoessastransaesserialmenteemalgumaordem.Dizsequeumsistemaquegaranteestapropriedadeasseguraaseriabilidade.
10
OracleSGBDSurgiunofimdosanos70,quandoLarryEllisonvislumbrouumaoportunidadequeoutras
companhiasnohaviampercebido,quandoencontrouumadescriodeumprottipofuncionaldeumbancodedadosrelacionaledescobriuquenenhumaempresatinhaseempenhadoemcomercializaressatecnologia.
EllisoneoscofundadoresdaOracleCorporation,BobMinereEdOates,perceberamquehaviaumtremendopotencialdenegciosnomodelodebancodedadosrelacionaltornandoassimamaiorempresadesoftwareempresarialdomundo.
Lderdemercado.OOracle9ifoipioneironosuporteaomodeloweb.OOracle10g,maisrecente,sebaseianatecnologiadegrid.RecentementeforalanadooOracle11gqueveiocommelhoriasemrelaoaoOracle10g.
ExpressEditionXEGratuito,podeserinstaladoemmquinascomqualquernmerodeprocessadores(umbancode
dadospormquina),PORMirselimitara4GBdedados,1GBdememriaeutilizarapenasumaCPU.
11
SQLPLUS
ConsoleparaacessaroservidorOracle.
12
OracleApplicationExpress(APEX)AplicaowebquepossibilitaacessoaoServidordeBancodeDados.
OBS:AAPEXpodeserutilizadaparageraraplicaescustomizadaswebqueacessamoB.D.,ousejaoapexumaaplicaowebquegeraaplicaesweb.
HabilitaracessoaAPEXInicialmentepodeseacessaraaplicaowebapexsomentedoservidor.Parahabilitaracessoremoto:Administraton ManageHTTPAccess
13
AcessandoApexLogandocomoDatabaseAdministratorhttp://xxx.xxx.xxx.xxx:8080/apexuser:systempassword:xxx
14
http://xxx.xxx.xxx.xxx:8080/apex
CriandoTabelasHome ObjectBrowser Create Table
next
15
finishcreateClicandoemSQLObservamosaDDLgerada
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
Home ObjectBrowser Create Table
17
clicaremadd
next
next finish create
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"foreachrowbeginselect"FUNCIONARIO_SEQ".nextvalinto:NEW.IDfromdual;end;
/ALTERTRIGGER"BI_FUNCIONARIO"ENABLE/
19
InsertINSERTINTOdeptoVALUES(depto_seq.nextval,'deptoX','deptodeX')
UpdateUPDATEdeptosetdescricao='departamento__X'WHEREdepto.nome='deptoX'
PreferencialmenteutilizarPKaosereferiraumregistroespecifico.
DeleteDELETEFROMdeptoWHEREdepto.nome='deptoX'
20
Consultas(Select)
EstaediodoOraclevemcomumconjuntodetabelaspopuladascomdadosqueformamumBancodeDadosdeexemplosobrerecursoshumanos(hr).
Utilizaremosestastabelasnosexercciosdeconsultas.
Parautilizarobancoderecursoshumanosquevemnooraclexenecessriologarcomousuriohr.
Antesdelogarcomohrnecessriodesbloquearesteusurio:
1Estandologadocomosystem,cliqueemAdministration>DataBaseUsers ManageUsers 2CliqueemHR
3Coloquehrcomosenhanasduascaixasdetexto4ColoqueostatusUnlocked5CliqueemAlterUser
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)Elaborarumaconsultaquetragaumcampomontadoemruntimequesejaajunodoprimeiroedoultimonomeseparadoporespao.(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,ordenandopordatadecontrataoeprimeironome.
?
Soluo:WHERE1)SELECT*FROMemployeesWHEREhire_date>TO_DATE('03/24/2000','MM/DD/YYYY')ORDERBYhire_date
2)SELECT*FROMemployeesWHEREhire_date
BETWEENBetweensignifica'entre'.Asextremidadessoinclusas.
Selecionarprimeironomedetodoscontratadosentre3/fev/2000e23/fev/2000emordemdadatadecontratao:
SELECTfirst_name,hire_dateFROMemployeesWHEREhire_dateBETWEENTO_DATE('02/03/2000','MM/DD/YYYY')ANDTO_DATE('02/23/2000','MM/DD/YYYY')ORDERBYhire_date
LIKESobrenomecomeandocom'Mar'SELECTfirst_name,last_nameFROMemployeesWHERElast_nameLIKE'Mar%'
INeSubSELECTSelecionartodospresidentes,vicepresidenteseassistentesadministrativos:SELECT*FROMemployeeswherejob_idIN('AD_PRES','AD_VP','AD_ASST')
Selecionartodosgerentes(lderdepartamental):SELECT*FROMemployeesWHEREemployee_idIN(SELECTmanager_idFROMDEPARTMENTs)
26
JOINFazendojunodatabeladefuncionrioseadedepartamentos
SELECT*FROMemployeesINNERJOINdepartmentsONemployees.department_id=departments.department_id
SELECTemployees.first_name,employees.last_name,departments.department_nameFROMemployeesINNERJOINdepartmentsONemployees.department_id=departments.department_id
UtilizandoALIAS,apelidosparaastabelas:SELECTe.first_name,e.last_name,d.department_nameFROMemployeeseINNERJOINdepartmentsdONe.department_id=d.department_id
TabeladepartmentsColumnName DataType Nullable Default PrimaryKeyDEPARTMENT_ID NUMBER(4,0) No yesDEPARTMENT_NAME VARCHAR2(30) No MANAGER_ID NUMBER(6,0) Yes LOCATION_ID NUMBER(4,0) Yes
TabelaemployeesColumnName DataType Nullable Default PrimaryKeyEMPLOYEE_ID NUMBER(6,0) No yesFIRST_NAME VARCHAR2(20) Yes LAST_NAMEVARCHAR2(25) No EMAIL VARCHAR2(25) No PHONE_NUMBER VARCHAR2(20) Yes HIRE_DATE DATE No JOB_ID VARCHAR2(10) No SALARY NUMBER(8,2) Yes COMMISSION_PCTNUMBER(2,2) Yes MANAGER_ID NUMBER(6,0) Yes DEPARTMENT_ID NUMBER(4,0) Yes
27
ExportaodeMetadados(DDL)PensandoemexportaraddldatabeladeEstados(estadosdafederao).
Home Utilities GenerateDDL CreateScriptSelecionarSchemasaveasascriptFileselecionaratabelagenerateddl
CREATETABLE"ESTADOS"("ABREV"VARCHAR2(2),"NOME"VARCHAR2(50),CONSTRAINT"ESTADOS_PK"PRIMARYKEY("ABREV")ENABLE)/
28
ExportaodeDadosHome Utilities DataLoad/Unload Unload UnloadtoXMLEscolherSchema,TabelaeColunas
DropandotabelaHome sql SqlComand DROPTABLEestados
Tabelaestadosinteirafoideletada.
ImportandoMetaDados(DDL)Home SQL SQLScripts OU
rodarcomandoSQLnoHome>SQL SQLCommandCREATETABLE"ESTADOS"("ABREV"VARCHAR2(2),"NOME"VARCHAR2(50),
CONSTRAINT"ESTADOS_PK"PRIMARYKEY("ABREV")ENABLE)/
29
ImportandoDadosUtilities DataUnload/Load xml escolherschemaetabelachoosefile
DadosImportados!
SELECT*FROMestados
ABREV NOMERJ RiodeJaneiroSP SoPauloSC SantaCatarina
Nesteexemploatabelaestavavazia,senoestivesseosdadosdoarquivoseriamacrescidosaosdadosprexistentes.
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
WorkingwithOtherSchemaObjectshttp://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
https://help.ubuntu.com/community/Oracle10ghttp://www.vivaolinux.com.br/artigo/Instalando-Oracle-10g-R2-no-CENTOS-5-x8664http://download.oracle.com/docs/cd/B28359_01/server.111/b28301/admqs_other_schema.htmhttp://eduardolegatti.blogspot.com/2008/03/introduo-ao-conceito-de-tablespaces.htmlhttp://www.raelcunha.com/oracle.phphttp://www.oracle.com/pls/xe102/homepagehttp://www.w3schools.com/sql/default.asp
Introduo de Banco de DadosFunes internas comuns em Bancos de DadosDML : Data Manipulation LanguageDDL : Data Definition LanguageDCL - Linguagem de Controle de Dados DTL - Linguagem de Transao de Dados DQL - Linguagem de Consulta de Dados Habilitar acesso a APEXAcessando ApexSELECT FROMExerccios: SELECT FROMSoluo: SELECT FROMWHERE AND ORBER BYExerccios: WHERESoluo: WHEREBETWEEN LIKEIN e SubSELECTJOIN