Você está na página 1de 34

Apostila de Banco de Dados e SQL

Autores: Prof. Jorge Surian Prof. Luiz Nicochelli

Introduo
Devido a carncia de literatura destinada ao ensino de Banco de Dados e SQL para estudantes ela!ora"os a presente apostila #ue n$o possue o intento de esgotar t$o a!rangente volu"e de infor"a%&es servindo t$o so"ente para esta!elecer u" "'ni"o de conheci"entos destinados a introduzir o estudante no "undo dos (erenciadores de Banco de dados e da Linguage" SQL.

Banco de Dados
)odos n*s sa!e"os e+istire" gigantescas !ases de dados gerenciando nossas vidas. De fato sa!e"os #ue nossa conta !anc,ria faz parte de u"a cole%$o i"ensa de contas !anc,rias de nosso !anco. Nosso )'tulo -leitoral ou nosso .adastro de Pessoa /'sica certa"ente est$o ar"azenados e" Bancos de Dados colossais. Sa!e"os ta"!0" #ue #uando saca"os dinheiro no .ai+a -letr1nico de nosso !anco nosso saldo e as "ovi"enta%&es e+istentes e" nossa conta !anc,ria 2, est$o 3 nossa disposi%$o. Nestas situa%&es sa!e"os #ue e+iste u"a necessidade e" se realizar o ar"azena"ento de u"a s0rie de infor"a%&es #ue n$o se encontra" efetiva"ente isoladas u"as das outras ou se2a e+iste u"a a"pla ga"a de dados #ue se refere" a relacioa"entos e+istentes entre as infor"a%&es a sere" "anipuladas. -stes Bancos de Dados al0" de "antere" todo este volu"e de dados organizado ta"!0" deve" per"itir atualiza%&es inclus&es e e+clus&es do volu"e de dados se" nunca perder a consistncia. - n$o pode"os es#uecer #ue na "aioria das vezes estare"os lidando co" acessos concorrentes a v,rias ta!elas de nosso !anco de dados algu"as vezes co" "ais de u" acesso ao "es"o registro de u"a "es"a ta!ela4 5 fato de "ontar"os u"a 6ala Direta e" u" "icro P.78) co" u" drive 2, faz de n*s u" autor de u" Banco de Dados9 .laro #ue n$o4 :" Banco de Dados 0 antes de "ais nada u"a cole%$o logica"ente coerente de dados co" deter"inada significa%$o intr'nseca. -" outras palavras u" ar#uivo contendo u"a s0rie de dados de u" cliente u" ar#uivo co" dados aleatoria"ente gerados e dois ar#uivos padr$o d!f ;dBase< #ue te" u"a rela%$o definida entre a"!os n$o pode ser considerada u"a Base de Dados =eal. :" Banco de Dados cont0" os dados dispostos nu"a orde" pr07deter"inada e" fun%$o de u" pro2eto de siste"a se"pre para u" prop*sito "uito !e" definido. :" Banco de Dados representar, se"pre aspectos do 6undo =eal. Assi" sendo u"a Base de Dados ;ou Banco de Dados ou ainda BD< 0 u"a fonte de onde podere"os e+trair u"a vasta ga"a de infor"a%&es derivadas #ue possui u" n'vel de intera%$o co" eventos co"o o 6undo =eal #ue representa. A for"a "ais co"u" de intera%$o :su,rio e Banco de Dados d,7se atrav0s de siste"as espec'ficos #ue por sua vez acessa" o volu"e de infor"a%&es geral"ente atrav0s da linguage" SQL.

>

5s Ad"inistradores de Banco de Dados ;DBA< s$o respons,veis pelo controle ao acesso aos dados e pela coordena%$o da utiliza%$o do BD. J, os pro2etistas de Banco de Dados ;DBP< s$o analistas #ue identifica" os dados a sere" ar"azenados e" u" Banco de Dados e pela for"a co"o estes ser$o representados. 5s Analistas e Progra"adores de Desenvolvi"ento cria" siste"as #ue acessa" os dados da for"a necess,ria ao :su,rio /inal #ue 0 a#uele #ue interage direta"ente co" o Banco de Dados.

SGBD x GA
:" S(BD 7 Siste"a de (erencia"ento de Banco de Dados 0 u"a cole%$o de progra"as #ue per"ite" ao usu,rio definir construir e "anipular Bases de Dados para as "ais diversas finalidades. :" conceito #ue dever, ficar !astante claro inicial"ente 0 o #ue envolve a separa%$o clara entre os (erenciadores de Base de Dados dos (erenciadores de Ar#uivo. Siste"as !aseados e" ?Banco de Dados? !aseados e" Btrieve e dBase ;/o+ e .lipper< pode" no ",+i"o si"ular as caracter'sticas t'picas de u" a"!iente de Banco de Dados. As linguagens Delphi ;utiliza opcional"ente o padr$o dBase< e o @B ;#ue utiliza o Access< reco"enda" a utiliza%$o de Banco de Dados reais por0" utiliza" 3#ueles ?Banco de Dados? #ue possue" algu"as caracter'sticas de Bancos de Dados "as possue" caracter'sticas t'picas de (erenciadores de Ar#uivo. @a"os definir algu"as regras !,sicas e claras para u" siste"a de "anipula%$o de dados ser considerado u" S(BD. /ica i"pl'cito #ue se ao "enos u"a das caracter'sticas a!ai+o n$o estiver presente no nosso ?candidato? a S(BD este poder, ser u" (A ;(erenciador de Ar#uivo< de alt'ssi"a #ualidade ?#uase? u" S(BD "as n$o u" S(BD. Regra 1: Auto-Conteno- :" S(BD n$o cont0" apenas os dados e" si "as ar"azena co"pleta"ente toda a descri%$o dos dados seus relaciona"entos e for"as de acesso. Nor"al"ente esta regra 0 cha"ada de 6eta7Base de Dados. -" u" (A e" algu" "o"ento ao "enos os progra"as aplicativos declara" estruturas ;algo #ue ocorre tipica"ente e" . .5B5L e BASA.< ou gera" os relaciona"entos entre os ar#uivos ;t'picos do a"!iente +Base<. Por e+e"plo #uando voc 0 o!rigado a definir a for"a do registro e" seu progra"a voc n$o est, lidando co" u" S(BD. Regra : Independ!ncia dos Dados7 Quando as aplica%&es estivere" real"ente i"unes a "udan%as na estrutura de ar"azena"ento ou na estrat0gia de acesso aos dados pode"os dizer #ue esta regra foi atingida. Portanto nenhu"a defini%$o dos dados dever, estar contida nos progra"as da aplica%$o. Quando voc resolve criar u"a nova for"a de acesso u" novo 'ndice se precisar alterar o cdigo de seu aplicativo voc n$o est, lidando co" u" S(BD. Regra ": A#strao dos Dados7 -" u" S(BD real 0 fornecida ao usu,rio so"ente u"a representa%$o conceitual dos dados o #ue n$o inclui "aiores detalhes so!re sua for"a de ar"azena"ento real. 5 cha"ado 6odelo de Dados 0 u" tipo de a!stra%$o utilizada para fornecer esta representa%$o conceitual. Neste "odelo u" es#ue"a das ta!elas seus relaciona"entos e suas chaves de acesso s$o e+i!idas ao usu,rio por0" nada 0 afir"ado so!re a cria%$o dos 'ndices ou co"o ser$o "antidos ou #ual a rela%$o e+istente entre as ta!elas #ue dever, ser "antida 'ntegra. Assi" se voc dese2ar inserir u" pedido e" u" cliente ine+istente e esta entrada n$o for auto"atica"ente re2eitada voc n$o est, lidando co" u" S(BD. Regra $: %is&es7 :" S(BD deve per"itir #ue cada usu,rio visualize os dados de for"a diferente da#uela e+istente previa"ente no Banco de Dados. :"a vis$o consiste de u" su!con2unto de dados do Banco de Dados necessaria"ente derivados dos e+istentes no Banco de Dados por0" estes n$o dever$o estar e+plicita"ente ar"azenados. Portanto toda vez #ue voc 0 o!rigado a replicar u"a estrutura para fins de acesso de for"a diferenciada por outros aplicativos voc n$o est, lidando co" u" S(BD.

Regra ': (ransa&es7 :" S(BD deve gerenciar co"pleta"ente a integridade referencial definida e" seu es#ue"a se" precisar e" te"po algu" do au+'lio do progra"a aplicativo. Desta for"a e+ige7se #ue o !anco de dados tenha ao "enos u"a instru%$o #ue per"ita a grava%$o de u"a s0rie "odifica%&es si"ultCneas e u"a instru%$o capaz de cancelar u" s0rie "odifica%&es. Por e+e"plo i"agine"os #ue este2a"os cadastrando u" pedido para u" cliente #ue este dese2e reservar D itens de nosso esto#ue #ue est$o dispon'veis e portanto s$o reservados por0" e+iste u" !lo#ueio financeiro ;duplicatas e" atraso< #ue i"pede a venda. A transa%$o dever, ser desfeita co" apenas u"a instru%$o ao Banco de Dados se" #ual#uer "odifica%&es suple"entares nos dados. .aso voc se o!rigue a corrigir as reservas atrav0s de acessos co"plentares voc n$o est, lidando co" u" S(BD. Regra ): Acesso Auto*+tico7 -" u" (A u"a situa%$o t'pica 0 o cha"ado Dead7LocE o a!ra%o "ortal. -sta situa%$o indese2,vel pode ocorrer toda vez #ue u" usu,rio travou u" registro e" u"a ta!ela e seu pr*+i"o passo ser, travar u" resgistro e" u"a ta!ela relacionada 3 pri"eira por0" se este registro estiver previa"ente travado por outro usu,rio o pri"eiro usu,rio ficar, paralisado pois estar, esperando o segundo usu,rio li!erar o registro e" uso para #ue ent$o possa trav,7lo e prosseguir sua tarefa. Se por hip*tese o segundo usu,rio necessitar travar o registro travado pelo pri"eiro usu,rio ;4< afir"a"os #ue ocorreu u" a!ra%o "ortal pois cada usu,rio travou u" registro e precisa travar u" outro 2usta"ente o registro anterior"ente travado pelo outro4 A"agine"os u" caso onde o respons,vel pelos pedidos aca!ou de travar o =egistro Ate" de Pedido e necessita travar u" registro no .adastro de Produtos para indicar u"a nova reserva. Se conco"itante"ente estiver sendo realizada u"a tarefa de atualiza%$o de pendncias na )a!ela de Atens e para tanto previa"ente este segundo usu,rio travou a )a!ela de Produtos te"os a ocorrncia do a!ra%o "ortal. Se a responsa!ilidade de evitar esta ocorrncia for responsa!ilidade da aplica%$o voc n$o est, lidando co" u" S(BD. Concluso: :" S(BD deve o!edecer AN)-(=AL6-N)- as seis regras aci"a. -" caso contr,rio estare"os diante de u" (A ou de u" ?#uase? S(BD.

Considera&es ,inais
Atual"ente e+iste u"a tendncia de "ercado e" se dizer #ue #ual#uer pro!le"a ser, resolvido caso a e"presa ad#uira u" Banco de Dados. Natural"ente e" u" a"!iente co" acesso constante ao Banco de Dados ;acesso concorrente o!via"ente< onde a seguran%a se2a de vital i"portCncia e #ue o dese"penho da aplica%$o escrita estiver co"pro"etendo a e"presa considerando7se logica"ente u"a aplica%$o !e" escrita se" dFvida a a#uisi%$o de u" Banco de Dados poder ser o pri"eiro passo na solu%$o do pro!le"a. Analoga"ente ao #ue ocorreu co" o apareci"ento das pri"eriras linguagens de progra"a%$o voltadas ao GindoHs onde estas fora" apresentadas co"o capazes de alavancar os neg*cios da e"presa e no geral causara" "ais frusta%$o do #ue solu%$o a a#uisi%$o do Banco de Dados pode gerar o "es"o tipo de pro!le"a. I funda"ental #ue a e"presa candidata a utilizar u" Banco de Dados nor"atize7se total"ente pois solu%&es J#ue!ra7galhoK t'picas do a"!iente #ue disp&e de u" (erenciador de Ar#uivo tende" a ser i"poss'veis e" u" a"!iente estruturado so!re o Banco de Dados. Portanto so! pena de se realizar u" grande investi"ento e n$o se colher fruto algu" 0 "uito conveniente #ue a e"presa antes de ad#uirir u" Banco de Dados passe por u" processo de adapta%$o preferencial"ente contando co" pessoal especializado geral"ente consultores #ue no tenha" #ual#uer liga%$o co" fa!ricantes de Bancos de Dados.

Caracter-sticas Gerais de u* SGBD


5s S(BD te" sete caracter'sticas operacionais ele"entares se"pre o!servadas #ue passare"os a listarr: Caracter-stica 1: Controle de Redund.ncias- A redundCncia consiste no ar"azena"ento de u"a "es"a infor"a%$o e" locais diferentes provocando inconsistncias. -" u" Banco de Dados as infor"a%&es s* se encontra" ar"azenadas e" u" Fnico local n$o e+istindo duplica%$o descontrolada dos dados. Quando e+iste" replica%&es dos dados estas s$o decorrentes do processo de ar"azenage" t'pica do a"!iente .liente7 Servidor total"ente so! controle do Banco de Dados. Caracter-stica : Co*partil/a*ento dos Dados7 5 S(BD deve incluir softHare de controle de concorrncia ao acesso dos dados garantindo e" #ual#uer tipo de situa%$o a escritaMleitura de dados se" erros. Caracter-stica ": Controle de Acesso7 5 S(DB deve dispor de recursos #ue possi!ilite" selecionar a autoridade de cada usu,rio. Assi" u" usu,rio poder, realizar #ual#uer tipo de acesso outros poder$o ler alguns dados e atualizar outros e outros ainda poder$o so"ente acessar u" con2unto restrito de dados para escrita e leitura. Caracter-stica $: Inter0acea*ento7 :" Banco de Dados dever, disponi!ilizar for"as de acesso gr,fico e" linguage" natural e" SQL ou ainda via "enus de acesso n$o sendo u"a ?cai+a7preta? so"ente sendo pass'vel de ser acessada por aplica%&es. Caracter-stica ': 1s2ue*ati3ao7 :" Banco de Dados dever, fornecer "ecanis"os #ue possi!ilite" a co"preens$o do relaciona"ento e+istentes entre as ta!elas e de sua eventual "anuten%$o. Caracter-stica ): Controle de Integridade7:" Banco de Dados dever, i"pedir #ue aplica%&es ou acessos pelas interfaces possa" co"pro"eter a integridade dos dados. Caracter-stica 4: Bac5ups7 5 S(BD dever, apresentar facilidade para recuperar falhas de hardHare e softHare atrav0s da e+istncia de ar#uivos de ?pr07i"age"? ou de outros recursos auto",ticos e+igindo "ini"a"ente a interven%$o de pessoal t0cnico. -+iste a possi!ilidade de encontra"os Bancos de Dados #ue n$o satisfa%a" co"pleta"ente todas as caracter'sticas aci"a o #ue n$o o inv,lida co"o Banco de Dados. Na pr,tica pode"os encontrar situa%&es onde a pri"eira caracter'stica n$o se2a i"portante pois pode"os ter o Banco de Dados !aseado total"ente e" u" Fnico servidor e as redundCncias pode" ser aceitas e" algu"as situa%&es so! controle da aplica%$o ;algo n$o "uito reco"endado "as pass'vel de aceita%$o e" situa%&es onde a e+istncia do no"e do cliente e" u" ar#uivo contendo duplicatas e"itidas possi!ilita o acesso a apenas u"a ta!ela se" relaciona"entos e sa!e7se de ante"$o #ue u"a duplicata depois de e"itida n$o pode ter seu cliente alterado<. A segunda caracter'stica ;.o"partilha"ento dos Dados< pode ser desconsiderada principal"ente e" a"!iente de desenvolvi"ento ou ainda e" aplica%&es re"otas. 5 .ontrole de Acesso pode ser descartado e" pe#uenas e"presas sendo #ue o aplicativo e" #uest$o "ais o softHare de rede pode" facil"ente se i"cu"!ir desta caracter'stica no caso de pe#uenas e"presas co" reduzido nF"ero de pessoas na ,rea operacional. 5 Anterfacea"ento e a -s#ue"atiza%$o s$o caracter'sticas se"pre dispon'veis o #ue varia neste caso 0 #ualidade destes co"poenentes #ue vai desde o sofr'vel at0 o estado da arte. I "uito conveniente #ue esta caracter'stica se2a "uito !oa e" u" Banco de Dados onde estivere" e" atua%$o "ais de u" Ad"inistrador de Banco de Dados e tiver"os u" nF"ero relativa"ente alto de siste"as desenvolvidos ou e" desenvolvi"ento neste a"!iente.

De fato #uanto "aior o nF"ero de pessoas envolvidas no desenvolvi"ento de aplica%&es e gerencia"ento do Banco de Dados "ais i"portante torna"7se estas duas caracter'sticas pois cada novo siste"a desenvolvido precisar, se"pre estar ade#uado ao Banco de Dados da -"presa e aderente aos padr&es de acesso utilizados nos siste"as concorrentes. As interfaces ASQL e GinSQL deve" dei+ar "uito claro ao estudante co"o u"a interface po!re ;no caso a e+istente no ASQL< perde "uito #uando co"parada a u"a interface "ais recursiva. A es#ue"atiza%$o e+istente no Banco de Dados 0 "uito "elhor do #ue a#uela "antida e" algu"a pasta e" algu" ar#uivo do .PD #ue se"pre est, Ju" pou#uinhoK desatualizada. 5 .ontrole de Antegridade 0 outra caracter'stica se"pre presente nos Bancos de Dados "as e+iste" diferen%as #uando da i"ple"enta%$o desta caracter'stica. Assi" 0 co"u" encontrar"os Bancos de Dados #ue suporta" deter"inado acesso en#uanto outros n$o disp&e de recurso e#uivalente. 5 BacEup e" te"po de e+ecu%$o 0 outra caracter'stica se"pre dispon'vel por0" te"os aplica%&es #ue invariavel"ente s$o co"pro"etidas por falhas de hardHare e outras #ue o "es"o tipo de falha n$o causa perda algu"a de dados ou de integridade. Nova"ente cada Banco de Dados te" esta caracter'stica "elhor ou pior i"ple"entada ca!endo ao Ad"inistrador de Banco de Dados escolher a#uele #ue lhe oferecer "ais seguran%a. Deve"os ressaltar ainda #ue pode"os ter u" Banco de Dados 6odelo A #ue respeite integral"ente as regras !,sicas e disponha de todas as caracter'sticas apresentadas en#uanto u" 6odelo B #ue apesar de respeitar as regras !,sicas n$o suporte u"a ou outra caracter'stica dese2,vel "as tenha u" dese"penho e+celente en#uanto o 6odelo A se2a apenas razo,vel no #uesito dese"penho nos levar, segura"ente a escolher o 6odelo B co"o sendo o ganhador para nossa instala%$o4 Asto ocorre pois na pr,tica todo usu,rio dese2a u" te"po de resposta "uito pe#ueno. 5 cha"ado Jprazo de entregaK "uito co"u" e" Bancos de Dados operando nos li"ites de sua capacidade ou nos casos onde o hardHare est, "uito desatualizado 0 fonte de inF"eros pro!le"as para o pessoal de infor",tica. Neste caso 0 "elhor a!rir"os "$o de u"a Anterface A"ig,vel de u" (erencia"ente Auto",tico de BacEups ou ainda de outras caracter'sticas #ue n$o 2ulgar"os funda"entais para nos livrar"os do pro!le"a t'pico de a"!iente e+tre"a"ente co"pro"etido por ", perfor"ance do Banco de Dados. A escolha do Banco de Dados da e"presa portanto 0 u"a decis$o "uito delicada na "edida e" #ue est, ir, acarretar troca de aplicativos e troca de hardHare. 5s investi"entos direta"ente aplicados no Banco de Dados costu"a" ser infinita"ente "enores do #ue a#ueles a sere" aplicados na e"presa visando sua perfeita ade#Oa%$o ao novo S(BD. -sta decis$o se"pre #ue poss'vel deve ser to"ada por especialistas e" Banco de Dados co" profundos conheci"entos de An,lise de Siste"as de Banco de Dados e de SoftHare de (erencia"ento de Bases de Dados de for"a a evitar #ue a e"presa escolha u" Banco de Dados inade#uado aos seus prop*sitos e #ue pouco te"po depois se2a o!rigada a perder todos investi"ento realizado e" SoftHare e PardHare.

Ar2uitetura de u* SGBD

1strutura
Pode"os dizer #ue o Banco de Dados te" u" N'vel Anterno onde 0 descrita a estrutura de ar"azena"ento f'sico dos dados u" N'vel Anter"edi,rio onde te"os a descri%$o l*gica dos dados e u" N'vel -+terno onde s$o descritas as vis&es para grupos de usu,rios. N$o pode"os dei+ar de le"!rar ainda #ue o Banco de Dados garante a Andependncia L*gica e /'sica dos Dados portanto pode"os alterar o es#ue"a conceitual dos dados se" alterar as vis&es dos usu,rios ou "es"o alterar o es#ue"a interno se" contudo alterar seu es#ue"a conceitual.

6odelos de Dados
5 6odelo de Dados 0 !asica"ente u" con2unto de conceitos utilizados para descrever u" Banco de Dados. N$o e+iste u"a Fnica for"a de representa%$o deste "odelo por0" #ual#uer for"a #ue per"ita a correta co"preens$o das estruturas de dados co"preendidas no Banco de Dados pode ser considerada ade#uada. @a"os descrever sucinta"ente este "odelo pois estes ser$o o!2etos de outras disciplinas: 6odelo 7rientado ao Registro: S$o "odelos #ue representa" es#ue"atica"ente as estruturas das ta!elas de for"a !astante pr*+i"a a e+istente fisica"ente. Basica"ente s$o apresentados os registros de cada ta!ela ;inclusive seus ca"pos< e seus relaciona"entos ele"entares. 5 6odelo =elacional o 6odelo de =ede e o Pier,r#uico s$o e+e"plos deste tipo de representa%$o. 6odelo Se*.ntico: S$o "odelos onde e+iste u"a representa%$o e+pl'cita das entidades e relaciona"entos. 5 6odelo -ntidade7=elaciona"ento e o /uncional s$o e+e"plos deste tipo de a!ordage". 6odelo 7rientado ao 7#8eto: S$o "odelos #ue procura" representar as infor"a%&es atrav0s dos concietos t'picos da Progra"a%$o 5rientada ao 5!2eto utilizando o conceito de .lasses #ue ir$o conter os o!2etos. .ita"os os 6odelos 5B e o de =epresenta%$o de 5!2etos co"o e+e"plos t'picos desta a!ordage". 5 conceito de instCncia se"pre "uito presente poderia ser definido co"o sendo o con2unto de dados #ue define" clara"ente u" Banco de Dados e" dete"inado instante. Deve"os entender ent$o o Banco de Dados co"o sendo n$o apenas u" con2unto de dados digitados "as ta"!0" todo o es#ue"a e regras ar"azenada e controladas pelo S(BD. -" outras palavras pode"os dizer #ue os S(BD viera" para eli"inar todo o tra!alho #ue anterior"ente u" progra"ador de aplica%$o realizava controlando o acesso integridade e redundCncia dos dados.

Co*ponentes de u* Banco de Dados

:" Banco de Dados 0 co"posto pelas seguintes partes: Gerenciador de Acesso ao Disco: 5 S(BD utiliza o Siste"a 5peracional para acessar os dados ar"azenados e" disco controlando o acesso concorrente 3s ta!elas do Banco de Dados. 5 (erenciador controla todas as pes#uisas #ueries< solicitadas pelos usu,rios no "odo interativo os acessos do co"pilador D6L os acessos feitos pelo Processador do Banco de Dados ao Dicion,rio de Dados e ta"!0" aos pr*prios dados. 5 Co*pilador DDL ;Data Definition Language< processa as defini%&es do es#ue"a do Banco de Dados acessando #uando necess,rio o Dicion,rio de Dados do Banco de Dados. 5 Dicion+rio de Dados cont0" o es#ue"a do Banco de Dados suas ta!elas 'ndices for"a de acesso e relaciona"entos e+istentes. 5 9rocessador do Banco de Dados "anipula re#uisi%&es 3 pr*pria Base de Dados e" te"po de e+ecu%$o. I o respons,vel pelas atualiza%&es e integridade da Base de Dados. 5 9rocessador de 9es2uisas ;#ueries< dos usu,rios analisa as solicita%&es e se estas fore" consistentes aciona o Processador do Banco de Dados para acesso efetivo aos dados. As aplica%&es faze" seus acessos ao pr07co"pilador D6L da linguage" hospedeira #ue os envia ao Co*pilador D6L ;Data 6anipulation Language< onde s$o gerados os c*digos de acesso ao Banco de Dados.

(ipos de SGBD

Introduo
Pode"os citar co"o tipos principais os Bancos de Dados =elacionais os Pier,r#uicos os de =ede os Se"Cnticos os 5rientados a 5!2etos e os :niversais. 5s Bancos de Dados alvo de nosso estudo ser$o os =elacionais sendo #ue os de"ais tipos ser$o apenas citados superficial"ente por n$o sere" parte integrante de nosso curso. 1s2ue*a de 7rgani3ao dos Dados -" Linguage" . os estudantes to"ara" ;ou ir$o to"ar contato< co" os ponteiros de registro #ue a#ui representare"os co"o sendo nF"eros de acesso ao registro. @isando diferenciar o nF"ero do registro f'sico do nF"ero do registro apontado pelo ponteiro usare"os o s'"!olo ;S< para indicar o nF"ero do registro f'sico en#uanto o s'"!olo ;T< ser, utilizado pelo para indicar o endere%o indicado pelo ponteiro a se"elhan%a da representa%$o usual dos progra"adores da Linguage" .. @a"os supor o ar#uivo a!ai+o ordenado alfa!etica"ente ;f'sico<: S>7 A"arelo SB7 Azul SL7 Branco SN7 Preto SD7 @erde SQ7 @er"elho TB TL TN TD TQ 77

Supondo dese2ar"os incluir a cor Laran2a ser'a"os o!rigado a re7escrever todo o ar#uivo de "odo a Laran2a ocupar o registro N. @a"os antes de fazer u"a nova ordena%$o analisar a solu%$o a!ai+o: S>7 A"arelo SB7 Azul SL7 Branco SN7 Preto SD7 @erde SQ7 @er"elho SR7 Laran2a TB TL TR TD TQ 77 TN

5!serve #ue o registro SL ;Branco< passou a apontar para o registro TR #ue cont0" o novo dados ;Laran2a<. 5 novo dado passa a apontar para o registro previa"ente apontado pelo registro #ue agora o aponta. Parece e 0 confuso "as se voc analisar o es#ue"a a!ai+o perce!er, #ue apesar do palavreado confuso facil"ente #ual#uer u" de n*s perce!e a "aneira ade#uada de inserir novos registros. Algo 77U Apontado Algo 77U Novo 77U Apontado S> Algo 77U TB SB Apontado n$o aponta ;0 o Flti"o f'sica e logica"ente+< S> Algo 77U TL SB Apontado n$o aponta ;0 o Flti"o logica"ente<

SL Novo

77U TB ;0 o Flti"o fisica"ente<

A cha"ada perda de ponteiros fen1"eno dos "ais te"idos pelos profissionais de siste"a nada "ais 0 #ue a perda de referncia l*gica entre registros de u"a ta!ela. -+iste" diversas t0cnicas de acesso co"o as cha"adas BtreeW ;Arvore Bin,ria Balanceada< Pashing Se#uencial 5rdenado Pashing DinC"ico Pashing -+tens'vel e Pashing Linear pr*prios para u" curso espec'fico de Banco de Dados #ue n$o chegare"os a analisar e" nosso curso. Sa!e"os #ue e" linguage" . foi ;ou ser,< apresentada a t0cnica de !alancea"ento de estruturas #ue "ostrou ;ou "ostrar,< co"o u" Banco de Dados 0 arran2ado interna"ente. 1xerc-cio: =epresente es#ue"atica"ente o arran2o alfa!0tico dos seguintes ti"es de fute!ol: /lu"inense /la"engo @asco Botafogo 6adureira A"0rica e 5l,ria. Suponha ainda #ue o Bangu #ueira participara do ca"peonato co"o ficaria a nova orde" da ta!ela9

Banco de Dados :ier+r2uicos


Segue" o estilo de u" organogra"a e"presarial ;Diretoria7Divis$o7Se%$o7Setor< ou de !i!lioteca ;-+ata7 6ate",tica7Alge!ra Linear7@etores<. -ste "odelo 0 capaz de representar este tipo de organiza%$o de for"a direta "as apresenta inconvenientes #uando esta situa%$o n$o aparece clara"ente co" rela%&es de hierar#uia. 5 -+e"plo a seguir ;/olha de Paga"ento< deve servir para esclarecer "elhor o estilo deste "odelo /,!rica /inanceiro .o"ercial

An2e%$o

-+trus$o

Pagar

=ece!er

.ont,!il

@endas

6arEeting

Paulo Pedro Jo$o

@in'cius .arlos

@il"a S'lvia -rnesto Sandra

Dago!erto JuracY Paula Pedrinho

=ichard

Sa!e"os #ue Paulo 0 ?filho? da An2e%$o #ue por sua vez 0 ?filha? da /,!rica.

Banco de Dados e* Redes


Neste "odelos os dados s$o dispostos e" registros previa"ente classificados e" classes #ue descreve" a estrutura de deter"inado tipo de registro. 5s registros s$o descritos e" rela%&es de con2untos onde s$o esta!elecidas as liga%&es l*gicas entre eles. 5 es#ue"a a!ai+o representa este tipo de Liga%$o /,!rica S> No"e Local ... Apontada ApontaZAn'cio ApontaZ/inal An2e%$o SR No"e 6,#uina ... Apontada ;T>< ApontaZA;T>D< S>D Paulo BV ;Adade< ... ;TR< ;T>R< S>V Jo$o BD ... ;T>R< ;TR<

ApontaZ/;T>V<

:" confus$o ha!itual"ente verificada diz respeito a confus$o #ue e+iste entre o conceito do 6odelo de =edes e o e+istente na "ate",tica. No "odelo de =edes te"os se"pre u" ele"ento distitivo o registro !ase e a partir dele s$o dispostos os de"ais registros. )e"os se"pre tipos de conjunto #ue disp&e de trs ele"entos a sa!er: no"e tipo de registro pai e tipo de registro filho. Supondo u" =egistro contido no Ar#uivo de Disciplinas "inistradas na [!ero este seria u" registro pai na "edida e" #ue conteria a referncia aos seus registros filhos ;os alunos cursando a#uela disciplina<. As restri%&es i"postas pelo 6odelo de =edes pode" ser descritas co"o de orde" de -ntrada e de -+istncia. -" rela%$o as restri%&es de entrada cita"os a o!rigatoriedade de cada novo registro estar conectado ;ou apontado co"o prefere" os progra"adores .< ao con2unto indicado. -" rela%$o a restri%&es de -+istncia pode"os dizer #ue u" co"ponente de u" tipo de registro pode e+istir de for"a independente de outros desde

>\

#ue este2a conectado a algu" outro registro fazendo parte de algu" con2unto ou sendo !ase de u" novo con2unto. A identifica%$o de u" con2unto pode ser verificada atrav0s do es#ue"a de liga%$o entre o registro pai e o registro filho assi" sendo cada instCncia de con2unto apresenta u" ele"ento de distin%$o o tal registro pai e os registros filhos devida"ente ordenados e portanto pass'veis de sere" acessados pelos seus ele"entos. -+e"plo: Disciplina )*picos Avan%ados e seus Alunos =egistro de Disciplinas Anfor",tica ]lvaro 6aur'cio .l,udio =egistro de Alunos 5 e+e"plo anterior representa u"a instCncia de conn2unto no caso Disciplinas ;)*picos Avan%ados< e seus alunos ;no caso ]lvaro A"ori" e .l,udio<.

Banco de Dados 7rientados ao 7#8eto


=epresenta" os dados co"o cole%&es #ue o!edece" propriedades. S$o "odelos geral"ente conceituais dispondo de pou#u'ssi"as aplica%&es reais. Neste 6odelo n$o seria interessante a e+istncia de u"a ta!ela de funcion,rios e dentro dela algu"a referncia para cada registro de for"a a poder"os sa!er onde ;e" #ue departa"ento< o funcion,rio est, alocado. :" con2unto de regras disponi!ilizaria e" separado os funcion,rios da f,!rica #ue no entanto estaria" agrupados aos de"ais para o siste"a de folha de paga"ento.

Banco de Dados ;ni<ersal


:sa forte"ente o conceito dos !ancos de dados relacionais ;ainda a sere" vistos< no #ue concerne ao trata"ento da infor"a%$o dita caracter e "uito do 6odelo 5rientado ao 5!2eto no tocante ao trata"ento de A"agens e Sons. I u" dos assuntos top do "o"ento e ser, alvo de pes#uisas na disciplina )*picos Avan%ados 7 Atualidades n$o sendo o!2eto i"ediato de nossa "at0ria.

>>

Banco de Dados Relacional


5 6odelo de Dados relacional representa os dados contidos e" u" Banco de Dados atrav0s de rela%&es. -stas rela%&es cont0" infor"a%&es so!re as entidades representadas e seus relaciona"entos. 5 6odelo =elacional 0 clara"ente !aseado no conceito de "atrizes onde as cha"adas linhas ;das "atrizes< seria" os registros e as colunas ;das "atrizes< seria" os ca"pos. 5s no"es das ta!elas e dos ca"pos s$o de funda"ental i"portCncia para nossa co"preens$o entre o #ue esta"os ar"azenando onde esta"os ar"azenando e #ual a rela%$o e+istente entre os dados ar"azenados. .ada linha de nossa rela%$o ser, cha"ada de TUPLA e cada coluna de nossa rela%$o ser, cha"ada de ATRIBUTO. 5 con2unto de valores pass'veis de sere" assu"idos por u" atri!ruto ser, intitulado de DOM !IO. -stes t*picos ser$o estudados cuidadosa"ente na disciplina An,lise de Siste"as #ue se incu"!ir, de apresentar cuidadosa"ente regras e nor"as para ela!ora%$o destes "odelos. -" nosso curso voltado 3 constru%$o pr,tica dos Bancos de Dados e n$o de sua constru%$o te*ricas apenas citare"os os aspectos !,sicos da constru%$o te*rica de for"a a facilitar ao estudante o relaciona"ento #ue e+iste entre An,lise de Siste"as e Banco de Dados ;u"a das su!7disciplinas de )*picos Avan%ados<. 5 do"'nio consiste de u" grupo de valores at1"icos a partir dos #uais u" ou "ais atri!utos retira" seus valores reais. Assi" sendo =io de Janeiro Paran, e Par, s$o estados v,lidos para o Brasil en#uanto #ue .orrientes n$o 0 u" estado v,lido ;pertence a Argentina e n$o ao Brasil<. 5 es#ue"a de u"a rela%$o nada "ais s$o #ue os ca"pos ;colunas< e+istentes e" u"a ta!ela. J, a instCncia da rela%$o consiste no con2unto de valores #ue cada atri!uto assu"e e" u" deter"inado instante. Portanto os dados ar"azenados no Banco de Dados s$o for"ados pelas instCncias das rela%&es. As rela%&es n$o pode" ser duplicadas ;n$o pode" e+istir dois estados do Par, no con2unto de estados !rasileiros por e+e"plo< a orde" de entrada de dados no Banco de Dados n$o dever, ter #ual#uer i"portCncia para as rela%&es no #ue concerne ao seu trata"ento. 5s atri!utos dever$o ser at1"icos isto 0 n$o s$o 'veis de novas divis&es. .ha"are"os de .have Pri",ria ao Atri!uto #ue definir u" resgistro dentre u"a cole%$o de registros. .have Secund,ria ;)erce,ria etc< ser$o chaves #ue possi!ilitar$o pes#uisas ou ordena%&es alternativas ou se2a diferentes da orde" criada a partir da chave pri",ria ou da ordena%$o natural ;f'sica< da ta!ela. .ha"are"os de .have .o"posta a#uela chave #ue cont0" "ais de u" atri!uto ;Por e+e"plo u" cadastro ordenado alfa!0tica"ente por -stado .idade e No"e do .liente necessitaria de u"a chave co"posta #ue contivesse estes trs atri!utos<. .ha"are"os de .have -strangeira a#uela chave #ue per"itir a liga%$o l*gica entre u"a ta!ela ;onde ela se encontra< co" outra na #ual ele 0 chave pri",ria. 1xe*plo: .idade -stado T .id.odi T -st.odi .idNo"e -stNo"e -st.odi ;-< .id.odi e -st.odi s$o chaves pri",rias respectiva"ente das ta!elas .idade e -stado en#uanto -st.odi 0 chave estrangeira na ta!ela de cidades. I precisa"ente por este ca"po ;atri!uto ou coluna< #ue ser, esta!elecida a rela%$o entre as ta!elas .idade77U-stado.

>B

,or*a =or*al
A disciplina An,lise de Siste"as a!ordar, detalhada"ente esta i"portante "etodologia para defini%$o das ta!elas #ue ir$o co"por a !ase de dados #ue a#ui apenas citare"os. 9ri*eira ,or*a =or*al: :"a rela%$o se encontra na pri"eira for"a nor"al se todos os do"'nios de atri!utos possue" apenas valores at1"icos ;si"ples e indivis'veis< e #ue os valores de cada atri!uto na tupla se2a u" valor si"ples. Assi" sendo todos os atri!utos co"postos deve" ser divididos e" atri!utos at1"icos. Segunda ,or*a =or*al: :"a rela%$o se encontra na segunda for"a nor"al #uando estiver na pri"eira for"a nor"al e todos os atri!utos #ue n$o participa" da chave pri",ria s$o dependentes desta. Assi" deve"os verificar se todos os atri!utos s$o dependentes da chave pri",ria e retirar7se da rela%$o todos os atri!utos de u" grupo n$o dependente #ue dar, orige" a u"a nova rela%$o #ue conter, esse atri!uto co"o n$o chave. Desta "aneira na segunda for"a nor"al evita inconsistncias devido a duplicidades. (erceira ,or*a =or*al: :"a rela%$o estar, na terceira for"a nor"al #uando estiver na pri"eira for"a nor"a e todos os atri!utos #ue n$o participa" da chave pri",ria s$o dependentes desta por0" n$o transitivos. Assi" deve"os verificar se e+iste u" atri!uto #ue n$o depende direta"ente da chave retir,7lo criando u"a nova rela%$o #ue conter, esse grupo de atri!utos e defina co" a chave os atri!utos dos #uais esse grupo depende direta"ente. 5 processo de nor"aliza%$o deve ser aplicado e" u"a rela%$o por vez pois durante o processo de nor"aliza%$o va"os o!tendo #ue!ras e por conseguinte novas rela%&es. No "o"ento e" #ue o siste"a estiver satisfat*rio do ponto de vista do analista este processo iterativo 0 interro"pido. De fato e+iste" literaturas indicando #uarta #uinta for"as nor"ais #ue n$o nos parece t$o i"portante ne" "es"o acade"ica"ente. A nor"aliza%$o para for"as apoiadas e" dependncias funcionais evita inconsistncias usando para isso a pr*pria constru%$o da Base. Se a "es"a consistncia for pass'vel de ser garantida pelo aplicativo a nor"aliza%$o pode ser evitada co" ganhos reais no dese"penho das pes#uisas. No caso da consistncia n$o ser i"portante ta"!0" pode"os n$o nor"alizar total"ente u"a Base de Dados. 1xe*plo: Nor"alizar os seguintes atri!utos: N^ do Pedido No"e do .liente No"e dos Produtos Quantidades N^ do Pedido .*digo do .liente No"e dos Produtos Quantidades .*digo do .liente No"e do .liente N^ do Pedido .*digo do .liente .*digo dos Produtos Quantidades .*digo do .liente No"e do .liente .*digo do Produto No"e do Produto N^ do Pedido .*digo do .liente .*digo do .liente No"e do .liente .*digo do Produto No"e do Produto N^ do Pedido .*digo do Produto Quantidade

>L

Cliente .li.odi .liNo"e

9edido PedNu"e .li.odi AteQtde

Ite* PedNu"e Pro.odi

9roduto Pro.odi ProNo"e

5 es#ue"a apresentado anterior"ente poderia ser inferido direta"ente usando "etodologia tipica"ente apresentada e" 5rganiza%$o e 60todo. Se sou!er"os por hip*tese #ue u" profissional ha!ilitado desenhou o pedido da e"presa e #ue esta o est, utilizando co" sucesso poder'a"os !asear nosso "odelo de dados neste for"ul,rio. Deve"os notar #ue "uitos Analistas de Siste"as n$o adota" estes procedi"entos por preferire" os "0todos convencionais para ela!ora%$o do 6odelo de Dados. .onsiderando #ual#uer for"ul,rio de pedidos pode"os notar #ue o =>*ero do 9edido geral"ente te" desta#ue e se"pre # $nico% ou se2a encontra"os nossa c&ave pri"ria da (a#ela de 9edidos co"o sa!e"os #ue u" cliente pode fazer "ais de u"a co"pra acha"os nossa (a#ela de Clientes? #ue pode ter u" C@digo portanto acha"os sua c&ave pri"ria #ue por conseguinte ser, a c&ave estrangeira da (a#ela de 9edidosA :" ponto delicado diz respeito aos itens do pedido #ue for"a" geral"ente u" espa%o destacado dentro do for"ul,rio de pedidos. (eral"ente e este 0 u" dos casos estas ,reas e" separado dos for"ul,rios dar$o orige" a ta!elas filhas co"o 0 o caso t'pico das duplicatas e" notas fiscais ou dos dependentes na ficha de funcion,rios. Portanto acha"os nossa (a#ela de Itens #ue ser, ligada 3 )a!ela de Pedidos atrav0s do =>*ero do 9edido? #ue 0 ao "es"o te"po c&ave pri"ria e c&ave estrangeira para a )a!ela de Atens. /inal"ente pode"os perce!er #ue da "es"a for"a co"o os clientes se repete" e" rela%$o a )a!ela de Pedidos os produtos pode" se repetir na ta!ela de itens ;o!serve #ue n$o o!stante n$o ter"os nenhu" pedido co" o "es"o ite" grafado duas vezes este ite" pode ser ad#uirido e" outro pedido<. Assi" desco!ri"os nossa #uarta ta!ela a (a#ela de 9rodutos e a chave pri",ria C@digo do 9rodutoA

>N

SQL - Structured QuerB Language

Introduo
Quando os Bancos de Dados =elacionais estava" sendo desenvolvidos fora" criadas linguagens destinadas 3 sua "anipula%$o. 5 Departa"ento de Pes#uisas da AB6 desenvolveu a SQL co"o for"a de interface para o siste"a de BD relacional deno"inado S_S)-6 = in'cio dos anos R\. -" >XVQ o A"erican National Standard Anstitute ; ANSA < pu!licou u" padr$o SQL. A SQL esta!eleceu7se co"o linguage" padr$o de Banco de Dados =elacional. SQL apresenta u"a s0rie de co"andos #ue per"ite" a defini%$o dos dados cha"ada de DDL ;Data Definition Language< co"posta entre outros pelos co"andos .reate #ue 0 destinado a cria%$o do Banco de Dados das )a!elas #ue o co"p&e al0" das rela%&es e+istentes entre as ta!elas. .o"o e+e"plo de co"andos da classe DDL te"os os co"andos .reate Alter e Drop. 5s co"andos da s0rie D6L ;Data 6anipulation Language< destinados a consultas inser%&es e+clus&es e altera%&es e" u" ou "ais registros de u"a ou "ais ta!elas de "aneira si"ultCnea. .o"o e+e"plo de co"andos da classe D6L te"os os co"andos Select Ansert :pdate e Delete. :"a su!classe de co"andos D6L a D.L ;Data .ontrol Language< disp&e de co"andos de controle co"o (rant e =evoEe. A Linguage" SQL te" co"o grandes virtudes sua capacidade de gerenciar 'ndices se" a necessidade de controle individualizado de 'ndice corrente algo "uito co"u" nas linguagens de "anipula%$o de dados do tipo registro a registro. 5utra caracter'stica "uito i"portante dispon'vel e" SQL 0 sua capacidade de constru%$o de vis&es #ue s$o for"as de visualizar"os os dados na for"a de listagens independente das ta!elas e organiza%$o l*gica dos dados. 5utra caracter'stica interessante na linguage" SQL 0 a capacidade #ue dispo"os de cancelar u"a s0rie de atualiza%&es ou de as gravar"os depois de iniciar"os u"a se#Oncia de atualiza%&es. 5s co"andos .o""it e =oll!acE s$o respons,veis por estas facilidades. Deve"os notar #ue a linguage" SQL consegue i"ple"entar estas solu%&es so"ente pelo fato de estar !aseada e" Banco de Dados #ue garante" por si "es"o a integridade das rela%&es e+istentes entre as ta!elas e seus 'ndices.

7 A*#iente SQL
Dispo"os na A!ero de dois softHares destinados a linguage" SQL o ASQL e o GinSQL. 5 ASQL faz parte do pacote Adeo e per"ite construir"os Banco de Dados e ta!elas direta"ente pelo interpretador SQL !e" co"o acessar"os as Bases de Dados constru'das no Adeo. 5 ASQL pode gerar Banco de Dados e" seu a"!iente propriet,rio ;Gatco" ho2e pertencente a SY"antech< ou ainda nos consagrados Banco de Dados 5racle SYBase Angres ;.o"puter Associates< DBMB ;AB6< e Anfor"i+. Devido as origens do Adeo o Banco de Dados SQL Server da 6icrosoft n$o 0 suportado pois este Banco de Dados originou7se na "icroinfor",tica e so"ente recente"ente a Sapiens "igrou seu softHare dos A"!ientes 6ainfra"e e :ni+.

>D

J, o GinSQL 0 u" a"!iente inteira"ente gr,fico ;ao contr,rio do ASQL #ue guarda fortes caracter'sticas do a"!iente e" 6ainfra"e onde se originou< destinado ao apredinzado portanto so"ente pode criar Banco de Dados e" seu for"ato propriet,rio. 5s co"andos do GinSQL por sere" visuais n$o necessita" de "aior esclareci"ento al0" da#ueles 2, contidos no Pelp. J, o ASQL apesar de possuir u" Pelp !astante co"pleto necessita e" nosso entender de alguns esclareci"entos iniciais. :"a s0rie de co"andos do interpretador #ue funciona de for"a an,loga 3#uela e+istente no dBase "odo interativo pode" ser utilizados pelo usu,rio. N$o o!stante alguns co"andos tenha" no"e idntico a alguns co"andos do D5S deve"os notar #ue "uitas vezes sua sinta+e 0 !astante diversa da#uele siste"a operacional. @a"os destacar os seguintes co"andos: C1DI( 7 .arrega o editor de !loco de notas do HindoHs o #ual serve para a cria%$o de ar#uivos para sere" e+ecutados no Adeo. -+: `edit teste.s#l CCD 7 6ostra o diret*rio onde ser$o gravados os ar#uivos T.s#l T.dic T.dat. Per"ite alterar para deter"inado diret*rio ;`.D DAD5 far, co" #ue o diret*rio corrente passe a ser .:`DAD5 caso o diret*rio corrente fosse a raiz. Per"ite retornar ao diret*rio de n'vel inferior ;`.D ..<. Ateno este co"ando n$o 0 an,logo ao .hange Dir do D5S na "edida e" #ue n$o per"ite a "udan%a direta de u" su!n'vel do diret*rio 8 para u" diret*rio _ por e+e"plo. CD1,A;L( Ddri<eE 7 per"ite alterar"os o drive corrente. -+: `D-/A:L) /: CI=CL;D1 7 -+ecuta ar#uivos T.s#l. 5 ar#uivo .s#l dever, conter u"a s0rie de instru%&es SQL. -+: `include teste.s#l FD 0ile E G 7 )a"!0" e+ecuta ar#uivos T.s#l. -+: ateste.s#lb 1HI(G 7 /inaliza a sess$o do ASQL. ou ; CQ;I( < C766I(G 7 .onfir"a a transa%$o. R7LLBACIG 7 Desfaz a transa%$o. S:7J Dta#elaEG 7 6ostra os no"es das ta!elas e+istentes e" deter"inado !anco de dados. -+: SP5G ta!lesb S:7J ,I1LDS ,7R Dta#elaEG 7 6ostra os ca"pos de deter"inada ta!ela. -+: SP5G /A-LDS /5= A)5=b S:7J I=D1H1S ,7R Dta#elaEG 7 Lista de indices da ta!ela. S:7J R1LA(I7=S:I9S ,7R Dta#elaEG 7 Lista de relaciona"entos da ta!ela. LIS( Dta#elaE G 7 Lista conteFdo da ta!ela.

>Q

1studo Dirigido

.onsidera"os a linguage" SQL e"inente"ente pr,tica desta for"a cria"os u" e+"plo co"pleto e propo"os u" e+erc'cio an,logo para tornar o estudante apto a "anipular a linguage" SQL de "aneira pr,tica e" confor"idade a filosofia e"inente"ente pr,tica da Linguage" SQL. 5 e+e"plo apresentado nesta apostila 2, est, dispon'vel para sua utiliza%$o do diret*rio `AD-5`SQL !astando para isso voc copiar este e+e"plo para seu diret*rio e iniciar os testes de for"a si"ultCnea a sua apresenta%$o pelo professor. I conveniente #ue voc procure "ontar o e+erc'cio cl,ssico ;"undo< de for"a a testar todos os conheci"entos ad#uiridos. Para tanto analise cuidadosa"ente o e+erc'cio proposto a seguir e construa as rela%&es ta!elas e #ueries ade#uadas ao final de cada e+e"plo. 1xerc-cio: -la!ore Banco de Dados 6undo #ue contenha as seguintes ta!elas: .ontinente Pa's e .idade. 5!serve #ue u"a cidade dever, pertencer e+clusiva"ente a u" pa's e #ue cada pa's dever, estar cadastrado no continente onde se localizar sua ,rea "ais i"portante. Assi" n$o o!stante grande parte do territ*rio russo fazer parte ]sia a =Fssia ser, considerada fazendo parte da -uropa. Assi" ter'a"os !asica"ente u"a rela%$o do tipo: .idade 77U Pa's 77U .ontinente

>R

9AR(1 I - Co*andos de 6odi0ica&es do 1s2ue*a e Criao de Banco de Dados

Comando Create -ste co"ando per"ite a cria%$o de ta!elas no !anco de dados ou "es"o de sua cria%$o. Sinta+e: .=-A)- DA)ABAS- c no"eZd! Ub onde: no"eZd! 7 indica o no"e do Banco de Dados a ser criado. Sinta+e: .=-A)- )ABL- c no"eZta!ela U ; no"eZatri!uto> c tipo U d N5) N:LL e no"eZatri!utoB c tipo U d N5) N:LL e ...... no"eZatri!utoN c tipo U d N5) N:LL e < b onde: no"eZta!le 7 indica o no"e da ta!ela a ser criada. no"eZatri!uto 7 indica o no"e do ca"po a ser criado na ta!ela. tipo 7 indica a defini%$o do tipo de atri!uto ; integer;n< char;n< real;n "< date... <. n7 nF"ero de d'gitos ou de caracteres "7 nF"ero de casas deci"ais Agora va"os criar u"a ta!ela. :se o editor para salvar e" u" ar#uivo ou digite na linha de co"ando do ASQL. CR1A(1 DA(ABAS1 (RABAL:7G 5 co"ando aci"a criou u" Banco de Dados por0" este na verdade n$o passa de u"a a!ertura no diret*rio pois n$o conta co" nenhu"a ta!ela. Agora criare"os as ta!elas #ue estar$o contidas no Banco de Dados )=ABALP5. A pri"eira )a!ela ser, a de Departa"entos ;D-P)<. -sta ta!ela conter, al0" dos ca"pos ta"!0" sua chave pri",ria suas chaves estrangeiras e ta"!0" seus 'ndices. A segunda ta!ela ser, a de -"pregados ;-6P< #ue ta"!0" ser, criada. N$o deve"os es#uecer de pri"eira"ente a!rir"os o Banco de Dados. Diferente"ente do #ue ocorre e" alguns aplicativos e" SQL o fato de criar"os u" Banco de Dados n$o significa #ue o !anco rec0" criado 2, est, preparado para utiliza%$o. A instru%$o a seguir providencia a a!ertura do Banco de Dados criado. 791= DA(ABAS1 (RABAL:7G Agora esta"os prontos para criar"os as ta!elas necess,rias. Le"!ra"os aos -studantes #ue o Ar#uivo )ABS.SQL cont0" todas as instru%&es necess,rias para cria%$o do Banco de Dados )ra!alho e de suas ta!elas. J, o Ar#uivo DAD5S.SQL ir, popular estas ta!elas. Para efeitos did,ticos cria"os as ta!elas de for"a #ue sua popula%$o e" outras palavras os dados se2a" facil"ente referenci,veis pelos estudantes. Assi" sendo na ta!ela de departa"entos conta"os co" D departa"entos cada u" deles tendo seu gerente. )odos os JgerentesK te" no"es de cantoras !rasileiras ;(al .osta 6arina Li"a etc< todos os Joper,riosK te" no"es de 2ogadores de fute!ol todas as vendedoras te" no"es de 2ogadoras de volei todas as

>V

!alconistas te" no"e de 2ogadoras de !as#uete e o presidente da e"presa e+e"plo te" o "es"o no"e do presidente do Brasil. Desta for"a os testes deve" resultar e" grupos !astante definidos. Assi" se voc estiver listando (erentes e aparecer u" ho"1ni"o da Ana Paula ;2ogadora de volei< verifi#ue sua #uerY atenta"ente pois "uito provavel"ente a "es"a estar, errada. A seguir c*digo necess,rio a cria%$o da ta!ela Departa"ento e seu 'ndice: create ta#le Dept KDep=u*e integerK$L not null? Dep=o*e c/arK ML not null? DepLoca c/arK ML not null? Dep7rca integerK1 ? L? pri*arB 5eB KDep=u*eL LG create uni2ue index Dep=u* on Dept KDep=u*e ascLG Note7se #ue a chave pri",ria 2, est, definida 2unta"ente co" o registro da ta!ela. A cria%$o do 'ndice #ue por raz&es *!vias deve ser criado ap*s a ta!ela natural"ente 0 u" co"ando total"ente independente do pri"eiro create #ue serviu para criar a ta!ela e suas caracter'stica !,sicas. @a"os analisar o c*digo necess,rio para a cria%$o da ta!ela de e"pregados apresentado a seguir: create ta#le 1*p K1*p=u*e integerK'L not null? 1*p=o*e c/arK"ML not null? 1*pGere integerK'L ? 1*pSer< c/arK ML ? Dep=u*e integerK$L not null? 1*pAd*i date not null? 1*pSala integerK1M? L? 1*pCo*i integerK1M? L? pri*arB 5eB K1*p=u*eL? 0oreign 5eB /as KDep=u*eL re0erences Dept on delete restrict on update cascade LG create uni2ue index 1*p=u* on 1*p K1*p=u*e ascLG create index 1*pDep on 1*p KDep=u*e ascLG A )a!ela de -"pregados n$o poderia ter sido criada antes da )a!ela de Departa"ento pois cont0" u"a referncia direta 3#uela ta!ela. Quando declara"os #ue Dep!u"e 0 chave estrangeira pro"ove"os de fato a liga%$o do cadastro de e"pregados co"o o cadastro de departa"entos. Ao restringir"os as e+clus&es per"iti"os a e+istncia de funcion,rios n$o alocados a nenhu" departa"ento. Apesar desta pr,tica ser contr,ria a tese de #ue deve"os possuir apenas tuplas perfeita"ente relacion,veis e" nossas ta!elas pode"os dei+ar esta pe#uena a!ertura pois u" usu,rio #ue e+cluisse inadivertida"ente deter"inado departa"ento aca!aria por e+cluir ta"!0" u"a grande #uantidade de funcion,rios #ue estivesse" ligados a este departa"ento. J, a atualiza%$o e" cascata dos c*digos de departa"ento 0 u"a !oa providncia na "edida e" #ue tere"os u"a vez alterado algu" c*digo de departa"ento a atualiza%$o i"ediata de todos os funcion,rios pertencentes ao departa"ento cu2o c*digo foi "odificado.

>X

7#ser<a&es:
>7 5!servar #ue os 'ndices s$o parte intr'nseca das ta!elas. B7 A integridade relacional 0 garantida pelo Banco de Dados e n$o pelo aplicativo. L7 -+clus&es ou Altera%&es e" .haves Pri",rias pode" acarretar e+clus&es anula%&es ou at0 "es"o perda de integridade nas ta!elas onde esta chave pri",ria e+istir co"o chave estrangeira. Portanto 0 i"prescind'vel "uito cuidado #uando da ela!ora%$o do Banco de Dados. :"a tenta%$o "uito co"u" ao estudante 0 co"e%ar criando as ta!elas do Banco de Dados se" pr0via Nor"aliza%$o. -ste talvez se2a o "elhor ca"inho para perder7se te"po e" v$o pois #uando voc ter"inar de pro2etar suas telas de entrada de dados notar, ?#ue nada funciona4?. -sta ser, a senha para usar o velho co"ando D-L do D5S e depois co"e%ar tudo de novo ...

Comando Drop -ste co"ando eli"ina a defini%$o da ta!ela seus dados e referncias. Sinta+e: D=5P )ABL- c no"eZta!ela U b -+: DR79 (ABL1 169G

Comando Alter -ste co"ando per"ite inserirMeli"inar atri!utos nas ta!elas 2, e+istentes. .o"ando: AL)-= )ABL- c no"eZta!ela U ADD M D=5P ; no"eZatri!uto> c tipo U d N5) N:LL e no"eZatri!utoN c tipo U d N5) N:LL e < b N$o e+iste nenhu" co"ando SQL #ue per"ita eli"inar algu" atri!uto de u"a rela%$o 2, definida. Assi" caso voc dese2ar eli"inar u"a chave pri",ria devida"ente referenciada e" outra ta!ela co"o chave estrangeira ao inv0s de o!ter a eli"ina%$o do ca"po o!ter, apenas u" erro. Al0" do co"ando D=5P #ue poder, eli"inar u"a ta!ela e suas rela%&es ta"!0" pode"os criar u"a rela%$o #ue tenha os atri!utos #ue se dese2a copiar7se a rela%$o antiga so!re a nova e apgando7se ent$o a rela%$o #ue original"ente dese2,va"os eli"inar. -+: AL(1R (ABL1 D19( K ADD D19SALA D1CI6AL K1M? L LG

1xerc-cio: .riar o Banco de Dados 6undo. 5!servar #ue se u" continente for e+clu'do todos os pa'ses contidos e" tal continente ta"!0" o ser$o. -sta situa%$o 0 conhecida co"o e+clus$o e" .ascata. 5!servar ta"!0" #ue a e+clus$o de u" Pa's eli"inar, todas as .idades contidas no "es"o.

B\

9r+tica 5 -+e"plo )ra!alho 2, possue pe#ueno progra"a destinado a constru%$o das ta!elas contidas no Banco de Dados )=ABALP5. -+ecute ?tra!alho.s#l? de for"a a o!ter as ta!elas aci"a se" necessidade de digitar as instru%&es SQL de "aneira interativa. Para tanto voc dever, copiar para seu diret*rio de tra!alho o ar#uivo ?tra!alho.s#l? do diret*rio `AD-5`SQL. -+ecute: ?atra!alhob? #ue dever,: 7 .riar o !anco de dados )ra!alho. 7 A!rir o !anco de dados )ra!alho. 7 .riar as )a!elas Andices e =ela%&es contidas neste Banco de Dados. Posterior"ente e+ecute o co"ando ?shoH ta!les? #ue dever, e+i!ir as ta!elas ?dept? e ?e"p?. - ao e+ecutar ?shoH fields dept? ser$o e+i!idos os ca"pos da ta!ela ?dept?. .opie e e+ecute enchetra.s#l do diret*rio `AD-5`SQL de for"a a o!ter u" con2unto de dados preparados para os testes a seguir apresentados. Na pr*+i"a etapa de nosso curso estare"os realizando pes#uisas utilizando a instru%$o Select. Julga"os conveniente #ue os estudantes popule" seu e+erc'cio e realize" e+erc'cios an,logos aos apresentados na Base de Dados )ra!alho no Banco de Dados 6undo.

B>

9arte II - Co*andos de Consulta ao 1s2ue*a


Deve"os ressaltar #ue a linguage" SQL 0 utilizada tanto pelos profissionais respons,veis pelos dados onde 0 ressaltada a figura do Ad"inistrador do Banco de Dados e dos Analistas de Dados co"o ta"!0" pelos desenvolvedores de Aplica%&es. -n#uanto 3#ueles est$o preocupados co" o dese"penho integridade do Banco de Dados e utiliza" toda ga"a de recusos dispon'veis no SQL estes est$o preocupados apenas e" ?transfor"ar dados e" infor"a%&es? portanto para os desenvolvedores costu"a7se dizer #ue conhecer o ?select? 2, !asta. -" nosso curso enfatizare"os a i"portCncia de )5D5S os co"andos do SQL "as sa!e"os de ante"$o #ue os professores respons,veis pelas linguagens AD-5 @B e Delphi ressaltar$o a preponderCncia da instru%$o ?select? #ue ser, apresentada a seguir e n$o no final do curso de SQL co"o geral"ente acontece pelo fato de #ue diversas disciplinas necessita" especifica"ente deste co"ando #ue passare"os a apresentar: 1L Seleo de todas os ca*pos Kou colunasL da ta#ela de Departa*entosA =esp: S-L-.) T /=56 D-P)b 5 e+e"plo utiliza o coringa ?T? para selecionar as colunas na orde" e" #ue fora" criadas. A instru%$o 'elect co"o pude"os o!servar seleciona u" grupo de registros de u"a ;ou "ais< ta!ela;s<. No caso a instru%$o (ro" nos indica a necessidade de pes#uisar"os tais dados apenas na ta!ela Dept.

J/ere co*o #ase das Restrio de tuplas.


A cl,usula ?Hhere? corresponde ao operador restri%$o da ,lge!ra relacional. .ont0" a condi%$o #ue as tuplas deve" o!edecer a fi" de sere" listadas. -la pode co"parar valores e" colunas literais e+press&es arit"0ticas ou fun%&es. A seguir apresenta"os operadores l*gicos e co"ple"entares a sere" utilizados nas e+press&es apresentadas e" Hhere. 7peradores l@gicos operador f U Uf c cf significado igual a "aior #ue "aior #ue ou igual a "enor #ue "enor #ue ou igual a

-+e"plos: S-L-.) -6PN56- -6PS-=@ /=56 -6P GP-=- D-PN:6- U >\b S-L-.) -6PN56- -6PS-=@ /=56 -6P GP-=- -6PS-=@ f g(-=-N)-gb 5 con2unto de caracteres ou datas deve" estar entre ap*strofes ;h< na cl,usula ?Hhere?.

BB

L Selecione todos os departa*entos cu8o ora*ento *ensal se8a *aior 2ue 1MMMMMA Apresente o =o*e de tal departa*ento e seu ora*ento anual? 2ue ser+ o#tido *ultiplicando-se o ora*ento *ensal por 1 A =esp: Neste pro!le"a precisa"os de u"a e+press$o #ue 0 a co"!ina%$o de u" ou "ais valores operadores ou fun%&es #ue resultar$o e" u" valor. -sta e+press$o poder, conter no"es de colunas valores nu"0ricos constantes e operadores arit"0ticos. S-L-.) D-PN56- D-P5=.A T >B /=56 D-P) GP-=- D-P5=.A U >\\\\\b "L Apresente a instruo anterior porN* ao in<Ns dos O0eiosO Dep=o*e e Dep7rca? os (-tulos Departa*ento e 7ra*entoA =esp: Neste e+e"plo devere"os deno"inar colunas por apelidos. 5s no"es das colunas "ostradas por u"a consulta s$o geral"ente os no"es e+istentes no Dicion,rio de Dado por0" geral"ente est$o ar"azenados na for"a do "ais puro ?infor"ati#us? onde ?todo "undo? sa!e #ue .li.odi significa .*digo do .liente. I poss'vel ;e prov,vel< #ue o usu,rio desconhe%a estes s'"!olos portanto deve"os os apresentar dando apelidos 3s colunas ?conta"inadas? pelo infor"ati#us #ue apesar de funda"ental para os analistas so"ente s$o vistos co"o enig"as para os usu,rios. S-L-.) D-PN56- ?D-PA=)A6-N)5? D-P5=.A T >B ?5=.A6-N)5 AN:AL? /=56 D-P) GP-=- D-P5=.A U >\\\\\b $L Apresente todos os sal+rios existentes na e*presa? porN* o*ita e<entuais duplicidadesA =esp: A cl,usula Distinct eli"ina duplicidades significando #ue so"ente rela%&es distintas ser$o apresentadas co"o resultado de u"a pes#uisa. S-L-.) DAS)AN.) -6PS-=@ /=56 -6Pb 'L Apresente todos os dados dos e*pregados? considerando sua exist!ncia 0-sica di0erente de sua exist!ncia l@gica Kou se8a de<ida*ente iniciali3adoLA =esp: Dese2a"os u" trata"ento diferenciado para valores nulos. Qual#uer coluna de u"a tupla #ue n$o contenha infor"a%&es 0 deno"inada de nula portanto infor"a%$o n$o e+istente. Asto n$o 0 o "es"o #ue ?zero? pois zero 0 u" nF"ero co"o outro #ual#uer en#uanto #ue u" valor nulo utiliza u" ?!Yte? de ar"azenage" interna e s$o tratados de for"a diferenciada pelo SQL. S-L-.) -6PN56- -6PSALA W -6P.56A /=56 -6Pb S-L-.) -6PN56- N@L;-6PSALA \< W N@L;-6P.56A \< /=56 -6Pb 5!s: a fun%$o ?N@L? 0 utilizada para converter valores nulos e" zeros.

BL

)L Apresente os no*es e 0un&es da cada 0uncion+rio contidos na ta#ela e*presa? porN* classi0icados al0a#etica*ente KAAAPL e depois al0a#etica*ente in<ertido KPAAALA =esp: A cl,usula 5rder BY "odificar, a orde" de apresenta%$o do resultado da pes#uisa ;ascendente ou descendente<. S-L-.) -6PN56- -6PS-=@ /=56 -6P 5=D-= B_ -6PN56-b S-L-.) -6PN56- -6PS-=@ /=56 -6P 5=D-= B_ -6PPN56- D-S.b Nota: )a"!0" 0 poss'vel fazer co" #ue o resultado da pes#uisa venha classificado por v,rias colunas. Se" a claFsula ?order !Y? as linhas ser$o e+i!idas na se#uncia #ue o S(BD deter"inar. 4L Selecione os =o*es dos Departa*entos 2ue este8a* na 0+#ricaA =esp: S-L-.) D-PN56/=56 D-P) GP-=- D-PL5.A f ?SA5 PA:L5?b 5 e+e"plo e+igiu u"a restri%$o ;S$o Paulo< #ue nos o!rigou a utilizar da instru%$o Ghere. Alguns analistas costu"a" afir"ar e" to" 2ocoso #ue SQL n$o passa de ?Selecione algo De algu" lugar 5nde se verifica" tais rela%&es? Acredita"os #ue esta !rincadeira pode ser Ftil ao estudante na "edida e" #ue facilita sua co"preens$o dos o!2etivos ele"entares do SQL.

De*ais 7peradores
5perador !etHeen ... and ... in ; .... < liEe is null Significado entre dois valores ; inclusive < lista de valores co" u" padrao de caracteres 0 u" valor nulo

-+e"plos: S-L-.) -6PN56- -6PSALA /=56 -6P GP-=- -6PSALA B-)G--N D\\ AND >\\\b S-L-.) -6PN56- D-PN:6/=56 -6P GP-=- D-PN:6- AN ;>\ L\<b

BN

S-L-.) -6PN56- -6PS-=@ /=56 -6P GP-=- -6PN56- LAi- g/jgb S-L-.) -6PN56- -6PS-=@ /=56 -6P GP-=- -6P.56A AS N:LLb 5 s'"!olo ?j? pode ser usado para construir a pes#uisa ;?j? f #ual#uer se#uncia de nenhu" at0 v,rios caracteres<.

7peradores =egati<os
operador cU not no"eZcoluna f not no"eZcoluna U not !etHeen not in not liEe is not null descri%$o diferente diferente da coluna n$o "aior #ue n$o entre dois valores infor"ados n$o e+istente nu"a dada lista de valores diferente do padrao de caracteres infor"ado n$o 0 u" valor nulo

QL Selecione os 1*pregados cu8os sal+rios se8a* *enores 2ue 1MMM ou *aiores 2ue "'MMA =esp: Necessitare"os a#ui a utiliza%$o de e+press$o negativas. A seguir apresenta"os operadores negativos.

S-L-.) -6PN56- -6PSALA /=56 -6P GP-=- -6PSALA N5) B-)G--N >\\\ AND LD\\b RL Apresente todos os 0uncion+rios co* sal+rios entre MM e 4MM e 2ue se8a* %endedoresA =esp: Necessitare"os de consultas co" condi%&es "Fltiplas. 5peradores ?AND? ;-< e ?5=? ;5:<. S-L-.) -6PN56- -6PSALA -6PS-=@ /=56 -6P GP-=- -6PSALA B-)G--N R\\ AND B\\\ AND -6PS-=@ f g@-ND-D5=gb 1ML Apresente todos os 0uncion+rios co* sal+rios entre MM e 4MM ou 2ue se8a* %endedoresA =esp: S-L-.) -6PN56- -6PSALA -6PS-=@ /=56 -6P GP-=- -6PSALA B-)G--N R\\ AND B\\\

BD

5= -6PS-=@ f g@-ND-D5=gb 11L Apresente todos os 0uncion+rios co* sal+rios entre MM e 4MM e 2ue se8a* %endedores ou BalconistasA =esp: S-L-.) -6PN56- -6PSALA -6PS-=@ /=56 -6P GP-=- -6PSALA B-)G--N R\\ AND B\\\ AND ; -6PS-=@ f gBAL.5NAS)Ag 5= -6PS-=@ f g@-ND-D5=g <b

,un&es de Caracteres
LoHer 7 :pper 7 .oncat;+ Y<7 Su!string;+ Y str<7 )oZ.har;nu"<7 )oZDate;char f"t<7 kQ 7 for%a caracteres "aiFsculos aparecere" e" "inFsculos. for%a caracteres "inFsculos aparecere" e" "aiFsculos. concatena a string ?+? co" a string ?Y?. e+trai u" su!string da string ?str? co"e%ando e" ?+? e ter"ina e" ?Y?. converte u" valor nu"0rico para u"a string de caracteres. converte u"a string caracter e" u"a data. converte data para o for"ato apresentado.

1 L Apresente o no*e de todos os e*pregados e* letras *in>sculasA =esp: S-L-.) L5G-=; -6PN56- < /=56 -6Pb 1"L Apresente o no*e de todos os e*pregados Kso*ente as 1M pri*eiras letrasLA =esp: S-L-.) S:BS)=AN( ;> >\ -6PN56-< /=56 -6Pb 1$L Apresente o no*e de todos os e*pregados ad*itidos e* M1SM1SQMA =esp: S-L-.) T /=56 -6P GP-=- -6PAD6A f kQ?DD7AAA7____?;?\>7JAN7>XV\?<b ou S-L-.) T /=56 -6P GP-=- -6PAD6A f kQ;?\>7JAN7>XV\?<b

BQ

,un&es Agregadas Kou de Agrupa*entoL


fun%$o avg;n< count;e+pr< "a+;e+pr< "in;e+pr< su";n< retorno "0dia do valor n ignorando nulos vezes #ue o nF"ero da e+pr avalia para algo nao nulo "aior valor da e+pr "enor valor da e+pr so"a dos valores de n ignorando nulos

1'L Apresente a 6Ndia? o 6aior? o 6enor e ta*#N* a So*at@ria dos Sal+rios pagos aos e*pregadosA =esp: S-L-.) A@(;-6PSALA< /=56 -6Pb S-L-.) 6AN;-6PSALA< /=56 -6Pb S-L-.) 6A8;-6PSALA< /=56 -6Pb S-L-.) S:6;-6PSALA< /=56 -6Pb

Agrupa*entos
As fun%&es de grupo opera" so!re grupos de tuplas;linhas<. =etorna" resultados !aseados e" grupos de tuplas e" vez de resultados de fun%&es por tupla individual. A claFsula ?group !Y? do co"ando ?select? 0 utilizada para dividir tuplas e" grupos "enores. A cl,usula ?(=5:P B_? pode ser usada para dividir as tuplas de u"a ta!ela e" grupos "enores. As fun%&es de grupo devolve" u"a infor"a%$o su"arizada para cada grupo. 1)L Apresente a *Ndia de sal+rio pagos por departa*entoA =esp: S-L-.) D:PN:6- A@(;-6PSALA< /=56 -6P (=5:P B_ D-PN:6-b 5!s.: Qual#uer coluna ou e+press$o na lista de sele%$o #ue n$o for u"a fun%$o agregada dever, constar da claFsula ?group !Y?. Portanto 0 errado tentar i"por u"a ?restri%$o? do tipo agregada na cl,usula Ghere.

:a<ing
A cl,usula ?PA@AN(? pode ser utilizada para especificar #uais grupos dever$o ser e+i!idos portanto restringindo7os.

BR

14L Reto*e o pro#le*a anterior? porN* apresente resposta apenas para departa*entos co* *ais de 1M e*pregadosA =esp: S-L-.) D-PN:6- A@(;-6PSALA< /=56 -6P (=5:P B_ D-PN:6PA@AN( .5:N);T< U Lb 5!s.: A claFsula ?group !Y? deve ser colocada antes da ?having? pois os grupos s$o for"ados e as fun%&es de grupos s$o calculadas antes de se resolver a cl,usula ?having?. A cl,usula ?Hhere? n$o pode ser utilizada para restringir grupos #ue dever$o ser e+i!idos. -+e"plificando -==5 t'pico 7 =estringindo 60dia 6aior #ue >\\\: S-L-.) D-PN:6- A@(;-6PSALA< /=56 -6P GP-=- A@(;SALA=A5< U >\\\ (=5:P B_ D-PN:6-b ; -sta sele%$o est, -==ADA4 < S-L-.) D-PN:6- A@(;-6PSALA< /=56 -6P (=5:P B_ D-PN:6PA@AN( A@(;-6PSALA< U >\\\b ; Sele%$o Ade#uada <

Se2T!ncia no co*ando OSelectO:


S-L-.) /=56 GP-=(=5:P B_ PA@AN( 5=D-= B_ coluna;s< ta!ela;s< condi%$o;&es< da;s< tupla;s< condi%$o;&es< do;s< grupo;s< de tupla;s< condi%$o;&es< do;s< grupo;s< de tupla;s< coluna;s<b

A ?s#l? far, a seguinte avalia%$o: a< GP-=- para esta!elecer tuplas individuais candidatas ;n$o pode conter fun%&es de grupo< !< (=5:P B_ para fi+ar grupos. c< PA@AN( para selecionar grupos para e+i!i%ao.

12ui-Uuno K Uuno por igualdade L


5 relaciona"ento e+istente entre ta!elas 0 cha"ado de e#ui72un%$o pois os valores de colunas das duas ta!elas s$o iguais. A -#ui72un%$o 0 poss'vel apenas #uando tiver"os definido de for"a ade#uada a chave estrangeira de u"a ta!ela e sua referncia a chave pri",ria da ta!ela precedente. Apesar de ad"itir7se e" alguns casos a e#ui72un%$o de ta!elas se" a correspondncia .have Pri",ria7.have -strangeira reco"enda"os forte"ente ao estudante n$o utilizar este tipo de constru%$o pois certa"ente e" nenhu"

BV

"o"ento nos e+e"plos propostos e" nossa disciplina ou nas disciplinas de An,lise e Pro2eto de Siste"as ser$o necess,rias tais 2un%&es. 1QL Listar =o*es de 1*pregados? Cargos e =o*e do Departa*ento onde o e*pregado tra#al/aA =esp: 5!serve"os #ue dois dos trs dados solicitados est$o na )a!ela -"p en#uanto o outro dado est, na )a!ela Dept. Devere"os ent$o acessar os dados restringindo conveniente"ente as rela%&es e+istentes entre as ta!elas. De fato sa!e"os #ue D-PN:6- 0 chave pri",ria da ta!ela de Departa"entos e ta"!0" 0 chave estrangeira da )a!ela de -"pregados. Portanto este ca"po ser, o respons,vel pela e#ui72un%$o. S-L-.) A.-6PN56- A.-6PS-=@ B.D-PN56/=56 -6P A D-P) B GP-=- A.D-PN:6- f B.D-PN:6-b 5!s.: Note #ue as ta!elas #uando cont0" colunas co" o "es"o no"e usa7se u" apelido ?alias? para su!stituir o no"e da ta!ela associado a coluna. A"agine #ue algu0" tivesse definido N56- para ser o No"e do -"pregado na )a!ela de -"pregados e ta"!0" N56- para ser o No"e do Departa"ento na )a!ela de Departa"entos. )udo funcionaria de for"a ade#uada pois o ali,s se encarregaria de evitar #ue u"a a"!i#Oidade fosse verificada. -"!ora SQL resolva de for"a "uito elegante o pro!le"a da no"enclatura idntica para ca"pos de ta!elas reco"enda"os #ue o estudante forte"ente evite tal for"a de no"ear os ca"pos. 5 SQL nunca confundir, u" A.N56- co" u" B.N56- por0" pode"os afir"ar o "es"o de n*s "es"os9 1RL Liste os C@digos do Cada ,uncion+rio? seus =o*es? seus Cargos e o no*e do Gerente ao 2ual este se relacionaA =esp: Precisa"os criar u" auto7relaciona"ento ou se2a 2untar u"a ta!ela a ela pr*pria. I poss'vel 2untar"os u"a ta!ela a ela "es"a co" a utiliza%$o de apelidos per"itindo 2untar tuplas da ta!ela a outra tuplas da "es"a ta!ela. S-L-.) A.-6PN:6- A.-6PN56- A.-6PS-=@ B.-6PN56/=56 -6P A -6P B GP-=- A.-6P(-=- f B.-6PN:6-b

As Su#-Consultas
:"a su!7consulta 0 u" co"ando ?select? #ue 0 aninhado dentro de outro ?select? e #ue devolve resultados inter"edi,rios.

ML Relacione todos os no*es de 0uncion+rios e seus respecti<os cargos? desde 2ue o ora*ento do departa*ento se8a igual a "MMMMMA =esp: S-L-.) -6PN56- -6PS-=@ /=56 -6P A GP-=- L\\\\\ AN ; S-L-.) D-P5=.A /=56 D-P) GP-=- D-P).D-PN:6- f A.D-PN:6- <b

BX

Nota: 5!serve #ue a cl,usula AN torna7se verdadeira #uando o atri!uto indicado est, presente no con2unto o!tido atrav0s da su!consulta. 1L Relacione todos os departa*entos 2ue possue* e*pregados co* re*unerao *aior 2ue "'MMA =esp: S-L-.) D-PN56/=56 D-P) A GP-=- -8AS)S ;S-L-.) T /=56 -6P GP-=- -6PSALA U LD\\ AND -6P.D-PN:6- f A.D-PN:6-g<b Nota: 5!serve #ue a cl,usula -8AS)S indica se o resultado de u"a pes#uisa cont0" ou n$o tuplas. 5!serve ta"!0" #ue podere"os verficar a n$o e+istncia ;N5) -8AS)S< caso esta alternativa se2a "ais conveniente.

;ni&es
Pode"os eventual"ente unir duas linhas de consultas si"ples"ente utilizando a palavra reservada :NA5N.

L Liste todos os e*pregados 2ue ten/a* c@digos E 1M ou ,uncion+rios 2ue tra#al/e* e* departa*entos co* c@digo *aior 2ue 1MA =esp: Poder'a"os resolver esta pes#uisa co" u" Fnico Select por0" devido ao fato de estar"os tra!alhando e" nosso e+e"plo co" apenas duas ta!elas n$o consigui"os criar u" e+e"plo "uito ade#uado para utiliza%$o deste recurso. ;Select T /ro" -"p Ghere -"pNu"e U >\< :nion ;Select T /ro" -"p Ghere DepNu"e U >\<b

L\

Inser&es? Altera&es e 1xclus&es

:"a linguage" direcionada a e+tra%$o de infor"a%&es de u" con2unto de dados e" tese n$o deveria incorporar co"andos de "anipula%$o dos dados. Deve"os o!servar contudo #ue a "era e+istncia de u"a linguage" padronizada para acesso aos dados ?convidava? os desenvolvedores a aderire" a u"a linguage" ?padr$o? de "anipula%$o de ta!elas. Natural"ente cada desenvolvedor coloca ?u" algo "ais? e" seu SQL ;SQL PL:S SQL T ASQL e toda sorte de no"enclaturas< por u" lado desvirtuando os o!2etivos da linguage" ;padroniza%$o a!soluta< "as e" contrapartida oti"iza os acessos ao seu !anco de dados e por "aior #ue se2a" estas "udan%as 2a"ais s$o t$o i"portantes #ue i"pe%a" #ue u" progra"ador versado e" SQL tenha grandes dificuldades e" se adaptar ao padr$o de deter"inada i"ple"enta%$o. De fato as diferen%as entre o SQL da SY!ase 5racle 6icrosoft s$o "uito "enores dos #ue as e+istentes entre o . o BASA. e o Pascal #ue s$o cha"adas de linguagens ?ir"$s? pois todas origina"7se conceitual"ente no /5=)=AN. Pode"os o!servar #ue todas as trs linguagens "encionadas possue" estruturas de controle tipo ?para? ;for< ?en#uanto? ;Hhile< e repita ;do..Hhile repeat..until<. )odas tra!alha" co" !locos de instru%$o todas te" regras se"elhantes para declara%$o de vari,veis e todas usa" co"andos de to"ada decis$o !aseadas e" instru%&es do tipo ?se? ou ?caso? por0" apesar de tantas se"elhan%as ;sic< 0 pratica"ente i"poss'vel #ue u" progra"ador e+celente e" u"a linguage" consiga rapida"ente ser e+celente e" outra linguage" do grupo. Poder'a"os arriscar a dizer #ue u" e+celente progra"ador . #ue utilize a i"ple"enta%$o da SY"antech ter, #ue passar por u" !reve per'odo de adapta%$o para adaptar7se ao . da 6icrosoft. 5 #ue ocorreria ent$o se este progra"ador tiver #ue adaptar7se ao Delphi ;Pascal< da Borland9 De for"a algu"a o "es"o ocorrer, co" o especialista e" SQL ao ter #ue "igrar do Banco de Dados 8 para o Banco de Dados _. Natural"ente e+istir, a necessidade de aprendizado "as este progra"ador poder, ir adaptando7se aos poucos se" precisar ser retreinado o #ue 0 u" aspecto e+tre"a"ente vanta2oso para as e"presas.

Inserir KInsertL
ANS-=) AN)5 cta!elaU dcca"posUe d@AL:-S cvaloresUe -+: ANS-=) AN)5 D-P)b Possi!ilita a inser%$o de registros de for"a interativa. ANS-=) AN)5 D-P) ;D-PN:6- D-PN56- D-PL5.A< @AL:-S ;R\ ?P=5D:.A5? ?=A5 DJAN-A=5?<b Possi!ilita a inser%$o de registros e" ta!elas se" digita%$o dos dados.

Atuali3ar K;pdateL
:PDA)- cta!elaU S-) cca"poU f ce+press$oU dGP-=- ccondi%$oUeb -+: :PDA)- -6P S-) -6PSALA f -6PSALAT >.B GP-=- -6PSALAc >\\\b

L>

1xcluir KDeleteL
D-L-)- /=56 cta!elaU dGP-=- ccondi%$oUeb -+: D-L-)- /=56 e"p GP-=- -6PSALA U D\\\b

(ransa&es
6uitas vezes gostar'a"os #ue deter"inado processo caso fosse a!ortado por #ual#uer "otivo pudesse ser inteira"ente cancelado. A"agine"os por e+e"plo u" usu,rio digitando u" pedido. A"agine"os ainda #ue o siste"a possa reservar cada ite" solicitado de "aneira ?on line? ou se2a ao "es"o te"po e" #ue estou digitando a #uantidade o siste"a 2, ?e"penhe? u"a #uantidade e#uivalente no esto#ue. A"agine"os ainda #ue o siste"a deve cancelar todas as opera%&es se apenas u" dos itens n$o puder ser atendido. (rande pro!le"a caso n$o pud0sse"os anular todos os processos a partir de deter"inada condi%$o. @a"os si"ular tal ocorrncia co" nosso !anco de dados -6P. A"agine"os #ue ao inv0s de digitar"os D-L-)- /=56 e"p GP-=- salario U D\\\b tiv0sse"os digitado D-L-)- /=56 e"p GP-=- salario U D\\b Ao inv0s de eli"inar"os B registros pratica"ente ter'a"os eli"inado o !anco de dados todo. Para evitar"os #ue u" erro de digita%$o ou u" processo iniciado por0" se" condi%$o de ser co"pletado integral"ente co"pro"eta todos nossos dados pode"os criar u"a transa%$o #ue nos assegurar, #ue nossos testes se2a" !e" sucedidos ou cancelados se" co"pro"eter nossos dados. !egin transactionb delete fro" e"p Hhere salario U D\\b if SQLZ=-.5=D.5:N) U B\ )P-Nb =5LLBA.i )=ASA.)A5Nb else .566A)b endifb end transactionb

%is&es
:"a vis$o consiste !asica"ente de u"a ta!ela derivada de outras ta!elas. .onsiderando o e+e"plo )=ABALP5 poder'a"os criar u"a vis$o !aseada na )a!ela de -"pregados ;-6P< e na )a!ela de Departa"entos ;D-P)< onde tiv0sse"os so"ente os No"es dos /uncion,rios e os Departa"enos nos #uais estes tra!alhasse". )er'a"os algo asse"elhado ao a!ai+o representado .=-A)- @A-G -6PZD-P AS S-L-.) -.-6PN56- D.D-PN56/=56 -6P - D-P) D GP-=- -.D-PN:6- f D.D-PN:6-b Deve"os o!servar #ue: >7 :"a vis$o definida so!re u"a Fnica ta!ela so"ente ser, atualiz,vel se os atri!utos da tal vis$o contivere" a chave pri",ria de tal ta!ela. B7 @is&es so!re v,rias ta!elas n$o s$o pass'veis de atualiza%&es. L7 @is&es #ue se utiliza" de fun%&es de agrupa"entos ta"!0" n$o poder$o ser atualizadas.

LB

9AR(1 III - Relat@rios


.o"ando: =-P5=) DAS)AN.) M :NAQ:d atri!uto;s< e =-P5=))5P PA(-)5P )5P D-)AAL N5NB5))56 PA(-B5))56 =-P5=)B5))56 /=56 d ta!ela;s< e d GP-=- clausula7Hhere e d (=5:P B_ clausula7grupo e d 5=D-= B_ clausula7order !Y eb .o"o e+e"plo convertere"os u" si"ples Select e" u" =eport te"os: S-L-.) -6PN56/=56 -6P GP-=- D-PN:6- f >\\\b =-P5=) D-)AAL -6PN56GP-=- D-PN:6- f >\\\b Pode"os direcionar a saida de u" relat*rio tanto para u" ar#uivo co"o para u"a i"pressora. Para u" ar#uivo: =-P5=) 5N J=-LA).DA)K ... Para u"a i"pressora: =-P5=) 5N LP:K ... Agora incre"entando u" report te"os: =-P5=) =-P5=))5P .5L >\ JTTT =-LA)5=A5 D- /:N.A5NA=A5S TTT J )5DA_ jQKDDM66M__K SiAP .5L >\ JfffffffffffffffffffffffffffffffffJ SiAP B D-)AAL .5L >\ N56- j.BB SALA=A5 j/S AD6ASSA5 jQKDDM66M__K =-P5=)B5))56 .5L >\ JfffffffffffffffffffffffffffffffffJ SiAP .5L B\ J)5)AL:K )5)AL;SALA=A5< /=56 -6P 5=D-= B_ N56-b

LL

5nde: =-P5=))5P 7 5 #ue sera i"presso no topo do relat*rio. PA(-)5P 7 A"presso e" cada topo de pagina. )5P 7 A"presso e" cada )opo do Sort7(rupo do relat*rio. D-)AAL 7 5 #ue sera i"presso e" cada linha. N5N7 Se n$o tiver resultado o select n$o sera i"presso o relat*rio. B5))56 7 A"presso e" cada Botto" do Sort7(rupo do relat*rio PA(-B5))56 7 5 #ue sera i"presso no rodap0 de cada pagina. =-P5=)B5))56 7 5 #ue sera i"presso no rodape do relat*rio. /or"atos: j. 7 caracter jD 7 data Y 7 ano n 7 "es nu"0rico a 7 "es alfanu"0rico d 7 dia 2 7 dia e ano 2uliano -+e"plo: jDKddM""MYYK jA 7 inteiro j/ 7 ponto flutuante j/Sl onde: S 7 separador de L digitos e deci"al point l 7 zeros ser$o supri"idos jQ 7 data jJ 7 Pora h 7 hora " 7 "inutos s 7 segundos j) 7 hora - te"os as fun%&es: )5)AL A@-=A(- 6A8A6:6 6ANA6:6.

LN