Você está na página 1de 34

Apostila de Banco de Dados e SQL

Introduo
Devido a carncia de literatura destinada ao ensino de Banco de Dados e SQL para estudantes, elaboramos a
presente apostila, que no possue o intento de esgotar to abrangente volume de informaes, servindo to
somente para estabelecer um mnimo de conecimentos destinados a introdu!ir o estudante no mundo dos
"erenciadores de Banco de dados e da Linguagem SQL#

Banco de Dados
$odos n%s sabemos e&istirem gigantescas bases de dados gerenciando nossas vidas# De fato sabemos que
nossa conta banc'ria fa! parte de uma coleo imensa de contas banc'rias de nosso banco# (osso $tulo
)leitoral ou nosso *adastro de +essoa ,sica, certamente esto arma!enados em Bancos de Dados colossais#
Sabemos tamb-m que quando sacamos dineiro no *ai&a )letr.nico de nosso banco, nosso saldo e as
movimentaes e&istentes em nossa conta banc'ria /' esto 0 nossa disposio#
(estas situaes sabemos que e&iste uma necessidade em se reali!ar o arma!enamento de uma s-rie de
informaes que no se encontram efetivamente isoladas umas das outras, ou se/a, e&iste uma ampla gama de
dados que se referem a relacioamentos e&istentes entre as informaes a serem manipuladas#
)stes Bancos de Dados, al-m de manterem todo este volume de dados organi!ado, tamb-m devem permitir
atuali!aes, incluses e e&cluses do volume de dados, sem nunca perder a consistncia# ) no podemos
esquecer que na maioria das ve!es estaremos lidando com acessos concorrentes a v'rias tabelas de nosso
banco de dados, algumas ve!es com mais de um acesso ao mesmo registro de uma mesma tabela1
2 fato de montarmos uma 3ala Direta em um micro +*45$ com um drive /' fa! de n%s um autor de um
Banco de Dados6
*laro que no1 7m Banco de Dados - antes de mais nada uma coleo logicamente coerente de dados com
determinada significao intrnseca# )m outras palavras um arquivo contendo uma s-rie de dados de um
cliente, um arquivo com dados aleatoriamente gerados e dois arquivos padro dbf 8dBase9 que tem uma
relao definida entre ambos, no pode ser considerada uma Base de Dados :eal#
7m Banco de Dados cont-m os dados dispostos numa ordem pr-4determinada em funo de um pro/eto de
sistema, sempre para um prop%sito muito bem definido#
7m Banco de Dados representar' sempre aspectos do 3undo :eal# ;ssim sendo uma Base de Dados 8ou
Banco de Dados, ou ainda BD9 - uma fonte de onde poderemos e&trair uma vasta gama de informaes
derivadas, que possui um nvel de interao com eventos como o 3undo :eal que representa# ; forma mais
comum de interao 7su'rio e Banco de Dados, d'4se atrav-s de sistemas especficos que por sua ve!
acessam o volume de informaes geralmente atrav-s da linguagem SQL#
<
2s ;dministradores de Banco de Dados 8DB;9 so respons'veis pelo controle ao acesso aos dados e pela
coordenao da utili!ao do BD# =' os pro/etistas de Banco de Dados 8DB+9 so analistas que identificam os
dados a serem arma!enados em um Banco de Dados e pela forma como estes sero representados#
2s ;nalistas e +rogramadores de Desenvolvimento, criam sistemas que acessam os dados da forma necess'ria
ao 7su'rio ,inal, que - aquele que interage diretamente com o Banco de Dados#
SGBD x GA
7m S"BD 4 Sistema de "erenciamento de Banco de Dados - uma coleo de programas que permitem ao
usu'rio definir, construir e manipular Bases de Dados para as mais diversas finalidades#
7m conceito que dever' ficar bastante claro inicialmente - o que envolve a separao clara entre os
"erenciadores de Base de Dados dos "erenciadores de ;rquivo#
Sistemas baseados em >Banco de Dados> baseados em Btrieve e dBase 8,o& e *lipper9, podem no m'&imo
simular as caractersticas tpicas de um ambiente de Banco de Dados# ;s linguagens Delpi 8utili!a
opcionalmente o padro dBase9 e o ?B 8que utili!a o ;ccess9, recomendam a utili!ao de Banco de Dados
reais, por-m utili!am 0queles >Banco de Dados> que possuem algumas caractersticas de Bancos de Dados,
mas possuem caractersticas tpicas de "erenciadores de ;rquivo#
?amos definir algumas regras b'sicas e claras para um sistema de manipulao de dados ser considerado um
S"BD# ,ica implcito que se ao menos uma das caractersticas abai&o no estiver presente no nosso
>candidato> a S"BD, este poder' ser um "; 8"erenciador de ;rquivo9 de altssima qualidade, >quase> um
S"BD, mas no um S"BD#
Regra 1: Auto-Conteno- 7m S"BD no cont-m apenas os dados em si, mas arma!ena completamente
toda a descrio dos dados, seus relacionamentos e formas de acesso# (ormalmente esta regra - camada de
3eta4Base de Dados# )m um ";, em algum momento ao menos, os programas aplicativos declaram
estruturas 8algo que ocorre tipicamente em *, *2B2L e B;S@*9, ou geram os relacionamentos entre os
arquivos 8tpicos do ambiente &Base9# +or e&emplo, quando voc - obrigado a definir a forma do registro em
seu programa, voc no est' lidando com um S"BD#
Regra : Independ!ncia dos Dados4 Quando as aplicaes estiverem realmente imunes a mudanas na
estrutura de arma!enamento ou na estrat-gia de acesso aos dados, podemos di!er que esta regra foi atingida#
+ortanto, nenuma definio dos dados dever' estar contida nos programas da aplicao# Quando voc
resolve criar uma nova forma de acesso, um novo ndice, se precisar alterar o cdigo de seu aplicativo, voc
no est' lidando com um S"BD#
Regra ": A#strao dos Dados4 )m um S"BD real - fornecida ao usu'rio somente uma representao
conceitual dos dados, o que no inclui maiores detales sobre sua forma de arma!enamento real# 2 camado
3odelo de Dados - um tipo de abstrao utili!ada para fornecer esta representao conceitual# (este modelo,
um esquema das tabelas, seus relacionamentos e suas caves de acesso so e&ibidas ao usu'rio, por-m nada -
afirmado sobre a criao dos ndices, ou como sero mantidos, ou qual a relao e&istente entre as tabelas que
dever' ser mantida ntegra# ;ssim se voc dese/ar inserir um pedido em um cliente ine&istente e esta entrada
no for automaticamente re/eitada, voc no est' lidando com um S"BD#
Regra $: %is&es4 7m S"BD deve permitir que cada usu'rio visuali!e os dados de forma diferente daquela
e&istente previamente no Banco de Dados# 7ma viso consiste de um subcon/unto de dados do Banco de
Dados, necessariamente derivados dos e&istentes no Banco de Dados, por-m estes no devero estar
e&plicitamente arma!enados# +ortanto, toda ve! que voc - obrigado a replicar uma estrutura, para fins de
acesso de forma diferenciada por outros aplicativos, voc no est' lidando com um S"BD#
A
Regra ': (ransa&es4 7m S"BD deve gerenciar completamente a integridade referencial definida em seu
esquema, sem precisar em tempo algum, do au&lio do programa aplicativo# Desta forma e&ige4se que o banco
de dados tena ao menos uma instruo que permita a gravao de uma s-rie modificaes simultBneas e uma
instruo capa! de cancelar um s-rie modificaes# +or e&emplo, imaginemos que este/amos cadastrando um
pedido para um cliente, que este dese/e reservar C itens de nosso estoque, que esto disponveis e portanto so
reservados, por-m e&iste um bloqueio financeiro 8duplicatas em atraso9 que impede a venda# ; transao
dever' ser desfeita com apenas uma instruo ao Banco de Dados, sem qualquer modificaes suplementares
nos dados# *aso voc se obrigue a corrigir as reservas, atrav-s de acessos complentares, voc no est' lidando
com um S"BD#
Regra ): Acesso Auto*+tico4 )m um "; uma situao tpica - o camado Dead4LocD, o abrao mortal# )sta
situao indese/'vel pode ocorrer toda ve! que um usu'rio travou um registro em uma tabela e seu pr%&imo
passo ser' travar um resgistro em uma tabela relacionada 0 primeira, por-m se este registro estiver
previamente travado por outro usu'rio, o primeiro usu'rio ficar' paralisado, pois, estar' esperando o segundo
usu'rio liberar o registro em uso, para que ento possa trav'4lo e prosseguir sua tarefa# Se por ip%tese o
segundo usu'rio necessitar travar o registro travado pelo primeiro usu'rio 819, afirmamos que ocorreu um
abrao mortal, pois cada usu'rio travou um registro e precisa travar um outro, /ustamente o registro
anteriormente travado pelo outro1 @maginemos um caso onde o respons'vel pelos pedidos acabou de travar o
:egistro @tem de +edido, e, necessita travar um registro no *adastro de +rodutos, para indicar uma nova
reserva# Se concomitantemente estiver sendo reali!ada uma tarefa de atuali!ao de pendncias na $abela de
@tens, e para tanto, previamente este segundo usu'rio travou a $abela de +rodutos, temos a ocorrncia do
abrao mortal# Se a responsabilidade de evitar esta ocorrncia for responsabilidade da aplicao, voc no est'
lidando com um S"BD#
Concluso: 7m S"BD deve obedecer @($)":;L3)($) as seis regras acima# )m caso contr'rio
estaremos diante de um "; ou de um >quase> S"BD#
Considera&es ,inais
;tualmente, e&iste uma tendncia de mercado em se di!er que qualquer problema ser' resolvido, caso a
empresa adquira um Banco de Dados# (aturalmente, em um ambiente com acesso constante ao Banco de
Dados 8acesso concorrente, obviamente9, onde a segurana se/a de vital importBncia e que o desempeno da
aplicao escrita estiver comprometendo a empresa, considerando4se logicamente uma aplicao bem escrita,
sem dEvida a aquisio de um Banco de Dados poder ser o primeiro passo na soluo do problema#
;nalogamente ao que ocorreu com o aparecimento das primeriras linguagens de programao voltadas ao
FindoGs, onde estas foram apresentadas como capa!es de alavancar os neg%cios da empresa, e no geral
causaram mais frustao do que soluo, a aquisio do Banco de Dados, pode gerar o mesmo tipo de
problema#
H fundamental que a empresa candidata a utili!ar um Banco de Dados, normati!e4se totalmente, pois solues
Iquebra4galoJ, tpicas do ambiente que dispe de um "erenciador de ;rquivo, tendem a ser impossveis em
um ambiente estruturado sobre o Banco de Dados# +ortanto, sob pena de se reali!ar um grande investimento,
e no se coler fruto algum, - muito conveniente, que a empresa antes de adquirir um Banco de Dados, passe
por um processo de adaptao, preferencialmente contando com pessoal especiali!ado, geralmente
consultores, que no tenam qualquer ligao com fabricantes de Bancos de Dados#
K
Caracter-sticas Gerais de u* SGBD
2s S"BD tem sete caractersticas operacionais elementares sempre observadas, que passaremos a listarrL
Caracter-stica 1: Controle de Redund.ncias- ; redundBncia consiste no arma!enamento de uma mesma
informao em locais diferentes, provocando inconsistncias# )m um Banco de Dados as informaes s% se
encontram arma!enadas em um Enico local, no e&istindo duplicao descontrolada dos dados# Quando
e&istem replicaes dos dados, estas so decorrentes do processo de arma!enagem tpica do ambiente *liente4
Servidor, totalmente sob controle do Banco de Dados#
Caracter-stica : Co*partil/a*ento dos Dados4 2 S"BD deve incluir softGare de controle de
concorrncia ao acesso dos dados, garantindo em qualquer tipo de situao a escritaMleitura de dados sem
erros#
Caracter-stica ": Controle de Acesso4 2 S"DB deve dispor de recursos que possibilitem selecionar a
autoridade de cada usu'rio# ;ssim um usu'rio poder' reali!ar qualquer tipo de acesso, outros podero ler
alguns dados e atuali!ar outros e outros ainda podero somente acessar um con/unto restrito de dados para
escrita e leitura#
Caracter-stica $: Inter0acea*ento4 7m Banco de Dados dever' disponibili!ar formas de acesso gr'fico, em
linguagem natural, em SQL ou ainda via menus de acesso, no sendo uma >cai&a4preta> somente sendo
passvel de ser acessada por aplicaes#
Caracter-stica ': 1s2ue*ati3ao4 7m Banco de Dados dever' fornecer mecanismos que possibilitem a
compreenso do relacionamento e&istentes entre as tabelas e de sua eventual manuteno#
Caracter-stica ): Controle de Integridade47m Banco de Dados dever' impedir que aplicaes ou acessos
pelas interfaces possam comprometer a integridade dos dados#
Caracter-stica 4: Bac5ups4 2 S"BD dever' apresentar facilidade para recuperar falas de ardGare e
softGare, atrav-s da e&istncia de arquivos de >pr-4imagem> ou de outros recursos autom'ticos, e&igindo
minimamente a interveno de pessoal t-cnico#
)&iste a possibilidade de encontramos Bancos de Dados que no satisfaam completamente todas as
caractersticas acima, o que no o inv'lida como Banco de Dados# (a pr'tica podemos encontrar situaes
onde a primeira caracterstica no se/a importante, pois podemos ter o Banco de Dados baseado totalmente
em um Enico servidor, e as redundBncias podem ser aceitas em algumas situaes sob controle da aplicao
8algo no muito recomendado, mas passvel de aceitao, em situaes onde a e&istncia do nome do cliente
em um arquivo contendo duplicatas emitidas, possibilita o acesso a apenas uma tabela sem relacionamentos,
e sabe4se de antemo que uma duplicata depois de emitida, no pode ter seu cliente alterado9#
; segunda caracterstica 8*ompartilamento dos Dados9 pode ser desconsiderada principalmente em
ambiente de desenvolvimento, ou ainda em aplicaes remotas#
2 *ontrole de ;cesso pode ser descartado em pequenas empresas, sendo que o aplicativo em questo, mais o
softGare de rede, podem facilmente se imcumbir desta caracterstica, no caso de pequenas empresas, com
redu!ido nEmero de pessoas na 'rea operacional#
2 @nterfaceamento e a )squemati!ao, so caractersticas sempre disponveis, o que varia neste caso -
qualidade destes compoenentes, que vai desde o sofrvel at- o estado da arte# H muito conveniente que esta
caracterstica se/a muito boa em um Banco de Dados, onde estiverem em atuao mais de um ;dministrador
de Banco de Dados e tivermos um nEmero relativamente alto de sistemas desenvolvidos ou em
desenvolvimento neste ambiente#
N
De fato, quanto maior o nEmero de pessoas envolvidas no desenvolvimento de aplicaes e gerenciamento do
Banco de Dados, mais importante tornam4se estas duas caractersticas, pois cada novo sistema desenvolvido
precisar' sempre estar adequado ao Banco de Dados da )mpresa e aderente aos padres de acesso utili!ados
nos sistemas concorrentes#
;s interfaces @SQL e FinSQL devem dei&ar muito claro ao estudante como uma interface pobre 8no caso a
e&istente no @SQL9 perde muito, quando comparada a uma interface mais recursiva# ; esquemati!ao
e&istente no Banco de Dados - muito melor do que aquela mantida em alguma pasta, em algum arquivo do
*+D, que sempre est' Ium pouquinoJ desatuali!ada#
2 *ontrole de @ntegridade, - outra caracterstica sempre presente nos Bancos de Dados, mas e&istem
diferenas quando da implementao desta caracterstica# ;ssim, - comum encontrarmos Bancos de Dados
que suportam determinado acesso, enquanto outros no dispe de recurso equivalente#
2 BacDup em tempo de e&ecuo, - outra caracterstica sempre disponvel, por-m temos aplicaes que
invariavelmente so comprometidas por falas de ardGare, e outras, que o mesmo tipo de fala no causa
perda alguma de dados ou de integridade# (ovamente, cada Banco de Dados tem esta caracterstica melor ou
pior implementada, cabendo ao ;dministrador de Banco de Dados escoler aquele que le oferecer mais
segurana#
Devemos ressaltar ainda, que podemos ter um Banco de Dados 3odelo ;, que respeite integralmente as
regras b'sicas e dispona de todas as caractersticas apresentadas, enquanto um 3odelo B que apesar de
respeitar as regras b'sicas, no suporte uma ou outra caracterstica dese/'vel, mas tena um desempeno
e&celente, enquanto o 3odelo ; se/a apenas ra!o'vel no quesito desempeno, nos levar' seguramente a
escoler o 3odelo B como sendo o ganador para nossa instalao1
@sto ocorre pois, na pr'tica, todo usu'rio dese/a um tempo de resposta muito pequeno# 2 camado Ipra!o de
entregaJ muito comum em Bancos de Dados operando nos limites de sua capacidade, ou nos casos onde o
ardGare est' muito desatuali!ado, - fonte de inEmeros problemas para o pessoal de inform'tica# (este caso -
melor abrirmos mo de uma @nterface ;mig'vel, de um "erenciamente ;utom'tico de BacDups ou ainda de
outras caractersticas que no /ulgarmos fundamentais, para nos livrarmos do problema tpico de ambiente
e&tremamente comprometido, por m' performance do Banco de Dados#
; escola do Banco de Dados da empresa, portanto - uma deciso muito delicada, na medida em que est' ir'
acarretar troca de aplicativos e troca de ardGare# 2s investimentos diretamente aplicados no Banco de
Dados, costumam ser infinitamente menores do que aqueles a serem aplicados na empresa, visando sua
perfeita adeqOao ao novo S"BD# )sta deciso, sempre que possvel, deve ser tomada por especialistas em
Banco de Dados, com profundos conecimentos de ;n'lise de Sistemas, de Banco de Dados e de SoftGare de
"erenciamento de Bases de Dados, de forma a evitar que a empresa escola um Banco de Dados inadequado
aos seus prop%sitos, e que pouco tempo depois, se/a obrigada a perder todos investimento reali!ado em
SoftGare e PardGare#
C
Ar2uitetura de u* SGBD
1strutura
+odemos di!er que o Banco de Dados tem um (vel @nterno, onde - descrita a estrutura de arma!enamento
fsico dos dados, um (vel @ntermedi'rio, onde temos a descrio l%gica dos dados e um (vel )&terno onde
so descritas as vises para grupos de usu'rios#
(o podemos dei&ar de lembrar ainda que o Banco de Dados garante a @ndependncia L%gica e ,sica dos
Dados, portanto podemos alterar o esquema conceitual dos dados, sem alterar as vises dos usu'rios ou
mesmo alterar o esquema interno, sem contudo alterar seu esquema conceitual#
6odelos de Dados
2 3odelo de Dados - basicamente um con/unto de conceitos utili!ados para descrever um Banco de Dados#
(o e&iste uma Enica forma de representao deste modelo, por-m qualquer forma que permita a correta
compreenso das estruturas de dados compreendidas no Banco de Dados, pode ser considerada adequada#
?amos descrever sucintamente este modelo, pois estes sero ob/etos de outras disciplinasL
6odelo 7rientado ao Registro: So modelos que representam esquematicamente as estruturas das tabelas de
forma bastante pr%&ima a e&istente fisicamente# Basicamente so apresentados os registros de cada tabela
8inclusive seus campos9 e seus relacionamentos elementares# 2 3odelo :elacional, o 3odelo de :ede e o
Pier'rquico so e&emplos deste tipo de representao#
6odelo Se*.ntico: So modelos onde e&iste uma representao e&plcita das entidades e relacionamentos# 2
3odelo )ntidade4:elacionamento e o ,uncional, so e&emplos deste tipo de abordagem#
6odelo 7rientado ao 7#8eto: So modelos que procuram representar as informaes atrav-s dos concietos
tpicos da +rogramao 2rientada ao 2b/eto, utili!ando o conceito de *lasses que iro conter os ob/etos#
*itamos os 3odelos 2A e o de :epresentao de 2b/etos como e&emplos tpicos desta abordagem#
2 conceito de instBncia, sempre muito presente, poderia ser definido como sendo o con/unto de dados que
definem claramente um Banco de Dados em deteminado instante# Devemos entender ento o Banco de Dados
como sendo no apenas um con/unto de dados digitados, mas tamb-m todo o esquema e regras arma!enada e
controladas pelo S"BD#
)m outras palavras, podemos di!er que os S"BD, vieram para eliminar todo o trabalo que anteriormente um
programador de aplicao reali!ava controlando o acesso, integridade e redundBncia dos dados#
Q
Co*ponentes de u* Banco de Dados
7m Banco de Dados - composto pelas seguintes partesL
Gerenciador de Acesso ao Disco: 2 S"BD utili!a o Sistema 2peracional para acessar os dados arma!enados
em disco, controlando o acesso concorrente 0s tabelas do Banco de Dados# 2 "erenciador controla todas as
pesquisas queries9 solicitadas pelos usu'rios no modo interativo, os acessos do compilador D3L, os acessos
feitos pelo +rocessador do Banco de Dados ao Dicion'rio de Dados e tamb-m aos pr%prios dados#
2 Co*pilador DDL 8Data Definition Language9 processa as definies do esquema do Banco de Dados,
acessando quando necess'rio o Dicion'rio de Dados do Banco de Dados#
2 Dicion+rio de Dados cont-m o esquema do Banco de Dados, suas tabelas, ndices, forma de acesso e
relacionamentos e&istentes#
2 9rocessador do Banco de Dados manipula requisies 0 pr%pria Base de Dados em tempo de e&ecuo# H
o respons'vel pelas atuali!aes e integridade da Base de Dados#
2 9rocessador de 9es2uisas 8queries9 dos usu'rios, analisa as solicitaes, e se estas forem consistentes,
aciona o +rocessador do Banco de Dados para acesso efetivo aos dados#
;s aplicaes fa!em seus acessos ao pr-4compilador D3L da linguagem ospedeira, que os envia ao
Co*pilador D6L 8Data 3anipulation Language9 onde so gerados os c%digos de acesso ao Banco de
Dados#
R
(ipos de SGBD
Introduo
+odemos citar como tipos principais os Bancos de Dados :elacionais, os Pier'rquicos, os de :ede, os
SemBnticos, os 2rientados a 2b/etos e os 7niversais#
2s Bancos de Dados alvo de nosso estudo sero os :elacionais, sendo que os demais tipos sero apenas
citados superficialmente, por no serem parte integrante de nosso curso#
1s2ue*a de 7rgani3ao dos Dados
)m Linguagem * os estudantes tomaram 8ou iro tomar contato9 com os ponteiros de registro, que aqui
representaremos como sendo nEmeros de acesso ao registro# ?isando diferenciar o nEmero do registro fsico
do nEmero do registro apontado pelo ponteiro, usaremos o smbolo 8S9 para indicar o nEmero do registro
fsico, enquanto o smbolo 8T9 ser' utili!ado pelo para indicar o endereo indicado pelo ponteiro, a
semelana da representao usual dos programadores da Linguagem *#
?amos supor o arquivo abai&o ordenado alfabeticamente 8fsico9L

S<4 ;marelo TA
SA4 ;!ul TK
SK4 Branco TN
SN4 +reto TC
SC4 ?erde TQ
SQ4 ?ermelo 44
Supondo dese/armos incluir a cor Laran/a, seramos obrigado a re4escrever todo o arquivo de modo a Laran/a
ocupar o registro N# ?amos antes de fa!er uma nova ordenao, analisar a soluo abai&oL

S<4 ;marelo TA
SA4 ;!ul TK
SK4 Branco TR
SN4 +reto TC
SC4 ?erde TQ
SQ4 ?ermelo 44
SR4 Laran/a TN
2bserve que o registro SK 8Branco9 passou a apontar para o registro TR, que cont-m o novo dados 8Laran/a9#
2 novo dado passa a apontar para o registro previamente apontado pelo registro que agora o aponta# +arece, e
- confuso, mas se voc analisar o esquema abai&o perceber' que apesar do palavreado confuso, facilmente
qualquer um de n%s percebe a maneira adequada de inserir novos registros#
;lgo 44U ;pontado
;lgo 44U (ovo 44U ;pontado
S< ;lgo 44U TA
SA ;pontado no aponta 8- o Eltimo fsica e logicamente&9
S< ;lgo 44U TK
SA ;pontado no aponta 8- o Eltimo logicamente9
V
SK (ovo 44U TA 8- o Eltimo fisicamente9
; camada perda de ponteiros, fen.meno dos mais temidos pelos profissionais de sistema, nada mais - que a
perda de referncia l%gica entre registros de uma tabela#
)&istem diversas t-cnicas de acesso como as camadas BtreeW 8;rvore Bin'ria Balanceada9, Pasing,
Sequencial 2rdenado, Pasing DinBmico, Pasing )&tensvel e Pasing Linear, pr%prios para um curso
especfico de Banco de Dados, que no cegaremos a analisar em nosso curso#
Sabemos que em linguagem * foi 8ou ser'9 apresentada a t-cnica de balanceamento de estruturas, que
mostrou 8ou mostrar'9 como um Banco de Dados - arran/ado internamente#
1xerc-cio: :epresente esquematicamente o arran/o alfab-tico dos seguintes times de futebolL ,luminense,
,lamengo, ?asco, Botafogo, 3adureira, ;m-rica e 2l'ria# Supona ainda que o Bangu queira participara do
campeonato, como ficaria a nova ordem da tabela6
X
Banco de Dados :ier+r2uicos
Seguem o estilo de um organograma empresarial 8Diretoria4Diviso4Seo4Setor9 ou de biblioteca 8)&ata4
3atem'tica4;lgebra Linear4?etores9# )ste modelo - capa! de representar este tipo de organi!ao de forma
direta, mas apresenta inconvenientes quando esta situao no aparece claramente com relaes de ierarquia#
2 )&emplo a seguir 8,ola de +agamento9 deve servir para esclarecer melor o estilo deste modelo
,'brica ,inanceiro *omercial
@n/eo )&truso +agar :eceber *ont'bil ?endas 3arDeting
+aulo ?incius ?ilma Slvia Dagoberto =uracY :icard
+edro *arlos )rnesto Sandra +aula +edrino
=oo
Sabemos que +aulo - >filo> da @n/eo que por sua ve! - >fila> da ,'brica#
Banco de Dados e* Redes
(este modelos os dados so dispostos em registros, previamente classificados em classes que descrevem a
estrutura de determinado tipo de registro# 2s registros so descritos em relaes de con/untos onde so
estabelecidas as ligaes l%gicas entre eles#
2 esquema abai&o representa este tipo de Ligao
,'brica
S< (ome Local ### ;pontada ;pontaZ@ncio ;pontaZ,inal
@n/eo
SR (ome 3'quina ### ;pontada 8T<9 ;pontaZ@8T<C9 ;pontaZ,8T<V9
S<C +aulo AV 8@dade9 ### 8TR9 8T<R9
S<V =oo AC ### 8T<R9 8TR9
7m confuso abitualmente verificada, di! respeito a confuso que e&iste entre o conceito do 3odelo de
:edes e o e&istente na matem'tica# (o modelo de :edes temos sempre um elemento distitivo, o registro base
e a partir dele so dispostos os demais registros# $emos sempre tipos de conjunto, que dispe de trs
elementos, a saberL nome, tipo de registro pai e tipo de registro filo# Supondo um :egistro contido no
;rquivo de Disciplinas ministradas na [bero, este seria um registro pai, na medida em que conteria a
referncia aos seus registros filos 8os alunos cursando aquela disciplina9#
;s restries impostas pelo 3odelo de :edes podem ser descritas como de ordem de )ntrada e de )&istncia#
)m relao as restries de entrada citamos a obrigatoriedade de cada novo registro estar conectado 8ou
apontado, como preferem os programadores *9 ao con/unto indicado# )m relao a restries de )&istncia
podemos di!er que um componente de um tipo de registro pode e&istir de forma independente de outros desde
<\
que este/a conectado a algum outro registro fa!endo parte de algum con/unto, ou sendo base de um novo
con/unto# ; identificao de um con/unto pode ser verificada atrav-s do esquema de ligao entre o registro
pai e o registro filo, assim sendo, cada instBncia de con/unto apresenta um elemento de distino, o tal
registro pai, e os registros filos devidamente ordenados, e portanto passveis de serem acessados pelos seus
elementos#
)&emploL Disciplina $%picos ;vanados e seus ;lunos
:egistro de Disciplinas
@nform'tica
]lvaro

3aurcio

*l'udio
:egistro de ;lunos
2 e&emplo anterior representa uma instBncia de conn/unto, no caso Disciplinas 8$%picos ;vanados9 e seus
alunos 8no caso ]lvaro, ;morim e *l'udio9#
Banco de Dados 7rientados ao 7#8eto
:epresentam os dados como colees que obedecem propriedades# So modelos geralmente conceituais
dispondo de pouqussimas aplicaes reais# (este 3odelo no seria interessante a e&istncia de uma tabela de
funcion'rios e dentro dela alguma referncia para cada registro, de forma a podermos saber onde 8em que
departamento9 o funcion'rio est' alocado# 7m con/unto de regras disponibili!aria em separado os
funcion'rios da f'brica, que no entanto estariam agrupados aos demais, para o sistema de fola de pagamento#
Banco de Dados ;ni<ersal
7sa fortemente o conceito dos bancos de dados relacionais 8ainda a serem vistos9, no que concerne ao
tratamento da informao dita caracter e muito do 3odelo 2rientado ao 2b/eto, no tocante ao tratamento de
@magens e Sons# H um dos assuntos top do momento, e ser' alvo de pesquisas na disciplina $%picos
;vanados 4 ;tualidades, no sendo ob/eto imediato de nossa mat-ria#
<<
Banco de Dados Relacional
2 3odelo de Dados relacional representa os dados contidos em um Banco de Dados atrav-s de relaes#
)stas relaes cont-m informaes sobre as entidades representadas e seus relacionamentos# 2 3odelo
:elacional, -
claramente baseado no conceito de matri!es, onde as camadas linas 8das matri!es9 seriam os registros e as
colunas 8das matri!es9 seriam os campos# 2s nomes das tabelas e dos campos so de fundamental importBncia
para nossa compreenso entre o que estamos arma!enando, onde estamos arma!enando e qual a relao
e&istente entre os dados arma!enados#
*ada lina de nossa relao ser' camada de TUPLA e cada coluna de nossa relao ser' camada de
ATRIBUTO# 2 con/unto de valores passveis de serem assumidos por um atribruto, ser' intitulado de
DOM!IO#
)stes t%picos sero estudados cuidadosamente na disciplina ;n'lise de Sistemas, que se incumbir' de
apresentar cuidadosamente regras e normas para elaborao destes modelos#
)m nosso curso, voltado 0 construo pr'tica dos Bancos de Dados, e no de sua construo te%ricas, apenas
citaremos os aspectos b'sicos da construo te%rica, de forma a facilitar ao estudante o relacionamento que
e&iste entre ;n'lise de Sistemas e Banco de Dados 8uma das sub4disciplinas de $%picos ;vanados9#
2 domnio consiste de um grupo de valores at.micos a partir dos quais um ou mais atributos retiram seus
valores reais# ;ssim sendo :io de =aneiro, +aran' e +ar' so estados v'lidos para o Brasil, enquanto que
*orrientes no - um estado v'lido 8pertence a ;rgentina e no ao Brasil9#
2 esquema de uma relao, nada mais so que os campos 8colunas9 e&istentes em uma tabela# =' a instBncia
da relao consiste no con/unto de valores que cada atributo assume em um determinado instante# +ortanto, os
dados arma!enados no Banco de Dados, so formados pelas instBncias das relaes#
;s relaes no podem ser duplicadas 8no podem e&istir dois estados do +ar', no con/unto de estados
brasileiros, por e&emplo9, a ordem de entrada de dados no Banco de Dados no dever' ter qualquer
importBncia para as relaes, no que concerne ao seu tratamento# 2s atributos devero ser at.micos, isto -,
no so veis de novas divises#
*amaremos de *ave +rim'ria ao ;tributo que definir um resgistro, dentre uma coleo de registros# *ave
Secund'ria 8$erce'ria, etc9, sero caves que possibilitaro pesquisas ou ordenaes alternativas, ou se/a,
diferentes da ordem criada a partir da cave prim'ria ou da ordenao natural 8fsica9 da tabela# *amaremos
de *ave *omposta, aquela cave que cont-m mais de um atributo 8+or e&emplo um cadastro ordenado
alfab-ticamente por )stado, *idade e (ome do *liente, necessitaria de uma cave composta que contivesse
estes trs atributos9# *amaremos de *ave )strangeira, aquela cave que permitir a ligao l%gica entre uma
tabela 8onde ela se encontra9 com outra na qual ele - cave prim'ria#
1xe*ploL
*idade )stado
T *id*odi T )st*odi
*id(ome )st(ome
)st*odi 8)9
*id*odi e )st*odi, so caves prim'rias respectivamente das tabelas *idade e )stado, enquanto )st*odi -
cave estrangeira na tabela de cidades# H precisamente por este campo 8atributo, ou coluna9, que ser'
estabelecida a relao entre as tabelas *idade44U)stado#
<A
,or*a =or*al
; disciplina ;n'lise de Sistemas abordar' detaladamente esta importante metodologia para definio das
tabelas que iro compor a base de dados, que aqui apenas citaremos#
9ri*eira ,or*a =or*al: 7ma relao se encontra na primeira forma normal se todos os domnios de
atributos possuem apenas valores at.micos 8simples e indivisveis9, e que os valores de cada atributo na tupla
se/a um valor simples# ;ssim sendo todos os atributos compostos devem ser divididos em atributos at.micos#
Segunda ,or*a =or*al: 7ma relao se encontra na segunda forma normal quando estiver na primeira
forma normal e todos os atributos que no participam da cave prim'ria so dependentes desta# ;ssim
devemos verificar se todos os atributos so dependentes da cave prim'ria e retirar4se da relao todos os
atributos de um grupo no dependente que dar' origem a uma nova relao, que conter' esse atributo como
no cave# Desta maneira, na segunda forma normal evita inconsistncias devido a duplicidades#
(erceira ,or*a =or*al: 7ma relao estar' na terceira forma normal, quando estiver na primeira forma
norma e todos os atributos que no participam da cave prim'ria so dependentes desta por-m no transitivos#
;ssim devemos verificar se e&iste um atributo que no depende diretamente da cave, retir'4lo criando uma
nova relao que conter' esse grupo de atributos, e defina com a cave, os atributos dos quais esse grupo
depende diretamente#
2 processo de normali!ao deve ser aplicado em uma relao por ve!, pois durante o processo de
normali!ao vamos obtendo quebras, e por conseguinte, novas relaes# (o momento em que o sistema
estiver satisfat%rio, do ponto de vista do analista, este processo iterativo - interrompido# De fato e&istem
literaturas indicando quarta, quinta formas normais, que no nos parece to importante, nem mesmo
academicamente#
; normali!ao para formas apoiadas em dependncias funcionais evita inconsistncias, usando para isso a
pr%pria construo da Base# Se a mesma consistncia for passvel de ser garantida pelo aplicativo, a
normali!ao pode ser evitada com ganos reais no desempeno das pesquisas# (o caso da
consistncia no ser importante, tamb-m podemos no normali!ar totalmente uma Base de Dados#
1xe*plo: (ormali!ar os seguintes atributosL
(^ do +edido, (ome do *liente, (ome dos +rodutos, Quantidades
(^ do +edido, *%digo do *liente, (ome dos +rodutos, Quantidades
*%digo do *liente, (ome do *liente
(^ do +edido, *%digo do *liente, *%digo dos +rodutos, Quantidades
*%digo do *liente, (ome do *liente
*%digo do +roduto, (ome do +roduto
(^ do +edido, *%digo do *liente
*%digo do *liente, (ome do *liente
*%digo do +roduto, (ome do +roduto
(^ do +edido, *%digo do +roduto, Quantidade
<K
Cliente 9edido Ite* 9roduto
*li*odi +ed(ume +ed(ume +ro*odi
*li(ome *li*odi +ro*odi +ro(ome
@teQtde
2 esquema apresentado anteriormente poderia ser inferido diretamente, usando metodologia tipicamente
apresentada em 2rgani!ao e 3-todo# Se soubermos, por ip%tese, que um profissional abilitado desenou
o pedido da empresa, e que esta o est' utili!ando com sucesso, poderamos basear nosso modelo de dados
neste formul'rio# Devemos notar que muitos ;nalistas de Sistemas no adotam estes procedimentos, por
preferirem os m-todos convencionais para elaborao do 3odelo de Dados#
*onsiderando qualquer formul'rio de pedidos podemos notar que o =>*ero do 9edido geralmente tem
destaque e se"pre # $nico% ou se/a encontramos nossa c&ave pri"ria da (a#ela de 9edidos, como sabemos
que um cliente pode fa!er mais de uma compra, acamos nossa (a#ela de Clientes? que pode ter um C@digo,
portanto acamos sua c&ave pri"ria, que por conseguinte ser' a c&ave estrangeira da (a#ela de 9edidosA
7m ponto delicado, di! respeito aos itens do pedido, que formam geralmente um espao destacado dentro do
formul'rio de pedidos# "eralmente, e este - um dos casos, estas 'reas em separado dos formul'rios daro
origem a tabelas filas, como - o caso tpico das duplicatas em notas fiscais, ou dos dependentes na fica de
funcion'rios# +ortanto acamos nossa (a#ela de Itens que ser' ligada 0 $abela de +edidos atrav-s do
=>*ero do 9edido? que - ao mesmo tempo c&ave pri"ria e c&ave estrangeira para a $abela de @tens#
,inalmente podemos perceber, que da mesma forma como os clientes se repetem em relao a $abela de
+edidos, os produtos podem se repetir na tabela de itens 8observe que no obstante no termos nenum pedido
com o mesmo item grafado duas ve!es, este item pode ser adquirido em outro pedido9# ;ssim descobrimos
nossa quarta tabela, a (a#ela de 9rodutos e a cave prim'ria C@digo do 9rodutoA
<N
SQL - Structured QuerB Language
Introduo
Quando os Bancos de Dados :elacionais estavam sendo desenvolvidos, foram criadas linguagens destinadas 0
sua manipulao# 2 Departamento de +esquisas da @B3, desenvolveu a SQL como forma de interface para o
sistema de BD relacional denominado S_S$)3 :, incio dos anos R\# )m <XVQ o ;merican (ational
Standard @nstitute 8 ;(S@ 9, publicou um padro SQL#
; SQL estabeleceu4se como linguagem padro de Banco de Dados :elacional#
SQL apresenta uma s-rie de comandos que permitem a definio dos dados, camada de DDL 8Data
Definition Language9, composta entre outros pelos comandos *reate, que - destinado a criao do Banco de
Dados, das $abelas que o compe, al-m das relaes e&istentes entre as tabelas# *omo e&emplo de comandos
da classe DDL temos os comandos *reate, ;lter e Drop#
2s comandos da s-rie D3L 8Data 3anipulation Language9, destinados a consultas, inseres, e&cluses e
alteraes em um ou mais registros de uma ou mais tabelas de maneira simultBnea# *omo e&emplo de
comandos da classe D3L temos os comandos Select, @nsert, 7pdate e Delete#
7ma subclasse de comandos D3L, a D*L 8Data *ontrol Language9, dispe de comandos de controle como
"rant e :evoDe#
; Linguagem SQL tem como grandes virtudes sua capacidade de gerenciar ndices, sem a necessidade de
controle individuali!ado de ndice corrente, algo muito comum nas linguagens de manipulao de dados do
tipo registro a registro# 2utra caracterstica muito importante disponvel em SQL - sua capacidade de
construo de vises, que so formas de visuali!armos os dados na forma de listagens independente das
tabelas e organi!ao l%gica dos dados#
2utra caracterstica interessante na linguagem SQL - a capacidade que dispomos de cancelar uma s-rie de
atuali!aes ou de as gravarmos, depois de iniciarmos uma seqOncia de atuali!aes# 2s comandos *ommit
e :ollbacD so respons'veis por estas facilidades#
Devemos notar que a linguagem SQL consegue implementar estas solues, somente pelo fato de estar
baseada em Banco de Dados, que garantem por si mesmo a integridade das relaes e&istentes entre as tabelas
e seus ndices#
7 A*#iente SQL
Dispomos na @bero de dois softGares destinados a linguagem SQL o @SQL e o FinSQL#
2 @SQL fa! parte do pacote @deo e permite construirmos Banco de Dados e tabelas diretamente pelo
interpretador SQL, bem como acessarmos as Bases de Dados construdas no @deo# 2 @SQL pode gerar Banco
de Dados em seu ambiente propriet'rio 8Fatcom, o/e pertencente a SYmantec9 ou ainda nos consagrados
Banco de Dados 2racle, SYBase, @ngres 8*omputer ;ssociates9, DBMA 8@B39 e @nformi&# Devido as origens
do @deo, o Banco de Dados SQL Server da 3icrosoft no - suportado, pois este Banco de Dados originou4se
na microinform'tica e somente recentemente a Sapiens migrou seu softGare dos ;mbientes 3ainframe e
7ni&#
<C
=' o FinSQL - um ambiente inteiramente gr'fico 8ao contr'rio do @SQL que guarda fortes caractersticas do
ambiente em 3ainframe onde se originou9, destinado ao apredin!ado, portanto somente pode criar Banco de
Dados em seu formato propriet'rio#
2s comandos do FinSQL por serem visuais, no necessitam de maior esclarecimento al-m daqueles /'
contidos no Pelp# =' o @SQL apesar de possuir um Pelp bastante completo necessita, em nosso entender, de
alguns esclarecimentos iniciais#
7ma s-rie de comandos do interpretador, que funciona de forma an'loga 0quela e&istente no dBase modo
interativo, podem ser utili!ados pelo usu'rio# (o obstante alguns comandos tenam nome idntico a alguns
comandos do D2S, devemos notar que muitas ve!es sua sinta&e - bastante diversa daquele sistema
operacional# ?amos destacar os seguintes comandosL
C1DI( 4 *arrega o editor de bloco de notas do GindoGs, o qual serve para a criao de arquivos para serem
e&ecutados no @deo#
)&L `edit teste#sql
CCD 4 3ostra o diret%rio onde sero gravados os arquivos T#sql, T#dic T#dat#
+ermite alterar para determinado diret%rio 8`*D D;D2, far' com que o diret%rio corrente passe a ser
*L`D;D2, caso o diret%rio corrente fosse a rai!# +ermite retornar ao diret%rio de nvel inferior 8`*D ##9#
Ateno este comando no - an'logo ao *ange Dir do D2S, na medida em que no permite a mudana
direta de um subnvel do diret%rio 5 para um diret%rio _ por e&emplo#
CD1,A;L( Ddri<eE 4 permite alterarmos o drive corrente#
)&L `D),;7L$ ,L
CI=CL;D1 4 )&ecuta arquivos T#sql# 2 arquivo #sql dever' conter uma s-rie de instrues SQL#
)&L `include teste#sql
FD 0ile E G 4 $amb-m e&ecuta arquivos T#sql#
)&L ateste#sqlb
1HI(G 4 ,inali!a a sesso do @SQL# ou 8 CQ;I( 9
C766I(G 4 *onfirma a transao#
R7LLBACIG 4 Desfa! a transao#
S:7J Dta#elaEG 4 3ostra os nomes das tabelas e&istentes em determinado banco de dados#
)&L SP2F tablesb
S:7J ,I1LDS ,7R Dta#elaEG 4 3ostra os campos de determinada tabela#
)&L SP2F ,@)LDS ,2: ;$2:b
S:7J I=D1H1S ,7R Dta#elaEG 4 Lista de indices da tabela#
S:7J R1LA(I7=S:I9S ,7R Dta#elaEG 4 Lista de relacionamentos da tabela#
LIS( Dta#elaE G 4 Lista conteEdo da tabela#
<Q
1studo Dirigido
*onsideramos a linguagem SQL eminentemente pr'tica, desta forma criamos um e&mplo completo e
propomos um e&erccio an'logo, para tornar o estudante apto a manipular a linguagem SQL de maneira
pr'tica, em conformidade a filosofia eminentemente pr'tica da Linguagem SQL#
2 e&emplo apresentado nesta apostila /' est' disponvel para sua utili!ao do diret%rio `@D)2`SQL,
bastando para isso voc copiar este e&emplo para seu diret%rio e iniciar os testes de forma simultBnea a
sua apresentao pelo professor#
H conveniente que voc procure montar o e&erccio cl'ssico 8mundo9, de forma a testar todos os
conecimentos adquiridos# +ara tanto analise cuidadosamente o e&erccio proposto a seguir, e construa as
relaes, tabelas e queries adequadas ao final de cada e&emplo#
1xerc-cio: )labore Banco de Dados 3undo que contena as seguintes tabelasL *ontinente, +as e *idade#
2bserve que uma cidade dever' pertencer e&clusivamente a um pas e que cada pas dever' estar cadastrado
no continente onde se locali!ar sua 'rea mais importante# ;ssim no obstante grande parte do territ%rio russo
fa!er parte ]sia, a :Essia ser' considerada fa!endo parte da )uropa# ;ssim teramos basicamente uma relao
do tipoL
*idade 44U +as 44U *ontinente
<R
9AR(1 I - Co*andos de 6odi0ica&es do 1s2ue*a e Criao de Banco de Dados
Comando Create
)ste comando permite a criao de tabelas no banco de dados ou mesmo de sua criao#
Sinta&eL
*:);$) D;$;B;S) c nomeZdb Ub
ondeL
nomeZdb 4 indica o nome do Banco de Dados a ser criado#
Sinta&eL
*:);$) $;BL) c nomeZtabela U
8 nomeZatributo< c tipo U d (2$ (7LL e,
nomeZatributoA c tipo U d (2$ (7LL e,
######
nomeZatributo( c tipo U d (2$ (7LL e 9 b
ondeL
nomeZtable 4 indica o nome da tabela a ser criada#
nomeZatributo 4 indica o nome do campo a ser criado na tabela#
tipo 4 indica a definio do tipo de atributo 8 integer8n9, car8n9,
real8n,m9, date### 9#
n4 nEmero de dgitos ou de caracteres
m4 nEmero de casas decimais
;gora vamos criar uma tabela# 7se o editor para salvar em um arquivo ou digite na lina de comando do
@SQL#
CR1A(1 DA(ABAS1 (RABAL:7G
2 comando acima criou um Banco de Dados, por-m este na verdade no passa de uma abertura no diret%rio,
pois no conta com nenuma tabela#
;gora criaremos as tabelas que estaro contidas no Banco de Dados $:;B;LP2#
; primeira $abela ser' a de Departamentos 8D)+$9# )sta tabela conter' al-m dos campos tamb-m sua cave
prim'ria, suas caves estrangeiras e tamb-m seus ndices# ; segunda tabela ser' a de )mpregados 8)3+9, que
tamb-m ser' criada#
(o devemos esquecer de primeiramente abrirmos o Banco de Dados# Diferentemente do que ocorre em
alguns aplicativos, em SQL o fato de criarmos um Banco de Dados, no significa que o banco rec-m criado /'
est' preparado para utili!ao# ; instruo a seguir, providencia a abertura do Banco de Dados criado#
791= DA(ABAS1 (RABAL:7G
;gora estamos prontos para criarmos as tabelas necess'rias# Lembramos aos )studantes, que o ;rquivo
$;BS#SQL, cont-m todas as instrues necess'rias para criao do Banco de Dados $rabalo e de suas
tabelas# =' o ;rquivo D;D2S#SQL ir' popular estas tabelas# +ara efeitos did'ticos, criamos as tabelas de
forma que sua populao, em outras palavras os dados, se/am facilmente referenci'veis pelos estudantes#
;ssim sendo, na tabela de departamentos, contamos com C departamentos, cada um deles tendo seu gerente#
$odos os IgerentesJ tem nomes de cantoras brasileiras 8"al *osta, 3arina Lima, etc9, todos os Ioper'riosJ
tem nomes de /ogadores de futebol, todas as vendedoras tem nomes de /ogadoras de volei, todas as
<V
balconistas tem nome de /ogadoras de basquete e o presidente da empresa e&emplo, tem o mesmo nome do
presidente do Brasil# Desta forma os testes devem resultar em grupos bastante definidos# ;ssim se voc
estiver listando "erentes e aparecer um om.nimo da ;na +aula 8/ogadora de volei9, verifique sua querY
atentamente, pois muito provavelmente a mesma estar' errada#
; seguir c%digo necess'rio a criao da tabela Departamento e seu ndiceL
create ta#le Dept
KDep=u*e integerK$L not null?
Dep=o*e c/arKML not null?
DepLoca c/arKML not null?
Dep7rca integerK1?L?
pri*arB 5eB KDep=u*eL
LG
create uni2ue index Dep=u* on Dept KDep=u*e ascLG
(ote4se que a cave prim'ria /' est' definida /untamente com o registro da tabela# ; criao do ndice, que
por ra!es %bvias deve ser criado ap%s a tabela, naturalmente - um comando totalmente independente do
primeiro create, que serviu para criar a tabela e suas caracterstica b'sicas#
?amos analisar o c%digo necess'rio para a criao da tabela de empregados, apresentado a seguirL
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/arKML ?
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
; $abela de )mpregados no poderia ter sido criada antes da $abela de Departamento, pois cont-m uma
referncia direta 0quela tabela# Quando declaramos que Dep!u"e - cave estrangeira, promovemos de fato a
ligao do cadastro de empregados como o cadastro de departamentos# ;o restringirmos as e&cluses,
permitimos a e&istncia de funcion'rios no alocados a nenum departamento# ;pesar desta pr'tica ser
contr'ria a tese de que devemos possuir apenas tuplas perfeitamente relacion'veis em nossas tabelas,
podemos dei&ar esta pequena abertura, pois um usu'rio que e&cluisse inadivertidamente determinado
departamento, acabaria por e&cluir tamb-m uma grande quantidade de funcion'rios, que estivessem ligados a
este departamento#
=' a atuali!ao em cascata dos c%digos de departamento - uma boa providncia, na medida em que teremos,
uma ve! alterado algum c%digo de departamento, a atuali!ao imediata de todos os funcion'rios pertencentes
ao departamento cu/o c%digo foi modificado#
<X
7#ser<a&es:
<4 2bservar que os ndices so parte intrnseca das tabelas#
A4 ; integridade relacional - garantida pelo Banco de Dados e no pelo aplicativo#
K4 )&cluses ou ;lteraes em *aves +rim'rias, podem acarretar e&cluses, anulaes ou at- mesmo perda
de integridade nas tabelas onde esta cave prim'ria e&istir como cave estrangeira# +ortanto -
imprescindvel muito cuidado quando da elaborao do Banco de Dados# 7ma tentao muito comum ao
estudante - comear criando as tabelas do Banco de Dados sem pr-via (ormali!ao# )ste talve! se/a o
melor camino para perder4se tempo em vo, pois quando voc terminar de pro/etar suas telas de entrada
de dados, notar' >que nada funciona1># )sta ser' a sena para usar o velo comando D)L do D2S e depois
comear tudo de novo ###
Comando Drop
)ste comando elimina a definio da tabela, seus dados e referncias#
Sinta&eL
D:2+ $;BL) c nomeZtabela U b
)&L
DR79 (ABL1 169G
Comando Alter
)ste comando permite inserirMeliminar atributos nas tabelas /' e&istentes#
*omandoL
;L$): $;BL) c nomeZtabela U ;DD M D:2+ 8
nomeZatributo< c tipo U d (2$ (7LL e,
nomeZatributo( c tipo U d (2$ (7LL e 9 b
(o e&iste nenum comando SQL que permita eliminar algum atributo de uma relao /' definida# ;ssim
caso voc dese/ar eliminar uma cave prim'ria devidamente referenciada em outra tabela como cave
estrangeira, ao inv-s de obter a eliminao do campo, obter' apenas um erro#
;l-m do comando D:2+ que poder' eliminar uma tabela e suas relaes, tamb-m podemos criar uma relao
que tena os atributos que se dese/a, copiar4se a relao antiga sobre a nova e apgando4se ento a relao que
originalmente dese/'vamos eliminar#
)&L
AL(1R (ABL1 D19( K
ADD D19SALA D1CI6AL K1M?L LG
1xerc-cio: *riar o Banco de Dados 3undo# 2bservar que se um continente for e&cludo, todos os pases
contidos em tal continente tamb-m o sero# )sta situao - conecida como e&cluso em *ascata# 2bservar
tamb-m que a e&cluso de um +as eliminar' todas as *idades contidas no mesmo#
A\
9r+tica
2 )&emplo $rabalo /' possue pequeno programa destinado a construo das tabelas contidas no Banco de
Dados $:;B;LP2# )&ecute >trabalo#sql> de forma a obter as tabelas acima sem necessidade de digitar as
instrues SQL de maneira interativa#
+ara tanto, voc dever' copiar para seu diret%rio de trabalo o arquivo >trabalo#sql> do diret%rio `@D)2`SQL#
)&ecuteL >atrabalob> que dever'L
4 *riar o banco de dados $rabalo#
4 ;brir o banco de dados $rabalo#
4 *riar as $abelas, @ndices e :elaes contidas neste Banco de Dados#
+osteriormente e&ecute o comando >soG tables>, que dever' e&ibir as tabelas >dept> e >emp>#
) ao e&ecutar >soG fields dept> sero e&ibidos os campos da tabela >dept>#
*opie e e&ecute encetra#sql do diret%rio `@D)2`SQL de forma a obter um con/unto de dados preparados para
os testes a seguir apresentados#
(a pr%&ima etapa de nosso curso, estaremos reali!ando pesquisas utili!ando a instruo Select# =ulgamos
conveniente que os estudantes populem seu e&erccio e reali!em e&erccios an'logos aos apresentados na
Base de Dados $rabalo no Banco de Dados 3undo#
A<
9arte II - Co*andos de Consulta ao 1s2ue*a
Devemos ressaltar que a linguagem SQL - utili!ada tanto pelos profissionais respons'veis pelos dados, onde -
ressaltada a figura do ;dministrador do Banco de Dados e dos ;nalistas de Dados, como tamb-m pelos
desenvolvedores de ;plicaes# )nquanto 0queles esto preocupados com o desempeno, integridade do
Banco de Dados e utili!am toda gama de recusos disponveis no SQL, estes esto preocupados apenas em
>transformar dados em informaes>, portanto para os desenvolvedores costuma4se di!er que conecer o
>select> /' basta# )m nosso curso enfati!aremos a importBncia de $2D2S os comandos do SQL, mas sabemos
de antemo que os professores respons'veis pelas linguagens @D)2, ?B e Delpi, ressaltaro a
preponderBncia da instruo >select>, que ser' apresentada a seguir e no no final do curso de SQL como
geralmente acontece, pelo fato de que diversas disciplinas necessitam especificamente deste comando, que
passaremos a apresentarL
1L Seleo de todas os ca*pos Kou colunasL da ta#ela de Departa*entosA
:espL
S)L)*$ T ,:23 D)+$b
2 e&emplo utili!a o coringa >T> para selecionar as colunas na ordem em que foram criadas# ; instruo
'elect, como pudemos observar seleciona um grupo de registros de uma 8ou mais9 tabela8s9# (o caso a
instruo (ro" nos indica a necessidade de pesquisarmos tais dados apenas na tabela Dept#
J/ere co*o #ase das Restrio de tuplas#
; cl'usula >Gere> corresponde ao operador restrio da 'lgebra relacional# *ont-m a condio que as tuplas
devem obedecer a fim de serem listadas# )la pode comparar valores em colunas, literais, e&presses
aritm-ticas
ou funes#
; seguir apresentamos operadores l%gicos e complementares a serem utili!ados nas e&presses apresentadas
em Gere#
7peradores l@gicos
operador significado
f igual a
U maior que
Uf maior que ou igual a
c menor que
cf menor que ou igual a
)&emplosL
S)L)*$ )3+(23), )3+S):?
,:23 )3+
FP):) D)+(73) U <\b
S)L)*$ )3+(23), )3+S):?
,:23 )3+
FP):) )3+S):? f g"):)($)gb
2 con/unto de caracteres ou datas devem estar entre ap%strofes 8h9 na cl'usula >Gere>#
AA
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 1A
:espL (este problema precisamos de uma e&presso que - a combinao de um ou mais valores, operadores
ou funes que resultaro em um valor# )sta e&presso poder' conter nomes de colunas, valores num-ricos,
constantes e operadores aritm-ticos#
S)L)*$ D)+(23), D)+2:*; T <A
,:23 D)+$
FP):) D)+2:*; 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
:espL (este e&emplo deveremos denominar colunas por apelidos# 2s nomes das colunas mostradas por uma
consulta, so geralmente os nomes e&istentes no Dicion'rio de Dado, por-m geralmente esto arma!enados na
forma do mais puro >informatiqus>, onde >todo mundo> sabe que *li*odi significa *%digo do *liente# H
possvel 8e prov'vel9 que o usu'rio desconea estes smbolos, portanto devemos os apresentar dando
apelidos 0s colunas >contaminadas> pelo informatiqus, que apesar de fundamental para os analistas, somente
so vistos como enigmas para os usu'rios#
S)L)*$ D)+(23) >D)+;:$;3)($2>, D)+2:*; T <A >2:*;3)($2 ;(7;L>
,:23 D)+$
FP):) D)+2:*; U <\\\\\b
$L Apresente todos os sal+rios existentes na e*presa? porN* o*ita e<entuais duplicidadesA
:espL ; cl'usula Distinct elimina duplicidades, significando que somente relaes distintas sero apresentadas
como resultado de uma pesquisa#
S)L)*$ D@S$@(*$ )3+S):?
,:23 )3+b
'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
:espL Dese/amos um tratamento diferenciado para valores nulos# Qualquer coluna de uma tupla que no
contena informaes - denominada de nula, portanto informao no e&istente# @sto no - o mesmo que
>!ero>, pois !ero - um nEmero como outro qualquer, enquanto que um valor nulo utili!a um >bYte> de
arma!enagem interna e so tratados de forma diferenciada pelo SQL#
S)L)*$ )3+(23), )3+S;L; W )3+*23@
,:23 )3+b
S)L)*$ )3+(23), (?L8)3+S;L;,\9 W (?L8)3+*23@,\9
,:23 )3+b
2bsL a funo >(?L> - utili!ada para converter valores nulos em !eros#
AK
)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
:espL ; cl'usula 2rder BY modificar' a ordem de apresentao do resultado da pesquisa 8ascendente ou
descendente9#
S)L)*$ )3+(23), )3+S):?
,:23 )3+
2:D): B_ )3+(23)b

S)L)*$ )3+(23), )3+S):?
,:23 )3+
2:D): B_ )3++(23) D)S*b

(otaL $amb-m - possvel fa!er com que o resultado da pesquisa vena classificado por v'rias colunas# Sem a
claEsula >order bY> as linas sero e&ibidas na sequncia que o S"BD determinar#
4L Selecione os =o*es dos Departa*entos 2ue este8a* na 0+#ricaA
:espL
S)L)*$ D)+(23)
,:23 D)+$
FP):) D)+L2*; f >S;2 +;7L2>b
2 e&emplo e&igiu uma restrio 8So +aulo9 que nos obrigou a utili!ar da instruo Fere# ;lguns analistas
costumam afirmar em tom /ocoso que SQL no passa de
>Selecione algo De algum lugar 2nde se verificam tais relaes>
;creditamos que esta brincadeira pode ser Etil ao estudante, na medida em que facilita sua compreenso dos
ob/etivos elementares do SQL#
De*ais 7peradores
2perador Significado
betGeen ### and ### entre dois valores 8 inclusive 9
in 8 #### 9 lista de valores
liDe com um padrao de caracteres
is null - um valor nulo
)&emplosL
S)L)*$ )3+(23), )3+S;L;
,:23 )3+
FP):) )3+S;L; B)$F))( C\\ ;(D <\\\b
S)L)*$ )3+(23), D)+(73)
,:23 )3+
FP):) D)+(73) @( 8<\,K\9b
AN
S)L)*$ )3+(23), )3+S):?
,:23 )3+
FP):) )3+(23) L@i) g,jgb

S)L)*$ )3+(23), )3+S):?
,:23 )3+
FP):) )3+*23@ @S (7LLb
2 smbolo >j> pode ser usado para construir a pesquisa 8>j> f qualquer sequncia de nenum at- v'rios
caracteres9#
7peradores =egati<os
operador descrio
cU diferente
not nomeZcoluna f diferente da coluna
not nomeZcoluna U no maior que
not betGeen no entre dois valores informados
not in no e&istente numa dada lista de valores
not liDe diferente do padrao de caracteres informado
is not null no - um valor nulo
QL Selecione os 1*pregados cu8os sal+rios se8a* *enores 2ue 1MMM ou *aiores 2ue "'MMA
:espL (ecessitaremos aqui a utili!ao de e&presso negativas# ; seguir apresentamos operadores negativos#
S)L)*$ )3+(23), )3+S;L;
,:23 )3+
FP):) )3+S;L; (2$ B)$F))( <\\\ ;(D KC\\b

RL Apresente todos os 0uncion+rios co* sal+rios entre MM e 4MM e 2ue se8a* %endedoresA
:espL (ecessitaremos de consultas com condies mEltiplas#
2peradores >;(D> 8)9 e >2:> 8279#
S)L)*$ )3+(23), )3+S;L;, )3+S):?
,:23 )3+
FP):) )3+S;L; B)$F))( R\\ ;(D A\\\
;(D )3+S):? f g?)(D)D2:gb

1ML Apresente todos os 0uncion+rios co* sal+rios entre MM e 4MM ou 2ue se8a* %endedoresA
:espL
S)L)*$ )3+(23), )3+S;L;, )3+S):?
,:23 )3+
FP):) )3+S;L; B)$F))( R\\ ;(D A\\\
2: )3+S):? f g?)(D)D2:gb
AC
11L Apresente todos os 0uncion+rios co* sal+rios entre MM e 4MM e 2ue se8a* %endedores ou
BalconistasA
:espL
S)L)*$ )3+(23), )3+S;L;, )3+S):?
,:23 )3+
FP):) )3+S;L; B)$F))( R\\ ;(D A\\\
;(D 8 )3+S):? f gB;L*2(@S$;g 2: )3+S):? f g?)(D)D2:g 9b
,un&es de Caracteres
LoGer 4 fora caracteres maiEsculos aparecerem em minEsculos#
7pper 4 fora caracteres minEsculos aparecerem em maiEsculos#
*oncat8&,Y94 concatena a string >&> com a string >Y>#
Substring8&,Y,str94 e&trai um substring da string >str>, comeando em >&>, e termina em >Y>#
$oZ*ar8num94 converte um valor num-rico para uma string de caracteres#
$oZDate8car,fmt94 converte uma string caracter em uma data#
kQ 4 converte data para o formato apresentado#

1L Apresente o no*e de todos os e*pregados e* letras *in>sculasA
:espL
S)L)*$ L2F):8 )3+(23) 9
,:23 )3+b

1"L Apresente o no*e de todos os e*pregados Kso*ente as 1M pri*eiras letrasLA
:espL
S)L)*$ S7BS$:@(" 8<,<\,)3+(23)9
,:23 )3+b
1$L Apresente o no*e de todos os e*pregados ad*itidos e* M1SM1SQMA
:espL
S)L)*$ T
,:23 )3+
FP):) )3+;D3@ f kQ>DD4;;;4____>8>\<4=;(4<XV\>9b
ou
S)L)*$ T
,:23 )3+
FP):) )3+;D3@ f kQ8>\<4=;(4<XV\>9b
AQ
,un&es Agregadas Kou de Agrupa*entoL
funo retorno
avg8n9 m-dia do valor n, ignorando nulos
count8e&pr9 ve!es que o nEmero da e&pr avalia para algo nao nulo
ma&8e&pr9 maior valor da e&pr
min8e&pr9 menor valor da e&pr
sum8n9 soma 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
:espL
S)L)*$ ;?"8)3+S;L;9 ,:23 )3+b
S)L)*$ 3@(8)3+S;L;9 ,:23 )3+b
S)L)*$ 3;58)3+S;L;9 ,:23 )3+b
S)L)*$ S738)3+S;L;9 ,:23 )3+b
Agrupa*entos
;s funes de grupo operam sobre grupos de tuplas8linas9# :etornam resultados baseados em grupos de
tuplas em ve! de resultados de funes por tupla individual# ; claEsula >group bY> do comando >select> -
utili!ada para dividir tuplas em grupos menores#
; cl'usula >":27+ B_> pode ser usada para dividir as tuplas de uma tabela em grupos menores# ;s funes
de grupo devolvem uma informao sumari!ada para cada grupo#
1)L Apresente a *Ndia de sal+rio pagos por departa*entoA
:espL
S)L)*$ D7+(73), ;?"8)3+S;L;9
,:23 )3+
":27+ B_ D)+(73)b

2bs#L Qualquer coluna ou e&presso na lista de seleo, que no for uma funo agregada, dever' constar da
claEsula >group bY># +ortanto - errado tentar impor uma >restrio> do tipo agregada na cl'usula Fere#
:a<ing
; cl'usula >P;?@("> pode ser utili!ada para especificar quais grupos devero ser e&ibidos, portanto
restringindo4os#
AR
14L Reto*e o pro#le*a anterior? porN* apresente resposta apenas para departa*entos co* *ais de 1M
e*pregadosA
:espL
S)L)*$ D)+(73), ;?"8)3+S;L;9
,:23 )3+
":27+ B_ D)+(73)
P;?@(" *27($8T9 U Kb
2bs#L ; claEsula >group bY> deve ser colocada antes da >aving>, pois os grupos so formados e as funes de
grupos so calculadas antes de se resolver a cl'usula >aving>#
; cl'usula >Gere> no pode ser utili!ada para restringir grupos que devero ser e&ibidos#
)&emplificando )::2 tpico 4 :estringindo 3-dia 3aior que <\\\L

S)L)*$ D)+(73), ;?"8)3+S;L;9
,:23 )3+
FP):) ;?"8S;L;:@29 U <\\\
":27+ B_ D)+(73)b
8 )sta seleo est' )::;D;1 9
S)L)*$ D)+(73), ;?"8)3+S;L;9
,:23 )3+
":27+ B_ D)+(73)
P;?@(" ;?"8)3+S;L;9 U <\\\b
8 Seleo ;dequada 9
Se2T!ncia no co*ando OSelectO:
S)L)*$ coluna8s9
,:23 tabela8s9
FP):) condio8es9 da8s9 tupla8s9
":27+ B_ condio8es9 do8s9 grupo8s9 de tupla8s9
P;?@(" condio8es9 do8s9 grupo8s9 de tupla8s9
2:D): B_ coluna8s9b
; >sql> far' a seguinte avaliaoL
a9 FP):), para estabelecer tuplas individuais candidatas 8no pode conter funes de grupo9
b9 ":27+ B_, para fi&ar grupos#
c9 P;?@(", para selecionar grupos para e&ibiao#
12ui-Uuno K Uuno por igualdade L
2 relacionamento e&istente entre tabelas - camado de equi4/uno, pois os valores de colunas das duas
tabelas so iguais# ; )qui4/uno - possvel apenas quando tivermos definido de forma adequada a cave
estrangeira de uma tabela e sua referncia a cave prim'ria da tabela precedente# ;pesar de admitir4se em
alguns casos, a equi4/uno de tabelas, sem a correspondncia *ave +rim'ria4*ave )strangeira,
recomendamos fortemente ao estudante no utili!ar este tipo de construo, pois certamente em nenum
momento nos e&emplos propostos em nossa disciplina ou nas disciplinas de ;n'lise e +ro/eto de Sistemas,
sero necess'rias tais /unes#
AV
1QL Listar =o*es de 1*pregados? Cargos e =o*e do Departa*ento onde o e*pregado tra#al/aA
:espL 2bservemos que dois dos trs dados solicitados esto na $abela )mp, enquanto o outro dado est' na
$abela Dept# Deveremos ento acessar os dados restringindo convenientemente as relaes e&istentes entre as
tabelas# De fato sabemos que D)+(73) - cave prim'ria da tabela de Departamentos e tamb-m - cave
estrangeira da $abela de )mpregados# +ortanto, este campo ser' o respons'vel pela equi4/uno#
S)L)*$ ;#)3+(23), ;#)3+S):?, B#D)+(23)
,:23 )3+ ;, D)+$ B
FP):) ;#D)+(73) f B#D)+(73)b
2bs#L (ote que as tabelas quando cont-m colunas com o mesmo nome, usa4se um apelido >alias> para
substituir o nome da tabela associado a coluna# @magine que algu-m tivesse definido (23) para ser o (ome
do )mpregado na $abela de )mpregados e tamb-m (23) para ser o (ome do Departamento na $abela de
Departamentos# $udo funcionaria de forma adequada, pois o ali's se encarregaria de evitar que uma
ambiqOidade fosse verificada# )mbora SQL resolva de forma muito elegante o problema da nomenclatura
idntica para campos de tabelas, recomendamos que o estudante fortemente evite tal forma de nomear os
campos# 2 SQL nunca confundir' um ;#(23) com um B#(23), por-m podemos afirmar o mesmo de n%s
mesmos6

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
:espL +recisamos criar um auto4relacionamento, ou se/a, /untar uma tabela a ela pr%pria# H possvel /untarmos
uma tabela a ela mesma com a utili!ao de apelidos, permitindo /untar tuplas da tabela a outra tuplas da
mesma tabela#
S)L)*$ ;#)3+(73), ;#)3+(23), ;#)3+S):?, B#)3+(23)
,:23 )3+ ;, )3+ B
FP):) ;#)3+"):) f B#)3+(73)b
As Su#-Consultas
7ma sub4consulta - um comando >select> que - aninado dentro de outro >select> e que devolve resultados
intermedi'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
:espL
S)L)*$ )3+(23), )3+S):?
,:23 )3+ ;
FP):) K\\\\\ @( 8 S)L)*$ D)+2:*;
,:23 D)+$
FP):) D)+$#D)+(73) f ;#D)+(73) 9b
(otaL 2bserve que a cl'usula @( torna4se verdadeira quando o atributo indicado est' presente no con/unto
obtido atrav-s da subconsulta#
AX
1L Relacione todos os departa*entos 2ue possue* e*pregados co* re*unerao *aior 2ue "'MMA
:espL
S)L)*$ D)+(23)
,:23 D)+$ ;
FP):) )5@S$S 8S)L)*$ T
,:23 )3+
FP):) )3+S;L; U KC\\ ;(D )3+#D)+(73) f ;#D)+(73)g9b
(otaL 2bserve que a cl'usula )5@S$S indica se o resultado de uma pesquisa cont-m ou no tuplas# 2bserve
tamb-m que poderemos verficar a no e&istncia 8(2$ )5@S$S9 caso esta alternativa se/a mais conveniente#
;ni&es
+odemos eventualmente unir duas linas de consultas simplesmente utili!ando a palavra reservada 7(@2(#
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
:espL +oderamos resolver esta pesquisa com um Enico Select, por-m devido ao fato de estarmos trabalando
em nosso e&emplo com apenas duas tabelas no consiguimos criar um e&emplo muito adequado para
utili!ao deste recurso#
8Select T
,rom )mp
Fere )mp(ume U <\9
7nion
8Select T
,rom )mp
Fere Dep(ume U <\9b
K\
Inser&es? Altera&es e 1xclus&es
7ma linguagem direcionada a e&trao de informaes de um con/unto de dados, em tese no deveria
incorporar comandos de manipulao dos dados# Devemos observar contudo que a mera e&istncia de uma
linguagem padroni!ada para acesso aos dados >convidava> os desenvolvedores a aderirem a uma linguagem
>padro> de manipulao de tabelas# (aturalmente cada desenvolvedor coloca >um algo mais> em seu SQL
8SQL +L7S, SQL T, @SQL, e toda sorte de nomenclaturas9, por um lado desvirtuando os ob/etivos da
linguagem 8padroni!ao absoluta9, mas em contrapartida otimi!a os acessos ao seu banco de dados e por
maior que se/am estas mudanas, /amais so to importantes que impeam que um programador versado em
SQL tena grandes dificuldades em se adaptar ao padro de determinada implementao# De fato as
diferenas entre o SQL da SYbase, 2racle, 3icrosoft, so muito menores dos que as e&istentes entre o *, o
B;S@* e o +ascal, que so camadas de linguagens >irms>, pois todas originam4se conceitualmente no
,2:$:;(# +odemos observar que todas as trs linguagens mencionadas possuem estruturas de controle tipo
>para> 8for9, >enquanto> 8Gile9 e repita 8do##Gile, repeat##until9# $odas trabalam com blocos de instruo,
todas tem regras semelantes para declarao de vari'veis e todas usam comandos de tomada deciso
baseadas em instrues do tipo >se> ou >caso>, por-m apesar de tantas semelanas 8sic9, - praticamente
impossvel que um programador e&celente em uma linguagem consiga rapidamente ser e&celente em outra
linguagem do grupo# +oderamos arriscar a di!er que um e&celente programador * que utili!e a
implementao da SYmantec ter' que passar por um breve perodo de adaptao para adaptar4se ao * da
3icrosoft#
2 que ocorreria ento se este programador tiver que adaptar4se ao Delpi 8+ascal9 da Borland6
De forma alguma o mesmo ocorrer' com o especialista em SQL ao ter que migrar do Banco de Dados 5 para
o Banco de Dados _# (aturalmente e&istir' a necessidade de aprendi!ado, mas este programador poder' ir
adaptando4se aos poucos sem precisar ser retreinado, o que - um aspecto e&tremamente vanta/oso para as
empresas#
Inserir KInsertL
@(S):$ @($2 ctabelaU dccamposUe d?;L7)S cvaloresUe
)&L
@(S):$ @($2 D)+$b
+ossibilita a insero de registros de forma interativa#
@(S):$ @($2 D)+$ 8D)+(73),D)+(23),D)+L2*;9 ?;L7)S 8R\,>+:2D7*;2>,>:@2 D)
=;()@:2>9b
+ossibilita a insero de registros em tabelas sem digitao dos dados#
Atuali3ar K;pdateL
7+D;$) ctabelaU S)$ ccampoU f ce&pressoU dFP):) ccondioUeb
)&L
7+D;$) )3+ S)$ )3+S;L; f )3+S;L;T <#A FP):) )3+S;L;c <\\\b
K<
1xcluir KDeleteL
D)L)$) ,:23 ctabelaU dFP):) ccondioUeb
)&L
D)L)$) ,:23 emp FP):) )3+S;L; U C\\\b
(ransa&es
3uitas ve!es gostaramos que determinado processo, caso fosse abortado por qualquer motivo, pudesse ser
inteiramente cancelado# @maginemos por e&emplo um usu'rio digitando um pedido# @maginemos ainda que o
sistema possa reservar cada item solicitado de maneira >on line>, ou se/a ao mesmo tempo em que estou
digitando a quantidade o sistema /' >empene> uma quantidade equivalente no estoque# @maginemos ainda
que o sistema deve cancelar todas as operaes se apenas um dos itens no puder ser atendido# "rande
problema, caso no pud-ssemos anular todos os processos a partir de determinada condio#
?amos simular tal ocorrncia com nosso banco de dados )3+# @maginemos que ao inv-s de digitarmos
D)L)$) ,:23 emp FP):) salario U C\\\b tiv-ssemos digitado D)L)$) ,:23 emp FP):) salario U
C\\b ;o inv-s de eliminarmos A registros, praticamente teramos eliminado o banco de dados todo# +ara
evitarmos que um erro de digitao, ou um processo iniciado por-m sem condio de ser completado
integralmente comprometa todos nossos dados podemos criar uma transao que nos assegurar' que nossos
testes se/am bem sucedidos ou cancelados sem comprometer nossos dados#
begin transactionb
delete from emp Gere salario U C\\b
if SQLZ:)*2:D*27($ U A\ $P)(b
:2LLB;*i $:;S;*$@2(b
else
*233@$b
endifb
end transactionb
%is&es
7ma viso consiste basicamente de uma tabela derivada de outras tabelas# *onsiderando o e&emplo
$:;B;LP2, poderamos criar uma viso baseada na $abela de )mpregados 8)3+9 e na $abela de
Departamentos 8D)+$9 onde tiv-ssemos somente os (omes dos ,uncion'rios e os Departamenos nos quais
estes trabalassem# $eramos algo assemelado ao abai&o representado
*:);$) ?@)F )3+ZD)+
;S S)L)*$ )#)3+(23), D#D)+(23)
,:23 )3+ ), D)+$ D
FP):) )#D)+(73) f D#D)+(73)b
Devemos observar queL
<4 7ma viso definida sobre uma Enica tabela somente ser' atuali!'vel se os atributos da tal viso contiverem
a cave prim'ria de tal tabela#
A4 ?ises sobre v'rias tabelas no so passveis de atuali!aes#
K4 ?ises que se utili!am de funes de agrupamentos, tamb-m no podero ser atuali!adas#
KA
9AR(1 III - Relat@rios
*omandoL
:)+2:$ D@S$@(*$ M 7(@Q7)
d atributo8s9 e
:)+2:$$2+
+;")$2+
$2+
D)$;@L
(2()
B2$$23
+;")B2$$23
:)+2:$B2$$23
,:23 d tabela8s9 e
d FP):) clausula4Gere e
d ":27+ B_ clausula4grupo e
d 2:D): B_ clausula4order bY eb
*omo e&emplo converteremos um simples Select em um :eport, temosL
S)L)*$ )3+(23)
,:23 )3+
FP):) D)+(73) f <\\\b
:)+2:$
D)$;@L )3+(23)
FP):) D)+(73) f <\\\b
+odemos direcionar a saida de um relat%rio tanto para um arquivo como para uma impressora#
+ara um arquivoL
:)+2:$ 2( I:)L;$#D;$J ###
+ara uma impressoraL
:)+2:$ 2( L+LJ ###
;gora incrementando um report temosL
:)+2:$
:)+2:$$2+ *2L <\, ITTT :)L;$2:@2 D) ,7(*@2(;:@2S TTT I,
$2D;_ jQJDDM33M__J, Si@+,
*2L <\, IfffffffffffffffffffffffffffffffffI, Si@+ A
D)$;@L *2L <\, (23) j*AA, S;L;:@2 j,S, ;D3@SS;2 jQJDDM33M__J
:)+2:$B2$$23 *2L <\,
IfffffffffffffffffffffffffffffffffI, Si@+,
*2L A\, I$2$;LLJ, $2$;L8S;L;:@29
,:23 )3+
2:D): B_ (23)b
KK
2ndeL
:)+2:$$2+ 4 2 que sera impresso no topo do relat%rio#
+;")$2+ 4 @mpresso em cada topo de pagina#
$2+ 4 @mpresso em cada $opo do Sort4"rupo do relat%rio#
D)$;@L 4 2 que sera impresso em cada lina#
(2() 4 Se no tiver resultado o select, no sera impresso o relat%rio#
B2$$23 4 @mpresso em cada Bottom do Sort4"rupo do relat%rio
+;")B2$$23 4 2 que sera impresso no rodap- de cada pagina#
:)+2:$B2$$23 4 2 que sera impresso no rodape do relat%rio#
,ormatosL
j* 4 caracter
jD 4 data
Y 4 ano,
n 4 mes num-rico,
a 4 mes alfanum-rico,
d 4 dia,
/ 4 dia e ano /uliano
)&emploL jDJddMmmMYYJ
j@ 4 inteiro
j, 4 ponto flutuante
j,Sl ondeL S 4 separador de K digitos e decimal point
l 4 !eros sero suprimidos
jQ 4 data
j= 4 Pora
4 ora, m 4 minutos, s 4 segundos
j$ 4 ora
) temos as funesL $2$;L, ;?):;"), 3;5@373, 3@(@373#
KN

Você também pode gostar