You are on page 1of 48

BANCO DE DADOS

Professor Marcos Antonio

Atualizada: 27/07/2008

Copyright Julho-2008 - Marcos Antonio Moreira. As vrias Marcas Registradas que aparecem no decorrer desta apostila. Mais do que simplesmente listar esses nomes e informar quem possui seus direitos de explorao, ou ainda imprimir o logotipo das mesmas, o autor declara estar utilizando tais nomes apenas para fins editoriais, em benefcio exclusivo do dono da marca registrada, sem inteno de infringir as regras de sua utilizao.

SUMARIO
UM POUCO DE HISTRIA ................................................................................................................ 1 VANTAGENS DO SQL......................................................................................................................... 3 VANTAGENS DO BANCO DE DADOS SGBD ................................................................................... 3 SQL CONJUTO ALGEBRA RELACIONAL 1 ................................................................................ 5 MODELO ENTIDADE-RELACIONAMENTO E/R ........................................................................... 6 REPRESENTAO GRFICA ............................................................................................................. 7 CARDINALIDADE DE RELACIONAMENTOS .................................................................................... 8 GRAU DO RELACIONAMENTO ....................................................................................................... 10 DERIVAO DE TABELAS ............................................................................................................... 12 ATRIBUTO IDENTIFICADOR .......................................................................................................... 13 RELACIONAMENTOS ENTRE ENTIDADES .................................................................................... 15 NORMALIZAO DE DADOS .......................................................................................................... 15 TERCEIRA FORMA NORMAL (3FN) ............................................................................................... 18 AS PARTES DA LIGUAGEM SQL ..................................................................................................... 20 MODELO RELACIONAL APRESENTAO SIMPLIFICADA ....................................................... 21 ESTRUTURA DA INFORMAO...................................................................................................... 23 VISES DO BANCO DE DADOS ..................................................................................................... 23 VANTAGENS DO BANCO DE DADOS EM RELAO ARQUITETURA TRADICIONAL ....... 24 SQL COMANDOS .............................................................................................................................. 25 CREATE TABLE ............................................................................................................................. 25 ALTER TABLE ................................................................................................................................ 25 DROP TABLE ................................................................................................................................. 26 TIPOS DE DADOS ............................................................................................................................ 26 SELECT ALL FROM <nome-tabela> [, <nome-tabela>] ...................................................... 28 DEMAIS OPERADORES.................................................................................................................... 33 OPERADORES NEGATIVOS ............................................................................................................ 33 FUNES DE CARACTERES ........................................................................................................... 35 FUNES AGREGADAS (OU DE AGRUPAMENTO) ...................................................................... 36 AGRUPAMENTOS ............................................................................................................................. 36 JOIN - (JUNO POR IGUALDADE) .............................................................................................. 38 INNER JOIN - LEFT JOIN RIGHT JOIN E FULL OUTER JOIN ................................................ 39 AS SUBCONSULTAS ......................................................................................................................... 41 INSERES, ALTERAES E EXCLUSES ................................................................................... 42 FERRAMENTA DE GERENCIAMENTO IBEXPERT...................................................................... 43 EXEMPLO PRTICO CRIAR UM BANCO DE DADOS............................................................. 43

REFERNCIAS BIBLIOGRFICAS ................................................................................................... 44

1|Pgina

UM POUCO DE HISTRIA
O termo banco de dados foi criado inicialmente pela comunidade de computao, para indicar colees organizadas de dados armazenados em computadores digitais, porm o termo atualmente usado para indicar tanto bancos de dados digitais como bancos de dados disponveis de outra forma. DBMS (Database Management System), tambm conhecido como Sistema Gerenciador de Bando de Dados SGBD e SQL (Structure Query Language) so frutos de todo um processo de desenvolvimento tecnolgico na rea de armazenamento e processamento da informao. Foram desenvolvidos com base no modelo hierrquico que dispe as entidades na forma de uma arvore com diferentes nveis hierrquicos. Em 1970, E.F Codd, membro da equipe do laboratrio de pesquisa da IBM em So Jose, Califrnia, publicou um trabalho agora clssico, A Relational Modelo of Data for Large Shared Data Banks um modelo relacional de dados para grandes bancos de dados compartilhados (Coomunications of the ACM, Vol. 13, no 6, junho de 1970) em que se estabeleceu um grupo de princpios abstratos sobre gerencia de banco de dados: Assim chamado Modelo Relacional Todo o campo da tecnologia de banco de dados relacional tem suas origens nesse trabalho. As idias de Codd incentivaram experincias e pesquisas em universidades, laboratrios de pesquisa industrial e estabelecimento semelhante, que resultaram em diversos produtos relacionais agora disponveis no mercado. O modelo relacional, proposto por E.F Codd no inicio da dcada de 70, acabou prevalecendo e constitui a base dos modernos SGDBs atuais. Um aspecto em particular da referida pesquisa era o projeto de implementao de prottipo de uma serie de linguagens relacionais. Uma linguagem relacional uma linguagem que efetua, em alguma forma sinttica ou concreta, alguma ou todas as caractersticas do modelo relacional abstrato. Diversas dessas linguagens foram criadas no inicio e no meio doa anos 70. Um dessas linguagens em particular foi a chamada SEQUEL (Structured English Query Language) definida por D.D Chamberlim e outros (1974) no laboratrio de pesquisa da IBM em San Jose, Califrnia, e inicialmente implementada em um prottipo da IBM chamado SEQUEL-SRM (1974-1975). Em parte como resultado da experincia com o SEQUEL-XRM foi definida em 19761977 uma verso revisada do SEQUEL, chamada SEQUEL/2 (O nome foi posteriormente alterado para SQL por razes legais). Comeou o trabalho em outro prottipo mais ambicioso da IBM, chamado System R. O system R, uma

2|Pgina implementao de um grande subconjunto da linguagem SQL, tornou-se operacional em 1977. Com o sucesso do System R, tornou-se aparente ao final dos anos 70 que a IBM provavelmente desenvolveria um ou mais produtos baseados na tecnologia System R especificamente, produtos que implementasse a linguagem SQL. Como resultado, outros vendedores tambm comearam a construir seus prprios produtos baseados no SQL. De fato, pelo menos um desses produtos, a saber, o ORACLE, da Relational Software Inc. hoje, Oracle Corparation, foi introduzido no mercado antes dos prprios produtos da IBM. Depois 1981, a IBM anunciou outra verso do SQL/DS para ambiente VM/CMS (1982), e outra para MVS chamado DB2. Nos anos seguintes, diversos outros vendedores tambm anunciaram produtos baseados no SQL. O SQL se tornou o padro no mundo do banco de dados relaciona. O SQL tambm se tornou o padro oficial. Em 1982, o American National Standarts Institute (ANSI) encarregou seu Comit de Banco de Dados (chamado X3H2) de desenvolver uma proposta para uma linguagem relacional padro. Alguns bancos de dados implementam comandos que no so compatveis com padro ANSI tornando seu uso um pouco diferente dos outros SGBDs. A funo da linguagem SQL dar suporte a definio, manipulao e controle dos dados em um banco de dados relacional. Um banco de dados relacional simplesmente um banco de dados que percebido pelo usurio como um grupo de tabelas onde tabelas uma coleo de linhas e colunas. A linguagem SQL assume um papel muito importante nos SGBDs, podendo ter muitos enfoques. Linguagem Interativa de Consulta: Atravs de comandos SQL, os usurios podem montar consultas poderosas sem a necessidade de criao de um programa; podendo utilizar Forms ou ferramentas de montagem de relatrios; Linguagem de Programao para acesso a BDs: Comandos SQL embutidos em programas de aplicao que acessam dados armazenados; Linguagem de Administrao de BDs: O responsvel pela administrao do banco de dados (DBA) pode utilizar comandos SQL para realizar suas tarefas; Linguagem Cliente/Servidor: Os programas (cliente) dos computadores pessoais usam comandos SQL para se comunicarem atravs de uma rede local, compartilhando os dados armazenados e um nico local (servidor). A arquitetura cliente/servidor minimiza o trafego de dados pela rede. Linguagem de Banco de Dados Distribudo: A SQL auxilia na distribuio dos dados atravs de vrios ns conectados ao sistema de computao.

3|Pgina

VANTAGENS DO SQL
Independncia de fabricante: SQL oferecida a praticamente em todos SGBDs. Mltiplas Vises de Dados: A SQL permite ao criador do banco de dados, levarem diferentes vises dos dados a diferentes usurios. Consulta Interativa: A SQL prov um acesso rpido aos dados fornecendo respostas aos usurios a questes complexas, em minutos ou segundos. Reduo dos Custos com Treinamento: Baseado no item anterior, as aplicaes podem se movimentar de um ambiente para outro sem que seja necessria uma reciclagem da equipe de desenvolvimento. Ingls Estruturado de Alto Nvel: A SQL formada por um conjunto bem simples de sentenas em ingls, oferecendo um rpido e fcil entendimento. Portabilidade de Computadores: A SQL pode ser utilizada desde um computador pessoal, passando por uma estao de trabalho at um computador de grande porte.

VANTAGENS DO BANCO DE DADOS SGBD


1 - Reduo ou Eliminao de Redundncias Possibilita a eliminao de dados privativos de cada sistema. Os dados, que eventualmente so comuns a mais de um sistema, so compartilhados por eles, permitindo o acesso a uma nica informao sendo consultada por vrios sistemas. 2 - Eliminao de Inconsistncias Atravs do armazenamento da informao em um nico local com acesso descentralizado e, sendo compartilhada vrios sistemas, os usurios estaro utilizando uma informao confivel. A inconsistncia ocorre quando um mesmo campo tem valores diferentes em sistemas diferentes. Exemplo, o estado civil de uma pessoa solteiro em um sistema e casado em outro. Isto ocorre porque esta pessoa atualizou o campo em um sistema e no o atualizou em outro. Quando o dado armazenado em um nico local e compartilhado pelos sistemas, este problema no ocorre.

4|Pgina 3 - Compartilhamento dos Dados Permite a utilizao simultnea e segura de um dado, por mais de uma aplicao ou usurio, independente da operao que esteja sendo realizada. Deve ser observado apenas o processo de atualizao concorrente, para no gerar erros de processamento (atualizar simultaneamente o mesmo campo do mesmo registro). Os aplicativos so por natureza multiusurio. 4 - Restries de Segurana Define para cada usurio o nvel de acesso a ele concedido (leitura, leitura e gravao ou sem acesso) ao arquivo e/ou campo. Este recurso impede que pessoas no autorizadas utilizem ou atualizem um determinado arquivo ou campo. 5 - Padronizao dos Dados Permite que os campos armazenados na base de dados sejam padronizados segundo um determinado formato de armazenamento (padronizao de tabela, contedo de comps, etc) e ao nome de variveis seguindo critrios padres preestabelecido pela empresa. Ex. Para o campo "Sexo" somente ser permitido armazenamento dos contedos "M" ou "F". 6 - Independncia dos Dados Representa a forma fsica de armazenamento dos dados no Banco de Dados e a recuperao das informaes pelos programas de aplicao. Esta recuperao dever ser totalmente independente da maneira com que os dados esto fisicamente armazenados. Quando um programa retira ou inclui dados o SGBD compacta-os para que haja um menor consumo de espao no disco. Este conhecimento do formato de armazenamento do campo totalmente transparente para o usurio. A independncia dos dados permite os seguintes recursos: a - Os programas de aplicao definem apenas os campos que sero utilizados independente da estrutura interna dos arquivos b - Quando h incluso de novos campos no arquivo, ser feita manuteno apenas nos programas que utilizam esses campos, no sendo necessrio mexer nos demais programas. Obs.: Nos sistemas tradicionais este tipo de operao requer a alterao no lay-out de todos os programas do sistema que utilizam o arquivo. 7 - Manuteno da Integridade Consiste em impedir que um determinado cdigo ou chave em uma tabela no tenha correspondncia em outra tabela.

5|Pgina Ex. Um cdigo de uma determinada disciplina na tabela Histrico Escolar sem a sua descrio na tabela Disciplina.

SQL CONJUTO ALGEBRA RELACIONAL 1


Em banco de dados relacionais as informaes so guardadas em tabelas. Para recuperar uma informao necessria ao usurio, deve-se busc-la em vrias tabelas diferentes, estabelecendo-se um relacionamento entre elas. Esta a origem do nome deste paradigma de banco de dados. Tabelas so na verdade conjuntos. Por exemplo, quando em um sistema existe uma tabela de vendas, esta tabela corresponde ao conjunto de todas as vendas realizadas por empresa. A tabela de vendedores corresponde ao conjunto de vendedores que trabalham em uma empresa. Cada linha ou registro da tabela corresponde a um elemento do conjunto. Consultas e alteraes na base de dados correspondem a operaes realizadas sobre conjuntos. Estas operaes so definidas pela lgebra relacional.

SQL CONJUTO ALGEBRA RELACIONAL 2


Consultas em banco de dados no passam de problemas de lgebra relacional. Assim, como acontecem com a lgebra tradicional, os operadores possuem algumas propriedades. Sabemos que 2 x 3 = 3 x 2. Isto significa que, quando precisamos montar uma expresso de lgebra relacional para chegar a um determinado resultado, podemos faz-lo de mais de uma forma, pois vrias expresses levam ao mesmo resultado. Em outras palavras, quando o banco de dados precisa montar uma expresso algbrica para encontrar um resultado, ele deve escolher uma entre vrias. Apesar de apresentarem o mesmo resultado, as expresses so diferentes, e a diferena far com que o banco de dados adote um diferente caminho para resolver cada uma. Escolher o caminho mais curto e uma das grandes atribuies do banco de dados. Esta a misso do otimizador, um subsistema do banco de dados, responsvel por determinar o plano de execuo para uma consulta.

6|Pgina

MODELO ENTIDADE-RELACIONAMENTO E/R


Definio Consiste em mapear o mundo real do sistema em um modelo grfico que ir representar o modelo e o relacionamento existente entre os dados. Entidade - Identifica o objeto de interesse do sistema e tem "vida" prpria, ou seja, a representao abstrata de um objeto do mundo real sobre o qual desejamos guardar informaes. Exemplo:

Clientes, Fornecedores, Alunos, Funcionrios, Departamentos, etc.


No so entidades: Entidade com apenas um elemento; Operaes do sistema; Sadas do sistema; Pessoas que realizam trabalhos (usurios do sistema); Cargos de direo

Instncia de Entidade - So os elementos da entidade. Exemplo:

Cliente 10, Funcionrio Joo, Aluno Pedro, etc.

Atributo - Informaes que desejamos guardar sobre a instncia de entidade.

Exemplo: Nome do aluno, Nmero da turma, Endereo do fornecedor, Sexo do funcionrio, etc.
Domnio do Atributo - Universo de valores que um atributo pode armazenar. Exemplo:

Conjunto de valores do atributo Sexo do funcionrio: M ou F; Conjunto de valores do atributo Nome do aluno: 40 caracteres alfanumricos. Conjunto de valores do atributo salrio: inteiro maior que 5000
Relacionamentos

Aps a identificao das entidades a incluir no esquema da BD, e dos atributos que as definem, necessrio perceber o modo como estas entidades se relacionam entre si. Assim, um relacionamento uma associao existente entre entidades. Uma entidade definida por um conjunto de dados que de alguma forma se encontram relacionados. Os dados numa entidade encontram-se divididos em

7|Pgina

campos ou atributos que so os elementos que a caracterizam. A cada ocorrncia relativa a uma entidade d-se o nome de registro.

REPRESENTAO GRFICA
- Entidade

- Relacionamento

Relacionamento Representa a associao entre os elementos do conjunto de uma entidade com outra entidade. Exemplo:

O Joo est matriculado na disciplina de Banco de Dados

8|Pgina Onde:

- Joo - Elemento do conjunto de valores do atributo Nome do aluno da entidade Aluno; - Banco de Dados - Elemento do conjunto de valores do atributo Nome da disciplina da entidade Disciplina; - Matriculado - Ligao existente entre um aluno e uma disciplina.

ALUNO

MATRICULADO

DISCIPLINA

CARDINALIDADE DE RELACIONAMENTOS
Representa a freqncia com que existe o relacionamento.

Exemplo:

Relacionamento 1:1 - O Joo casado com a Maria.

9|Pgina Onde: - Joo - Elemento do conjunto de valores do atributo Nome da entidade Homem. - Maria - Elemento do conjunto de valores do atributo Nome da entidade Mulher.

- casado - Ligao entre um homem e uma mulher, sendo que um homem pode ser casado com uma e apenas uma mulher, assim como uma mulher pode ser casada com um e apenas um homem.

1
HOMEM CASADO

1
MULHER

Relacionamento 1:N ou N:1 - O Pedro trabalha no Departamento Pessoal.


Onde: - Pedro - Elemento do conjunto de valores do atributo Nome da entidade Funcionrio. - Depart. Pessoal - Elemento do conjunto de valores do atributo Nome do departamento da entidade Departamento. - trabalha - Ligao entre um Funcionrio e um Departamento, onde um funcionrio pode trabalhar em um e somente um departamento e um departamento pode ter vrios funcionrios.

10 | P g i n a

N
EMPREGADO LOTAO

1
DEPARTAMENTO

Relacionamento N : M - O Antnio est matriculado na disciplina Banco de Dados.


Onde: - Antnio - Elemento do conjunto de valores do atributo Nome da entidade Aluno. - Banco de Dados - Elemento do conjunto de valores do atributo Nome da Disciplina da entidade Disciplina. - matriculado - Ligao existente entre um aluno e uma disciplina, onde um aluno pode estar matriculado em vrias disciplinas e cada disciplina pode ter vrios alunos matriculados.

N
ALUNOS
MATRICULADO

M
DISCIPLINA

GRAU DO RELACIONAMENTO
Indica o nmero de entidade que se relacionam. Relacionamento Binrio Quando existe o relacionamento entre apenas duas entidades. Ex. Um fornecedor comercializa materiais que so utilizados em diversos projetos.

11 | P g i n a

N
FORNECEDOR
COMERCIALIZA

M
MATERIAIS

M N
PROJETOS
UTILIZADOS

Relacionamento Ternrio Quando existe o relacionamento entre trs entidades. Ex. Um fornecedor comercializa materiais que so utilizados em projetos especficos.

1
FORNECEDOR
UTILIZADO

N
MATERIAIS

N
PROJETOS

Exemplos de Relacionamento: - O Professor Alberto leciona Estrutura de Dados e o aluno Pedro cursa Linguagem de Programao

12 | P g i n a

N
PROFESSOR LECIONA

M
DISCIPLINA

N M
ALUNOS

CURSA

DERIVAO DE TABELAS
Analisando o grau de relacionamento e a qualidade de participao possvel identificar o nmero de tabelas necessrias para cada relacionamento. UMA TABELA Relacionamentos de 1:1 com participao obrigatria de ambas as entidades. DUAS TABELAS Relacionamento de 1:1 com participao obrigatria de uma das entidades, em que nesta adicionada uma chave externa; Relacionamentos de 1:N ou N:1 com participao obrigatria do lado N, em que nesta adicionada uma chave externa. TRS TABELAS A terceira tabela responsvel pelo relacionamento entre as outras duas e nela sero includo como chaves externas as chaves primrias das outras duas. A esta tabela d-se o nome de Entidade Associativa.

13 | P g i n a

ATRIBUTO IDENTIFICADOR
Entre os diversos atributos que definem uma entidade deve existir um ou mais campos que identifiquem inequivocamente cada registro. A este(s) atributo(s) dse o nome de Atributo Identificador. ATRIBUTO IDENTIFICADOR o atributo que deve identificar sem ambigidades cada entidade concreta. Para cada entidade deve existir sempre um atributo deste tipo. Geralmente, este atributo desempenha o papel de CHAVE numa entidade ou tabela.

Exemplo: Consideremos a entidade Filmes e os seus atributos:


FILMES (N_Filme, Ttulo, Ator, Realizador, Durao, Classificao) O campo N_Filme um atributo identificador inequivocamente cada ocorrncia (filme) da entidade. pelo fato de identificar

CHAVE PRIMRIA CHAVE PRIMRIA um atributo identificador que representa univocamente cada ocorrncia ou registro de uma tabela. Existem dois tipos de chave primria: Simples - constituda apenas por um atributo; Composta - constituda por dois ou mais atributos. Uma chave primria deve ser: Unvoca O valor da chave primria deve ser nico para todos os registros. No Redundante No caso de uma chave composta no devem ser includos mais campos do que os necessrios. No Nula Nenhum dos valores que compem a chave primria pode conter valores nulos.

14 | P g i n a

Exemplos atributos: ( N_DVD, Ttulo, Intrprete, Editora)


Consideremos a entidade DVD que caracterizada pelos seguintes

O atributo que a identifica univocamente N de DVD visto ser o nico cujos valores nunca se iro repetir.
Deste modo, conclui-se que a chave primria da entidade DVD simples. Consideremos a entidade FAIXA de um DVD que caracterizada pelos

seguintes atributos:

Faixas ( N_DVD, N_FAIXA, Ttulo, Durao, Gnero) Neste caso, os atributos que a identificam univocamente so N_DVD e N_FAIXA, visto serem os nicos cujos valores nunca se iro repetir.
Deste modo, conclui-se que a chave primria da entidade Faixas composta.

CHAVE ESTRANGEIRA OU EXTERNA um atributo que definido como chave primria de uma tabela includo na estrutura de outra tabela. Exemplo: Consideremos as entidades DVD e FAIXA, que identificam um DVD e as suas respectivas Faixas. DVD ( N_DVD, Ttulo, Intrprete, Editora)

FAIXA ( N_DVD, N_FAIXA, Ttulo, Durao, Gnero) O atributo N_DVD da entidade FAIXA faz parte da sua chave primria, no entanto como chave primria da entidade DVD considerado uma chave estrangeira na entidade FAIXA.

15 | P g i n a

RELACIONAMENTOS ENTRE ENTIDADES


O relacionamento entre entidades um dos propsitos das bases de dados relacionais, da a importncia dada seleo da chave primria, pois atravs destas que so estabelecidas as associaes entre as diferentes entidades. Os smbolos convencionados para se representar estes relacionamentos so em nmero reduzido, com significados especficos e fceis de distinguir:

NORMALIZAO DE DADOS
A normalizao um processo que consiste em estruturar as tabelas e atributos de forma a eliminar redundncias e evitar problemas com a insero, eliminao e atualizao dos dados. Este processo composto pelas chamadas formas normais: - 1 Forma Normal (1 FN); - 2 Forma Normal (2 FN); - 3 Forma Normal (3 FN); Um modelo de base de dados que respeite os princpios estipulados at a 3 FN considerado adequadamente elaborado para funcionar num SGBD relacional. A normalizao feita, atravs da anlise dos dados que compem as estruturas utilizando o conceito chamado "Formas Normais (FN)". As FN so conjuntos de restries nos quais os dados devem satisfaz-las. Exemplo pode-se dizer que a estrutura est na primeira forma normal (1FN), se os dados que a compem satisfizerem as restries definidas para esta etapa.

16 | P g i n a A normalizao completa dos dados feita, seguindo as restries das quatro formas normais existentes, sendo que a passagem de uma FN para outra feita tendo como base o resultado obtido na etapa anterior, ou seja, na FN anterior. Para realizar a normalizao dos dados, primordial que seja definido um campo chave para a estrutura, campo este que permite identificar os demais campos da estrutura. Formas Normais existentes: PRIMEIRA FORMA NORMAL (1FN) Consistem em retirar da estrutura os elementos repetitivos, ou seja, aqueles dados que podem compor uma estrutura de vetor. Podemos afirma que uma estrutura est normalizada na 1FN, se no possuir elementos repetitivos. Exemplo: Estrutura original:

Arquivo de Notas Fiscais (Num. NF, Srie, Data emisso, Cod. do Cliente, Nome do cliente, Endereo do cliente, CGC do cliente, Relao das mercadorias vendidas (onde para cada mercadoria temos: Cdigo da Mercadoria, Descrio da Mercadoria, Quantidade vendida, Preo de venda e Total da venda desta mercadoria) e Total Geral da Nota)
Analisando a estrutura acima, observamos que existem vrias mercadorias em uma nica Nota Fiscal, sendo, portanto elementos repetitivos que devero ser retirados. Estrutura na primeira forma normal (1FN): Entidade de Notas Fiscais

(Num. NF, Srie, Data emisso, Cdigo do Cliente, Nome Cliente, Endereo do cliente, CGC do cliente e Total Geral da Nota)
Entidade de Vendas

(Num. NF, Cdigo da Mercadoria, Descrio da Mercadoria, Quantidade vendida, Preo de venda e Total da venda desta mercadoria)
Obs. Os campos sublinhados identificam as chaves das estruturas. Como resultado desta etapa ocorre um desdobramento dos dados em duas estruturas, a saber:

17 | P g i n a - Primeira estrutura (Entidade de Notas Fiscais): Dados que compem a estrutura original, excluindo os elementos repetitivos. - Segundo estrutura (Entidade de Vendas): Dados que compem os elementos repetitivos da estrutura original, tendo como chave o campo chave da estrutura original (Num. NF) e o campo chave da estrutura de repetio (Cdigo da Mercadoria). SEGUNDA FORMA NORMAL (2FN) Consistem em retirar das estruturas que possuem chaves compostas (campo chave sendo formado por mais de um campo), os elementos que so funcionalmente dependentes de parte da chave. Podemos afirmar que uma estrutura est na 2FN, se ela estiver na 1FN e no possuir campos que so funcionalmente dependentes de parte da chave. Exemplo: Estrutura na primeira forma normal (1FN): Entidade de Notas Fiscais

(Num. NF, Srie, Data emisso, Cdigo do Cliente, Nome do cliente, Endereo do cliente, CGC do cliente e Total Geral da Nota)
Entidade de Vendas

(Num. NF, Cdigo da Mercadoria, Descrio da Mercadoria, Quantidade vendida, Preo de venda e Total da venda desta mercadoria)
Estrutura na segunda forma normal (2FN): Entidade de Notas Fiscais

(Num. NF, Srie, Data emisso, Cdigo do Cliente, Nome do cliente, Endereo do cliente, CGC do cliente e Total Geral da Nota)
Entidade de Vendas

(Num. NF, Cdigo da Mercadoria, Quantidade vendida e Total da venda desta mercadoria)

18 | P g i n a

Entidade de Mercadorias

(Cdigo da Mercadoria, Descrio da Mercadoria, Preo de venda)


Como resultado desta etapa, houve um desdobramento da Entidade de Vendas (a entidade Notas Fiscais, no foi alterado, por no possuir chave composta) em duas estruturas a saber: - Primeira estrutura (Entidade de Vendas): Contm os elementos originais, sendo excludos os dados que so dependentes apenas do campo Cdigo da Mercadoria. - Segundo estrutura (Entidade de Mercadorias): Contm os elementos que so identificados apenas pelo Cdigo da Mercadoria, ou seja, independentemente da Nota Fiscal, a descrio e o preo de venda sero constantes.

TERCEIRA FORMA NORMAL (3FN) Consistem em retirar das estruturas os campos que so funcionalmente dependentes de outros campos que no so chaves. Podemos afirmar que uma estrutura est na 3FN, se ela estiver na 2FN e no possuir campos dependentes de outros campos no chaves. Exemplo: Estrutura na segunda forma normal (2FN): Entidade de Notas Fiscais

(Num. NF, Srie, Data emisso, Cdigo do Cliente, Nome do cliente, Endereo do cliente, CGC do cliente e Total Geral da Nota)
Entidade de Vendas

(Num. NF, Cdigo da Mercadoria, Quantidade vendida e Total da venda desta mercadoria)
Entidade de Mercadorias

(Cdigo da Mercadoria, Descrio da Mercadoria, Preo de venda)

19 | P g i n a

Estrutura na terceira forma normal (3FN): Entidade de Notas Fiscais

(Num. NF, Srie, Data emisso, Cdigo do Cliente e Total Geral da Nota)
Entidade de Vendas

(Num. NF, Cdigo da Mercadoria, Quantidade vendida e Total da venda desta mercadoria)
Entidade de Mercadorias

(Cdigo da Mercadoria, Descrio da Mercadoria, Preo de venda)

Entidade de Clientes

(Cdigo do Cliente, Nome do cliente, Endereo do cliente e CGC do cliente)


Como resultado desta etapa, houve um desdobramento da entidade Notas Fiscais,

por ser o nico que possua campos que no eram dependentes da chave principal (Num. NF), uma vez que independente da Nota Fiscal, o Nome, Endereo e CGC do cliente so inalterados. Este procedimento permite evitar inconsistncia nos dados
dos arquivos e economizar espao por eliminar o armazenamento freqente e repetidas vezes destes dados. A cada nota fiscal comprada pelo cliente, haver o armazenamento destes dados e poder ocorrer divergncia entre eles. As estruturas alteradas foram pelos motivos, a saber: - Primeira estrutura (Entidade de Notas Fiscais): Contm os elementos originais, sendo excludos os dados que so dependentes apenas do campo Cdigo do Cliente (informaes referentes ao cliente). - Segundo estrutura (Entidade de Clientes): Contm os elementos que so identificados apenas pelo Cdigo do Cliente, ou seja, independente da Nota Fiscal, o Nome, Endereo e CGC dos clientes sero constantes. Aps a normalizao, as estruturas dos dados esto projetadas para eliminar as inconsistncias e redundncias dos dados, eliminando desta forma qualquer problema de atualizao e operacionalizao do sistema. A verso final dos dados poder sofrer alguma alterao, para atender as necessidades especficas do

20 | P g i n a sistema, a critrio do analista de desenvolvimento durante o projeto fsico do sistema.

Chave Primria Seu conceito est associado ao campo ou conjunto de campos de uma tabela que possuir um nico valor, que no ser repetido para nenhum outro registro. Como exemplo desta situao podem-se considerar os nmeros de CPF, CNPJ, RG ou qualquer cdigo de controle utilizado. Chave Estrangeira Caracteriza-se por ser uma chave de uma tabela que possui associao com a chave primria de outra tabela. Assim sendo, podem ocorrer trs situaes de utilizao de chave estrangeira: Relacionamento Um para Um A chave estrangeira pode ser criada em qualquer uma das tabelas; Relacionamento Um para Muitos A chave estrangeira pode ser criada apenas na tabela do lado muita; Relacionamento Muitos para Muitos - A chave estrangeira deve ser criada numa terceira tabela que faa o relacionamento entre as outras duas tabelas. Integridade Referencial - um mecanismo utilizado que evita a quebra de ligao entre os relacionamentos estabelecidos entre tabelas.

AS PARTES DA LIGUAGEM SQL


A linguagem SQL pode ser dividida nas seguintes partes:

Data Definition Language DDL (Linguagem Definio de Dados) A SQL DDL fornece comandos para definio e modificao de esquemas de relao, remoo de relaes e criao de ndices. Os principais comandos que fazem parte da DDL so: CREATE, ALTER, DROP .....

21 | P g i n a

Data Manipulation Language DML (Linguagem de manipulao de Dados) A SQL DML inclui uma linguagem de consulta baseada na lgebra relacional e no calculo relacional. Compreende tambm comandos para inserir, remover e modificar informaes em um banco de dados. Os comandos bsicos da DML so: SELECT, INSERT, UPDATE, DELETE .... Data Control Language DCL (Linguagem de Controle de Dados) Comando que fazem o cadastramento de usurios e determina seu nvel de privilegio para os objetos do banco de dados. Os principais comandos so: GRANT, REVOKE. Transaction Control (Controle de Transao ) A SQL inclui comandos para especificao do inicio e fim das transaes. Diversar implementaes permitem o trancamento explicito de dados para o controle de concorrncia. (COMMIT, ROLLBACK E SAVEPOINT)

MODELO RELACIONAL APRESENTAO SIMPLIFICADA


Todos SGBDs atuais, so baseados no modelo de dados relacional (tambm conhecido como modelo entidade e relacionamento E/R).
Assim sendo, temos que os dados contidos nos modernos SGBDs, no importa o produto/fabricante (Oracle, Sybase, Informix, Interbase, Firebird, MySQL, SQl Server, etc..), so passiveis de ser acessados por programas escritos em varias linguagens de programao, por intermdio de instrues padro de SQL.

22 | P g i n a

Aplicao Escrita em CodeGear Delphi

SGBD

Aplicao Escrita em .Net

SQL
Aplicao Escrita em Visual Studio

Como sempre acontecem, os diversos fabricantes de SGBDs acabam implantando algumas extenses de funes exclusivas em seus SGBD em particular (sempre com o objetivo de tornar seu produto melhor que o SGBD do concorrente.) Essas extenses se forem usadas pelos programas que acessam um determinado SGBD, acabam quebrando a portabilidade desses mesmos programas para SGBD de outros fabricantes. Com SQL, possvel tambm efetuar diretamente consultas e manutenes s bases de dados sem uso de nenhuma linguagem de programao em particular, apenas submetendo as instrues SQL a um SGBD. Dominar a linguagem SQL o primeiro passo para dominar qualquer SGBD. SQL onde a pronncia ess-ki-ll ou sequel que como a maioria das pessoas pronunciam. composta por um grupo de facilitadores para definio, manipulao e controle de dados em um banco de dados relacional.

23 | P g i n a

ESTRUTURA DA INFORMAO
Banco de Dados - Representa o arquivo fsico de dados, armazenado em dispositivos perifricos, onde esto armazenados os dados de diversos sistemas, para consulta e atualizao pelo usurio. Tabelas Lgicas - Representam as estruturas de armazenamento de dados (arquivos) dos sistemas. S.G.D.B. (Sistema Gerenciador de Banco de Dados) - o software responsvel pelo gerenciamento (armazenamento e recuperao) dos dados no Banco de Dados. Ex. Interbase, Firebird, SQL Server, Oracle, Informix, DB2 Dado - o valor do campo quando armazenado no Banco de Dados.

Ex. O valor do campo "nome do cliente" para quem est fazendo a entrada de dados.
Contedo do campo - o valor do campo armazenado no Banco de Dados.

Ex. O valor do campo "nome do cliente" sem estar, momentaneamente, sendo utilizado.
Informao - o valor que este campo representa para as atividades da empresa.

Ex. Resposta a uma consulta. Quais os nomes dos clientes localizados no Rio de Janeiro?

VISES DO BANCO DE DADOS


Viso Interna - aquela vista pelo responsvel pela manuteno e desenvolvimento do SGBD. Existe a preocupao com a forma de recuperao e manipulao dos dados dentro do Banco de Dados. Viso Conceitual - aquela vista pelo analista de desenvolvimento e pelo administrador das bases de dados. Existe a preocupao na definio de normas e procedimentos para manipulao dos dados, para garantir a sua segurana e confiabilidade, o desenvolvimento de sistemas e programas aplicativos e a definio no banco de dados de novos arquivos e campos.

24 | P g i n a Na viso conceitual, existem 2 (duas) linguagens de operao que so: a) Linguagem de definio dos dados (DDL) - Linguagem que define as aplicaes, arquivos e campos que iro compor o banco de dados (comandos de criao e atualizao da estrutura dos campos dos arquivos). b) Linguagem de manipulao dos dados (DML) - Linguagem que define os comandos de manipulao e operao dos dados (comandos de consulta e atualizao dos dados dos arquivos).

Viso Externa - aquela vista pelo usurio que opera os sistemas aplicativos, atravs de interfaces desenvolvidas pelo analista (programas), buscando o atendimento de suas necessidades.

VANTAGENS DO BANCO DE DADOS EM RELAO ARQUITETURA TRADICIONAL


Sistema Tradicional So aqueles em que os dados do sistema esto armazenados fisicamente separados um do outro. O acesso feito pelos programas de aplicao, associando o nome externo dos arquivos e definindo todo o registro independente da utilizao dos campos.

Ex.: Paradox, Dataflex, Clipper

Sistema de Banco de Dados aquele em que os dados so definidos para o S.G.B.D., atravs da DDL (linguagem de definio de dados). Fisicamente esto armazenados em um nico local, sendo o acesso realizado apenas atravs do S.G.B.D. Nos programas de aplicao, necessrio apenas definir os campos que sero utilizados pelo programa.

Ex.: Interbase, Firebird, Oracle, DB2, SQL Server, Informix

25 | P g i n a

SQL COMANDOS
A linguagem SQL possui uma srie de comandos para manipulao do banco de Dados. Desde comandos simples at os mais complexos. Um detalhe importante que a linguagem SQL declarativa. Isto que dizer que ns quase que perguntamos ao banco de dados para que ele nos responda atravs de compos formando registros. Esse detalhe torna o aprendizado da SQL muito fcil para quem esta iniciando na linguagem. Vamos comear a analisar os Comandos Bsicos da Linguagem SQL e fazer uma srie de exemplos. COMANDOS DDL CREATE TABLE Criar estrutura de uma tabela (entidade) definida as colunas (campos) e as chaves primrias e estrangeiras existentes.

CREATE TABLE < nome_tabela >

( nome_atributo1 < tipo > [ NOT NULL ], nome_atributo2 < tipo > [ NOT NULL ],
indica o nome da tabela a ser criada. indica o nome do campo a ser criado na tabela. indica a definio do tipo de atributo ( integer(n), char(n), real(n,m), date... ).

Onde: Nome_Table Nome_atributo Tipo Exemplo:

CREATE TABLE DEPT (DepNume integer(4) not null, DepNome char(20) not null, DepLoca char(20) not null, DepOrca integer(12,2), primary key (DepNume) );

ALTER TABLE Alterar a estrutura de uma tabela (entidade) acrescentando, alterando, retirando e alterando nomes, formatos das colunas e a integridade referencial definidas em uma determinada tabela.

26 | P g i n a

ALTER TABLE < nome_tabela > ADD / DROP ( nome_atributo1 < tipo > [ NOT NULL ], nome_atributoN < tipo > [ NOT NULL ] );
Exemplo:

ALTER TABLE DEPT ( ADD DEPSALA DECIMAL (10,2) );


DROP TABLE Objetivo Deletar a estrutura e os dados existentes em uma tabela. Aps a execuo deste comando estaro deletados todos dados, estrutura e ndices de acessos que estejam a ela associados. Sintaxe: DROP TABLE <nome-tabela> Onde: Nome-tabela - Representa o nome da tabela que ser deletada.

TIPOS DE DADOS
OS TIPOS NUMRICOS Pode ser utilizado no tratamento de valores numricos inteiros ou reais. Esto disponveis os seguintes tipos:

Nota: O parmetro tamanho opcional e permite estabelecer o tamanho mximo do valor a ser exibido, podendo ser um valor mximo 255;

27 | P g i n a

SMALLINT [(tamanho)] Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de valores inteiros curtos entre a faixa de valores de 32.768 at 32.767. INTEGER [(tamanho)] Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de valores inteiros longos entre a faixa de valores de 2.147.483.648 at 2.147.483.647.

FLOAT Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de valores com ponto flutuante com sete dgitos de preciso decimais. Este tipo permite trabalhar com valores na faixa de 3,4 * 10-38 at 3,4 * 1038 ;

NUMERIC /DECIMAL [(tamanho[,decimal])] Visa armazenar nmeros, cuja preciso vai de 1 a 18 dgitos a armazenar. A escala vai de 1 a 18 nmeros de casas decimais para armazenamento. DOUBLE PRECISION [(tamanho.decimal)] Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de valores flutuantes com preciso de 15 dgitos O TIPO TEMPORAL Pode ser utilizado no tratamento de valores relacionados data e horrio. Esto disponveis os seguintes tipos: DATE Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de uma data TIME Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de uma informao relacionada a um determinado horrio.

O TIPO LITERAL O Tipo Literal pode ser para a recepo de valores baseados em cadeias de caracteres (strings dados alfanumricos delimitados por aspas ou apstrofos). Esto disponveis os seguintes tipos: CHAR (tamanho) Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de seqncias de caracteres de tamanho fixo que estejam limitadas at 255 caracteres de comprimento. O parmetro tamanho determina o valor mximo em caracteres que pode conter a seqncia;

28 | P g i n a VARCHAR(tamanho) Utiliza-se este tipo de dado quando houver a necessidade de fazer uso de seqncias de caracteres de tamanho varivel que estejam limitadas at 255 caracteres de comprimento. A diferena entre este tipo e o CHAR que neste caso, os espaos em branco excedentes do lado direito da seqncia de caracteres no utilizados so automaticamente desprezados. O parmetro tamanho determina o valor mximo em caracteres que pode conter a seqncia . BINARY LARGE OBJECTS (BLOBS) Tem por objetivo armazenar dados binrios, como grficos, sons digitalizados, texto. Subtipo 0 - utilizado para acomodar dados binrios ou dados de tipo indeterminado Subtipo 1 - Utilizado para acomodar texto.

COMANDOS DML Objetivo Selecionar um conjunto de registros em uma ou mais tabelas que atenda a uma determinada condio definida pelo comando. Sintaxe: SELECT ALL FROM <nome-tabela> [, <nome-tabela>]

DISTINCT WHERE <condio> GROUP BY <nome-coluna> HAVING <condio> ORDER BY <nome-campo> ASC
Onde:

DESC

a) nome-tabela - Representa o nome da (s) tabela (s) que contem as colunas que sero selecionadas ou que sero utilizadas para a execuo da consulta. b) condio - Representa a condio para a seleo dos registros. Este seleo poder resultar em um ou vrios registros. c) nome-coluna - Representa a (s) coluna (s) cujos resultados so grupados para atender consulta.

29 | P g i n a d) ALL - Opo default. Mostra todos os valores obtidos na seleo. e) DISTINCT - Opo que mostra os valores obtidos na seleo eliminando as duplicidades. f) WHERE - Especifica o critrio de seleo dos registros nas tabelas especificadas. Exemplo: SELECT EMPNOME, EMPSERV FROM EMP WHERE DEPNUME > 10; g) GROUP BY - Especifica o (s) campo (s) que sero grupados para atender a consulta. Exemplo: SELECT DUPNUME, AVG(EMPSALA) FROM EMP GROUP BY DEPNUME;

h) HAVING - Especifica uma condio para seleo de um grupo de dados. Esta opo s utilizada combinada com a opo GROUP BY. i) ii) ORDER BY - Esta opo quando utilizada apresenta o resultado da consulta ordenado de forma Crescente ou decrescente pelos campos definidos.

Exemplo: SELECT DEPNUME, AVG (EMPSALA) FROM EMP GROUP BY DEPNUME HAVING COUNT (*) > 3; ALGUMAS FUNES UTILIZADAS NO COMANDO SELECT. a) COUNT(*) (DISTINCT <nome-campo>)

30 | P g i n a Objetivo Retorna a quantidade de registros existentes no campo especificado. Quando a opo * utilizada o resultado a quantidade de registros existentes. Quando referenciado o nome de um campo retorna a quantidade de valores existentes na coluna. b) SUM (ALL <nome-campo>) DISTINCT Objetivo Retorna a soma dos valores existentes no campo especificado. Quando a opo DISTINCT utilizada so considerados apenas os diferentes valores existentes no campo. Exemplo: SELECT SUM(EMPSALA) FROM EMP;

c) AVG (ALL <nome-campo>) DISTINCT Objetivo Retorna a mdia dos valores existentes no campo especificado. Quando a opo DISTINCT utilizada so considerados apenas os diferentes valores existentes no campo. Exemplo: SELECT AVG(EMPSALA) FROM EMP;

d) MAX (ALL <nome-campo>) DISTINCT Objetivo Retorna o maior valor existente no campo especificado. Quando a opo DISTINCT utilizada so considerados apenas os diferentes valores existentes no campo. Exemplo: SELECT MAX(EMPSALA) FROM EMP;

e) MIN (ALL <nome-campo>) DISTINCT Objetivo Retorna o menor valor existente no campo especificado. Quando a opo DISTINCT utilizada so considerados apenas os diferentes valores existentes no campo.

31 | P g i n a Exemplo: SELECT MIN(EMPSALA) FROM EMP;

WHERE COMO BASE DAS RESTRIES. A clusula "where" corresponde ao operador de restrio da lgebra relacional. Contm a condio que as tabelas devem obedecer a fim de serem listadas. Ela pode comparar valores em colunas, literais, expresses aritmtica ou funes. A seguir apresentamos operadores lgicos e complementares a serem utilizados nas expresses apresentadas em WHERE. Operadores lgicos Operador = > >= < <= Significado igual a maior que maior que ou igual a menor que menor que ou igual a

ALGUNS EXEMPLOS: SELECT EMPNOME, EMPSERV FROM EMP WHERE DEPNUME > 10; SELECT EMPNOME, EMPSERV FROM EMP WHERE EMPSERV = 'GERENTE'; Nota: O conjunto de caracteres ou datas devem estar entre apstrofes () na clusula "where". Apresente todos os salrios existentes na empresa, porm omita eventuais duplicidades. A clusula Distinct elimina duplicidades, significando que somente relaes distintas sero apresentadas como resultado de uma pesquisa. SELECT DISTINCT EMPSERV FROM EMP;

32 | P g i n a Selecione todos os departamentos cujo oramento mensal seja maior que 100000. Apresente o Nome de tal departamento e seu oramento anual, que ser obtido multiplicando-se o oramento mensal por 12 SELECT DEPNOME, DEPORCA * 12 FROM DEPT WHERE DEPORCA > 100000; Apresente a instruo anterior, porm ao invs dos "feios" DepNome e DepOrca, os Ttulos Departamento e Oramento. SELECT DEPNOME "DEPARTAMENTO", DEPORCA * 12 "ORCAMENTO ANUAL" FROM DEPT WHERE DEPORCA > 100000; Apresente os nomes e funes da cada funcionrio contidas na tabela empresa, porm classificados alfabeticamente (A..Z) e depois alfabeticamente invertido (Z..A). Nota: A clusula Order By modificar a ordem de apresentao do resultado da pesquisa (ascendente ou descendente). SELECT EMPNOME, EMPSERV FROM EMP ORDER BY EMPNOME;

SELECT EMPNOME, EMPSERV FROM EMP ORDER BY EMPPNOME DESC; Selecione os Nomes dos Departamentos que estejam na fbrica. SELECT DEPNOME FROM DEPT WHERE DEPLOCA = "SAO PAULO";

33 | P g i n a

DEMAIS OPERADORES
OPERADOR

between ... and .. in ( .... ) like is null

SIGNIFICADO Entre dois valores (inclusive) Lista de valores Com um padro de caracteres um valor nulo

EXEMPLOS SELECT EMPNOME, EMPSALA FROM EMP WHERE EMPSALA BETWEEN 500 AND 1000; SELECT EMPNOME, DEPNUME FROM EMP WHERE DEPNUME IN (10,30);

OPERADORES NEGATIVOS
OPERADOR DESCRIO

<> not Nome_oluna not nome_coluna not between not in not like is not null

Diferente Diferente da coluna No maior que No entre dois valores informados no existente numa dada lista de valores diferente do padrao de caracteres informado no um valor nulo

Selecione os Empregados cujos salrios sejam menores que 1000 ou maiores que 3500. Necessitaremos aqui a utilizao de expresso negativa. A seguir apresentamos operadores negativos. SELECT EMPNOME, EMPSALA FROM EMP WHERE EMPSALA NOT BETWEEN 1000 AND 3500;

34 | P g i n a Apresente todos os funcionrios com salrios entre 200 e 700 e que sejam Vendedores. Necessitaremos de consultas com condies mltiplas. Operadores "AND" (E) e "OR" (OU). SELECT EMPNOME, EMPSALA, EMPSERV FROM EMP WHERE EMPSALA BETWEEN 700 AND 2000 AND EMPSERV = 'VENDEDOR'; SELECT EMPNOME, EMPSERV FROM EMP WHERE EMPNOME LIKE 'F%'; SELECT EMPNOME, EMPSERV FROM EMP WHERE EMPCOMI IS NULL; O smbolo "%" pode ser usado para construir a pesquisa ("%" = qualquer seqncia de nenhum at vrios caracteres). Apresente todos os funcionrios com salrios entre 200 e 700 ou que sejam Vendedores. SELECT EMPNOME, EMPSALA, EMPSERV FROM EMP WHERE EMPSALA BETWEEN 700 AND 2000 OR EMPSERV = 'VENDEDOR'; Apresente todos os funcionrios com salrios entre 200 e 700 e que sejam Vendedores ou Balconistas. SELECT EMPNOME, EMPSALA, EMPSERV FROM EMP WHERE EMPSALA BETWEEN 700 AND 2000 AND ( EMPSERV = 'BALCONISTA' OR EMPSERV = 'VENDEDOR' );

35 | P g i n a

FUNES DE CARACTERES
Lower Upper Concat(x,y)Substring(x,y,str)termina em "y". To_Char(num)^Q fora caracteres maisculos aparecerem em minsculos. fora caracteres minsculos aparecerem em maisculos. concatena a string "x" com a string "y". extrai um substring da string "str", comeando em "x", e converte um valor numrico para uma string de caracteres. converte data para o formato apresentado.

Apresente o nome de todos os empregados em letras minsculas. SELECT LOWER( EMPNOME ) FROM EMP; Apresente o nome de todos os empregados (somente as 10 primeiras letras). SELECT SUBSTRING (1,10,EMPNOME) FROM EMP; Apresente o nome de todos os empregados admitidos em 01/01/80. SELECT * FROM EMP WHERE EMPADMI = ^Q"DD-AAA-YYYY"("01-JAN-1980"); Ou SELECT * FROM EMP WHERE EMPADMI = ^Q("01-JAN-1980");

36 | P g i n a

FUNES AGREGADAS (OU DE AGRUPAMENTO)


Funo avg(n) count(expr) max(expr) min(expr) sum(n) Retorno mdia do valor n, ignorando nulos vezes que o nmero da expr avalia para algo nao nulo maior valor da expr menor valor da expr soma dos valores de n, ignorando nulos

Apresente a Mdia, o Maior, o Menor e tambm a Somatria dos Salrios pagos aos empregados. SELECT AVG(EMPSALA) FROM EMP; SELECT MIN(EMPSALA) FROM EMP; SELECT MAX(EMPSALA) FROM EMP; SELECT SUM(EMPSALA) FROM EMP;

AGRUPAMENTOS
As funes de grupo operam sobre grupos de registro (linhas). Retornam resultados baseados em grupos de registros em vez de resultados de funes por registro individual. A clusula "GROUP BY" do comando "SELECT" utilizada para dividir registros em grupos menores. A clusula "GROUP BY" pode ser usada para dividir os registros de uma tabela em grupos menores. As funes de grupo devolvem uma informao sumarizada para cada grupo. Apresente a mdia de salrio paga por departamento. SELECT DUPNUME, AVG(EMPSALA) FROM EMP GROUP BY DEPNUME; OBSERVAO Qualquer coluna ou expresso na lista de seleo, que no for uma funo agregada, dever constar da clusula "GROUP BY". Portanto errado tentar impor uma "restrio" do tipo agregada na clusula Where.

37 | P g i n a

Having A clusula "HAVING" pode ser utilizada para especificar quais grupos devero ser exibidos, portanto restringindo-os. Retome o problema anterior, porm apresente resposta apenas para departamentos com mais de 10 empregados. SELECT DEPNUME, AVG(EMPSALA) FROM EMP GROUP BY DEPNUME HAVING COUNT(*) > 3; Observao: A clusula "GROUP BY" deve ser colocada antes da "having", pois os grupos so formados e as funes de grupos so calculadas antes de se resolver a clusula "HAVING". A clusula "WHERE" no pode ser utilizada para restringir grupos que devero ser exibidos. *** Exemplificando ERRO tpico - Restringindo Mdia Maior que 1000: **** SELECT DEPNUME, AVG(EMPSALA) FROM EMP WHERE AVG(SALARIO) > 1000 GROUP BY DEPNUME; ( Esta seleo est ERRADA! ) SELECT DEPNUME, AVG(EMPSALA) FROM EMP GROUP BY DEPNUME HAVING AVG(EMPSALA) > 1000; ( Seleo Adequada ) SEQNCIA NO COMANDO "SELECT": SELECT FROM WHERE GROUP BY HAVING ORDER BY coluna(s) tabela(s) condio (es) da(s) tupla(s) condio(es) do(s) grupo(s) de tupla(s) condio (es) do(s) grupo(s) de tupla(s) coluna(s);

38 | P g i n a

A "SQL" far a seguinte avaliao: a) WHERE, para estabelecer tabelas individuais candidatas (no pode conter funes de grupo) b) GROUP BY, para fixar grupos. c) HAVING, para selecionar grupos para exibio.

JOIN - (JUNO POR IGUALDADE)


O relacionamento existente entre tabelas chamado de equi-juno, pois os valores de colunas das duas tabelas so iguais. A Equi-juno possvel apenas quando tivermos definido de forma adequada a chave estrangeira de uma tabela e sua referncia a chave primria da tabela precedente. Apesar de admitir-se em alguns casos, a equi-juno de tabelas, sem a correspondncia Chave PrimriaChave Estrangeira, recomendamos fortemente ao estudante no utilizar este tipo de construo, pois certamente em nenhum momento nos exemplos propostos em nossa disciplina ou, sero necessrias tais junes. Listar Nomes de Empregados, Cargos e Nome do Departamento onde o empregado trabalha. Observemos que dois dos trs dados solicitados esto na Tabela Emp, enquanto o outro dado est na Tabela Dept. Deveremos ento acessar os dados restringindo convenientemente as relaes existentes entre as tabelas. De fato sabemos que DEPNUME chave primria da tabela de Departamentos e tambm chave estrangeira da Tabela de Empregados. Portanto, este campo ser o responsvel pelo JOIN SELECT A.EMPNOME, A.EMPSERV, B.DEPNOME FROM EMP A, DEPT B WHERE A.DEPNUME = B.DEPNUME;

Nota: Note que as tabelas quando contm colunas com o mesmo nome, usa-se um apelido "alias" para substituir o nome da tabela associado coluna. Imagine que algum tivesse definido NOME para ser o Nome do Empregado na Tabela de Empregados e tambm NOME para ser o Nome do Departamento na Tabela de Departamentos. Tudo funcionaria de forma adequada, pois o alis se encarregaria de evitar que uma ambigidade fosse verificada. Embora SQL resolva de forma muito elegante o problema da nomenclatura idntica para campos de tabelas, recomendamos que o estudante fortemente evitasse tal forma de nomear os campos. O SQL nunca confundir um A.NOME com um B.NOME, porm podemos afirmar o mesmo de ns mesmos?

39 | P g i n a

Liste os Cdigos do Cada Funcionrio, seus Nomes, seus Cargos e o nome do Gerente ao qual este se relaciona. Precisamos criar um auto-relacionamento, ou seja, juntar uma tabela a ela prpria. possvel juntarmos uma tabela a ela mesma com a utilizao de apelidos, permitindo juntar registro da tabela a outra tabela da mesma tabela. SELECT A.EMPNUME, A.EMPNOME, A.EMPSERV, B.EMPNOME FROM EMP A, EMP B WHERE A.EMPGERE = B.EMPNUME;

INNER JOIN - LEFT JOIN RIGHT JOIN E FULL OUTER JOIN


atravs dos diferentes tipos de join que conseguimos recuperar dados de uma ou mais tabelas com auxilio dos relacionamentos existentes. Nos exemplos sero consideradas duas tabelas (PRODUTO E DVENDA) vamos supor nos exemplos que foram vendidos itens sem estarem cadastrados PRODUTO X VENDA

A rea em vermelho representa os produtos que foram cadastrados, mas no foram vendidos. Para selecionar esses produtos utilizamos um LEFT JOIN, ligando um filtro para listar SOMENTE as linhas EXISTENTES na tabela produto SEM CORRESPONDENTE na tabela venda;

40 | P g i n a A rea em azul representa produtos que foram vendidos e no possuem cadastro. Para selecionar esses produtos utilizaremos um RIGHT JOIN ligando um filtro para listar SOMENTE as linhas EXISTENTES na tabela venda SEM CORRESPONDENTES na tabela produto;

A rea em verde representa os produtos que foram vendidos e possuem cadastro. Para selecionar as linhas que possuem equivalncia nas duas tabelas utilizamos o INNER JOIN. Para representar a unio de todos os produtos com todas as vendas, independentemente de relacionamento (rea em vermelho+verde+azul) utilizamos um FULL OUTER JOIN Vamos comear pela rea verde (interseco) Selecionar os produtos que foram vendidos e possuem cadastro rea verde SELECT DISTINCT P.CODIGO, P.DESCRICAO FROM PRODUTO P INNER JOIN DVENDA V ON P.CODIGO = V.CODPROD Selecionar os produtos que foram vendidos, mas no possuem cadastro- rea azul SELECT V.CODPROD FROM PRODUTO P RIGHT OUTER JOIN DVENDA V ON V.CODPROD = P.CODIGO WHERE P.CODIGO IS NULL Selecionar os produtos que foram cadastrados, mas no foram vendidos rea vermelha SELECT P.CODIGO, P.DESCRICAO FROM PRODUTO P LEFT OUTER JOIN DVENDA V ON V.CODPROD = P.CODIGO WHERE V.CODPROD IS NULL

41 | P g i n a

AS SUBCONSULTAS
Uma subconsulta um comando "SELECT" que aninhado dentro de outro "SELECT" e que devolve resultados intermedirios. Relacione todos os nomes de funcionrios e seus respectivos cargos, desde que o oramento do departamento seja igual a 300000. SELECT EMPNOME, EMPSERV FROM EMP A WHERE 300000 IN ( SELECT DEPORCA FROM DEPT WHERE DEPT.DEPNUME = A.DEPNUME ); Nota: Observe que a clusula IN torna-se verdadeira quando o atributo indicado est presente no conjunto obtido atravs da subconsulta. Relacione todos os departamentos que possuem empregados com remunerao maior que 3500. SELECT DEPNOME FROM DEPT A WHERE EXISTS (SELECT * FROM EMP WHERE EMPSALA > 3500 AND EMP.DEPNUME = A.DEPNUME'); Nota: Observe que a clusula EXISTS indica se o resultado de uma pesquisa contm ou no registro. Observe tambm que poderemos verificar a no existncia (NOT EXISTS) caso esta alternativa seja mais conveniente. Se eu quiser saber quais produtos participaram em qualquer pedido cuja quantidade seja maior ou igual a 10 SELECT DESCRICAO FROM PRODUTO WHERE CODIGO IN (SELECT CODPROD FROM DVENDA WHERE QTDE >= 10) Quais as vendas que tiveram seu valor abaixo da media SELECT CODIGO, VALORVENDA FROM CVENDA WHERE VALORVENDA < (SELECT AVG(VALORVENDA) FROM CVENDA)

42 | P g i n a

Quais produtos que no esto presente em nenhuma vendam SELECT CODIGO, DESCRICAO FROM PRODUTO WHERE NOT EXISTS (SELECT PRODUTO.CODIGO)

FROM

DVENDA

WHERE

CODPROD

INSERES, ALTERAES E EXCLUSES


De forma alguma o mesmo ocorrer com o especialista em SQL ao ter que migrar do Banco de Dados X para o Banco de Dados Y. Naturalmente existir a necessidade de aprendizado, mas este programador poder ir adaptando-se aos poucos sem precisar ser retreinado, o que um aspecto extremamente vantajoso para as empresas. INSERIR (INSERT) Sintaxe: INSERT INTO <tabela> [<campos>] [VALUES <valores>] INSERT INTO DEPT; Possibilita a insero de registros de forma interativa. INSERT INTO DEPT (DEPNUME,DEPNOME,DEPLOCA) VALUES (70,"PRODUCAO","RIO DE JANEIRO"); INSERT INTO CLIENTE (NOME, ENDERECO) VALUES (PAULO, RUA A) INSERT INTO VALUES (10,JOS, BAIRO, ENEDERO, CIDADE) Possibilita a insero de registros em tabelas sem digitao dos dados. ATUALIZAR (UPDATE) Sintaxe: UPDATE <tabela> SET <campo> = <expresso> [WHERE <condio>];

43 | P g i n a UPDATE EMP SET EMPSALA = EMPSALA * 1.2 WHERE EMPSALA < 1000; UPDATE PRODUTO SET TOTAL = TOTAL * 1.1 UPDATE CLIENTE SET ENDERECO = RUA FULANO DE TAL WHERE CODIGO = 10

EXCLUIR (DELETE) Sintaxe: DELETE FROM <tabela> [WHERE <condio>]; DELETE FROM EMP WHERE EMPSALA > 5000; DELETE FROM CLIENTE WHERE CODIGO = 5

FERRAMENTA DE GERENCIAMENTO IBEXPERT


Observao: Mais informaes sobre IBExpert em Vdeo Aula

EXEMPLO PRTICO CRIAR UM BANCO DE DADOS


CONTENDO AS SEGUINTES TABELAS: CLIENTE PRODUTO FORNECEDOR VENDENDOR VENDAS ITENS_VENDAS

44 | P g i n a

REFERNCIAS BIBLIOGRFICAS
APLICAES CLIENTE/SERVIDOR COM DELPHI 6 + INTERBASE 6 UMA ABORDAGEM PRTICA EDITORA RICA FIREBIRD 2.0 - O BANCO DE DADOS DO NOVO MILNIO - CARLOS H. CANTU http://www.relativa.com.br/livros_template.asp?Codigo_Produto=60937 PROGRAMAO CLIENTE/SERVIDOR COM FIREBIRD http://www.relativa.com.br/livros_template.asp?Codigo_Produto=44288 LINKS http://www.firebase.com.br/fb/ http://www.clubedelphi.net/portal http://www.devmedia.com.br http://www.borland.com http://www.google.com.br http://www.firebirdsql.com/ http://www.msdn.com.br

You might also like