Você está na página 1de 195

Banco de Dados I

UNIDADE 1 1.1

INTRODUO ............................................................................................................................................................... 3

UNIDADE 2 2.1
2.2
2.3
2.4
2.5

CRIAO DE TABELAS............................................................................................................................. 37

TUTORIAL:................................................................................................................................................................. 37
CRIANDO TABELAS ...................................................................................................................................................... 37
PARMETROS DE CAMPOS NA CRIAO DE TABELAS: ........................................................................................................ 38
VALORES NULOS ........................................................................................................................................................ 38
CHAVE PRIMRIA ....................................................................................................................................................... 38
CHAVE ESTRANGEIRA: ................................................................................................................................................. 39
INTEGRIDADE REFERENCIAL: ......................................................................................................................................... 39
ON UPDATE: ........................................................................................................................................................... 39
ON DELETE: ............................................................................................................................................................ 40
REMOVENDO TABELAS................................................................................................................................................. 41

UNIDADE 7 7.1

SQL (STRUCTURED QUERY LANGUAGE) .................................................................................................. 33

INTRODUO ............................................................................................................................................................. 33
DML (DATA MANIPULATION LANGUAGE): ...................................................................................................................... 33
DCL (DATA CONTROL LANGUAGE): ............................................................................................................................... 33
TIPOS DE DADOS: ....................................................................................................................................................... 34
EXPRESSES E OPERADORES: ........................................................................................................................................ 34
TIPOS DE OPERADORES ................................................................................................................................................ 35

UNIDADE 6 6.1
6.2
6.3
6.4
6.5
6.6
6.7
6.8
6.9
6.10

O MODELO RELACIONAL ........................................................................................................................ 22

O MODELO RELACIONAL .............................................................................................................................................. 22


DOMNIOS, TUPLAS, ATRIBUTOS E RELAES ................................................................................................................... 22
ATRIBUTO CHAVE DE UMA RELAO .............................................................................................................................. 23
CHAVE PRIMRIA ....................................................................................................................................................... 24
CHAVE CANDIDATA ..................................................................................................................................................... 25
CHAVE ESTRANGEIRA .................................................................................................................................................. 25
MAPEAMENTO DO MODELO ENTIDADE RELACIONAMENTO PARA O MODELO RELACIONAL ....................................................... 25
NORMALIZAO DE DADOS .......................................................................................................................................... 29

UNIDADE 5 5.1
5.2
5.3
5.4
5.5
5.6

MODELAGEM DE DADOS UTILIZANDO O MODELO ENTIDADE RELACIONAMENTO (ER) ........................... 8

ELEMENTOS DO MODELO ENTIDADE-RELACIONAMENTO ...................................................................................................... 8


TIPOS E INSTNCIAS DE RELACIONAMENTO: ..................................................................................................................... 10
RESUMO DOS OBJETOS GRFICOS:.................................................................................................................................. 14
MODELO ENTIDADE RELACIONAMENTO ESTENDIDO: ......................................................................................................... 15
ESPECIALIZAO ......................................................................................................................................................... 16
GENERALIZAO:........................................................................................................................................................ 17
LATTICE OU MLTIPLA HERANA: .............................................................................................................................. 19
DICAS PARA A ELABORAO DE UM DIAGRAMA E-R: .......................................................................................................... 20

UNIDADE 4 4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8

CONCEITOS E ARQUITETURAS - SGBD....................................................................................................... 4

AS LINGUAGENS PARA MANIPULAO DE DADOS: .............................................................................................................. 4


CLASSIFICAO DOS SGBDS ........................................................................................................................................... 4
O MODELO DE REDE 3-3-1 ............................................................................................................................................ 4
O MODELO HIERRQUICO 3-3-2: ................................................................................................................................... 5
O MODELO RELACIONAL 3-3-3: ..................................................................................................................................... 5

UNIDADE 3 3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8

INTRODUO AO BANCO DE DADOS ....................................................................................................... 3

COMANDOS PARA ALTERAR TABELAS .................................................................................................... 42

ALTERAO DE TABELAS CRIADAS .................................................................................................................................. 42

7.2
7.3
7.4
7.5

ADICIONAR COLUNAS A UMA TABELA ADD ................................................................................................................... 42


REMOVER COLUNAS DE UMA TABELA DROP ................................................................................................................. 42
RENOMEANDO COLUNAS DE UMA TABELA RENAME ..................................................................................................... 42
MODIFICANDO COLUNAS DE UMA TABELA MODIFY ...................................................................................................... 43

UNIDADE 8 8.1
8.2
8.3
8.4

INSERINDO DADOS ...................................................................................................................................................... 44


INSERINDO DADOS POR MEIO DE UM SELECT .................................................................................................................. 44
EXCLUINDO INFORMAES ........................................................................................................................................... 45
ATUALIZANDO DADOS DE UMA TABELA............................................................................................................................ 45

UNIDADE 9 9.1
9.2
9.3
9.4
9.5

FUNES DE AGRUPAMENTO E ORDENAO .................................................................................... 64

OBTENDO INFORMAES ESTATSTICAS .......................................................................................................................... 64


AGRUPAMENTO UTILIZANDO GROUP BY: ...................................................................................................................... 65
UTILIZANDO WHERE E GROUP BY: ............................................................................................................................. 65
SELEO DE REGISTROS COM AGRUPAMENTO PELA CLUSULA GROUP BY E HAVING: .......................................................... 66
ORDENAO DAS CONSULTAS ....................................................................................................................................... 66

UNIDADE 14 14.1
14.2
14.3
14.4
14.5
14.6
14.7
14.8
14.9

PREDICADOS ...................................................................................................................................... 60

PREDICADOS LIKE E NOT LIKE: .................................................................................................................................... 60


PREDICADOS BETWEEN... AND E NOT BETWEEN... AND ............................................................................................ 61
PREDICADOS IN E NOT IN:......................................................................................................................................... 61
PREDICADO IS NULL E IS NOT NULL ............................................................................................................................ 62
SELEO COM OPERADORES LGICOS ............................................................................................................................ 63

UNIDADE 13 13.1
13.2
13.3
13.4
13.5

CRITRIOS DE CONSULTA CLUSULA WHERE .................................................................................. 54

CLUSULA WHERE ...................................................................................................................................................... 54


CONSULTAS SIMPLES COM CLUSULA WHERE .................................................................................................................. 55
SELECIONANDO DADOS NO REPETIDOS ......................................................................................................................... 56
SELECIONANDO ALGUNS DADOS..................................................................................................................................... 57

UNIDADE 12 12.1
12.2
12.3
12.4
12.5

UNIDADE 10: FUNES COM STRINGS ............................................................................................... 51

FUNES COM STRINGS ............................................................................................................................................... 51


SINTAXE DA FUNO DE CONCATENAO DE STRINGS ....................................................................................................... 51
CONTROLE DE MAISCULAS E MINSCULAS .................................................................................................................... 51
SEGMENTANDO UMA STRING ........................................................................................................................................ 52

UNIDADE 11 11.1
11.2
11.3
11.4

CONSULTA EM UMA NICA TABELA SQL ................................................................................................ 47

SINTAXE BSICA DE CONSULTAS SQL ............................................................................................................................. 47


EXEMPLOS DE CONSULTAS SQL ..................................................................................................................................... 47
SELEO DE TODOS OS REGISTROS COM COLUNAS ESPECFICAS ........................................................................................... 47
REDEFININDO O NOME DAS COLUNAS ............................................................................................................................ 48
SELEO DE REGISTROS COM EXIBIO DE STRINGS .......................................................................................................... 49

UNIDADE 10 10.1
10.2
10.3
10.4

MODIFICANDO DADOS ........................................................................................................................... 44

CONSULTAS EM MLTIPLAS TABELAS ................................................................................................ 68

CONSULTAS EM MLTIPLAS TABELAS ............................................................................................................................. 68


JOIN ......................................................................................................................................................................... 68
EQUIJOIN JOIN DE IGUALDADE .................................................................................................................................... 69
EXERCCIOS SUGERIDOS ............................................................................................................................................... 70
EQUIJOINS E OPERADORES LGICOS: .............................................................................................................................. 70
EQUIJOINS ENTRE MAIS DE DUAS TABELAS ........................................................................................................................ 71
REDEFINIO DO NOME DE TABELAS .............................................................................................................................. 71
OUTROS TIPOS DE JOINS - OUTER JOINS.......................................................................................................................... 71
OUTROS TIPOS DE JOINS - SELF JOINS ............................................................................................................................. 72

UNIDADE 15 15.1
15.2

TRABALHANDO COM DATAS .............................................................................................................. 75

DATAS EM MYSQL ..................................................................................................................................................... 75


RECUPERANDO INFORMAES ESPECFICAS DE DATA......................................................................................................... 75

UNIDADE 16 -

EXERCCIOS EXTRAS ........................................................................................................................... 76

UNIDADE 17 -

PROJETO FINAL - REVISO ................................................................................................................. 80

UNIDADE 18 -

PRINCIPAIS BANCOS DE DADOS ......................................................................................................... 81

UNIDADE 19 -

MICROSOFT ACCESS ........................................................................................................................... 82

19.1
19.2
19.3
19.4
19.5
19.6
19.7
19.8
19.9

INTRODUO ............................................................................................................................................................. 82
ARQUIVOS DE BANCO DE DADOS DO ACCESS ........................................................................................................ 82
INICIANDO O ACCESS ............................................................................................................................................. 86
PRIMEIROS CONTATOS .......................................................................................................................................... 86
MENUS E BARRAS DE FERRAMENTAS .................................................................................................................... 87
JANELA BANCO DE DADOS ..................................................................................................................................... 88
CRIANDO UM NOVO BANCO DE DADOS ................................................................................................................ 91
ABRINDO UM BANCO DE DADOS ........................................................................................................................... 92
FECHANDO UM BANCO DE DADOS ........................................................................................................................ 93

UNIDADE 20 20.1
20.2
20.3
20.4
20.5
20.6
20.7
20.8

CRIANDO UMA NOVA TABELA ............................................................................................................................... 98


CRIAR UMA TABELA USANDO O ASSISTENTE DE TABELA ....................................................................................................... 98
CRIAR UMA TABELA INSERINDO DADOS EM UMA FOLHA DE DADOS ........................................................................................ 99
CRIAR UMA TABELA NO MODO DESIGN .......................................................................................................................... 100
TIPOS DE DADOS .................................................................................................................................................. 101
PROPRIEDADES DE CAMPOS ................................................................................................................................ 103
BARRA DE FERRAMENTAS DO MODO DESIGN DE TABELA ................................................................................... 104
EDITANDO DADOS NO MODO FOLHA DE DADOS................................................................................................. 105

UNIDADE 21 21.1
21.2
21.3

FORMULRIOS ................................................................................................................................. 126

O QUE SO FORMULRIOS? ................................................................................................................................ 126


CRIANDO UM NOVO FORMULRIO ..................................................................................................................... 127
CAIXA DE FERRAMENTAS ..................................................................................................................................... 130
SOBRE AS SEES DE UM FORMULRIO .............................................................................................................. 133
SUBFORMULRIOS .............................................................................................................................................. 135

UNIDADE 24 24.1
24.2
24.3

CONSULTAS...................................................................................................................................... 114

O QUE SO AS CONSULTAS NO ACCESS ............................................................................................................... 114


CRIAR UMA CONSULTA USANDO O ASSISTENTE DE CONSULTA ............................................................................................ 114
CRIAR UMA CONSULTA USANDO O MODO DESGIN............................................................................................................ 115
TIPOS DE CONSULTAS .......................................................................................................................................... 118

UNIDADE 23 23.1
23.2
23.3
23.4
23.5

RELACIONAMENTOS ........................................................................................................................ 109

BANCO DE DADOS RELACIONAL ........................................................................................................................... 109


TIPOS DE RELACIONAMENTOS ............................................................................................................................. 109
DEFININDO OS RELACIONAMENTOS .................................................................................................................... 111

UNIDADE 22 22.1
22.2
22.3
22.4

TABELAS ............................................................................................................................................. 95

RELATRIOS ..................................................................................................................................... 140

O QUE SO RELATRIOS? .................................................................................................................................... 140


CRIANDO UM NOVO RELATRIO ......................................................................................................................... 141
CAIXA DE FERRAMENTAS ..................................................................................................................................... 144

UNIDADE 25 25.1
25.2

PARA CRIAR UMA PGINA DE ACESSO A DADOS ................................................................................................. 146


CRIAR UMA PGINA DE ACESSO .......................................................................................................................... 146

UNIDADE 26 26.1
26.2
26.3
26.4

MYSQL QUERY BROWSER ......................................................................................................................................... 163


ACESSANDO UMA BASE DE DADOS ............................................................................................................................... 164

CRIANDO UMA NOVA BASE DE DADOS ............................................................................................ 178

INTERFACE E COMANDO............................................................................................................................................. 178

UNIDADE 39 39.1

CONHECENDO A INTERFACE ............................................................................................................. 177

APLICATIVO NATIVO .................................................................................................................................................. 177


ACESSANDO UMA BASE DE DADOS ............................................................................................................................... 177

UNIDADE 38 38.1

CONECTANDO AO BANCO DE DADOS............................................................................................... 175

ATRAVS DE LINGUAGENS DE PROGRAMAO ................................................................................................................ 175


ATRAVS DO FRONT-END ........................................................................................................................................... 176

UNIDADE 37 37.1
37.2

O FRONT-END .................................................................................................................................. 174

FERRAMENTA NATIVA ................................................................................................................................................ 174

UNIDADE 36 36.1
36.2

SQL SERVER ...................................................................................................................................... 172

INTRODUO ........................................................................................................................................................... 172

UNIDADE 35 35.1

CRIANDO CONSULTAS ...................................................................................................................... 170

INTERFACE .............................................................................................................................................................. 170

UNIDADE 34 34.1

CRIANDO TABELAS ........................................................................................................................... 167

INTERFACE .............................................................................................................................................................. 167

UNIDADE 33 33.1

CRIANDO UMA NOVA BASE DE DADOS ............................................................................................ 166

INTERFACE E COMANDO............................................................................................................................................. 166

UNIDADE 32 32.1

CONHECENDO A INTERFACE ............................................................................................................. 163

PHPMYADMIN ......................................................................................................................................................... 163

UNIDADE 31 31.1

CONECTANDO AO BANCO DE DADOS............................................................................................... 159

ATRAVS DE LINGUAGENS DE PROGRAMAO ................................................................................................................ 159


ATRAVS DO FRONT-END ........................................................................................................................................... 160

UNIDADE 30 30.1
30.2
30.3

O FRONT-END .................................................................................................................................. 158

ALGUNS EXEMPLOS................................................................................................................................................... 158

UNIDADE 29 29.1
29.2

MYSQL ............................................................................................................................................. 157

INTRODUO ........................................................................................................................................................... 157

UNIDADE 28 28.1

PERSONALIZAO E UTILITRIOS..................................................................................................... 152

CONFIGURAES DE INICIALIZAO ................................................................................................................... 152


COMPACTANDO UM BANCO DE DADOS ......................................................................................................................... 153
REPARANDO UM BANCO DE DADOS .................................................................................................................... 154
PROTEGENDO UM APLICATIVO............................................................................................................................ 154

UNIDADE 27 27.1

PGINA DE DADOS........................................................................................................................... 146

CRIANDO TABELAS ........................................................................................................................... 180

INTERFACE .............................................................................................................................................................. 180

UNIDADE 40 40.1

INTERFACE .............................................................................................................................................................. 181

UNIDADE 41 41.1

XML NO SQL SERVER ........................................................................................................................ 183

CRIANDO COLUNAS DO TIPO XML ................................................................................................................................ 183


INSERINDO VALORES .................................................................................................................................................. 184
ATUALIZANDO VALORES ............................................................................................................................................. 185
DELETANDO VALORES ............................................................................................................................................... 189

UNIDADE 43 43.1

CONHECENDO XML .......................................................................................................................... 182

INTRODUO ........................................................................................................................................................... 182

UNIDADE 42 42.1
42.2
42.3
42.4

CRIANDO CONSULTAS ...................................................................................................................... 181

TRABALHO FINAL ............................................................................................................................. 190

SITUAO PROBLEMA ................................................................................................................................................ 190

Banco de Dados I

Unidade 1 - Introduo ao Banco de Dados


1.1 Introduo
A tecnologia aplicada aos mtodos de armazenamento de informaes vem crescendo e gerando
um impacto cada vez maior no uso de computadores, em qualquer rea em que os mesmos
podem ser aplicados.
Um Banco de dados pode ser definido como um conjunto de dados devidamente relacionados.
Por dados podemos compreender como fatos conhecidos que podem ser armazenados e que
possuem um significado implcito. Porm, o significado do termo banco de dados mais restrito
que simplesmente a definio dada acima. Um banco de dados possui as seguintes propriedades:
Banco de dados uma coleo lgica coerente de dados com um significado inerente; uma
disposio desordenada dos dados no pode ser referenciada como um banco de dados;
Banco de dados projetado, construdo e populado com dados para um propsito especfico; um
banco de dados possui um conjunto pr-definido de usurios e aplicaes;
Banco de dados representa algum aspecto do mundo real, o qual chamado de minimundo;
qualquer alterao efetuada no minimundo automaticamente refletida no banco de dados.
Banco de dados pode ser criado e mantido por um conjunto de aplicaes desenvolvidas
especialmente para esta tarefa ou por um Sistema Gerenciador de Banco de Dados (SGBD). Um
SGBD permite aos usurios criarem e manipularem bancos de dados de propsito gerais. O
conjunto formado por um banco de dados mais as aplicaes que manipulam o mesmo chamado
de Sistema de Banco de Dados.
Banco de Dados: uma coleo de dados inter-relacionados, representando informaes sobre
um domnio especfico.
Exemplos: lista telefnica, controle do acervo de uma biblioteca, sistema de controle dos recursos
humanos de uma empresa.
Sistema de Gerenciamento de Bancos de Dados (SGBD): um software com recursos
especficos para facilitar a manipulao das informaes dos bancos de dados e o
desenvolvimento de programas aplicativos.

Banco de Dados I

Unidade 2 - Conceitos e Arquiteturas - SGBD


2.1 As Linguagens para Manipulao de Dados:
Para a definio dos esquemas conceituais e internos pode-se utilizar uma linguagem chamada
DDL (Data Definition Language - Linguagem de Definio de Dados). O SGBD possui um
compilador DDL que permite a execuo das declaraes para identificar as descries dos
esquemas e para armazen-las no catlogo do SGBD. A DDL utilizada em SGBDs onde a
separao entre os nveis internos e conceituais no muito clara.
Em um SGBD em que a separao entre os nveis conceitual e interno so bem claras, utilizado
outra linguagem, a SDL (Storage Definition Language - Linguagem de Definio de
Armazenamento) para a especificao do esquema interno. A especificao do esquema
conceitual fica por conta da DDL.
Em um SGBD que utiliza a arquitetura trs esquemas, necessria a utilizao de mais uma
linguagem para a definio de vises, a VDL (Vision Definition Language - Linguagem de Definio
de Vises).
Uma vez que o esquema esteja compilado e o banco de dados esteja populado, usa-se uma
linguagem para fazer a manipulao dos dados, a DML (Data Manipulation Language - Linguagem
de Manipulao de Dados).

2.2 Classificao dos SGBDs


O principal critrio para se classificar um SGBD o modelo de dados no qual baseado. A grande
maioria dos SGBDs contemporneos baseada no modelo relacional, alguns em modelos
conceituais e alguns em modelos orientados a objetos. Outras classificaes so:
Usurios: um SGBD pode ser monousurio, comumente utilizado em computadores pessoais ou
multiusurios, utilizado em estaes de trabalho, minicomputadores e mquinas de grande porte;
Localizao: um SGBD pode ser localizado ou distribudo; se ele for localizado, ento todos os
dados estaro em uma mquina (ou em um nico disco) ou distribudo, onde os dados estaro
distribudos por diversas mquinas (ou diversos discos);
Ambiente: ambiente homogneo o ambiente composto por um nico SGBD e um ambiente
heterogneo o ambiente composto por diferentes SGBDs.

2.3 O Modelo de Rede 3-3-1

Banco de Dados I

Os dados so representados por colees de registros e os relacionamentos por elos.

2.4 O Modelo Hierrquico 3-3-2:


Os dados e relacionamentos so representados por registros e ligaes, respectivamente.
Os registros so organizados como colees arbitrrias de rvores.

2.5 O Modelo Relacional 3-3-3:

Banco de Dados I

Os meta dados so representados por tabelas, contendo linhas e colunas, onde so ligadas por
colunas. Cada tabela contm uma ou mais colunas como identificadores.

Laboratrio
Definir os seguintes termos:
Sistema de bancos de dados:
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
Banco de dados
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
Sistema de gerenciamento de banco de dados
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
Quais as vantagens e desvantagens da utilizao de um sistema de banco de dados?
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________

Banco de Dados I

Descrever o modelo relacional de dados.


_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
Definir os seguintes termos:
Linguagem de definio de dados;
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________
Linguagem de manipulao de dados.
_______________________________________________________________________________
_______________________________________________________________________________
_______________________________________________________________________________

Banco de Dados I

Unidade 3 - Modelagem de Dados Utilizando o


Modelo Entidade Relacionamento (ER)
3.1 Elementos do Modelo Entidade-Relacionamento
Este o modelo mais utilizado atualmente, devido principalmente, a sua simplicidade e eficincia.
Baseiam-se na percepo do mundo real, que consiste em uma coleo de objetos bsicos,
chamados entidades e em relacionamentos entre esses objetos. Para identificar um modelo
relacional, utilizamos o Diagrama de Estrutura de Dados.
Abaixo identificaremos todas as caractersticas do Modelo E-R
Entidade: objeto do mundo real, concreto ou abstrato e que possui existncia independente.
O objeto bsico tratado pelo modelo ER a entidade. Uma entidade pode ser concreta, como
uma caneta ou uma pessoa, ou abstrata, como um conceito ou uma sensao.
No banco de dados de uma empresa, por exemplo, so entidades: Funcionrio, cliente,
Departamento, etc. Cada entidade representa objetos com as mesmas caractersticas.
Um banco de dados, portanto, compreende uma coleo de conjuntos de entidades do mesmo
tipo.
O smbolo que representa a entidade no modelo E-R um retngulo como o nome da entidade
escrito no seu interior, por exemplo:

FUNCIONARIO

Cada entidade possui um conjunto particular de propriedades que a descreve chamado atributos.
Atributos: So propriedades (caractersticas) que identificam as entidades. Cada entidade possui
uma coleo de elementos de dados.
A cada atributo de uma entidade associado um domnio de valores. Esses domnios podem ser
um conjunto de nmeros inteiros, nmeros reais, cadeias de caracteres ou qualquer outro tipo de
valor que o atributo pode assumir.
Os atributos so representados apenas pelo seu nome ligado entidade por uma linha reta, por
exemplo:

FUNCIONRIO

Nome

Banco de Dados I

Podemos ter vrios tipos de atributos: simples, composto, multivalorado e determinante. Vejamos
as caractersticas de cada um deles:
Simples ou atmico: no possui qualquer caracterstica especial. Por exemplo, o nome Da
empresa um atributo sem qualquer caracterstica especial.

Nome

EMPRESA

Composto: o seu contedo formado por itens menores. O contedo de um atributo composto
pode ser dividido em vrios atributos simples.

Rua
EMPRESA

Endereo

CEP
Bairro

Multivalorado: o seu contedo pode ser formado por mais de uma informao. indicado
colocando-se um asterisco procedendo ao nome do atributo, como no caso da empresa que pode
possuir mais de um telefone.
EMPRESA

* Telefone

Determinante: o atributo determinante aquele que define univocamente as instncias de uma


entidade, ou seja, nico para as instncias de uma entidade. indicado sublinhando-se o nome
do atributo. No exemplo de uma empresa, o CNPJ um atributo determinante, pois no podem
existir duas empresas com o mesmo valor nesse atributo.

EMPRESA

CNPJ

Vejamos um exemplo no qual se aplicam os conceitos vistos at aqui:


Uma empresa necessita armazenar os dados de seus funcionrios, atualmente em um fichrio. Os
dados so a Matrcula, o Nome, o Endereo (Rua, CEP e Bairro), o Telefone (o funcionrio pode
ter mais de um) e o cargo.

Banco de Dados I

Nome

Matrcula

Rua
Endereo

EMPRESA

CEP
Bairro

* Telefone

Cargo

Laboratrio
Identifique os atributos e o tipo do atributo nas seguintes entidades.
CLIENTES - FUNCIONARIOS - EMPRESA - PRODUTOS

3.2 Tipos e Instncias de Relacionamento:


Alm de conhecer detalhadamente os tipos entidade, muito importante conhecer tambm os
relacionamentos entre estes tipos entidades.
Relacionamento: o tipo de ocorrncia existente entre entidades. O Smbolo que representa o
relacionamento no modelo E-R um losango com o nome do relacionamento escrito no seu
interior, como no exemplo a seguir:

Pertence

Existem trs tipos de relacionamentos entre entidades: um-para-um, um-para-vrios e vrios-paravrios.


Um-Para-Um: quando uma entidade de A se relaciona com uma entidade de B.
Como exemplo, podemos citar uma empresa que dividida em departamentos e em cada
departamento possui um nico gerente e um funcionrio-gerente s pode chefiar um nico
departamento.

10

Banco de Dados I

Gerencia

Funcionrio

Departamento

e1
e2
e3
e4
e5
e6
e7

d1
d2
d3

1:1

Funcionrio

chefia

Departamento

Este um caso particular, pois outra empresa poderia ter o mesmo gerente chefiando vrios
departamentos. Vale lembrar que os modelos de dados so utilizados num determinado contexto.
Muda-se o contexto, muda-se tambm o modelo de dados.
Um-para-Vrios: quando cada entidade de (A) pode se relacionar com uma ou mais entidades
de B. Quando se quer dizer uma ou mais de uma entidade, utiliza-se a letra N.
No exemplo, uma empresa dividida em departamentos, um funcionrio s pode ser alocado em
um nico departamento, porm num departamento podem trabalhar vrios funcionrios.
Trabalha Para

Funcionrio

Departamento

e1
e2
e3
e4
e5
e6
e7

d1
d2
d3

N:1

Funcionrio

Trabalha para

Departamento

Esta representao acaba resultando num relacionamento 1: N invertido.

11

Banco de Dados I

Vrios-para-vrios: quando vrias (N) entidade de A se relacionam com vrias(M) entidade de


B.
Exemplo para esse tipo de relacionamento o que ocorre entre um funcionrio e os projetos de
uma empresa. Um funcionrio pode trabalhar em vrios projetos, e um projeto pode ser executado
por mais de um funcionrio.
A
B
Trabalha Em
Funcionrio

Projeto

e1
e2
e3
e4

p1
p2
p3

N:M

Funcionrio

Trabalha
em

M
1

Projeto

Cardinalidade: define o nmero mximo de ocorrncias em um relacionamento


Para se determinar a cardinalidade, deve-se fazer a pergunta relativa ao relacionamento em
ambas as direes. No exemplo a seguir, temos:
1
Departamento
(1:N)

possui

N
Funcionrio
(1:1)

- Um departamento possui quantos funcionrios? No mnimo 1 e no mximo N.


- Um funcionrio est alocado em quantos departamentos? Em no mnimo 1 e no mximo 1.
No primeiro caso a cardinalidade N, e no segundo 1. Somando-se as cardinalidade, definimos
o resultado final do relacionamento, observado nos modelos de dados (no caso 1: N).
Dois relacionamentos: uma entidade pode ter mais de um relacionamento com a outra entidade.
A entidade departamento, por exemplo, pode ter uma relao de locao e outra de gerncia com
a entidade Funcionrio. Nesse caso, existem dois relacionamentos entre as entidades.

12

Banco de Dados I

gerncia
N

1
Funcionrio

Departamento
1

1
locao

Traduzindo o diagrama temos:


- cada departamento da empresa possui vrios (N) funcionrios lotados nele.
- um departamento possui um nico funcionrio que ocupa o cargo de gerente.
Grau de um Relacionamento: O grau de um tipo relacionamento o nmero de tipos entidade
que participam do tipo relacionamento. O grau de um relacionamento ilimitado, porm, a partir do
grau trs (ternrio), a compreenso e a dificuldade de se desenvolver a relao corretamente se
tornam extremamente complexas.
Relacionamento Ternrio: alguns relacionamentos precisam ligar 3 entidades, como no exemplo
que se segue.
Numa indstria, um fornecedor pode fornecer vrias peas para vrios projetos. Um projeto pode
ter vrios fornecedores para vrias peas. E uma pea pode ter vrios fornecedores para vrios
projetos.
N
Fornecedor

M
1

PFPj

Pea

Projeto
Auto relacionamento: uma entidade pode se relacionar com ela mesma. Observe o exemplo:
Numa empresa, um funcionrio pode chefiar vrios funcionrios, porm ele tambm um
funcionrio.
Chefia

Funcionrio
1

Entidade Dependente: uma entidade pode ter sua existncia vinculada existncia de outra
entidade.

13

Banco de Dados I

Uma empresa necessita armazenar os dados dos dependentes menores dos funcionrios.
A entidade Dependente s existe porque existe a entidade Funcionrio

1
Funcionrio

Possui

N
Dependente

O smbolo que representa a entidade dependente um retngulo dentro de outro retngulo, com o
nome da entidade escrito no seu interior.
Relacionamento -Um (Generalizao/Especializao): ocorre quando uma entidade com seus
atributos englobam entidades especializadas com seus atributos especficos. No esquema a
seguir, a entidade Cliente engloba seus atributos e tambm os atributos especficos da entidade
Pessoa Fsica, assim como os de Pessoa Jurdica.

Cliente

Pessoa
Fsica

Pessoa Jurdica

3.3 Resumo dos objetos grficos:


O diagrama Entidade Relacionamento composto por um conjunto de objetos grficos que visa
representar todos os objetos do modelo Entidade Relacionamento tais como entidades, atributos,
atributos chaves, relacionamentos, restries estruturais, etc.
O diagrama ER fornece uma viso lgica do banco de dados, fornecendo um conceito mais
generalizado de como esto estruturados os dados de um sistema.
Os objetos que compem o diagrama ER esto listados a seguir,
ENTIDADE

ATRIBUTO
ATRIBUTO CHAVE

ENTIDADE
FRACA

* ATRIBUTO MULTIVALORADO
ATRIBUTO
COMPOSTO

RELACIONAMENT
O

14

Banco de Dados I

E1

E2

Taxa de Cardinalidade
1:1 para E1:E2 em R

E1

E2

Taxa de Cardinalidade
1:N para E1:E2 em R

E1

N
1

E2

Taxa de Cardinalidade
N:M para E1:E2 em R

Figura - Objetos que Compem o Diagrama ER

3.4 Modelo Entidade Relacionamento Estendido:


Os conceitos do modelo Entidade Relacionamento discutidos anteriormente so suficientes para
representar logicamente a maioria das aplicaes de banco de dados.
Porm, com o surgimento de novas aplicaes, surgiu tambm a necessidade de novas
semnticas para a modelagem de informaes mais complexas. O modelo Entidade
Relacionamento
Estendido (ERE) visa fornecer esta semntica para permitir a representao de informaes
complexas.
importante frisar que embora o modelo ERE trate classes e subclasses, ele no possui a mesma
semntica de um modelo orientado a objetos.
O modelo ERE engloba todos os conceitos do modelo ER mais os conceitos de subclasse,
superclasse, generalizao e especializao e o conceito de herana de atributos.
Subclasses, Superclasses e Especializaes:
O primeiro conceito do modelo ERE que ser abordado o de subclasse de um tipo entidade.
Como visto anteriormente, um tipo entidade utilizado para representar um conjunto de entidades
do mesmo tipo.
Em muitos casos, um tipo entidade possui diversos subgrupos adicionais de entidades que so
significativas e precisam ser representadas explicitamente devido ao seu significado aplicao
de banco de dados. Leve em considerao o seguinte exemplo:
Para um banco de dados de uma empresa temos o tipo entidade empregado, o qual possui as
seguintes caractersticas: nome, RG, CIC, nmero funcional, endereo completo (rua, nmero,
complemento, CEP, bairro, cidade), sexo, data de nascimento e telefone (DDD e nmero); caso o
(a) funcionrio (a) seja um (a) engenheiro (a), ento se deseja armazenar as seguintes
informaes: nmero do CREA e especialidade (Civil, Mecnico, Eletro/Eletrnico); caso o (a)
funcionrio (a) seja um (a) secretrio (a), ento se deseja armazenar as seguintes informaes:
qualificao (bi ou tri lngua) e os idiomas no qual possui fluncia verbal e escrita.
Se as informaes nmero do CREA, especialidade, tipo e idiomas forem representadas
diretamente no tipo entidade empregado estaremos representando informaes de um conjunto
limitados de entidades empregado para os todos os funcionrios da empresa.
Neste caso, podemos criar duas subclasses do tipo entidade empregado: engenheiro e secretria,
as quais iro conter as informaes acima citadas. Alm disto, engenheiro e secretria podem ter
relacionamentos especficos.
Uma entidade no pode existir meramente como componente de uma subclasse. Antes de ser
componente de uma subclasse, uma entidade deve ser componente de uma superclasse.

15

Banco de Dados I

Isto leva ao conceito de herana de atributos; ou seja, a subclasse herda todos os atributos da
superclasse. Isto porque a entidade de subclasse representa as mesmas caractersticas de uma
mesma entidade da superclasse.
Uma subclasse pode herdar atributos de superclasses diferentes.
A figura abaixo mostra a representao diagramtica do exemplo acima.

nome

dt. nasc.

no. funcional
sexo

Empregado

rg

Funo

endere
o

d
qualificao

No registro

Engenheiro

especializao

Secretria

idiomas

Figura - Representao de Superclasse e Subclasses

3.5 Especializao
Especializao o processo de definio de um conjunto de classes de um tipo entidade; este tipo
entidade chamado de superclasse da especializao. O conjunto de subclasses formado
baseado em alguma caracterstica que distingue as entidades entre si.
No exemplo da figura 12, temos uma especializao, a qual pode chamar de funo. Veja agora
no exemplo da figura 13, temos a entidade empregado e duas especializaes.

Empregado
Funo

Categoria
Salarial
d

Engenheiro

Secretria

Horista

Mensalista

16

Banco de Dados I

Figura - Duas Especializaes para Empregado: Funo e Categoria


Como visto anteriormente, uma subclasse pode ter relacionamentos especficos com outras
entidades ou com a prpria entidade que a sua superclasse. Veja o exemplo da figura 14.

N
Projeto

Empregado
liderado

desenvolvid
o por

Funo
N
d

lidera

N
Engenheiro

Secretria

participa

Figura - Relacionamentos Entre Subclasses e Entidades


O processo de especializao nos permite:
Definir um conjunto de subclasses de um tipo entidade;
Associar atributos especficos adicionais para cada subclasse;
Estabelecer tipos relacionamentos especficos entre subclasses e outros tipos entidades.

3.6 Generalizao:
A generalizao pode ser pensada como um processo de abstrao reverso ao da especializao,
no qual so suprimidas as diferenas entre diversos tipos entidades, identificando suas
caractersticas comuns e generalizando estas entidades em uma superclasse.

no. funcional

no. funcional

qualificao

No registro

especializao

Engenheiro

nome

rg

Secretria

nome

idiomas

rg

17

Banco de Dados I

Figura - Tipos Entidades Engenheiro e Secretria

nome
no. funcional

rg

Empregado

d
qualificao

n registro

especializao

Engenheiro

Funo

Secretria

idiomas

Figura - Generalizao Empregado para os Tipos Entidades Engenheiro e Secretria


importante destacar que existe diferena semntica entre a especializao e a generalizao.
Na especializao, podemos notar que a ligao entre a superclasse e as subclasses feita
atravs de um trao simples, indicando participao parcial por parte da superclasse.
Analisando o exemplo da figura 12, observado que um empregado no obrigado a ser um
engenheiro ou uma secretria. Na generalizao, podemos notar que a ligao entre a
superclasse e as subclasses feita atravs de um trao duplo, indicando participao total por
parte da superclasse. Analisando o exemplo da figura 16, observado que um empregado
obrigado a ser um engenheiro ou uma secretria.
A letra d dentro do crculo que especifica uma especializao ou uma generalizao significa
disjuno.
Uma disjuno em uma especializao ou generalizao indica que uma entidade do tipo entidade
que representa a superclasse pode assumir apenas um papel dentro da mesma.

18

Banco de Dados I

Analisando o exemplo da figura 13 temos duas especializaes para a superclasse Empregado,


as quais so restringidas atravs de uma disjuno. Neste caso, um empregado pode ser um
engenheiro ou uma secretria e o mesmo pode ser horista ou mensalista.
Alm da disjuno podemos ter um overlap, representado pela letra o. No caso do overlap,
uma entidade de uma superclasse pode ser membro de mais que uma subclasse em uma
especializao ou generalizao. Analise a generalizao no exemplo da figura 17. Suponha que
uma pea fabricada em uma tornearia pode ser manufaturada ou torneada ou ainda, pode ter sido
manufaturada e torneada.

no. da pea

Descri
o

Pea

o
No. Projeto

Data
Ordem Servio

Manufaturada

Torneada

Preo

Figura - Uma Generalizao com Overlap

3.7 Lattice ou Mltipla Herana:


Uma subclasse pode ser definida atravs de um lattice, ou mltipla herana, ou seja, ela pode ter
diversas superclasses, herdando caractersticas de todas. Leve em considerao o seguinte
exemplo:
Uma construtora possui diversos funcionrios, os quais podem ser engenheiros ou secretrias.
Um funcionrio pode tambm ser assalariado ou horista. Todo gerente de departamento da
construtora deve ser um engenheiro e assalariado.

Empregado
Funo

Categoria Salarial

19
Secretaria

Engenheiro

Mensalista

Horista

Banco de Dados I

Figura 18 - Um Lattice com a Subclasse Gerente Compartilhada


Neste caso ento, um gerente ser um funcionrio que alm de possuir as caractersticas prprias
de Gerente, herdar as caractersticas de Engenheiro e de Mensalista.

3.8 Dicas para a elaborao de um diagrama E-R:


A presena de um substantivo usualmente indica uma entidade;
A presena de um verbo uma forte indicao de um relacionamento;
Um adjetivo, que uma qualidade, uma forte indicao de um atributo;
Um advrbio temporal, qualificando o verbo, uma indicao de um atributo do relacionamento.
Laboratrio
Etapas
1) Construa um diagrama E-R para um hospital com um conjunto de pacientes e um conjunto de
mdicos. Registros de diversos testes realizados so associados a cada paciente.
2) Construa um diagrama E-R para uma companhia de seguros de automveis com um conjunto
de clientes, onde cada um possui certo nmero de carros. Cada carro tem um nmero de
acidentes associados a ele.
3) Explique a diferena entre uma entidade (conjunto entidade) e uma ocorrncia (instncia) de
uma entidade.
4) O que o papel de uma entidade em um relacionamento? Quando necessrio especific-lo?
5) Construa um diagrama ER em que o conceito de entidade associativa seja utilizado.
6) Mostre como o diagrama abaixo pode ser representado apenas por relacionamentos binrios.

20

Banco de Dados I

7) Modifique o diagrama abaixo para especificar o seguinte:


a) Um curso no pode estar vazio, isto , deve possuir alguma disciplina em seu currculo.
b) Um aluno, mesmo que no inscrito em nenhum curso, deve permanecer por algum tempo no
banco de dados.
c) Um aluno pode fazer mais de um curso.
8) Esboce o diagrama do exerccio anterior na notao de Peter Chen, especificando as
cardinalidades mnimas e mximas (min. Max).

21

Banco de Dados I

Unidade 4 - O Modelo Relacional


4.1 O Modelo Relacional
Nesta unidade apresentado o modelo relacional de forma terica e a forma como o mesmo pode
ser derivado do modelo Entidade-Relacionamento apresentado na unidade anterior. Assim, com o
contedo visto na unidade anterior podemos modelar os dados de uma aplicao, atravs do
modelo ER, e mape-los para o modelo relacional, de forma a implementar no banco de dados.

4.2 Domnios, Tuplas, Atributos e Relaes


Um domnio D um conjunto de valores atmicos, sendo que por atmico, podemos
compreender que cada valor do domnio indivisvel. Durante a especificao do domnio
importante destacar o tipo, o tamanho e a faixa do atributo que est sendo especificado. Por
exemplo:

Coluna

Tipo

Tamanho

Faixa

RG

Numrico

10,0

0300000025999999

Nome

Caractere

30

a-z, A-Z

Salrio

Numrico

5,2

00100,0012999,99

Um esquema de relao R, denotado por R(A1, A2,..., An), onde cada atributo Ai o nome do
papel desempenhado por um domnio D no esquema relao R, onde D chamado domnio de Ai
e denotado por dom (Ai). O grau de uma relao R o nmero de atributos presentes em seu
esquema de relao.
A instncia r de um esquema relao denotado por r(R) um conjunto de n-tuplas:
r = [t1, t2, ... , tn] onde os valores de [t1, t2, ... , tn] devem estar contidos no domnio D. O valor nulo
tambm pode fazer parte do domnio de um atributo e representa um valor no conhecido para
uma determinada tupla.

22

Banco de Dados I

4.3 Atributo Chave de uma Relao


Uma relao pode ser definida como um conjunto de tuplas distintas. Isto implica que a
combinao dos valores dos atributos em uma tupla no pode se repetir na mesma tabela. Existir
sempre um subconjunto de atributos em uma tabela que garantem que no haver valores
repetidos para as diversas tuplas da mesma, garantindo que t1[SC] t2[SC].
SC chamada de superchave de um esquema de relao. Toda relao possui ao menos uma
superchave - o conjunto de todos os seus atributos. Uma chave C de um esquema de relao R
uma superchave de R com a propriedade adicional que removendo qualquer atributo A de K, resta
ainda um conjunto de atributos K que no uma superchave de R. Uma chave uma superchave
da qual no se pode extrair atributos.
Por exemplo, o conjunto: (RA, Nome, Endereo) uma superchave para estudante, porm, no
uma chave, pois se tirarmos o campo Endereo continuaremos a ter uma superchave. J o
conjunto (Nome da Revista, Volume, No da Revista) uma superchave e uma chave, pois
qualquer um dos atributos que retirarmos, deixar de ter uma superchave, ou seja, (Nome da
Revista, Volume) no identifica uma nica tupla.
Em outras palavras, uma superchave uma chave composta, ou seja, uma chave formada por
mais que um atributo.
Veja o exemplo abaixo:

Tabela DEPENDENTES
RG
Responsvel

Nome
Dependente

Dt.
Nascimento

Relao

Sexo

10101010

Jorge

27/12/86

Filho

Masculin
o

10101010

Luiz

18/11/79

Filho

Masculin
o

20202020

Fernanda

14/02/69

Cnjuge

Feminin
o

20202020

ngelo

10/02/95

Filho

Masculin
o

Quando uma relao possui mais que uma chave (no confundir com chave composta) - como,
por exemplo, RG e CIC para empregados - cada uma destas chaves so chamadas de chaves
candidatas. Uma destas chaves candidatas deve ser escolhida como chave primria.
Uma chave estrangeira CE de uma tabela R1 em R2 ou vice-versa, especifica um relacionamento
entre as tabelas R1 e R2.

23

Banco de Dados I

Tabela DEPARTAMENTO
Nome

Nmer
o

RG
Gerente

Contabilidade

10101010

Engenharia
Civil

30303030

Engenharia
Mecnica

20202020

Tabela EMPREGADO
Nome

RG

CIC

Depto.

RG
Supervisor

Salrio

Joo Luiz

10101010

11111111

NULO

3.000,00

Fernando

20202020

22222222

10101010

2.500,00

Ricardo

30303030

33333333

10101010

2.300,00

Jorge

40404040

44444444

20202020

4.200,00

Renato

50505050

55555555

20202020

1.300,00

4.4 Chave Primria


o atributo ou conjunto de atributos que identifica univocamente as tuplas (linhas) de uma tabela.
Normalmente o atributo determinante no modelo E-R e, da mesma forma, sublinhado quando
informado.
Muitas vezes, precisamos criar um campo chave, mesmo que a tabela tenha atributos
determinantes.
Na tabela Fornecedor, criamos um campo determinante Cdigo, denominado, portanto, chave
primria (PRIMARY KEY).

24

Banco de Dados I

4.5 Chave Candidata


qualquer conjunto de atributos que consegue satisfazer ao critrio de chave primria. Toda
tabela tem pelo menos uma chave candidata. Quando existe mais de uma chave candidata, devese escolher para chave primria o campo que tenha a menor possibilidade de ter um valor nulo.

4.6 Chave Estrangeira


o atributo de uma tabela que chave primria de outra tabela.
A chave estrangeira (FOREIGN KEY) utilizada sempre que uma entidade se relacionar com
outra por meio de um relacionamento. Quando isso ocorre, o campo chave primria da tabela A
chave estrangeira na tabela B, ou vice-versa, dependendo o tipo de cardinalidade dos
relacionamentos.

4.7 Mapeamento do Modelo Entidade Relacionamento


para o Modelo Relacional
O mapeamento do modelo entidade relacionamento para o Modelo Relacional segue oito passos
bsicos, a saber:
1. Para cada entidade E no modelo ER criada uma tabela T1 no Modelo Relacional que inclua
todos os atributos simples de E; para cada atributo composto, so inseridos apenas os
componentes simples de cada um; um dos atributos chaves de E deve ser escolhida como a chave
primria de T1;

Funcionrio
Cdigo (PK)
Nome
Rua
Numero
CEP
Bairro
Data_nascimento
CPF

25

Banco de Dados I

2. Para cada entidade fraca EF com entidade proprietria E no modelo ER, criada uma tabela T1
no Modelo Relacional incluindo todos os atributos simples de EF; para cada atributo composto, so
inseridos apenas os componentes simples de cada um; a chave primria desta relao T1 ser
composta pela chave parcial da entidade fraca EF mais a chave primria da entidade proprietria
E;

Funcionrio

Dependente

Codigo

CodigoFuncionario (PK)

Nome

CodigoDependente

Rua

Nome

Numero

Data_nascimento

CEP

Tipo_parentesco

Bairro
Data_nascimento
CPF

3. Para cada relacionamento regular com cardinalidade 1:1 entre entidades E1 e E2 que geraram
as tabelas T1 e T2 respectivamente, devemos escolher a chave primria de uma das relaes (T1,
T2)e inseri-la como chave estrangeira na outra relao; se um dos lados do relacionamento tiver
participao total e outro parcial, ento interessante que a chave do lado com participao
parcial seja inserida como chave estrangeira no lado que tem participao total;

Relacionamento Gerncia
Funcionario

Departamento

Codigo

Codigo

Nome

CodigoFuncionario (PK)

Rua

Nome

Numero
CEP
Bairro

26

Banco de Dados I

4. Para cada relacionamento regular com cardinalidade 1: N entre entidades E1 e E2


respectivamente e que geraram as tabelas T1 e T2 respectivamente, deve-se inserir a chave
primria de T1 como chave estrangeira em T2;

Relacionamento Trabalha
Funcionario

Departamento

Codigo

Codigo

CodigoDepartamento (PK)

Nome

Nome
Rua
Numero
CEP
Bairro
5. Para cada relacionamento regular com cardinalidade N: N entre entidades E1 e E2, cria-se uma
nova tabela T1, contendo todos os atributos do relacionamento mais o atributo chave de E1 e o
atributo chave de E2; a chave primria de T1 ser composta pelos atributos chave de E1 e E2;
Funcionario

FuncionarioProjeto

Projeto

Codigo

CodigoFuncionario (PK)

Codigo

Nome

CodigoProjeto (PK)

Nome

Rua

Descrio

Numero

Tempo_previsto

CEP
Bairro
6. Para cada atributo multivalorado A1, cria-se uma tabela T1, contendo o atributo multivalorado A1,
mais o atributo chave C da tabela que representa a entidade ou relacionamento que contm A1; a
chave primria de T1 ser composta por A1 mais C; se A1 for composto, ento a tabela T1 dever
conter todos os atributos de A1;
Funcionario

Telefone

Codigo

CodigoFuncionario (PK)

27

Banco de Dados I

Nome

CodigoTelefone

Rua

DDD

Numero

Numero

CEP

Tipo

Bairro
Data_nascimento
CPF

7. Para cada relacionamento n-rio, n > 2, cria-se uma tabela T1, contendo todos os atributos do
relacionamento; a chave primria de T1 ser composta pelos atributos chaves das entidades
participantes do relacionamento;
8. Converta cada especializao com m subclasses {S1, S2, ..., Sm} e superclasse SC, onde os
atributos de SC so {c, a1, a2, ..., an} onde c a chave primria de SC, em tabelas utilizando uma
das seguintes opes:
8.1. Crie uma tabela T para SC com os atributos A(T) = {c, a1, a2, ..., an} e chave C(T) = c; crie
uma tabela Ti para cada subclasse Si , 1 i m, com os atributos
A(Ti) = {c} A(Si), onde C(T) = c;
8.2. Crie uma tabela Ti para cada subclasse Si, 1 i m, com os atributos
A(Ti) = A(Si) {c, a1, a2, ..., an} e C(Ti) = c;
8.3. Crie uma tabela T com os atributos
A(T) = {c, a1, a2, ..., an} A(S1) ... A(Sm) {t} e C(T) = c, onde t um atributo tipo que indica
a subclasse qual cada tupla pertence, caso isto venha a ocorrer;
8.4. Crie uma tabela T com atributos
A(T) = {c, a1, a2, ..., an} A(S1) ... A(Sm) {t1, t2, ..., tm} e C(T) = c;
esta opo para generalizaes com overlapping, e todos os ti, 1 i m, um atributo
booleano indicando se a tupla pertence ou no subclasse Si; embora funcional esta opo
possa gerar uma quantidade muito grande de valores nulos;
Figura - Mapeamento para o Modelo Relacional
o

1 Passo - Entidades Normais

2 Passo - Entidades Fracas

EF

c
o

3 Passo - Relacionamentos 4 Passo - Relacionamentos 1:N


1:1
1
N
E
E
E
E
o

5 Passo - Relacionamentos
N:N
N
N
E
E

28

Banco de Dados I

4.8 Normalizao de Dados


Consiste em definir o formato conceitual adequado para as estruturas de dados identificados no
projeto lgico do sistema, com o objetivo de minimizar o espao utilizado pelos dados e garantir a
integridade e confiabilidade das informaes.
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.
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 garanta identificar apenas uma tupla da relao.
Primeira Forma Normal (1FN)
Uma tabela est na primeira forma normal se no domnio de seus atributos, isto , na interseo
de uma linha com uma coluna (clula) da tabela, s existirem valores atmicos.
Valor atmico uma unidade indivisvel, simples.
Assim, no pode ocorrer um domnio Endereo com subdomnios Cidade, Rua, Nmero,
Complemento. Uma tabela normalizada teria estes campos separados.
Situao

Soluo
Funcionario

Funcionario

Codigo

Codigo

29

Banco de Dados I

Nome

Nome

Endereco

Cidade
Rua
Numero
Complemento
Bairro

Segunda Forma Normal (2FN)


Uma tabela est na segunda forma normal se ela estiver na primeira forma normal e se cada
coluna no-chave depender totalmente da coluna-chave.
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:
Situao

Soluo

Venda

Vendas

Mercadoria

NumeroNF

NumNF

CodigoMercadoria

CodigoMercadoria

CodigoMercadoria

DescricaoMercadoria

DescricaoMercadoria

Quantidade

PrecoVenda

QuantidadeVendida

Valor

PreoVenda
TotalVenda
Como resultado desta etapa, houve um desdobramento do arquivo de Vendas em duas estruturas,
a saber:
Primeira estrutura (Arquivo de Vendas): Contm os elementos originais, sendo excludos os dados
que so dependentes apenas do campo Cdigo da Mercadoria.
Segunda estrutura (Arquivo 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:
Situao

Soluo

30

Banco de Dados I

NotaFiscal

NotaFiscal

Cliente

NumeroNF

NumeroNF

Cdigo

Serie

Serie

NomeCliente

DataEmissao

DataEmissao

CGCCliente

CodigoCliente

CodigoCliente

NomeCliente

TotalGeral

CGCCliente
TotalGeral
Como resultado desta etapa, houve um desdobramento do arquivo de 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 e CGC do cliente so inalterados. Este procedimento
permite evitar inconsistncia nos dados dos arquivos e economizar espao por eliminar o
armazenamento frequente e repetidas vezes destes dados. A cada nota fiscal comprada pelo
cliente, haver o armazenamento destes dados e poder ocorrer divergncia entre eles.
Depois das alteraes:
Primeira estrutura (Arquivo 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 (Arquivo 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 sistema, a critrio do analista de desenvolvimento durante
o projeto fsico do sistema.

Resumo da Unidade
O modelo relacional foi criado por Codd em 1970 e tem por finalidade representar os dados
como uma coleo de relaes, onde cada relao representada por uma tabela, ou falando de
uma forma mais direta, um arquivo. Porm, um arquivo mais restrito que uma tabela. Toda tabela
pode ser considerada um arquivo, porm, nem todo arquivo pode ser considerado uma tabela.
Quando uma relao pensada como uma tabela de valores, cada linha nesta tabela representa
uma coleo de dados relacionados. Estes valores podem ser interpretados como fatos
descrevendo uma instncia de uma entidade ou de um relacionamento. O nome da tabela e das
colunas desta tabela utilizado para facilitar a interpretao dos valores armazenados em cada
linha da tabela. Todos os valores em uma coluna so necessariamente do mesmo tipo.
Na terminologia do modelo relacional, cada tabela chamada de relao; uma linha de uma
tabela chamada de tupla; o nome de cada coluna chamado de atributo; o tipo de dado que
descreve cada coluna chamado de domnio.

31

Banco de Dados I

IMPORTANTE
Antes de comear o contedo sobre SQL, fazer o exerccio abaixo para servir de exemplo no
prximo assunto.
* Criar um banco de dados que represente uma empresa.
Este banco deve ser capaz de informar:
a) Dados sobre os funcionrios;
b) Quantos funcionrios trabalham em um determinado setor;
c) Qual o salrio mdio dos funcionrios.

32

Banco de Dados I

Unidade 5 -

SQL (structured query


language)

5.1 Introduo
Quando os Bancos de Dados Relacionais estavam sendo desenvolvidos, foram criadas linguagens
destinadas sua manipulao. De todas, sem dvida a que mais se popularizou foi a linguagem SQL.
A linguagem SQL permite a criao e manipulao de dados do banco de dados sem que o programador
precise se preocupar com detalhes internos do banco, como a forma como os dados so armazenados e
organizados internamente.
Foi criada para definir, modificar e consultar dados armazenados em banco de dados. Os grandes
fabricantes de banco de dados criaram extenses prprias para a linguagem. Como exemplo, temos:
Transact/SQL, Sysbase, Microsoft, PL/SQL, etc.
Para evitar problemas na manipulao do cdigo, devido quantidade plataformas, um comit foi criado
para torn-la independente. Este comit o comit da ANSI (american National Standards Institute).
A linguagem SQL no procedural, como C, Basic, COBOL, Pascal, entre outras. Nestas linguagens o
programador tem que dizer passo-a-passo o que o computador deve fazer.
O SQL uma linguagem declarativa. Nesta linguagem o programador diz ao computador o que deve ser
feito e este se encarrega de faz-lo.
A linguagem SQL pode ser Interativa ou Embutida. A forma Interativa usada diretamente para operar um
banco de dados, atravs de uma ferramenta que permite a execuo direta do cdigo SQL. A forma Embutida
introduz o cdigo SQL dentro das linhas do programa, que atravs de variveis tratado adequadamente.
A linguagem SQL subdividida em trs grupos de comando de forma parecida com a estrutura de um
banco de dados:
DDL (Data Definition Language):
Comandos responsveis pela criao de objetos. Ex.: Create Table, Create
View, Create Index.

5.2 DML (Data Manipulation Language):


Comando responsvel pela alterao de dados. Ex.: Select, Update, Delete.

5.3 DCL (Data Control Language):

33

Banco de Dados I

Comandos responsveis pela segurana do banco de dados. Ex.: Grant,


Revoke.

5.4 Tipos de Dados:


Na construo de uma tabela necessrio que os dados sejam definidos
quanto forma de armazenamento. As variaes do SQL criaram outros
tipos de dados, como por exemplo: armazenagem de imagens, filmes,
vetores, entre outros. O padro SQL ANSI reconhece apenas os tipos Text e
Number.
A tabela abaixo demonstra estes dois tipos:

Texto
Varchar

Caracteres
varivel

de

tamanho At 254 caracteres

Char

caracteres de tamanho fixo

At 254 caracteres

Numrico
Dec

Nmero decimal com casas At 15 dgitos


definidas

Numeric

Nmero
com
especificada

Int

Inteiro sem parte decimal

Smallint

idntico a Int com limite de


tamanho

Float

Nmero de ponto flutuante


com base exponencial 10

Real

Idntico a Float exceto que


no usado um argumento
para especificar o tamanho

Double

Idntico a Real, s que com


preciso maior.

preciso At 22 dgitos

Data e Hora
Date

Armazena datas

Time

Armazena horas

5.5 Expresses e Operadores:

34

Banco de Dados I

Os operadores tm por finalidade permitir uma flexibilidade maior na


manipulao dos dados de um banco. Estes seguem precedncias de
utilizao conjunta.

5.6 Tipos de Operadores


Multiplicao

Diviso

Subtrao

Adio

Mdulo

Aritmticos
Caracteres
Concatenao de campos

||

Comparao
Igualdade

Desigualdade

<>

Maior que

>

Menor que

<

Maior ou Igual a

>=

Menor ou Igual a

<=

No menor que

!<

No maior que

!>

No Igual a

!=

Lgicos
NOT

Inverter o valor Booleano

AND

Verdadeiro se ambos forem verdadeiros

OR

Verdadeiro se for verdadeiro um dos lados

BETWEEN

Verdadeiro se estiver dentro da faixa

LIKE

Verdadeiro se operador encontrar um padro

IN

Verdadeiro se algum item for verdadeiro

SOME

Verdadeiro se qualquer item for verdadeiro

35

Banco de Dados I

ANY

Verdadeiro se algum item for verdadeiro

ALL

Verdadeiro se todo o conjunto for verdadeiro

Bitwise
&
!
^
Unrios
+

Positivo

Bitwise NOT

Negativo

36

Banco de Dados I

Unidade 6 - Criao de Tabelas


6.1 Tutorial:
Na construo de uma tabela necessrio que os dados sejam definidos
quanto forma de armazenamento. As variaes do SQL criaram outros
tipos de dados, como por exemplo: armazenagem de imagens, filmes,
vetores, entre outros. O padro SQL ANSI reconhece apenas os tipos Text e
Number.
O tipo char s deve ser utilizado quando todas as entradas ocupam o
tamanho definido, pois o banco de dados sempre aloca aquele tamanho. J o
tipo Varchar aloca um tamanho diferente no banco de dados para cada
entrada, sendo mais recomendado quando cada entrada tem um tamanho
diferente.

6.2 Criando Tabelas


Antes mesmo de executar a instruo SQL que ir criar as tabelas
fundamental um planejamento e um reconhecimento da estrutura que se
prope criar.
O comando Create Table tem por finalidade criar uma nova tabela no banco
de dados.
Sintaxe:
Create Table [nome da tabela] ([nome do campo] [tipo de dado]
[tamanho]...).
Como todas as mquinas esto acessando uma nica base de dados, se todos
executarem o comando de criao de uma nica tabela, apenas o primeiro
ser bem sucedido, e os outros retornaro um erro de tabela j existente.
Assim, para testarmos os comandos, cada aluno deve criar uma tabela
diferente, e para tanto iremos utilizar o nome de cada mquina. Sempre
que for mencionada nos comandos a palavra "NOME_DE_SUA_MAQUINA",
substitua pelo nome da mquina que estiver utilizando.
Comando:
Create Table NOME_DE_SUA_MAQUINA (
Id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT
Nome VARCHAR (20)
)
Este comando permitiu a criao de uma tabela que contem dois campos, um
inteiro chamado Id e um campo VARCHAR chamado Nome.
Se utilizarmos o comando Select, podemos ver os campos e o contedo:
Comando:

37

Banco de Dados I

Select * from NOME_DE_SUA_MAQUINA


Resultado:
Id

Nome

------

-----------

Observe que, embora a tabela esteja vazia, aparecem os nomes dos dois
campos criados, mostrando que a criao da tabela foi bem sucedida.

6.3 Parmetros de Campos na Criao de Tabelas:

6.4 Valores Nulos


Pode-se definir se o campo receber valores NULOS ou no. Quando os
valores no so NULOS tornam-se obrigatrios, o que significa que no
ser possvel inserir dados na tabela em que tais campos no tenham um
valor.

6.5 Chave Primria


Por definio o dado que diferencia uma linha de outra na tabela
tornando-as nicas. Pode ser composta, ou seja, utiliza mais de uma
coluna para compor um valor nico.
Para um campo ser definido como Chave Primria, ele no poder receber um
valor NULO.
Por exemplo, muitas vezes criamos uma tabela com um campo de
identificao (geralmente chamado de Id, Cod, Codigo ou outro nome
semelhante). Este campo ser utilizado em consultas para relacionar esta
tabela com outras, como vimos nos exerccios com Select. mais eficiente
para certas consultas que este campo seja a chave primria, mesmo porque
ele necessariamente ser nico.
Observe a sintaxe para criarmos a tabela novamente com o Id como sendo
obrigatrio e chave primria. No se esquea de remover a tabela, se j
no o fez, antes de executar o comando:
Comando:
Create Table NOME_DE_SUA_MAQUINA(
Id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT
Nome VARCHAR (20),
PRIMARY KEY(Id)
)

38

Banco de Dados I

6.6 Chave Estrangeira:


Por definio o campo de outra tabela que recebe os valores do campo da
Chave Primria.
Esta ligao a um campo de Chave Primria possibilita que os dados
mantenham a integridade referencial. Esta integridade significa que os
dados de uma tabela s podero ser inseridos de forma vlida e
correspondente.
Execute o comando select * from pedidos e confira que a tabela contm
duas chaves estrangeiras. Veja se consegue descobrir quais so.

6.7 Integridade Referencial:


A Integridade Referencial utilizada para garantir a Integridade dos
dados entre as tabelas relacionadas. Por exemplo, considere um
relacionamento do tipo Um-para-Vrios entre a tabela Clientes e a tabela
Pedidos (um cliente pode fazer vrios pedidos). Com a Integridade
Referencial, o banco de dados no permite que seja cadastrado um pedido
para um cliente que ainda no foi cadastrado. Em outras palavras, ao
cadastrar um pedido, o banco de dados verifica se o cdigo do cliente que
foi digitado j existe na tabela Clientes. Se no existir, o cadastro do
pedido no ser aceito. Com o uso da Integridade Referencial possvel
ter as seguintes garantias (ainda usando o exemplo entre as tabelas
Clientes e Pedidos):
Quando o Cdigo de um cliente for alterado na Tabela Clientes, podemos
configurar para o banco de dados atualizar, automaticamente, todos os
Cdigos do Cliente na Tabela Pedidos, de tal maneira que no fiquem
Registros rfos, isto , registros de Pedidos com um Cdigo de Cliente
para o qual no existe mais um correspondente na Tabela Clientes. Essa
ao conhecida como "Propagar atualizao dos campos relacionados".
Quando um Cliente for excludo da Tabela Clientes, podemos configurar
para que o banco de dados exclua, automaticamente, na tabela Pedidos,
todos os Pedidos para o Cliente que est sendo Excludo. Essa opo
conhecida como "Propagar excluso dos registros relacionados".

6.8 ON UPDATE:
NO ACTION (RESTRICT) - quando o campo chave primria est para ser
atualizado a atualizao abortada caso um registro em uma tabela referenciada tenha um valor
mais antigo. Este parmetro o default quando esta clusula no recebe nenhum parmetro.
Exemplo: ERRO Ao tentar usar "UPDATE clientes SET cdigo = 5 WHERE cdigo = 2.

39

Banco de Dados I

Ele vai tentar atualizar o cdigo para 5, mas como em pedidos existem registros do cliente 2
haver o erro.
CASCADE (Em Cascata) - Quando o campo da chave primria atualizado,
registros na tabela referenciada so atualizados.
Exemplo: Funciona: Ao tentar usar "UPDATE clientes SET cdigo = 5 WHERE cdigo =2. Ele vai
tentar atualizar o cdigo para 5 e vai atualizar esta chave tambm na tabela pedidos.
SET NULL - Quando um registro na chave primria atualizado, todos os campos dos registros
referenciados a este so setados para NULL.
Exemplo: UPDATE clientes SET cdigo = 9 WHERE cdigo = 5;
Na clientes o cdigo vai para 5 e em pedidos, todos os campos cod_cliente com valor 5 sero
setados para NULL.
SET DEFAULT - Quando um registro na chave primria atualizado, todos os campos nos
registros relacionados so setados para seu valor DEFAULT.
Exemplo: se o valor default do cdigo de clientes 999, ento.
UPDATE clientes SET codigo = 10 WHERE codigo = 2. Aps esta consulta o campo cdigo com
valor 2 em clientes vai para 999 e tambm todos os campos cod_cliente em pedidos.

6.9 ON DELETE:
NO ACTION (RESTRICT) - Quando um campo de chave primria est para ser
deletado, a excluso ser abortada caso o valor de um registro na tabela referenciada seja mais
velho. Este parmetro o default quando esta clusula no recebe nenhum parmetro.
Exemplo: ERRO em DELETE FROM clientes WHERE cdigo = 2. No funcionar caso o
cod_cliente em pedidos contenha um valor mais antigo que cdigo em clientes.
CASCADE - Quando um registro com a chave primria excludo, todos os registros relacionados
com aquela chave so excludos.
SET NULL - Quando um registro com a chave primria excludos, os respectivos campos na
tabela relacionada so setados para NULL.
SET DEFAULT - Quando um registro com a chave primria excludo, os campos respectivos da
tabela relacionada so setados para seu valor DEFAULT.

40

Banco de Dados I

6.10 Removendo Tabelas


Para remover uma tabela de um banco de dados deve-se utilizar o comando
Drop Table seguido do nome da tabela:
Sintaxe:
Drop Table [nome da tabela]
Execute o comando para remover a tabela criada anteriormente, para
podermos cri-la com novos campos.
Comando:
Drop Table NOME_DE_SUA_MAQUINA
Laboratrio
Crie as seguintes Tabelas:

41

Banco de Dados I

Unidade 7 - Comandos para Alterar Tabelas


7.1 Alterao de Tabelas Criadas
Aps a criao das tabelas pode ser necessrio incluir ou remover colunas. Sempre possvel remover a
tabela e cri-la novamente com a estrutura nova, mas com isto perderamos todos os dados previamente
cadastrados. Por isto da importncia do comando ALTER TABLE.
Sintaxe:
ALTER TABLE [nome da tabela]
DROP [nome da coluna]
ADD [nome da coluna e tipos de dados]
RENAME [nome atual] [novo nome]
MODIFY [nome da coluna e tipos de dados]

7.2 Adicionar colunas a uma tabela ADD


Este comando adiciona colunas a uma tabela. As colunas sero criadas da mesma forma que no comando
CREATE TABLE.
Comando:
ALTER TABLE NOME_DE_SUA_MAQUINA ADD Sobrenome VarChar(20)

7.3 Remover colunas de uma tabela DROP


Remove uma coluna de uma tabela. Caso a coluna j possua dados digitados, eles tambm sero
perdidos.
Comando:
ALTER TABLE NOME_DE_SUA_MAQUNIA DROP Sobrenome

7.4 Renomeando colunas de uma tabela RENAME


Renomeia uma coluna de uma tabela. Caso a coluna j possua dados digitados, eles no sero
perdidos.
Comando:
ALTER TABLE NOME_DE_SUA_MAQUNIA RENAME Sobrenome SegundoNome

42

Banco de Dados I

7.5 Modificando colunas de uma tabela MODIFY


Modifica uma coluna de uma tabela. Caso a coluna j possua dados digitados, eles no sero
perdidos.
Comando:
ALTER TABLE NOME_DE_SUA_MAQUNIA MODIFY SegundoNome varchar(30)

Laboratrio
Modifique as tabelas do exerccio anterior para que fiquem com o seguinte formato:

43

Banco de Dados I

Unidade 8 - Modificando Dados


8.1 Inserindo Dados
Alm dos comandos de consulta ao banco de dados, uma aplicao geralmente ir tambm inserir
novos dados e atualizar os existentes;
Ao inserir dados em uma tabela, o administrador do banco de dados dever conhecer qual a
estrutura da tabela, bem como o tipo de campo. Sem estas especificaes ele no conseguir
fazer a insero, pois os dados sero rejeitados.
A sintaxe para inserir dados mostrada abaixo:
Sintaxe:
Insert into [nome da tabela] (Campo1, Campo2, ...) values (Valor1,
Valor2,...);
Vamos agora criar uma nova tabela e inserir um dado nela.
Comando de Criao de Tabela
Create Table NOME_DE_SUA_MAQUINA(Id INT, Nome VARCHAR (20))
Comando de Insero de Dados
Insert Into NOME_DE_SUA_MAQUINA (Id, Nome) values(1,'Joo')
Com esta instruo SQL obteremos o seguinte resultado:
Comando:
Select * from NOME_DE_SUA_MAQUINA;
Resultado:
Id
Nome
------- ----------1

Joo

8.2 Inserindo dados por meio de um SELECT


possvel fazer a insero de dados atravs de uma instruo SQL com o comando Select, com
todas as suas variaes.
Esta possibilidade muito til, pois dependendo do caso no ser necessrio digitar os dados
nesta tabela, uma vez que eles podem ser reproduzidos atravs de tabelas existentes no Banco de
Dados.
Exemplificando:
Crie sua tabela com um nico campo 'nome' (no se esquea de dar um DROP TABLE antes):
Comando:
Create Table NOME_DE_SUA_MAQUINA(Nome VarChar (50))

44

Banco de Dados I

Agora vamos colocar nesta tabela todos os nomes de funcionrios da empresa:


Comando:
insert into NOME_DE_SUA_MAQUINA(Nome) select Nome from funcionarios
Confira executando um comando SELECT * FROM NOME_DE_SUA_MAQUINA. Se tudo ocorrer
corretamente, o resultado ser que voc ter uma nova tabela com todos os nomes presentes na
tabela funcionrios.

8.3 Excluindo informaes


Este comando remove linhas das tabelas. Podemos remover todo o contedo da tabela, ou definir
as linhas a serem removidas utilizando a clusula WHERE. A sintaxe mostrada abaixo:
Sintaxe:
DELETE FROM [nome da tabela] WHERE [Condio];
Comando:
Delete from NOME_DE_SUA_MAQUINA where Nome = Jos
Lembre-se que ao excluir uma linha de registro relacionada excluso poder ser bloqueada pelo
SQL devido as PRIMARY KEY e FOREIGN KEY existentes.
Para remover todos os itens de uma tabela basta no incluir a clusula WHERE.

8.4 Atualizando dados de uma tabela


Atravs deste comando possvel atualizar um ou mais campos de uma tabela. A sintaxe
mostrada abaixo:
Sintaxe:
UPDATE [nome da tabela] SET [nome da coluna] = [novo valor]
possvel utilizar as clusulas FROM e WHERE para determinar a atualizao vinda de outras
tabelas ou quais os critrios utilizados para a atualizao.
Expresses podero ser utilizadas para realizar as alteraes nos campos.
Execute o comando select * from produtos antes e depois de rodar o comando abaixo:
Comando:
update produtos set preco = preco * 2
Observe que os valores podem ser diferentes, pois todos os alunos esto alterando a mesma
tabela, neste caso.
Esta alterao est permitindo ao usurio aumentar em 100% o preo de todos os produtos. Esta
alterao poderia ser feita utilizando-se uma restrio com a clusula Where, para atualizar
apenas um produto.
Comando:
update produtos set preco=20 where id = 2
Este comando define como 20 o preo do produto 2, ou seja, da carne.
Laboratrio
Baseado nas tabelas criadas e as alteraes realizadas nas tabelas das unidades anteriores
realize os seguintes comandos:

45

Banco de Dados I

Insira 3 registros em cada tabela


Delete 1 registro da tabela tbfornecedores
Atualize o valor da matria prima em 20%
Insira 2 registros na tabela tbmateriaprima
Remova o ultimo registro da tabela tbestoquemat
Atualize a tabela tbestoquemat para um aumento de 50% na quantidade
Insira 2 registros na tbfornecedores
Delete 1 registro da tabela tbtipomateria
Insira 2 registros na tabela tbtipomateria
Reduza em 13% o valor da tabela tbmateriaprima

46

Banco de Dados I

Unidade 9 - Consulta em uma nica Tabela


SQL
9.1 Sintaxe Bsica de Consultas SQL
Em bancos de dados relacionais, temos a informao armazenada em tabelas, como visto anteriormente.
Cada tabela contm um conjunto de informaes armazenadas em linhas da tabela, cada linha representando
uma entrada, sendo que as colunas representam os parmetros associados quela informao.
Uma das consultas mais simples que podemos realizar em SQL, portanto, a consulta que retorna os
parmetros que desejamos de todas as entradas da tabela. Sua sintaxe mostrada abaixo:
SELECT
[nome
FROM [nome da tabela]

do

campo1],

[nome

do

campo2],

...

O campo nome da tabela define a tabela que estamos consultando, enquanto os campos nome do
campoN representam os parmetros, e, portanto colunas, que desejamos recuperar.

9.2 Exemplos de Consultas SQL


Inicialmente faremos algumas consultas simples a uma nica tabela. Nos exemplos desta unidade estaremos
utilizando a tabela transportadoras, cujo contedo mostrado abaixo. O instrutor poder utilizar os mesmos
exemplos ou criar junto com os alunos tabelas prprias, utilizando o banco de dados que for mais
conveniente.
Obs.: Neste e nos demais exemplos de tabelas do banco de dados, a primeira linha especifica o nome do
atributo ao qual cada coluna se refere.
Tabela transportadoras:
Nome

Telefone

Transportadora Fulano

(51) 2111-1666

Transportes Pedro

(51) 0000-0000

Expresso Marte

(51) 1234-5678

9.3 Seleo de Todos os Registros com Colunas


Especficas
Execute a consulta abaixo, ou siga as instrues do instrutor, executando uma consulta equivalente:

47

Banco de Dados I
Select Nome from transportadoras

Executando a consulta acima na tabela Transportadoras, contendo os dados mostrados, teremos o seguinte
resultado:

Nome
---------------------Transportadora Fulano
Transportes Pedro
Expresso Marte

Na mesma tabela, tambm podemos consultar mais parmetros, bastando especific-los separados por
vrgulas. Confira a consulta a seguir e o resultado correspondente:
Select Nome, Telefone from transportadoras

Resultado:

Nome

Telefone

-------------

--------------

Transportadora Fulano

(51) 3346-7300

Transportes Pedro

(51) 0000-0000

Expresso Marte

(51) 1234-5678

9.4 Redefinindo o Nome das Colunas


Normalmente as colunas retornadas por uma consulta SQL possuem o nome da coluna respectiva na tabela
do banco de dados. Algumas vezes, porm, podemos querer definir outros nomes para as colunas.
Sintaxe:
SELECT [nome do campo] as nome definido FROM [nome da tabela]

Comando:
select nome as transportadoras from transportadoras

Resultado:
Transportadoras
----------------------

48

Banco de Dados I

Transportadora Fulano
Transportes Pedro
Expresso Marte

9.5 Seleo de Registros com Exibio de Strings


possvel selecionar registros de uma tabela exibindo um texto fixo para cada linha de registro
Sintaxe:
SELECT texto, [nome do campo], texto, [nome do campo] FROM [nome da
tabela]

Comando:
select nome, ' ocupa o cargo de', cargo from funcionarios

Resultado:

Nome

ocupa o cargo de Cargo

-------

--------------------

---------------------

Jos

ocupa o cargo de

Presidente

Maurcio

ocupa o cargo de

Gerente de Vendas

Lus

ocupa o cargo de

Boy

Lgia

ocupa o cargo de

Telefonista

Consulta com Execuo de Clculos:


Com o SQL podemos efetuar clculos entre elementos lidos do banco de dados e retorn-los na consulta.
Para selecionar registros de uma tabela com a execuo de clculos matemticos necessrio utilizar os
operadores '+' ,' -' , '/' , '*' e '^'.
Sintaxe:
SELECT [nome do campo]*[nome do campo] as [nome da expresso] FROM [nome
da tabela];

Para demonstrarmos este recurso do SQL, utilizaremos uma nova tabela, com dados numricos. Novamente,
o instrutor poder utilizar estes mesmos dados ou criar exemplos prprios ao longo da aula:

Nome

Preo

Estoque

Leite

10

500

Carne

20

330

Po

18.6

200

Suco

20

330

Comando:

49

Banco de Dados I
select nome, preco*estoque as total from produtos

Resultado:

Nome

total

---------------------

-----------

Leite

5000

Carne

6600

Po

37200

Suco

6600

Laboratrio
Baseado nas tabelas criadas e as alteraes realizadas nas tabelas das
unidades anteriores exiba os seguintes resultados:
O fornecedor x tem a razo social y
A matria prima x tem o valor de y e a quantidade z
A matria prima x tem um valor total de quantidade * valor
A quantidade x no estoque no pode chegar a 20% da quantidade
O tipo de matria x tem o valor de y e com desconto fica em 80% do valor
A matria x descrita como y
12% do valor so considerados custo da matria prima x
Acesse o site x da empresa y
1/3 do valor * quantidade destinado ao pagamento de imposto da matria prima y
Aps um aumento de 13% no estoque, a quantidade vai de xpara y

50

Banco de Dados I

Unidade 10 -

Unidade 10: Funes com


strings

10.1 Funes com Strings


Funes que tratam de strings permitem fazer uma srie de manipulaes de textos que so recuperadas das
tabelas do banco de dados.
Nesta unidade apresentamos algumas das funes mais comumente utilizadas em situaes reais, para o
aluno se familiarizar com o conceito de funes de manipulao de strings. Na prtica pode ser interessante
consultar as funes que o banco de dados que estiver sendo utilizado fornece, quando for necessrio
manipular strings.

10.2 Sintaxe da Funo de Concatenao de Strings


Para juntar duas ou mais strings existe uma funo, chamada concat, mostrada a seguir:
Sintaxe:
concat( string1, string2,...)

O exemplo a seguir mostra o uso desta funo para juntar o nome e sobrenome dos funcionrios em uma
nica coluna. Observem o uso do espao para garantir que o nome e sobrenome vo ter uma separao.
Exemplo:
select concat(Nome, ' ', Sobrenome) from funcionarios

10.3 Controle de Maisculas e Minsculas


Duas funes permitem transformar o retorno de uma consulta em letras maisculas e minsculas.
Lower
Transforma as letras em minsculas na resposta da instruo SQL. Como exemplo:
Select Lower(Nome) from clientes;

Upper
Transforma as letras em maisculas na resposta da instruo SQL. Como exemplo:
Select Upper(NomeDoContato) from clientes;

51

Banco de Dados I

10.4 Segmentando uma String


Alguns comandos permitem separar uma string, recuperando apenas determinada parte da informao que se
deseja.
Substr
Separa uma parte da linha baseada na seguinte forma:
SUBSTR(String1, Valor1, Valor2),

Onde:
String1 a string da qual vai ser recuperado um segmento
Valor1 onde comea a ser feita a separao
Valor 2 o nmero de caracteres que sero separados.
Exemplo:
Select Substring(Nome, 1, 3) from clientes

Left
Separa uma parte da linha baseada na seguinte forma:
LEFT (String1, Valor1)

Onde,
String1 a string de origem
Valor1 o nmero de caracteres que sero separados a partir da esquerda.
Exemplo:
Select Left(Nome, 1) from clientes;

Right
Separa uma parte da linha baseada na seguinte forma:
RIGHT (String1, Valor1)

Onde,
String1 a string de origem
Valor1 o nmero de caracteres que sero separados a partir da direita.
Exemplo:
Select Right(Nome, 1) from clientes;

Length(Len)
Retorna o tamanho da string:
LENGTH (String1)

Onde,
String1 a string de origem

52

Banco de Dados I

Exemplo:
Select LENGTH(Nome) from clientes;

Locate(Charindex)
Retorna a posio do texto procurado:
LOCATE (Valor1, String1)

Onde,
Valor1 o texto procurado.
String1 a string de origem
Exemplo:
Select LOCATE(Joo, Nome) from clientes;

Laboratrio
Baseado nas tabelas criadas e as alteraes realizadas nas tabelas das
unidades anteriores exiba os seguintes resultados:
O fornecedor apenas o 1 nome do tipo final da razo social
A matria prima em maiscula tem o valor de y e a quantidade z
A matria prima iniciadas em 1 letra tem um valor total de quantidade * valor
O tipo de matria em minsculo tem o valor de y e com desconto fica em 80% do valor
A matria duas letras iniciais descrita como em maisculo
12% do valor so considerados custo da matria prima 1 letra em maisculo,.
Acesse o site retirar o WWW da empresa y
1/3 do valor * quantidade destinado ao pagamento de imposto da matria prima em
maiscula
A matria prima x formada por quantidade de letras letras
O fornecedor x tem um fax de quantidade de letras letras

53

Banco de Dados I

Unidade 11 -

Critrios de Consulta Clusula


WHERE

11.1 Clusula Where


At o momento todas as consultas apresentadas retornaram todas as entradas das tabelas, restringindo
unicamente os atributos que desejvamos recuperar. Em outras palavras, os comandos anteriores
recuperavam algumas colunas, mas todas as linhas das tabelas.
Em muitos casos, desejaremos recuperar apenas uma ou algumas entradas de uma tabela especfica, por
exemplo, quando desejarmos recuperar dados sobre um cliente especfico. Nestes casos, nossa consulta SQL
ter uma clusula Where, conforme sintaxe mostrada abaixo:
SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo]
[operador de comparao ou restrio] [critrio de comparao ou
restrio]
UDPATE [nome da tabela] SET [nome do campo] = [novo valor] WHERE
[nome do campo] [operador de comparao ou restrio] [critrio de
comparao ou restrio]
DELETE FROM [nome da tabela] WHERE [nome do campo] [operador de
comparao ou restrio] [critrio de comparao ou restrio]
Uma consulta pode ter uma quantidade infinita de condies ou clusulas, sendo que as
mesmas devem ser separadas por um operador lgico (AND ou OR). Veja o exemplo abaixo:
SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo]
[operador de comparao ou restrio] [critrio de comparao ou
restrio] AND [nome do campo] [operador de comparao ou restrio]
[critrio de comparao ou restrio]
Ou
SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo]
[operador de comparao ou restrio] [critrio de comparao ou
restrio] OR [nome do campo] [operador de comparao ou restrio]
[critrio de comparao ou restrio]
Os campos que so utilizados nos critrios das consultas, no so obrigatoriamente os
mesmo utilizados como sada de informao (para consultas de seleo) ou como objetos de
alterao. Podendo, por exemplo, exibir o nome de produtos que tenha um preo inferior a um
determinado valor. Veja o exemplo, sendo nomeproduto o campo a ser exibido e preco o campo
que recebe a condio de exibio:
SELECT nomeproduto FROM produtos WHERE preco <= 2.5

54

Banco de Dados I

Observe, tambm, que possvel a utilizao de um mesmo campo, mais de uma vez
como critrio de uma consulta. Por exemplo, se desejar exibir os filmes lanados aps o ano 2000
com a exceo do ano de 2005, o comando seria desenhado da seguinte forma.
SELECT nomefilame FROM filmes WHERE ano >= 2000 AND ano <> 2005
Estes critrios podem ser utilizados em qualquer tipo de consulta (seleo, excluso ou
atualizao). Principalmente em consultas que realizam alteraes, recomenda-se atentar para o
uso quase que obrigatrio da clusula where, pois sua omisso resulta na execuo da alterao
em todo o conjunto de dados contemplados na sentena.
Vejamos a seguinte situao: para os funcionrios com mais de 1 ano de tempo de trabalho
a empresa deseja conceder um aumento de 15% em seus salrios. Se executarmos uma consulta
conforme exemplo abaixo, todos os funcionrios receberam aumento independente do seu tempo
na empresa:
UPDATE funcionarios SET salario = salario * 1.15
Para que apenas os funcionrios que possuem o critrio estabelecido pela empresa para
receber o aumento, sejam efetivamente beneficiados, necessrio incluir uma clusula. Observe a
sintaxe correta abaixo.
UPDATE funcionarios SET salario = salario * 1.15 WHERE tempo >= 1
Em consultas de deleo o cuidado deve ser ainda maior, pois uma execuo de uma
sentena sem um critrio de forma correta ou mesmo sem a existncia de um, pode acarretar na
perda significativa de dados importantes para a instituio.
Como regra geral recomenda-se iniciar a escrita de seu script SQL, para consultas de
alteraes, pelos critrios que as mesmas devem considerar, reduzindo assim, a chance de
cometer qualquer tipo de equivoco, com consequncias mais graves.

11.2 Consultas Simples com Clusula Where


Vamos definir uma consulta bastante simples, restringindo a lista de clientes apenas aqueles cujo pas o
Brasil. Utilizaremos a tabela clientes, mostrada a seguir:
Tabela Clientes
Nome

Pas

Empresa W

Brasil

Empresa A

Brasil

Empresa B

Brasil

Empresa C

Argentina

Empresa X

Brasil

Comando:
SELECT NOME FROM CLIENTES WHERE PAIS='BRASIL'

Resultado:

55

Banco de Dados I

nome
----------------

Empresa A
Empresa B
Empresa X

O sinal de igualdade (=) foi utilizado porque o usurio sabia exatamente o que estava procurando. Verifique
os operadores de comparao que esto no inicio da apostila.
Cabe tambm, ressaltar que devemos sempre atentar para o tipo de dado armazenado nos campos que sero
utilizados nos critrios de consulta. Pois esta observao nos mostra que tipos de critrios podem ser
utilizados (para datas, por exemplo) e qual a forma correta de montagem do critrio ou seleo.
No exemplo da consulta acima, podemos perceber que o critrio foi digitado entre aspas simples, pois o valor
do campo do tipo texto, a exemplo do aconteceria com um campo data (apenas devemos atentar para seu
formato).
Para campos tipados como numricos no h a necessidade, alm de no ser recomendado, do uso de aspas
simples. Entretendo, se estiver utilizando um banco de dados que voc no tenha estruturado, utilize
comandos (veremos nas prximas unidades) que exibam a estrutura da tabela, pois podemos encontrar
campos com valores numricos que tenham sido tipados como texto, o que pode atrapalhar a percepo do
resultado final.

11.3 Selecionando Dados No Repetidos


Algumas vezes no queremos recuperar todas as entradas de determinada tabela, mas apenas aquelas no
repetidas. Podemos, por exemplo, querer listar todas as cidades em que a empresa tem clientes, ou todas as
faixas de salrio dos funcionrios, e nestes casos no faz sentido repetir inmeras vezes a mesma cidade ou
faixa salarial apenas por ter mais de um dado com aquela informao.
Existe um comando para resolver esta questo, chamado DISTINCT, cuja sintaxe mostrada abaixo:
SELECT DISTINCT [nome do campo] FROM [nome da tabela];

Executando a consulta abaixo, veremos que retornar os pases em que existem clientes armazenados no
banco de dados:
select distinct pais from clientes

Resultado:

Pas
Argentina

56

Banco de Dados I

Brasil

Case o comando seja executado novamente, porm sem a clusula DISTINCT e observe a teremos a
repetio dos pases.
O comando DISTINCT realiza um agrupamento dos dados exibidos, portanto devemos sempre
estar atentos aos campos que inserimos antes da expresso FROM, pois se os mesmos forem
nicos, pode no ocorrer o agrupamento de forma correta.
No exemplo aqui citado os pases, aparecero apenas uma vez, pois somente a coluna pas foi
exibida, se fosse inserido o campo nome, por exemplo, haveria a duplicao dos mesmos.
Vejamos o caso na prtica
select distinct nome, pais from clientes

Resultado:

Nome

Pas
Brasil

Empresa A

Brasil

Empresa B

Brasil

Empresa C

Argentina

Empresa X

Brasil

11.4 Selecionando alguns dados


Em determinadas situaes desejamos apenas obter alguns registos de uma consulta, pois
apenas uma amostra de dados pode ser suficiente para chegarmos ao resultado esperado da
sentena.
Esta sintaxe para construo de um limite dos resultados leva em considerao o banco de dados
no qual as informaes esto armazenadas, sejamos abaixo a sintaxe para Access/SQL SERVER
e para MySQL.
Access/SQL SERVER:
SELECT TOP [valor] [opcional PERCENT] [nome do campo] FROM [nome da
tabela] WHERE [nome do campo] [operador de comparao ou restrio]
[critrio de comparao ou restrio]
MySQL

57

Banco de Dados I

SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo]


[operador de comparao ou restrio] [critrio de comparao ou
restrio] LIMIT [valor]
Se desejarmos, por exemplo, exibir apenas 5 clientes que sejam do pas Brasil, devemos
construir a consulta no SQL SERVER.
SELECT TOP 5 nome FROM clientes WHERE pais='brasil'
A utilizao da clusula de limite de registros muito utilizada em testes de verificao do
contedo de uma tabela. Tambm amplamente aplicada em subconsultas (tema do curso
avanado).

Laboratrio.
Para a realizao dos exerccios abaixo crie a seguinte tabela e insira os dados listados abaixo
dela. Aps execute uma consulta que exiba cada

Cod_Celula
r

Modelo

Marca

Camera

MP3

Bateria

Valor

Lancamento

Star

Sansung

Sim

Sim

3.2

600.00

2009-04-12

N97

Nokia

Sim

Sim

4.1

700.00

2010-01-20

IPhone

Apple

Sim

Sim

3.4

1.100

2007-12-30

Corby

Sansung

Sim

Sim

4.2

800.00

2008-06-25

N95

Nokia

Sim

Sim

2.7

950.00

2005-05-05

Jet

Sansung

Sim

Sim

3.3

650.00

2008-10-09

2160

Nokia

No

No

8.7

50.00

1997-03-04

Os dados de todos os celulares com mp3.


Liste modelo de todos os celulares da Sansung.
Liste nome de todos os modelos, junto com seu valor e marca.

58

Banco de Dados I

Liste nome de todos os celulares, junto com seus valores, para todos os celulares que foram
lanados h pelo menos de 2 anos.
Liste o modelo, marca e bateria do celular cdigo 4.
Liste os celulares lanados a mais de 10 anos.
Liste todos os celulares com bateria com mais de 4 horas e menos de 6 horas
Liste 2 celulares com cmera
Liste as marcas de celular existentes
Liste celulares da marca Nokia com bateria de mais e 3 horas e com valor inferior a R$ 700,00
Atualize em 10% o valor dos celulares da Nokia
Insira mais 4 modelos de celular
Delete 2 celulares da Sansung
Atualize a informao MP3 para NO em celulares com bateria inferior a 3 horas e valor superior
a R$ R$ 500,00
Mude o nome do celular de cdigo 7 para MP15
Atualize o valor dos celulares em 2% para celulares com cmera e valor inferior a R$ 800,00
Atualize 3 celulares para cmera NO
Mude o valor dos celulares Samsung para 80% de seu valor atual
Insira 2 celulares com nomes novos utilizando os dados de outro celular
Delete todos os celulares com valor inferior a R$ 300,00

59

Banco de Dados I

Unidade 12 -

Predicados

12.1 Predicados LIKE e NOT LIKE:


Na unidade anterior, vimos como selecionar apenas algumas entradas de uma tabela, com o uso da clusula
Where. Entretanto, apenas com os operadores de igualdade, que foi mostrado, e outros operadores
aritmticos, como <, >, etc., no conseguiremos sempre selecionar o que desejamos. Em particular,
quando desejamos selecionar entradas com base em um atributo de texto, precisamos de recursos mais
poderosos. Por exemplo, podemos querer procurar por um cliente do qual no temos todo o nome, mas
apenas um dos sobrenomes. Utilizar o operador = no ir nos atender neste caso.
O predicado LIKE serve para este fim. Funciona como um tipo de pesquisador de sequncias podendo ser
auxiliado por um % que significa qualquer caractere. Pode ser precedido por um NOT que expressa
negao. Sua sintaxe mostrada abaixo:
Select * from [nome da tabela] WHERE [campo analisado] {NOT LIKE}{LIKE}
[valor ou texto];

Para entender a vantagem de utilizar os comandos LIKE e NOT LIKE vamos primeiro executar uma consulta
com o operador de igualdade. Nesta apostila utilizaremos uma tabela bastante simples, com fins didticos,
sendo possvel que o instrutor opte por construir exemplos mais complexos junto com a turma.
Tabela clientes:
Nome
Joo da Silva Borges
Pedro lvaro
Joo Augusto
Comando:
select nome from clientes where nome = 'Joo'

Resultado:
nome
-------------

A resposta para esta instruo ser uma tabela vazia. Apesar de existir um 'Joo' na tabela, o critrio de
igualdade exige o nome completo. A consulta apenas retornaria o cliente se fosse colocado o nome completo:
Joo da Silva'
Assim, utilizar o sinal de igualdade nos retorna o resultado desejado somente se conhecermos o nome
completo da pessoa. O comparativo lgico LIKE, permite selecionar por semelhana:
Comando:
select nome from clientes where nome like 'Joo%'

60

Banco de Dados I

Resultado:
nome
---------------Joo da Silva Borges
Joo Augusto

Da mesma forma como podemos pesquisar por informaes que comecem por um determinado conjunto de
caracteres, tambm podemos definir que certas letras estejam no final ou em qualquer posio do texto, como
mostramos no exemplo a seguir, que retorna todos os contatos que tem a string 'Silva' no meio do nome.
Comando:
select nome from clientes where nome like '%silva%'

Resultado:
nome
---------------Joo da Silva Borges

12.2 Predicados BETWEEN... AND e NOT BETWEEN...


AND
O PREDICADO Between... and.. define uma faixa de valores na qual o campo precisa estar includo.
Sintaxe:
Select * from [nome da tabela] WHERE [campo da tabela] {NOT} BETWEEN
[valor ou texto] AND [valor ou texto];

Comando:
select Nome, Estoque from produtos where estoque between 500 and 1000

Resultado:
Nome

Estoque

---------------

-------------

Leite

1000

12.3 Predicados IN e NOT IN:


O predicado IN compara um valor com uma lista ou coleo de valores. Lembre-se que os critrios do tipo
texto devem ser escritos entre aspas simples.
Sintaxe:

61

Banco de Dados I
Select * from [nome da tabela] WHERE [campo da tabela] {NOT} IN (valor ou
texto, valor ou texto,...)

Comando:
select Nome, Pais from clientes where pais in ('Brasil', 'Argentina')

Resultado:
Nome

Pas

-------------------

--------------Brasil

Empresa A

Brasil

Empresa B

Brasil

Empresa C

Argentina

Empresa X

Brasil

12.4 Predicado IS NULL e IS NOT NULL


Separa os registros NULOS. Quando precedido por um NOT, separa os registros com valor vlido.
Sintaxe:
Select * from [nome da tabela] WHERE [nome do campo] {IS NOT NULL} {IS
NULL};

Este predicado pode ser til para determinadas situaes em que algum campo esteja null porque no foi
processado ainda, por exemplo, numa compra que no foi finalizada, ou em um pedido que no foi entregue.
Observe o exemplo abaixo, que um exemplo tpico de uma consulta utilizando este predicado para
identificar pedidos ainda no enviados.
Comando:
select * from pedidos where DataEnvio Is Null

Analogamente, para verificarmos quais entradas possuem um valor de DataEnvio, e, portanto representam
pedidos j enviados, podemos utilizar o comando abaixo:
Comando:
select * from pedidos where DataEnvio Is Not Null

O predicado ISNULL(COALESCE em MySQL) tambm pode ser utilizado na exibio de


algum valor caso um campo esteja nulo.
Comando:
select ISNULL(taxa, ) Cobrana from pedidos

62

Banco de Dados I

12.5 Seleo com Operadores Lgicos


Para selecionar registros de uma tabela com a determinao de critrios o usurio dever utilizar a clusula
WHERE combinada com os operadores lgicos AND, OR e NOT. A sintaxe mostrada abaixo:
Sintaxe:
SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo]
[operador de comparao ou restrio] [critrio de comparao ou restrio] AND
[nome do campo] [operador de comparao ou restrio] [critrio de comparao ou
restrio] OR [nome do campo] [operador de comparao ou restrio] [critrio de
comparao ou restrio]

Como exemplo, vamos selecionar todos os produtos cujo estoque seja maior que 500 e tenham um preo
menor que 10.
Comando:
select Nome, Estoque, Preco from produtos where estoque > 500 and preco <
10

Neste exemplo, a clusula AND obrigou que ambas as condies fossem atendidas. Podemos tambm definir
que o item seja selecionado caso qualquer das condies seja atendida, como mostra o exemplo abaixo em
que selecionamos os itens que tenham. preo menor que 10 ou um estoque maior que 1000.
Comando:
select Nome, Estoque, preco from produtos where preco < 10 or estoque >
1000

Laboratrio.
Para a realizao dos exerccios abaixo utilize a tabela criada no exerccio anterior

Os dados de todos os celulares com mp3 no nulo.


Liste modelo de todos os celulares com nome contendo k.
Liste nome de todos os modelos, junto com seu valor e marca que seu valor esteja entre R$ 300 e
R$ 500.
Liste nome de todos os celulares, junto com seus valores, para todos os celulares que no sejam
da Nokia.
Liste o modelo, marca e bateria do celular cdigo 4, 6, 2.
Liste os celulares lanados a mais de 10 anos e que sua bateria dure entre 4 e 6 horas.
Liste todos os celulares com bateria com mais de 4 horas e menos de 6 horas
Liste 2 celulares com cmera com valor nulo
Liste as marcas de celular existentes em letra maiscula e sem valores nulos
Liste celulares da marca Apple com bateria de mais e 3 horas e com valor entre a R$ 700,00 e
R$ 2.000,00
Delete todos os celulares com bateria com 1, 3 ou 4 horas de durao.

63

Banco de Dados I

Unidade 13 -

Funes de Agrupamento e
Ordenao

13.1 Obtendo Informaes Estatsticas


Muitas vezes no queremos recuperar os dados armazenados no banco de dados, mas sim informaes
estatsticas sobre os mesmos, como totais e mdias de valores. Para tanto utilizamos as chamadas funes de
agrupamento.
A sintaxe das funes de agrupamento mostrada abaixo:
Sintaxe:
SELECT {ALL} {DISTINCT} Funo([nome do campo]) FROM [nome da tabela]

As funes de agrupamento utilizadas no SQL so: COUNT( ), AVG( ), MAX( ), MIN( ) e SUM( ).
Abaixo mostramos um exemplo simples, mas bastante completo do uso de todas estas funes para processar
clculos em cima de uma tabela de produtos, e um exemplo de retorno.
Comando:
select SUM(Estoque) as 'Total no Estoque',
MAX(Preco) as 'Preo mais
caro', MIN(Preco) as 'Preo mais barato', AVG(Preco) as 'Preo mdio',
COUNT(Preco) as 'Total de Registros' from produtos

Exemplo de Resultado:
Total no Preo mais Preo
Estoque caro
barato

mais Preo mdio

Total
Registros

---------

---------

----------

---------

--------------

3600

31

16.0000

de

As funes agregadas no podem ser utilizadas dentro de uma clusula WHERE, porem possvel utilizar
esta clusula para restringir o nmero de linhas que sero consideradas no clculo da resposta, como mostra o
exemplo abaixo:
Comando:
SELECT AVG(preco) from produtos where preco > 10

Nesta consulta acima o que estamos obtendo a mdia entre todos os produtos cujo preo maior que 10.

64

Banco de Dados I

13.2 Agrupamento Utilizando GROUP BY:


A clusula GROUP BY agrupa os registros de acordo com uma condio especificada. A sintaxe mostrada
abaixo:
SELECT [nome do campo] FROM [nome da tabela] GROUP BY [nome do campo]

Abaixo mostramos um exemplo em que agrupamos os clientes por pases para obtermos uma listagem de
todos os pases de clientes.
Comando:
select Pais from clientes group by pais

Resultado:
Pais
--------------Argentina
Brasil

O resultado acima poderia ser obtido tambm com o uso do comando DISTINCT. Na realidade, geralmente o
uso do comando GROUP BY s adequado em conjunto com funes de agrupamento, como mostramos no
exemplo a seguir:
select count(*) as 'Total', pais from clientes group by pais

Resultado:

Total

Pas

---------

---------------

Argentina

Brasil

Como agrupamos por pases, conseguimos utilizar o comando de COUNT e descobrir quantas vezes cada
um dos pases aparece.

13.3 Utilizando WHERE e GROUP BY:


Podemos utilizar WHERE e GROUP BY juntos para selecionar registros de uma tabela, agrupando-os por
um determinado campo. A sintaxe apresentada abaixo:
SELECT [nome do campo] FROM [nome da tabela] WHERE [nome do campo]
[operador de comparao ou restrio] [critrio de comparao ou restrio]
GROUP BY [nome do campo]

65

Banco de Dados I

O comando abaixo mostra o uso de COUNT e WHERE para retornar o total de clientes com cargo do contato
como sendo de gerente de vendas.
select count(*),
Vendas' GROUP BY pais

pais

from

clientes

where

CargoContato

'Gerente

de

13.4 Seleo de registros com Agrupamento pela


Clusula GROUP BY e HAVING:
Enquanto a clusula WHERE filtra os registros antes de agrup-los, diminuindo assim a quantidade de
registros gerados pela clusula GROUP BY, a clusula HAVING faz um filtro tambm, porm. permitindo a
utilizao de uma funo agregada.
A sintaxe mostrada abaixo:
SELECT [nome do campo] FROM [nome da tabela] GROUP BY [nome do campo]
HAVING Funo Agregada([nome do campo])

Por exemplo, se quisermos ver o total de clientes de pases cujo total for maior que 3, usaramos o comando
abaixo:
select count(*),pais from clientes group by pais having count(*) >= 3

Resultado:
Count(*)

Pas

-------

-------------

Brasil

Como s existe uma referncia a "Argentina", e portanto o total menor que 3, no aparece no resultado.
Para entender melhor a diferena entre WHERE, GROUP BY e HAVING, preciso compreender a
definio de cada uma, mostrada abaixo:
a clusula WHERE utilizada para filtrar as linhas que resultam da consulta da tabela especificada pela
clusula FROM.
A clusula GROUP BY utilizada para agrupar as linhas filtradas por WHERE.
A clusula HAVING usada para filtrar as linhas do grupo criado por GROUP BY.

13.5 Ordenao das Consultas


At agora no nos preocupamos com a ordem em que so mostrados os resultados de uma consulta, mas em
situaes reais normalmente vamos querer controlar esta ordenao. A clusula ORDER BY ordena os
registros em crescente e decrescente baseado em um campo da tabela, e sua sintaxe de uso mostrada
abaixo:
SELECT [nome do campo] FROM [nome da tabela]
{ASC}{DESC}

ORDER BY[nome do campo]

66

Banco de Dados I

Se no utilizarmos a clusula ORDER BY, o resultado da instruo ser baseado no ndice da tabela
analisada. Ao utilizarmos a clusula estamos definindo a ordem, como no caso abaixo em que os produtos so
mostrados em ordem alfabtica:
Comando:
select Nome from produtos order by Nome

No necessrio utilizar o complemento ASC para as ordenaes crescentes, porm para as ordenaes
decrescentes deve-se utilizar DESC:
Laboratrio.
Para a realizao dos exerccios abaixo utilize a tabela criada no exerccio anterior

Some os valores dos celulares.


Calcule o tempo mdio de durao da bateria
Encontre o maior e o menor valor dos celulares.
Conte o nmero de celulares por Marca.
Encontre e mdia de valores por Marca.
Calcule a mdia de valor das Marcas de celular com mais de um exemplar.
Mostre as marcas de celular que tenham apenas 1 exemplar
Liste as marcas de celular existentes em letra maiscula e sem valores nulos
Liste todos os celulares por em ordem decrescente de lanamento
Calcule a mdia de durao dos celulares com cmera

67

Banco de Dados I

Unidade 14 -

Consultas em Mltiplas Tabelas

14.1 Consultas em Mltiplas Tabelas


Conforme visto nos captulos anteriores, de teoria de modelagem de dados, as tabelas do banco de dados tm
relaes entre si, e essencial dominar os recursos da linguagem SQL que nos permitem criar consultas com
base nestas relaes.
O agrupamento de tabelas na SQL muito mais do que uma consulta, o fato de poder interligar duas ou
mais tabelas relacionadas entres si de forma que possam ser recuperados os seus registros na resposta de uma
instruo SQL.
Nem todos os bancos de dados utilizam a forma padro de ANSI, existindo algumas variaes na sintaxe do
comando.

14.2 Join
Podemos definir Join como a juno de duas tabelas.
O resultado da unio de duas tabelas ser a multiplicao das linhas da primeira pela segunda tabela, ou seja,
para cada linha da primeira tabela, todas as linhas da segunda sero repetidas.
Na prtica esta situao no muito comum, mas serve como base para entendermos o funcionamento de
outros tipos de Join.
Sintaxe:
Select [nome da tabela1].[nome do campo],
campo] from [nome da tabela1], [nome da tabela2];

[nome

da

tabela2].[nome

do

Observe a operao de JOIN entre duas tabelas pedido e clientes, sem a utilizao de nenhuma restrio na
unio. Assumindo que existam 3 empresas e 3 pedidos, teremos um retorno com nova linha:
Comando:
select clientes.Nome, pedidos.Id as 'ID do pedido' from pedidos, clientes

68

Banco de Dados I

Resultado:
Nome

ID do pedido

-------

------------1
2
3

Empresa A

Empresa A

Empresa A

Empresa B

Empresa B

Empresa B

O resultado um produto cartesiano entre elas, em que o total de linhas ser igual ao total de entradas de uma
tabela multiplicado pelo total de entradas da outra.
Para obtermos um resultado que faa sentido, geralmente utilizamos a clusula WHERE.

14.3 Equijoin Join de Igualdade


Tambm conhecido como join simples ou inner join, o Equijoin far a unio entre duas ou mais tabelas
atravs de uma clusula WHERE, que ligar a chave primria de uma a chave estrangeira de outra.
Sintaxe:
Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome do
campo] from [nome da tabela1], [nome da tabela2] WHERE [nome da tabela1].[nome
do campo] = [nome da tabela2].[nome do campo]

Vamos utilizar um inner join para obter uma lista dos produtos e suas respectivas categorias. Vamos assumir
que em uma tabela produtos temos o cdigo da categoria, e esta informao - a chamada chave estrangeira nos permite descobrir dentro da tabela categoria o nome da categoria daquele produto.
Comando:
select produtos.Nome as 'Nome Produto', categorias.Nome as 'Categoria'
from produtos, categorias where produtos.CodCategoria = categorias.id

69

Banco de Dados I

Resultado:
Nome Produto

Categoria

---------------

------------------

Leite

Bebidas

Suco

Bebidas

Carne

Carnes

Po

Outros Alimentos

14.4 Exerccios Sugeridos


Anteriormente foi apresentada a tabela clientes, com atributos Nome e Pas. Transforme esta informao em
duas tabelas, Novo_Clientes e Pases, definindo os atributos que fazem a relao entre as tabelas, e defina
uma consulta SQL que retorne o mesmo resultado da tabela Clientes original, porm consultando as duas
novas tabelas
Tabela Clientes
Nome

Pas
Brasil

Empresa A

Brasil

Empresa B

Brasil

Empresa C

Argentina

Empresa X

Brasil

14.5 Equijoins e Operadores Lgicos:


possvel combinar em uma clusula WHERE com equijoins os operadores lgicos: AND, OR e NOT. Isto
ser necessrias em boa parte das consultas SQL feitas em um sistema, pois geralmente queremos definir
condies exatas para a recuperao de dados de diversas tabelas.
Sintaxe:
Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome do
campo] from [nome da tabela1], [nome da tabela2] WHERE [nome da tabela1].[nome
do campo] = [nome da tabela2].[nome do campo] AND [nome da tabelaN].[nome do
campo] [Comparao] [valor ou texto] OR
[nome da tabelaN].[nome do campo]
[Comparao] [valor ou texto] NOT [nome da tabelaN].[nome do campo]
[Comparao] [valor ou texto]

Como exemplo, vamos criar uma consulta em tabelas produtos e categorias, selecionando produtos cujo
preo maior que 10 e ainda exibindo a categoria a que pertencem:
Comando:

70

Banco de Dados I
select produtos.Nome as 'Nome Produto', categorias.Nome as 'Categoria' ,
Preco from produtos, categorias where produtos.CodCategoria = categorias.id and
produtos.preco > 10

14.6 Equijoins entre mais de duas tabelas


Na maioria dos bancos de dados relacionais as tabelas relacionam-se entre si em mais de um nvel. Vamos
definir uma consulta entre tabelas pedidos, produtos e categorias para exemplificar este recurso.
Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome do
campo], [nome da tabela3].[nome do campo] from [nome da tabela1], [nome da
tabela2], [nome da tabela3] WHERE ...

Comando:
select pedidos.id as 'Id do Pedido', produtos.nome as 'Nome do Produto',
categorias.nome as 'Categoria' from pedidos, produtos, categorias where
produtos.codcategoria = categorias.id AND pedidos.idProduto = produtos.id

Em situaes reais, muitas vezes sero criadas consultas entre diversas tabelas, geralmente com a ligao
entre cada tabela e as demais sendo feita atravs de uma igualdade que ligue a chave primria de uma tabela
com a chave estrangeira da outra.

14.7 Redefinio do Nome de Tabelas


Para facilitar a vida do administrador da base de dados, no necessrio que este digite o nome das tabelas
em sua totalidade. possvel criar um alias para cada tabela, diminuindo, assim, a quantidade de caracteres
digitados. O exemplo abaixo ilustra esta tcnica.
Comando:
select PE.id as 'Id do Pedido', PR.nome as 'Nome do Produto', C.nome as
'Categoria' from pedidos as PE, produtos as PR, categorias as C where
PR.codcategoria = C.id AND PE.idProduto = PR.id

14.8 Outros Tipos de Joins - Outer Joins


O resultado de uma instruo SQL que utiliza Equijoin, exibe os resultados que so comuns entre os campos
das duas tabelas. Neste mtodo, ficam de fora as linhas que no encontram relao entre as duas tabelas.
Porm esta informao de entradas que no aparecem num InnerJoin tambm pode ser til. Por exemplo, para
saber se existe algum Cliente que nunca tenha feito um pedido.
Left e Right Join
Para que a questo acima seja respondida, necessrio entender que existe um lado da relao que ir listar
seus registros, baseado no Left ou Right.

71

Banco de Dados I

Em algumas plataformas utilizado o * (asterisco) para determinar o lado do outer join. Em outras
utilizado o (+) (sinal de adio entre parnteses). Ambos utilizados em locais diferentes. Na maioria dos
casos utilizado o comando LEFT JOIN que aceito pelo MySQL e ser utilizado nos exemplos abaixo.
Sintaxe do Left Join:
Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome do
campo] from [nome da tabela1], [nome da tabela2] WHERE [nome da tabela1].[nome
do campo] * = [nome da tabela2].[nome do campo]

ou
Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome do
campo] from [nome da tabela1], [nome da tabela2] WHERE [nome da tabela1].[nome
do campo](+) = [nome da tabela2].[nome do campo]

ou
Select [nome da tabela1].[nome do campo], [nome da tabela2].[nome do
campo] from [nome da tabela1]
LEFT JOIN
[nome da tabela2] ON
[nome da
tabela1].[nome do campo de relao] = [nome da tabela2].[nome do campo de
relao]

Apenas a terceira sintaxe aceita pelo MySQL, por exemplo.


Iremos inicialmente utilizar um comando LEFT JOIN para identificar clientes que no tem nenhum pedido.
Para tanto teremos que restringir o retorno quelas linhas em que no existe uma ligao com a tabela
'pedidos' (portanto as entradas da tabela 'pedidos' retornam null):
select clientes.nome from clientes left join pedidos on
IdCliente where pedidos.id is null

clientes.Id

Observao: o comando RIGHT JOIN no implementado em MySQL, mas invertendo-se as tabelas podese obter efeito equivalente.

14.9 Outros Tipos de Joins - Self Joins


Self Joins so relaes estabelecidas entre uma mesma tabela, por intermdio de dois de seus campos. So
utilizadas normalmente quando a tabela referencia a si mesmo para definir uma hierarquia, por exemplo entre
funcionrios. A nica diferena para um Inner Join comum que repetimos a mesma tabela com dois alias
diferentes.
Abaixo mostrada a sintaxe de um self join.
Sintaxe:
Select * from [nome da tabela].[nome do campo1], [nome da tabela].[nome do
campo2] where [nome da tabela].[nome do campo1]= [nome da tabela].[nome do
campo2];

Supondo uma tabela 'funcionarios' em que existe um campo que referencia a prpria tabela, o campo 'chefe',
que contm o Id do chefe de cada funcionrio. Atravs de um self join podemos listar todos os funcionrios
que possuem um chefe, indicando quem o mesmo:
select F2.Nome as 'funcionrio', ' subordinado a', F1.Nome as 'chefe'
from funcionarios as F1, funcionarios as F2 where F2.Chefe = F1.Id

72

Banco de Dados I

Laboratrio
Crie a seguinte estrutura de tabelas, para executar os exerccios

Liste o nome e a quantidade de atendimentos por cliente


Liste o nome e a quantidade de atendimentos por funcionrio
Conte quantos produtos esto em cada pedido
Calcule a mdia de valor dos pedidos de cada cliente
Calcule o valor total de cada pedido
Mostre a quantidade, total e mdia de pedidos por data
Liste a mdia de pedidos que cada produto participou
Liste o produto mais vendido por cada vendedor
Mostre quantidade de pedidos por tipo de cliente e tipo de pedido
Exiba todos os produtos que no tem pedido
Liste os produtos por cliente que no foram solicitados por eles

73

Banco de Dados I

Liste quantos pedidos cada vendedor faz por data

74

Banco de Dados I

Unidade 15 -

Trabalhando com datas

15.1 Datas em MySQL


A forma de trabalhar com datas pode variar um pouco em diferentes bancos de dados. Aqui apresentamos
recursos tendo como base o MySQL.

15.2 Recuperando Informaes Especficas de Data


Diversas funes permitem recuperar informaes especficas com base em uma data, como o dia, ms e ano
de determinada data, como mostrado abaixo:
DAY OF MONTH
Seleciona o dia de uma data:
select DataPedido, dayofmonth(DataPedido) from pedidos

MONTH
Seleciona o ms de uma data:
select DataPedido, month(DataPedido) from pedidos

YEAR
Seleciona o ano de uma data:
select DataPedido, year(DataPedido) from pedidos

Formato das Datas


Para definir diretamente uma data, por exemplo para um clculo ou para inserir no banco de dados, o formato
um texto (separado por aspas) na forma "ano-ms-dia".
O exemplo abaixo retorna o ano do dia 19 de maio de 1980:
Exemplo:
select year('1980-05-19')

75

Banco de Dados I

Unidade 16 -

Exerccios Extras

1. Uma loja de roupas deseja criar um cadastro com suas peas. Cada pea possui um
cdigo que a identifica, uma descrio, um preo-unitrio e uma quantidade em estoque.
Deseja tambm manter um cadastro de seus clientes com nome, telefone (o cliente pode ter
mais de um, ou nenhum), e as peas que ele j comprou. A data em que o cliente comprou
a pea guardada.
2. Uma empresa bancria mantm um cadastro com os dados dos seus clientes( identidade,
nome,
endereo{ rua, CEP e bairro} e telefone { o cliente pode ter mais de um}) e de suas contas
(nmero da conta e saldo). Um cliente pode ter mais de uma conta no banco e uma conta pode
ser de mais de um cliente (conta conjunta). O banco mantm tambm um cadastro com as suas
agncias (cdigo e nome), em que cada agncia pode ter mais de uma conta.
3. desenhe o Modelo E-R que descreva a situao da Empresa Acme Problemas Ltda., que
apresenta a seguinte estrutura:
a) cada empregado representado a partir das seguintes informaes bsicas: cdigo-empresa,
nome, endereo;
b) cada departamento representado por meio de: nome, cdigo departamento;
c) cada empregado chefia um ou mais departamentos;
d) cada item vendido representado pelo seu nome, preo, fornecedor, nmero do modelo (dado
pelo fornecedor) e nmero interno do item ( dado pelo responsvel pelo estoque);
e) cada fornecedor descrito pelo seu nome, endereo, itens fornecidos ao estoque e preo;
f) os clientes cadastrados tm os seguintes dados: nome, endereo e telefone;
g) os representantes da empresa junto aos clientes so empregados;
4. Um banco de dados, utilizado por uma faculdade, usa um sistema de cadastro de inscrio de
disciplinas que contm as informaes aluno e inscrio. As seguintes informaes devem estar
includas.
Aluno: cdigo de aluno, nome do aluno, ano da admisso e telefone de contato;
Inscrio: cdigo do aluno, cdigo da disciplina, nome da disciplina, cdigo do curso, nome do
curso e data da matrcula.
Projete o banco de dados para esses dados. Faa quaisquer suposies razoveis sobre as
dependncias envolvidas.

76

Banco de Dados I

77

Banco de Dados I

5.Voc acabou de fundar sua empresa de consultoria , a Beija-Flor Consultoria , e seu primeiro
trabalho e desenvolver um sistema para cadastro de clientes voc recebeu o cliente uma lista com
os dados que devero compor o sistema , com base nesta lista normalize a estrutura de dados de
acordo com as formas normais.
Lista de informaes que devero compor o sistema cadastro de clientes:
Nome
Nome do Pai
Nome da Me
Endereo
Telefone1
Telefone2
Nmero do Fax
Nmero do Celular
Telefone do trabalho
Data de Nascimento
Naturalidade
Nacionalidade
Endereo de correspondncia
Nome do filho 1
idade do filho 1
Nome do filho 2
idade do filho 2
Nome do filho 3
idade do filho 3
Nome do filho 4
idade do filho 4
Nome do Cnjuge
Nmero do CPF
Nmero da carteira de identidade
6. De acordo com as regras , normalize as estruturas abaixo.
Relao de Programadores:
Numero da Matrcula
Nome do Programador

78

Banco de Dados I

Setor
Nvel ( 1,2,3)
Descrio do Nvel ( 1 - Jnior, 2 - Pleno, 3 - Snior)
Programas
Codigo do Programa
Nome do Programa
Tempo Estimado
Nvel de Dificuldade ( 1, 2 ou 3 )
Descrio da Dificuldade ( Fcil, Mdio, Difcil)
Regras do negcio:
- Um programa pode ser feito por mais de um Programador;
- Um programador pode fazer um ou mais programas;
- O Nvel de dificuldade do programa depende do tempo estimado para a elaborao do mesmo;

7. Voc deve representar usando o modelo lgico a situao descrita a seguir:


O Departamento de Vendas da Indstria Beleza Ltda., aps estudos de mercado, verificou que
para atingir seus objetivos seria necessrio adquirir frota de veculos prprios para motorizar seus
vendedores. O mercado consumidor foi dividido em regies de venda; foram estabelecidos
percursos de entrega abrangendo pontos estratgicos dessas regies e vendedores foram
designados para cobrir estes percursos. Um sistema deve ser construdo para administrao da
nova sistemtica de vendas adotada pela empresa. Aps entrevistas com o gerente da rea,
foram obtidas as seguintes informaes:
cada regio identificada por um cdigo;
uma regio composta de vrios pontos estratgicos;
as regies no tm pontos estratgicos em comum;
o vendedor tem a responsabilidade de cobrir uma regio;
uma regio pode ser coberta por vrios vendedores;
a cada dia, um veculo fica sob-responsabilidade de um vendedor;
um vendedor pode vender quaisquer itens ativos da tabela de produtos;
o vendedor responsvel pela identificao de cada cliente consumidor na nota fiscal;
a nota fiscal contendo identificao do vendedor, itens e quantidades vendidas
exigida para comprovao da venda.

79

Banco de Dados I

Unidade 17 -

Projeto Final - Reviso

Construa um Diagrama Entidade-Relacionamento (DER) para modelar cada um dos sistemas


abaixo, mas, como as descries so informais, elas se prestam a diferentes interpretaes. Por
este motivo, no existe somente uma soluo correta, mas o diagrama deve refletir de forma
coerente a descrio.
No final, gere o script SQL e crie o banco de dados, cadastrando no mnimo 5 itens para cada
tabela (faa todas as consultas necessrias e possveis para verificar a funcionalidade do banco).

1) Sistema Locadora
Uma pequena locadora de vdeos possui ao redor de 2000 fitas de vdeo, cujo emprstimo deve
ser controlado.
Cada fita possui um nmero. Para cada filme, necessrio saber seu ttulo e sua categoria
(comdia, drama, aventura,... ). Cada filme recebe um identificador prprio. Cada fita controlada
que filme ela contm. Para cada filme h pelo menos uma fita, e cada fita contm somente um
filme. Alguns poucos filmes necessitam mais de uma fita.
Os clientes podem desejar encontrar os filmes estrelados pelo seu ator predileto. Por isso,
necessrio manter a informao dos atores que estrelam em cada filme. Nem todo filme possui
estrelas.
A locadora possui muitos clientes cadastrados. Somente clientes cadastrados podem alugar fitas.
Para cada cliente necessrio saber seu prenome e seu sobrenome, seu telefone e seu endereo.
Alm disso, cada cliente recebe um nmero de associado.
Finalmente desejamos saber que fitas cada cliente tm emprestadas. Um cliente pode ter vrias
fitas em um instante do tempo. No so mantidos registros histricos de aluguis.

80

Banco de Dados I

Unidade 18 -

Principais Bancos de Dados

O dinamismo da rea de tecnologia da informao nos proporciona contatos cada vez mais frequentes com
uma infinidade de modelos de banco de dados. A cada dia vemos a notcia do lanamento de uma nova
plataforma de gerenciamento de dados.
No entanto alguns bancos de dados obtiveram maior notoriedade no mundo da informtica. Dentre estes
bancos cabe destacar o Microsoft Access, que foi um dos precursores dos SGBDs.
Sua inovao em termos de capacidade de armazenamento e dinamismo foi o principal responsvel pelo seu
enorme sucesso.
entretanto com a popularizao da Internet, e por sua vez, da distribuio das informaes em redes de
grande alcance, sua limitaes foram fincando evidentes. Abriu-se ento espao para os chamados softwares
livres.
Esta nova realidade proporcionou o aparecimento do MySQL, PostGreSQL e tantos outros. Por sua maior
capacidade de desempenho em um ambiente compartilhado, estes sistemas ganharam fora na internet, sendo
responsveis por um grande mercado de sites pessoais e de pequeno-mdias corporaes.
Quando nos referimos a grandes corporaes, que dependem criticamente do controle de seus dados, nos
deparamos com a necessidade de bancos de dados que trabalhem, com recursos mais avanados, tais como
replicao, servios de integrao, bussines inteligence, etc.
Neste contexto encontramos como grandes expoentes o SQL SERVER e o ORACLE alm de outros com
menor expresso. O SQL SERVER tem como grande diferencial ser da Microsoft o que faz com que sua
integrao com linguagens .Net ocorra de forma natural.
Nas prximas unidades de nosso material iremos trabalhar com 3 destes SGBDs. Cada um deles representado
um formato de objetivo de uso do banco de Dados.
Iniciaremos pelo precursor da popularizao do mesmo, o Microsoft Accces. Depois trataremos das
principais caractersticas e formas de manipulao do MYSQL.
Finalizando nosso trabalho falaremos do SQL SERVER e seus principais atributos.

81

Banco de Dados I

Unidade 19 -

Microsoft Access

19.1 Introduo
O Access um poderoso software de gerenciamento de banco de dados, que possibilita ao
usurio um gerenciamento preciso de dados e a possibilidade de gerao de consultas,
formulrios, relatrios, etiquetas e a criao de aplicativos personalizados, bem como a integrao
com outros aplicativos.

19.2 ARQUIVOS DE BANCO DE DADOS DO ACCESS


Com o Microsoft Access, voc pode gerenciar todas as informaes em um nico arquivo de
banco de dados. No arquivo, voc pode utilizar:
Tabelas para armazenar seus dados.
Consultas para localizar e recuperar apenas os dados desejados.
Formulrios para exibir, adicionar e atualizar dados em tabelas.
Relatrios para analisar ou imprimir dados em um layout especfico.
Pginas de acesso a dados para exibir, atualizar ou analisar os dados do banco de dados na
Internet ou em uma intranet.

82

Banco de Dados I

TABELAS E RELACIONAMENTOS
Para armazenar dados, crie uma nica tabela para cada tipo de informao rastreada. Para reunir
os dados de vrias tabelas em uma consulta, formulrio, relatrio ou pgina de acesso a dados,
defina relacionamentos entre as tabelas.

83

Banco de Dados I

CONSULTAS
Para localizar e recuperar somente os dados que
atendem s condies especificadas, incluindo dados
de vrias tabelas, crie uma consulta. Uma consulta
tambm pode atualizar ou excluir diversos registros
simultaneamente, alm de efetuar clculos predefinidos
ou personalizados em seus dados.

FORMULRIOS
Para exibir, inserir e alterar dados de maneira
fcil e direta, crie um formulrio. Quando voc
abre um formulrio, o Microsoft Access recupera
os dados de uma ou mais tabelas e exibe-os na
tela com o layout escolhido no Assistente de
formulrio, ou com o layout criado por voc no
modo de design.

RELATRIOS

84

Banco de Dados I

Para

analisar

determinada

os

dados

maneira,

ou

crie

um

imprimi-los

de

relatrio.

Por

exemplo, voc poderia imprimir um relatrio que


agrupasse dados e calculasse totais, e outro
relatrio

com

outros

dados

formatados

para

impresso de etiquetas de endereamento.

85

Banco de Dados I

PGINA DE ACESSO A DADOS


Para disponibilizar dados na Internet ou em
uma

intranet

para

relatrios

interativos,

entrada ou anlise de dados, use uma pgina


de acesso a dados. O Microsoft Access
recupera os dados de uma ou mais tabelas e
exibe-os na tela com o layout criado por voc
no modo de design ou com o layout escolhido
no Assistente de pgina.

19.3 INICIANDO O ACCESS


Para acessar o Access basta utilizar a barra de ferramentas do Office ou atravs de
IniciarProgramas(Todos os programas) ( Microsoft Office) Microsoft Access.
recomendvel criar um atalho na rea de trabalho para tornar o acesso ao Access mais rpido.
Se voc preferir inicializar o Access automaticamente quando liga seu computador, crie um atalho
dentro da pasta Iniciar do menu Programas.

19.4 PRIMEIROS CONTATOS


Ao acessar o Access ser exibida uma tela que depende da verso de seu Microsoft Office, e que
poder variar conforme a configurao que o usurio tenha definido inicialmente.
Comparando com outros aplicativos do Office, o Access no abre automaticamente um novo
arquivo como o Word e o Excel, desta forma o usurio dever optar por uma das opes no Painel
de Tarefa..
O Access grava seus arquivos com a extenso MDB e alm desta extenso existe um arquivo
com extenso LDB que criado automaticamente quando um arquivo do Access aberto. O
arquivo LDB tem por finalidade gerenciar bloqueio de registros quando um banco de dados estiver
sendo utilizado em modo compartilhado

86

Banco de Dados I

Barra de menu

Barra
ttulo

de

Lista de Objetos

Barra de Satus

19.5 MENUS E BARRAS DE FERRAMENTAS


Um menu exibe uma lista de comandos. Alguns desses comandos apresentam imagens ao lado
para que voc possa associar rapidamente o comando imagem. A maioria dos menus est
localizada na barra de menus, que a barra de ferramentas na parte superior da tela. As barras de
ferramentas podem conter botes, menus ou uma combinao dos dois. Seguem dois tipos de
barras de ferramentas e menus

87

Banco de Dados I

19.6 JANELA BANCO DE DADOS


Quando voc cria ou abre um arquivo do Microsoft Access, exibida a janela Banco de dados,
que o centro de comando do arquivo do Access. Nela, possvel criar ou utilizar qualquer objeto
de banco de dados ou de projeto do Access.

88

Banco de Dados I

Os objetos de um banco de dados do Access se relacionam como mostrado na figura abaixo:

89

Banco de Dados I

90

Banco de Dados I

19.7 CRIANDO UM NOVO BANCO DE DADOS


O Microsoft Access oferece dois mtodos para criao de um banco de dados do Access. Voc
pode usar um Assistente de banco de dados para criar em uma operao as tabelas, formulrios
e relatrios necessrios para o tipo de banco de dados que voc escolheu - esse o modo mais
fcil para iniciar a criao do banco de dados. Ou voc pode criar um banco de dados em branco e
adicionar as tabelas, formulrios, relatrios e outros objetos posteriormente - esse o mtodo
mais flexvel, mas exige que voc defina cada elemento de banco de dados separadamente. Em
qualquer dos mtodos, voc pode modificar e estender o banco de dados a qualquer momento
aps ele ter sido criado.

Criar um banco de dados utilizando um Assistente de banco de dados:


Clique em Novo

na barra de ferramentas.

No painel de tarefas Novo arquivo, em Novo com

base

em

modelo, clique em Modelos gerais.


Na guia Bancos de dados, clique no cone do tipo

de

de dados que voc deseja criar e, em seguida, clique

em OK.

Na caixa de dilogo Novo arquivo de banco de


especifique um nome e local para o banco de dados

banco

dados,
e,

em

seguida, clique em Criar.


Siga as instrues do Assistente de banco de dados.
Observao: No possvel usar o Assistente de banco de dados para adicionar novas
tabelas, formulrios ou relatrios a um banco de dados existente.

Em verses mais atuais a exibio do assistente para a criao de um novo banco de dados,
baseia-se na possibilidade de baixar novos modelos de bancos de dados.
Segue uma imagem que retrata esta opo

91

Banco de Dados I

Criar um banco de dados sem utilizar um Assistente de banco de dados


Clique em Novo

na barra de ferramentas.

No painel de tarefas Novo arquivo, em Novo, clique em Banco de dados em branco.


Na caixa de dilogo Novo arquivo de banco de dados, especifique um nome e local para o
banco de dados e, em seguida, clique em Criar.
A janela Banco de dados ser exibida para voc criar os objetos que deseja em seu banco de
dados.

19.8 ABRINDO UM BANCO DE DADOS


No menu Arquivo(Boto do Microsoft Office), clique em Abrir

Clique em um atalho no lado esquerdo da caixa de dilogo Abrir ou, na caixa Examinar, clique na
unidade de disco ou pasta que contm o banco de dados do Microsoft Access que voc deseja.
Na lista de pastas, clique duas vezes nas pastas at abrir aquela que contm o banco de dados.
Se voc no conseguir localizar o banco de dados que deseja abrir, clique em Ferramentas na
barra de ferramentas da caixa de dilogo Abrir e, em seguida, clique em Pesquisar

. Na caixa

de dilogo Pesquisar, digite critrios de pesquisa adicionais.

92

Banco de Dados I

Siga um destes procedimentos:


Clique duas vezes no banco de dados.
Para abrir o banco de dados para acesso compartilhado em um ambiente multiusurio, de modo
que voc e outros usurios possam ler e gravar no banco de dados, clique em Abrir.
Para abrir o banco de dados para acesso somente leitura de modo a poder visualiz-lo mas no
edit-lo, clique na seta prxima ao boto Abrir e, em seguida, clique em Abrir como somente
leitura.
Para abrir o banco de dados com acesso exclusivo, clique na seta prxima ao boto Abrir e, em
seguida, clique em Abrir exclusivo.
Para abrir o banco de dados para acesso somente leitura e tambm impedir que outros usurios o
abram, clique na seta prxima ao boto Abrir e, em seguida, clique em Abrir exclusivo como
somente leitura.

Observao: Voc pode abrir diretamente um arquivo de dados em um formato de arquivo


externo, como dBASE, Paradox, Microsoft Exchange, ou Microsoft Excel; voc tambm pode abrir
diretamente qualquer fonte de dados ODBC, como Microsoft SQL Server ou Microsoft FoxPro. O
Access cria automaticamente um novo banco de dados do Access na mesma pasta do arquivo de
dados e adiciona vnculos a cada tabela no banco de dados externo.

19.9 FECHANDO UM BANCO DE DADOS

93

Banco de Dados I

Proceda da mesma forma utilizada para fechar os outros programas do pacote MS Office quando
sair de um arquivo de banco de dados. Ative a opo Fechar do menu Arquivo do programa.

Laboratrio
A.
O que um banco de dados?

B.

Cite 3 exemplos de banco de dados:

C.

Quais so os objetos de um banco de dados do Access?

D.

Quais so os dois tipos de arquivos padro criados pelo Access?

E.

F.

Ao copiar um arquivo de banco de dados, necessrio copiar tambm o arquivo com extenso
LDB? Justifique:

Como possvel abrir mais de um banco de dados ao mesmo tempo no Access?

94

Banco de Dados I

Unidade 20 -

TABELAS

Uma tabela um conjunto de dados sobre um tpico especfico, como produtos ou fornecedores.
Utilizar uma tabela separada para cada tpico significa armazenar os dados somente uma vez.
Isso resulta em um banco de dados mais eficiente e em menos erros de entrada de dados.
Como os dados so organizados em tabelas
Tabelas organizam dados em colunas (chamadas campos) e linhas (chamados registros).

Por exemplo, cada campo em uma tabela Produtos contm o mesmo tipo de informao para
cada produto, como o nome do produto. Cada registro nessa tabela contm todas as informaes
sobre um produto, como o nome do produto, o nmero de identificao do fornecedor, as unidades
em estoque etc.
Modo de design da tabela
No modo de design da tabela, possvel criar uma tabela inteira desde o incio ou adicionar,
excluir ou personalizar os campos em uma tabela existente.

95

Banco de Dados I

Como relacionar duas tabelas


Um campo comum relaciona duas tabelas a fim de que o Microsoft Access possa reunir os dados
das duas tabelas para visualizao, edio ou impresso. Em uma tabela, o campo uma chave
primria que voc define no modo de design da tabela. Esse mesmo campo tambm existe na
tabela relacionada como uma chave externa.

Modo de folha de dados da tabela.


Em uma tabela ou consulta, o modo de folha de dados fornece as ferramentas necessrias para
voc trabalhar com dados.
Usando as barras de ferramentas Folha de dados da tabela e Folha de dados da consulta
As barras de ferramentas Folha de dados da tabela e Folha de dados da consulta fornecem
muitas das ferramentas necessrias para localizar, editar e imprimir registros.

96

Banco de Dados I

Trabalhando com colunas, linhas e subfolhas de dados


Voc pode encontrar ferramentas para trabalhar com colunas, linhas e subfolhas de dados na
prpria folha de dados, ou clicando com o boto direito do mouse em um seletor de colunas.

Percorrendo registros
Voc pode usar a barra de ferramentas de navegao para percorrer os registros de uma folha de
dados.

97

Banco de Dados I

20.1 CRIANDO UMA NOVA TABELA


A criao de uma tabela no Access pode ser realizada de 3 maneiras diferentes como como
vamos ver a seguir:
Observao: As informaes deste tpico se aplicam somente a um banco de dados do Microsoft
Access (.mdb).

Para criar uma tabela em branco (vazia) a fim de inserir seus prprios dados, voc pode:

20.2 Criar uma tabela usando o Assistente de tabela


Em Objetos, clique em Tabelas e, em seguida, clique em Novo na barra de ferramentas da janela
Banco de Dados.
Clique duas vezes em Assistente de tabela.
Siga as instrues das caixas de dilogo do Assistente de tabela.

98

Banco de Dados I

20.3 Criar uma tabela inserindo dados em uma folha de


dados
Em Objetos, clique em Tabelas e, em seguida, clique em Novo na barra de ferramentas da janela
Banco de dados.
Clique duas vezes em Modo folha de dados. Uma folha de dados em branco exibida. Os
nomes padro das colunas so Campo1, Campo2, e assim por diante.
Renomeie cada coluna que voc ir utilizar: clique duas vezes no nome da coluna, digite um nome
para ela e pressione ENTER.
Voc pode inserir colunas adicionais a qualquer momento: clique na coluna direita de onde voc
deseja inserir uma nova coluna e, em seguida, no menu Inserir, clique em Coluna. Renomeie a
coluna como descrito na etapa 4.
Insira seus dados na folha de dados.
Insira cada tipo de dados em sua prpria coluna (cada coluna chamada de campo no Microsoft
Access). Por exemplo, se voc estiver inserindo nomes, insira o nome em uma determinada
coluna e o sobrenome em uma coluna separada. Se estiver inserindo datas, horas ou nmeros,
insira-os em um formato consistente para que o Microsoft Access possa criar um tipo de dados e
um formato de exibio apropriados para a coluna. Qualquer coluna que voc deixar vazia ser
excluda quando voc salvar a folha de dados.

99

Banco de Dados I

Quando voc tiver adicionado dados a todas as colunas que deseja utilizar, clique em Salvar na
barra de ferramentas para salvar sua folha de dados.
O Microsoft Access pergunta se voc deseja criar uma chave primria. Se voc no inseriu dados
que possam ser utilizados para identificar cada linha de sua tabela de forma exclusiva, como
nmeros de srie ou de identificao, recomendvel que voc clique em Sim. Se voc inseriu
dados que possam identificar cada linha de forma exclusiva, clique em No e especifique o campo
que contm os dados como sua chave primria no modo de design.

20.4 Criar uma tabela no modo design


Em Objetos, clique em Tabelas e, em seguida, clique em Novo na barra de ferramentas da janela
Banco de Dados.
Clique duas vezes no Modo de design.
Defina cada um dos campos de sua tabela.
Abra a tabela no modo de design.
Para inserir um campo dentro da tabela, clique na linha abaixo de onde voc deseja adicion-lo e,
em seguida, clique em Inserir Linhas

na barra de ferramentas.

Para adicionar um campo ao final de uma tabela, clique na primeira linha em branco.
Clique na coluna Nome do campo e digite um nome exclusivo para o campo.
Na coluna Tipo de dados, mantenha o padro (Texto) ou clique na coluna Tipo de dados, clique
na seta e selecione o tipo de dados desejado.

100

Banco de Dados I

Na coluna Descrio, digite uma descrio das informaes que constaro nesse campo. Essa
descrio exibida na barra de status quando dados so adicionados ao campo e ela includa
na definio do objeto da tabela. A descrio opcional.
Defina um campo de chave primria antes de salvar sua tabela.
Abra uma tabela no modo de design.
Selecione o campo ou campos que voc deseja definir como chave primria.
Para selecionar um campo, clique no seletor de linha do campo desejado.
Para selecionar vrios campos, mantenha pressionada a tecla CTRL e, em seguida, clique no
seletor de linha de cada campo.
Clique em Chave primria

na barra de ferramentas.

Observao Se voc deseja que a ordem dos campos em uma chave primria de campos
mltiplos seja diferente da ordem desses campos na tabela, clique em ndices

na barra de

ferramentas para exibir a janela ndices e, em seguida, ordene novamente os nomes dos campos
para o ndice denominado Chave Primria.
Observao: Voc no precisa definir uma chave primria, mas normalmente recomendvel
faz-lo. Se voc no definir uma chave primria, o Microsoft Access perguntar se voc deseja
que ele crie uma quando for salvar a tabela.

20.5 TIPOS DE DADOS


Ao definir um novo campo em uma tabela o usurio dever especificar o seu tipo de dados. A lista
a seguir resume todos os tipos de dados de campos disponveis no Microsoft Access, seus usos e
tamanhos de armazenamento.

Texto
Use para texto ou combinaes de texto e nmeros, como endereos, ou para nmeros que no
exigem clculos, como cdigos postais, nmeros de telefone ou de peas.
Armazena at 255 caracteres. A propriedade FieldSize controla o nmero mximo de caracteres
que podem ser inseridos.
Memorando
Use para texto longo e nmeros, como anotaes ou descries.
Armazena at 65.536 caracteres.

101

Banco de Dados I

Nmero
Use para dados numricos a serem includos em clculos matemticos, exceto os que envolvam
valores monetrios (use o tipo Moeda).
Armazena 1, 2, 4 ou 8 bytes; 16 bytes para cdigo de replicao (GUID). A propriedade FieldSize
define o tipo Nmero especfico.
Data/Hora
Use para datas e horas.
Armazena 8 bytes.
Moeda
Use para valores monetrios e para evitar arredondamento durante os clculos.
Armazena 8 bytes.
AutoNumerao
Use para nmeros sequenciais (incremento de 1) ou aleatrios exclusivos que so
automaticamente inseridos quando um registro adicionado.
Armazena 4 bytes; armazena 16 bytes para cdigo de replicao (GUID).
Sim/No
Use para dados que podem ter somente um de dois valores possveis, como Sim/No,
Falso/Verdadeiro, Ativado/Desativado. Valores Nulo no so permitidos.
Armazena 1 bit.
Objeto OLE
Use para objetos OLE (como documentos do Microsoft Word, planilhas do Microsoft Excel,
imagens, sons ou outros dados binrios) que foram criados em outros programas usando o
protocolo OLE.
Armazena at 1 gigabyte (limitado pelo espao em disco).
Hiperlink
Use para hiperlinks. Um hiperlink pode ser um caminho UNC ou um URL.
Armazena at 64.000 caracteres.
Assistente de pesquisa
Use para criar um campo que permite escolher um valor em outra tabela ou lista de valores
usando uma caixa de combinao a escolha desta opo na lista de tipos de dados iniciar um
assistente que definir isso para voc.
Requer o mesmo tamanho de armazenamento que a chave primria que corresponde ao campo
Pesquisa - normalmente 4 bytes.

102

Banco de Dados I

20.6 PROPRIEDADES DE CAMPOS


Alm do tipo de dados outras propriedades podem ser definidas com o objetivo de restringir a
entrada de dados ou mudar a sua exibio no qual listamos abaixo algumas:

Propriedade

Casas decimais

Descrio

Descrio

O nmero de casas aps a vrgula para dados do tipo


nmero.
Um texto que descreve o campo e serve como auxlio
no modo folha de dados.
O formato serve basicamente para alterar a exibio
dos dados. Dependendo do tipo de dados o usurio
poder escolher entre um dos formatos pr-definidos.

Formato

Como exemplo de formatao pode citar :


>[Vermelho] : Exibe

os

dados

em

letras

maisculas e em vermelho
mmm-aaaa : Exibe uma data no formato ms
abreviado e ano completo.
Quando for necessrio emitir um relatrio ou exibir uma
Indexado

consulta ordenada por um determinado campo o usurio


poder criar um ndice para este campo que tornar a
consulta ou relatrio mais rpidos de serem executados.
A legenda o ttulo da coluna na tabela. Se no for

Legenda

especificada o usurio utilizar o prprio nome do


campo como ttulo da coluna.
Serve para restringir e auxiliar o usurio na entrada de
dados.

Mscara de entrada

Por exemplo uma mscara de entrada para um campo


CPF poderia ser informada da seguinte forma :
000.000.000-00

Novos valores

Define como o Access ir gerar os valores de um


campo do tipo de dados AutoNumerao.

Permitir comprimento Define se um campo aceita somente espaos em

103

Banco de Dados I

Propriedade

zero

Descrio

branco como contedo.


Uma expresso que restringe a entrada de dados no

Regra de validao

campo. Por exemplo a Regra de Validao <=Data()


no permite a entrada de um data maior que a data
atual.

Requerido

Define se um campo deve ser obrigatoriamente


preenchido ou no.
De acordo com o tipo de dados o usurio poder definir
qual o tamanho do campo. Por exemplo ao utilizar um

Tamanho do campo

campo do tipo nmero, o usurio dever especificar um


dos tamanhos permitidos de acordo com a tabela de
tipos de dados.

Texto de validao

Um texto que exibido quando o usurio excede a


regra de validao.
Um valor que ser automaticamente colocado no

Valor padro

campo evitando que o usurio digite sempre o mesmo


valor para um campo que no sofre muitas alteraes.

20.7 BARRA DE FERRAMENTAS DO MODO DESIGN DE


TABELA
A barra de ferramentas do modo design apresenta os seguintes botes, que tem por finalidade
facilitar algumas aes. Os comandos no citados possuem a mesma funo dos outros
aplicativos Office.
Alterna entre os
modos

Novo objeto

Janela do banco de
dados

104

Banco de Dados I

Construir
(Expresses)
Define um campo como chave primria
Propriedades
Permite a
ndices de
primria

edio dos
uma tabela
Inserir linha

Excluir linha

20.8 EDITANDO DADOS NO MODO FOLHA DE DADOS


Existem vrias maneiras de cadastrar dados em um banco de dados do Access, uma das
maneiras atravs do modo folha de dados, muito semelhante ao modo no qual os dados so
inseridos em uma planilha do Excel.
Na base do modo folha de dados so encontrados os botes que servem para navegao de
registros.

105

Banco de Dados I

A tabela abaixo descreve as alteraes da barra de ferramentas quando alternamos para o modo
folha de dados.

Boto

Nome

Descrio

Alterna para o modo estrutura que permite a alterao


das definies da tabela.
Inserir
Em um campo do tipo hyperlink permite que o usurio
hyperlink
informe um caminho vlido.
Barra
de
Exibe a barra de ferramentas para navegao na
ferramentas Web Internet.
Classificao
Classifica os dados na ordem crescente pelo campo
crescente
selecionado.
Classificao
Classifica os dados na ordem decrescente pelo campo
decrescente
selecionado.
Filtrar
por
Ativa o modo de filtro exibindo somente os dados com a
seleo
seleo atual.
Filtrar
por
Permite que o usurio defina um filtro mais complexo
formulrio
para a tabela atual.
Aplicar/remov
Aplica ou remove um filtro ativado pelos dois botes
er filtro
anteriores.
Localizar
Ativa a caixa de dilogo Localizar.
Exibir

Novo registro
Excluir
registro

Permite a incluso de novos registros.


Exclui o(s) registro(s) atualmente selecionados(s).

106

Banco de Dados I

LABORATRIO
G.
No Windows Explorer crie uma pasta chamada Curso de Access na unidade de disco C:\Meus
Documentos

H.

Crie um banco de dados com o seu nome na pasta criada no item anterior:

I.

Crie as tabelas descritas a seguir:


tblCargos
Campo

Tipo de dados

Tamanho

Cdigo do cargo

AutoNumerao

Inteiro Longo

Descrio do cargo

Texto

25

Campo

Tipo de dados

Tamanho

Cdigo do setor

AutoNumerao

Inteiro Longo

Descrio do setor

Texto

25

tblSetores

tblEmpresas
Campo
Cdigo
empresa

Tipo de dados
da AutoNumerao

Tamanho

Mscara

Inteiro Longo

Razo Social

Texto

50

>[Azul]

Fone

Texto

10

(999)
9999

Fax

Texto

07

999-9999

Observaes

Memorando

999-

tblFuncionrios
Campo

Tipo de dados

Tamanho

Cdigo do funcionrio

AutoNumerao

Inteiro Longo

Cdigo da empresa

Nmero

Inteiro Longo

Nome do funcionrio

Texto

30

107

Banco de Dados I

Cdigo do cargo

Nmero

Inteiro Longo

Cdigo do setor

Nmero

Inteiro Longo

Salrio

Moeda

J.

Na tabela tblCargos cadastre os seguintes cargos: Gerente, Auxiliar administrativo, Diretor:

K.

Na tabela tblSetores cadastre os seguintes setores: Produo, Administrao, Recursos


Humanos:

L.

Feche o banco de dados criado e saia do Access:

108

Banco de Dados I

Unidade 21 -

RELACIONAMENTOS

21.1 BANCO DE DADOS RELACIONAL


Um banco de dados relacional armazena suas informaes em diversas tabelas que se
relacionam atravs de determinados campos (chave-primria).
O Access um sistema de gerenciamento de banco de dados relacional, pois as diversas
informaes de um banco de dados em Access podem ser divididas em diversas tabelas e
relacionadas entre si para a emisso de relatrios e gerao de consultas, porm antes de utilizar
os dados de diversas tabelas os relacionamentos devem ser definidos.
Como exemplo de relacionamentos, citamos no quadro abaixo o relacionamento existente entre
uma tabela de Empresas e uma tabela de Contatos:

Ao relacionarmos tabelas, as mesmas devem possuir campos equivalentes, no necessariamente


como o mesmo nome, mas com o mesmo tamanho e tipo de dados.

21.2 TIPOS DE RELACIONAMENTOS


Os tipos de relacionamentos so divididos em trs tipos bsicos e so descritos a seguir:
Relacionamentos Um-Para-Vrios
Ocorre quando um registro na tabela primria se relaciona com vrios registros na tabela
secundria.

109

Banco de Dados I

Relacionamentos Um-Para-Um
Ocorre quando um registro na tabela primria se relaciona com apenas um registro na tabela
secundria.

Relacionamentos Vrios-Para-Vrios
Os relacionamentos vrios-para-vrios no so gerenciados diretamente pelo Access e devem ser
evitados com a adio de uma tabela intermediria como no exemplo abaixo:

A incluso da tabela Detalhes da obra quebrou o relacionamento vrios-para-vrios existente


entre as duas tabelas relacionando-as indiretamente.

110

Banco de Dados I

21.3 DEFININDO OS RELACIONAMENTOS


Para definir os relacionamentos no Access basta utilizar o boto relacionamentos da barra de
ferramentas ou atravs do menu FerramentasRelacionamentos.
Em primeiro lugar o usurio dever adicionar as tabelas que faro parte do relacionamento, logo
aps basta arrastar o campo, que ser relacionado, da tabela primria para a tabela secundria e
a seguinte caixa de dilogo ser exibida.

Alm do relacionamento em si tambm podem ser definidas algumas propriedades que so


descritas abaixo:

Boto

Nome

Impor integridade referencial

Propagar atualizao
campos relacionados
Propagar
excluso
registros selecionados

A integridade referencial um sistema de regras


que o Microsoft Access utiliza para garantir que os
relacionamentos entre registros de tabelas
relacionadas sejam vlidos e que voc no exclua
ou altere, acidentalmente, dados relacionados.

Atualiza
dados
na
tabela
secundria
dos automaticamente quando os dados forem alterados
na tabela primria.
dos

Exclui
dados
na
tabela
secundria
automaticamente quando os dados forem excludos
na tabela primria.

111

Banco de Dados I

As botes descritos abaixo so exibidos na tela de relacionamentos :

Boto

Nome

Descrio

Adiciona novas tabelas a tela de


relacionamentos.
Mostrar
Exibe todos os relacionamentos diretos da
relacionamentos diretos tabela selecionado.
Mostrar todos os
Exibe todos os relacionamentos existentes no
relacionamentos
banco de dados atual
Limpa todos os relacionamentos.
Limpar layout
Adicionar tabelas

Para excluir um relacionamento existente basta apenas marcar a linha que representa o
relacionamento desejado e pressionar a tecla DELETE.
Caso o usurio exclua uma tabela da tela de relacionamentos, as relaes no sero excludas.
Definindo as Propriedades de Pesquisa
Um dos objetivos de relacionar tabelas evitar dados redundantes, aps ter criado as tabelas do
banco de dados o usurio poder definir no modo estrutura de tabela as propriedades de
pesquisa, que permitiro que determinados campos exibam dados de outras tabelas. Por exemplo,
ao cadastrar um novo produto ao invs de termos que digitar o cdigo da categoria podemos
definir as propriedades de pesquisa do campo cdigo da categoria para que seja exibida uma
caixa de combinao com o nome das categorias.
A maneira mais simples de definirmos as propriedades de pesquisa de um campo utilizarmos a
opo Assistente de pesquisa no tipo de dados do campo.
Ao definir as propriedades de pesquisa atravs do Assistente de pesquisa o Access criar
automaticamente o relacionamento, porm no definir as regras de integridade referencial e
propagao de atualizao e excluso.

112

Banco de Dados I

LABORATRIO 3
Atravs do comando relacionamentos, relacione as tabelas criadas no laboratrio 2.

Atravs do Assistente de pesquisa no modo estrutura de tabela defina as propriedades de


pesquisa para o campo Cdigo da empresa na tabela tblFuncionrios:

Atravs do Assistente de pesquisa no modo estrutura de tabela defina as propriedades de


pesquisa para o campo Cdigo do cargo na tabela tblFuncionrios:

Atravs do Assistente de pesquisa no modo estrutura de tabela defina as propriedades de


pesquisa para o campo Cdigo do setor na tabela tblFuncionrios:

Quais tabelas seriam necessrias para criar um banco de dados de uma locadora de veculos?
Elabore um modelo. (Este laboratrio dever ser realizado em conjunto com o instrutor e a turma)

113

Banco de Dados I

Unidade 22 -

CONSULTAS

22.1 O QUE SO AS CONSULTAS NO ACCESS


Como foi descrito anteriormente as consultas so perguntas feitas sobre os dados de um banco
de dados ou aes que modificam estes dados.
Quando voc abre uma consulta no modo de design, ou abre um formulrio, relatrio ou folha de
dados e mostra a janela Filtrar/classificar avanado, exibida a grade de design, que pode ser
utilizada para fazer uma variedade de alteraes a fim de obter os resultados desejados da
consulta.

22.2 Criar uma consulta usando o Assistente de


consulta
Em Objetos, clique em Consulta e, em seguida, clique em Novo na barra de ferramentas da
janela Banco de Dados.
Clique em um dos modos de Assistente de consulta.

Em seguida selecione uma tabela ou consulta na caixa de dialogo Assistente de consultas...

114

Banco de Dados I

Clique no boto Avanar e na prxima caixa de dialogo de um nome para sua consulta, em
seguida clique em Concluir.

22.3 Criar uma consulta usando o modo desgin


Em Objetos, clique em Consulta e, em seguida, clique em Criar consulta no modo Design na
janela Banco de Dados.
Na caixa de dialogo Mostrar tabela, selecione as tabelas ou consultas que voc queira adicionar.
Em seguida clique no boto Adicionar e logo aps no boto Fechar.

115

Banco de Dados I

Na caixa de dialogo Consulta1: consulta seleo, arraste os campos das tabelas, que voc queira
verificar na sua consulta, para grande de design.

Para executar uma consulta no modo design clique no boto Executar na barra de ferramentas
Design de consulta.
As consultas no Access so realizadas na grade QBE (query by exemple) que permite a definio
de consultas complexas sem a necessidade de programao em SQL (Structured Query
Language).
O exemplo abaixo mostra uma consulta para verificar os pedidos trimestrais entre 01/01/1997 e
31/12/1997.

116

Banco de Dados I

Os botes descritos abaixo so exibidos na tela de consultas :

Boto Nome
Tipo

Descrio
de Alterna entre os tipos de consultas permitidos pelo

consulta

Access.

Executar

Executa a consulta atualmente definida.

Adicionar

Adiciona novas tabelas a tela de consultas.

tabelas
Totais

Exibe a linha de Totais na grade QBE que permite a


totalizao de dados.

Valores

Permite a definio de percentuais de registros a serem

principais

exibidos como resultado.

117

Banco de Dados I

22.4 TIPOS DE CONSULTAS


Como foi descrito anteriormente as consultas so perguntas feitas sobre os dados de um banco
de dados ou aes que modificam estes dados.
Consulta Seleo
o tipo mais comum de consulta do Access, tem por objetivo retornar ao usurio uma srie de
dados de uma ou mais tabelas. Atravs do boto de Totais poder tambm retornar dados
resumidos.
O exemplo abaixo mostra a definio de uma consulta de seleo simples com dados de duas
tabelas.

O exemplo abaixo mostra a definio de uma consulta de seleo com totais.

118

Banco de Dados I

Consulta de Tabela de Referncia Cruzada


As consultas de referncia cruzada tm por objetivo resumir dados e utilizam basicamente um
recurso semelhante ao utilizado nas tabelas dinmicas do Excel. A figura abaixo mostra um
exemplo de consulta de referncia cruzada:

Consulta Criar Tabela


A consulta do tipo Criar tabela permite que dados de uma ou mais tabelas sejam lanados em
uma nova tabela.
A interface semelhante ao das consultas de seleo a nica diferena que ao alterar o tipo de
consulta o usurio dever informar o nome da tabela que ser gerada.
O exemplo abaixo mostra um exemplo onde uma nova tabela ser criada com base em dados de
trs tabelas existentes:

119

Banco de Dados I

Consulta Atualizao
A consulta do tipo Atualizao permite que um grupo de registros seja atualizado rapidamente.
Como no exemplo abaixo que mostra uma consulta que atualiza todos as Bebidas em 10%:

120

Banco de Dados I

Consulta Acrscimo
A consulta do tipo acrscimo utilizada para transportar registros entre tabelas.
O exemplo abaixo mostra uma consulta que anexa dados de uma tabela chamada Novos
Produtos na tabela de Produtos existente:

Consulta Excluso
A consulta do tipo excluso serve para excluir um conjunto de registro de uma tabela baseado em
critrios informados. Os registros so excludos definitivamente.
A tela abaixo exibe a definio de uma consulta que exclui todos os produtos da categoria
Brinquedos da tabela de Produtos:

121

Banco de Dados I

Utilizando Parmetros
Os parmetros so variveis definidas pelo usurio que tm seus valores informados na execuo
da consulta. Por exemplo ao invs do usurio fornecer um critrio do tipo Bebidas para uma
consulta que lista os produtos de uma categoria especfica o usurio pode utilizar um critrio do
tipo [Entre com o nome da categoria].
No exemplo abaixo ilustramos a consulta descrita acima:

O texto utilizado como parmetro no pode ser um nome de campo e deve ter o seu tipo de dados
especificado atravs do comando ConsultaParmetros.

122

Banco de Dados I

123

Banco de Dados I

LABORATRIO 4
M.
Abra o banco de dados Testando as consultas.mdb na pasta Curso de Access 2003:

N.

Crie as consultas descritas logo abaixo:


Nome da consulta

Tabela/Campos
Produtos:

Lista de produtos

Nome do

Produto
Preo Unitrio

Pas dos
Funcionrios
Funcionrios por
pas

Funcionrios : Nome
Pas
Funcionrios: Pas
Cdigo
Categorias:

Produtos por

Categoria

categoria

Produtos:

Classificao
Nome do
Produto

Critrio:
Preo Unitrio
>95

Nome

Pas

Nome da

Consulta com
Totais
Consulta com

Nome da
Cdigo do

Critrios/Obs

Totais

Categoria

Produto
Produtos:
Produtos com
estoque crtico

Nome do

produto

Critrio:
Nome do

Unidades em

Entre 10 e 20

produto

estoque
Clientes:
Empresas com fax

Nome da

empresa

empresa

Fax
Clientes:

Nome da

Nome da

Critrio:
Negado nulo

Critrio:

Clientes do Brasil e empresa

Nome da

Brasil ou

Argentina

empresa

Argentina

Fone
Pas

Atualizao do
preo em 10%
Excluso dos
clientes da

Produtos:

Preo

Unitrio

Atualizar para:
[PreoUnitrio]*1
,1

Clientes:

Pas

Critrio:
Argentina

124

Banco de Dados I

Argentina

Exporta

Funcionrios: Nome do

Criao de

Funcionrio

tabela

Cidade

Funcionrios USA

Cidade

Pas

Clientes:

Critrio :
Estados Unidos

Nome da

Tabela

Quantidade de

empresa

Nome da

referncia

pedidos por cliente

Funcionrios: Nome

empresa

cruzada

e funcionrio

Pedidos:

Nmero do Funcionrio

Pedido
Categorias:

Nome da

Mdia de preo por categoria


categoria

Produtos:

Consulta com
Nome da

Preo

Totais

categoria

Unitrio

125

Banco de Dados I

Unidade 23 -

FORMULRIOS

23.1 O QUE SO FORMULRIOS?


Como foi descrito anteriormente um formulrio uma forma de visualizar e editar os dados de um
banco de dados do Access.
Os formulrios fornecem facilidade na edio de registros e apresentam os dados em uma forma
personalizada. Voc pode utilizar diversos tipos de efeitos (cores/linha e fontes) em seus
formulrios.
Abaixo ilustramos o exemplo de um formulrio de um cadastro de clientes.

126

Banco de Dados I

23.2 CRIANDO UM NOVO FORMULRIO


possvel criar um formulrio de trs maneiras.
Com base em uma nica tabela ou consulta utilizando o Auto Formulrio.
O Auto Formulrio cria um formulrio que exibe todos os campos e registros na tabela ou
consulta base. Se a origem do registro selecionada tiver tabelas ou consultas relacionadas, o
formulrio tambm incluir todos os campos e registros dessas origens do registro.
Na janela Banco de dados, clique em Formulrios em Objetos.
Clique no boto Novo na barra de ferramentas da janela Banco de dados.
Na caixa de dilogo Novo formulrio, clique em um destes assistentes:

Auto Formulrio: Colunar:

Cada

aparece

separada com

em

uma

linha

campo

um rtulo sua esquerda.


Auto Formulrio: Tabular:

Os

em cada registro aparecem

em uma linha,

com os rtulos exibidos uma

vez na parte

campos

superior do formulrio.
Auto Formulrio: Folha de

dados:

Os

campos em cada registro

aparecem em

um formato linha-e-coluna,

com

um

registro em cada linha e um campo em cada coluna. Os nomes dos campos aparecem na parte
superior de cada coluna.
Auto Formulrio: Tabela dinmica: O formulrio abre em modo de tabela dinmica. possvel
adicionar campos arrastando-os da lista de campos para as diferentes reas no modo de exibio.
Auto Formulrio: Grfico dinmico: O formulrio abre em modo de grfico dinmico. possvel
adicionar campos arrastando-os da lista de campos para as diferentes reas no modo de exibio.
Clique na tabela ou consulta que contm os dados em que voc deseja basear o formulrio.
Clique em OK.
O Microsoft Access aplica o ltimo autoformato usado para o formulrio. Caso voc ainda no
tenha criado um formulrio com um assistente ou no tenha usado o comando Auto Formatao
no menu Formatar, ele usar o autoformato Padro

127

Banco de Dados I

DICA: Uma das maneiras mais rpidas para se criar um

formulrio

padro utilizar um dos Assistentes de Auto formulrio que


automaticamente criaro formulrios com a mnima interveno

do

usurio. Basta clicar na barra de ferramentas banco de dados

no

comando Novo objeto


No modo de design:
Voc cria um formulrio bsico e o personaliza no modo de design para atender s suas
necessidades.
Na janela Banco de Dados, clique em Formulrios em Objetos.
Clique no boto Novo na barra de ferramentas da janela Banco de dados.
Na caixa de dilogo Novo formulrio, clique em Modo de design.
Clique no nome da tabela ou outra fonte do registro que inclua os dados nos quais voc deseja
basear o seu formulrio. Se o formulrio no for conter dados (por exemplo, se for para utilizar
como um menu de controle para abrir outros formulrios ou relatrios ou se voc desejar criar uma
caixa de dilogo personalizada), no selecione nada nessa lista.
Dica: Se voc deseja criar um formulrio que utilize dados de mais de uma tabela, baseie o seu
formulrio em uma consulta.
Clique em OK.
O Microsoft Access exibe o formulrio no modo de design. Conforme figura abaixo:
Barra
de
ferramentas
Design do formulrio

Barra de ferramentas de
formatao
(formulrio/relatrio)

128

Banco de Dados I

Layout

Barra de ferramentas
Caixa de ferramentas

129

Banco de Dados I

23.3 CAIXA DE FERRAMENTAS


Ao trabalharmos com a estrutura de formulrios e relatrios poderemos acrescentar objetos
(controles) atravs da caixa de ferramentas.
Caso o boto de Assistente(segundo boto da caixa de ferramentas) esteja ativado, ser
automaticamente exibido para alguns controles um Assistente que auxiliar o usurio na incluso
do mesmo.
Por exemplo, ao escolher a ferramenta de boto de comando o usurio ativar automaticamente
um assistente que perguntar ao usurio qual a ao que o boto executar.
A figura abaixo exibe os botes da caixa de ferramentas:

Retngulo

ActiveX

Para utilizar a caixa de ferramentas, basta selecionar uma de suas opes e clicar na rea do
formulrio onde o contedo ser colocado.
Alm das barras de ferramentas e da caixa de ferramentas o usurio poder utilizar o boto direito
do mouse para acessar as opes de um determinado objeto.
Os menus do modo estrutura fornecem uma maneira simples de alinhar, distribuir e alterar a
disposio dos objetos em um formulrio.

Definir uma propriedade no modo de design

130

Banco de Dados I

Abra uma tabela, consulta, formulrio, relatrio ou uma pgina de acesso a dados no modo de
design.
Abra a folha de propriedades seguindo um destes procedimentos:
No caso de um formulrio ou relatrio, clique duas vezes no seletor de formulrios ou no seletor
de relatrios.

Em uma pgina de acesso a dados, clique em Selecionar pgina no menu Editar.


Em uma tabela ou consulta, clique em Propriedades

, na barra de ferramentas.

Para uma seo em um formulrio ou relatrio, clique duas vezes no seletor de sees.

Para uma seo em uma pgina de acesso a dados, clique duas vezes na barra de sees.

Para definir propriedades de um campo de consulta, clique na clula na linha Campo, e em


Propriedades

na barra de ferramentas.

Para definir propriedades de uma de lista de campo de consulta, clique em qualquer parte da lista,
e em Propriedades

na barra de ferramentas.

Para definir propriedades do corpo de uma pgina de acesso a dados, clique acima da primeira
seo, e em Propriedades

na barra de ferramentas.

Para definir propriedades de um controle, clique no controle, e em Propriedades

na barra de

ferramentas.
Na folha de propriedades, clique na propriedade que voc deseja definir e, em seguida, siga um
destes procedimentos:
Se uma seta aparecer na caixa da propriedade, clique nela e selecione um valor da lista.
Digite uma configurao ou expresso na caixa da propriedade.

131

Banco de Dados I

Se aparecer um boto Construir

prximo da caixa de propriedades, clique nele para exibir

um construtor ou uma lista de construtores.

Dicas: Para obter Ajuda sobre qualquer propriedade na folha de propriedades, clique na
propriedade e, em seguida, pressione F1.
Se precisar de mais espao para inserir ou editar uma configurao de propriedade, pressione
SHIFT+F2 para abrir a caixa Zoom

Observao: Se a propriedade AllowDesignChanges de um formulrio estiver definida como


Todos os modos, voc tambm poder definir propriedades de formulrio no modo de formulrio
e no modo de folha de dados.

Outro item importante no modo design de formulrio a folha de propriedades dos objetos que
pode ser acessada pelo boto da barra de

ferramentas

ou atravs do boto direito do mouse


propriedades.
Cada objeto possui vrias propriedades que

podem

ser

definidas atravs da folha de propriedades.


Na ilustrao abaixo exibida a folha de
propriedades para o objeto formulrio:

132

Banco de Dados I

As propriedades de um objeto so divididas em categorias para facilitar a localizao de uma


propriedade especfica.

23.4 SOBRE AS SEES DE UM FORMULRIO


possvel dividir as informaes de um formulrio em sees. Todos os formulrios tm uma
seo de detalhes, mas um formulrio tambm pode incluir sees de cabealho do formulrio,
cabealho da pgina, rodap da pgina e rodap do formulrio. Cada seo tem uma finalidade
especfica e impressa em uma ordem previsvel no formulrio.
No modo de design, as sees so representadas como faixas e cada seo contida no formulrio
representada uma vez. Em um formulrio impresso, o cabealho e o rodap da pgina podem
ser repetidos uma vez em cada pgina. possvel determinar onde as informaes aparecem em
cada seo ao posicionar controles, como etiquetas e caixas de texto.
Esta ilustrao mostra o formulrio Adicionar produtos no modo de design.

133

Banco de Dados I

Esta ilustrao mostra a aparncia que o formulrio Adicionar produtos ter ao ser impresso.

Um subformulrio tambm pode ter sees. Por exemplo, este subformulrio possui um cabealho
e um rodap de formulrio, alm da seo de detalhes.

134

Banco de Dados I

Voc pode ocultar ou redimensionar uma seo, adicionar uma imagem ou definir a cor do plano
de fundo de uma seo. Tambm possvel definir propriedades da seo para personalizar a
maneira como o contedo de uma seo ser impresso.

23.5 SUBFORMULRIOS
Um subformulrio um formulrio dentro de outro. O formulrio primrio chamado de formulrio
principal e o formulrio dentro do formulrio denominado subformulrio. Uma combinao
formulrio/subformulrio sempre citada como um formulrio hierrquico, um formulrio
mestre/detalhe ou um formulrio pai/filho.
Os subformulrios so eficientes principalmente quando se deseja exibir dados de tabelas ou
consultas com um relacionamento um-para-muitos. Por exemplo, voc poderia criar um formulrio
com um subformulrio para exibir dados de uma tabela de categorias e de uma tabela de produtos.
Os dados na tabela de categorias correspondem ao lado "um" do relacionamento. Os dados na
tabela de produtos correspondem ao lado "muitos" do relacionamento cada categoria pode ter
mais de um produto.

O formulrio principal e o subformulrio neste tipo de formulrio so vinculados de tal forma que o
subformulrio exiba apenas registros que esto relacionados ao registro atual no formulrio
principal. Por exemplo, quando o formulrio principal exibir a categoria Bebidas, o subformulrio
exibir apenas os produtos na categoria Bebidas.

Exibindo um subformulrio em um formulrio

135

Banco de Dados I

Quando voc cria um subformulrio, possvel cri-lo de forma a ser exibido em modo folha de
dados, modo de formulrio, modo de tabela dinmica ou modo de grfico dinmico. Tambm
possvel definir o modo de exibio padro do subformulrio e desativar um ou mais modos de
exibio. possvel alternar o modo de exibio de uma subformulrio quando o formulrio
principal exibido em modo de formulrio.

Os subformulrios no so exibidos quando um formulrio aberto no modo de tabela dinmica


ou modo de grfico dinmico.

136

Banco de Dados I

Sincronizando um formulrio e um subformulrio


Quando voc cria um formulrio e um subformulrio com base em tabelas que possuem um
relacionamento um-para-muitos, o formulrio principal exibe o lado "um" e o subformulrio exibe o
lado "muitos" do relacionamento. O formulrio principal sincronizado com o subformulrio de tal
forma que o subformulrio exiba apenas registros relacionados ao registro no formulrio principal.
Se voc utilizar um assistente para criar um subformulrio ou se arrastar um formulrio, tabela ou
consulta da janela Banco de dados para outro formulrio a fim de criar um subformulrio, o
Microsoft Access sincronizar automaticamente o formulrio principal com o subformulrio se uma
das seguintes condies for verdadeira. Se:
Voc tiver definido relacionamentos para as tabelas selecionadas ou para as tabelas base das
consultas selecionadas.
O formulrio principal for baseado em uma tabela com uma chave primria e o subformulrio for
baseado em uma tabela que contm um campo com o mesmo nome da chave primria e com o
tipo de dados e tamanho de campo igual ou compatvel. Por exemplo, em um banco de dados do
Microsoft Access, se a chave primria da tabela base do formulrio principal for um campo
AutoNumerao e sua propriedade FieldSize for definida com Inteiro longo, o campo

137

Banco de Dados I

correspondente na tabela base do subformulrio deve ser um campo numrico com a propriedade
FieldSize definida como Inteiro longo. Se voc selecionar uma ou mais consultas, as tabelas
base da consulta ou consultas devero atender a essas condies.
Aninhando nveis
Um formulrio principal poder ter qualquer nmero de subformulrios se voc colocar cada um
deles no formulrio principal. Voc tambm pode aninhar at sete nveis de subformulrios. Isto
significa que voc pode ter um subformulrio dentro de um formulrio principal e um outro
subformulrio dentro daquele subformulrio e assim por diante. Por exemplo, voc pode ter um
formulrio principal que exiba clientes, um subformulrio que exiba pedidos e outro subformulrio
que exiba detalhes do pedido. Entretanto, um formulrio no exibir subformulrios em modo de
tabela dinmica ou modo de grfico dinmico.
Inserindo dados usando um formulrio e subformulrio
Quando voc utiliza um formulrio com um subformulrio para inserir novos registros, o Microsoft
Access salva o registro atual no formulrio principal quando voc insere dados no subformulrio.
Isto assegura que os registros na tabela "muitos" tero um registro na tabela "um" com o qual se
relacionar. Isto tambm salva automaticamente cada registro medida que so adicionados ao
subformulrio.
Criar um subformulrio
Se o subformulrio for vinculado ao formulrio principal, certifique-se de que as origens do registro
base estejam relacionadas antes de usar este procedimento.
No possvel adicionar um subformulrio a um formulrio quando ele exibido em modo de
tabela dinmica ou em modo de grfico dinmico.

Criar um formulrio e um subformulrio ao mesmo tempo


Na janela Banco de Dados, clique em Formulrios

em Objetos.

Clique no boto Novo na barra de ferramentas da janela Banco de dados.


Na caixa de dilogo Novo formulrio, clique duas vezes em Assistente de formulrio.
Na primeira caixa de dilogo do assistente, selecione uma tabela ou consulta na lista. Por
exemplo, para criar um formulrio Categorias que exiba produtos para cada categoria em um
subformulrio, selecione a tabela Categorias (o lado "um" do relacionamento um-para-muitos).
Observao: No importa qual tabela ou consulta voc escolhe primeiro.
Clique duas vezes nos campos que voc deseja incluir desta tabela ou consulta.

138

Banco de Dados I

Na mesma caixa de dilogo do assistente, selecione outra tabela ou consulta da lista. Utilizando o
mesmo exemplo, selecione a tabela Produtos (o lado " muitos" da relao um-para-muitos).
Clique duas vezes nos campos que voc deseja incluir desta tabela ou consulta .
Quando voc clicar em Avanar, se os relacionamentos tiverem sido corretamente definidos antes
de iniciar o assistente, o assistente perguntar que tabela ou consulta voc deseja visualizar.
Utilizando o mesmo exemplo, para criar o formulrio Categorias, clique em Por categorias.
Na mesma caixa de dilogo do assistente, selecione a opo Formulrio com subformulrio (s)
.
Siga as instrues nas demais caixas de dilogo do assistente. Quando voc clicar em Concluir,
o Microsoft Access criar dois formulrios, um para o formulrio principal e controle de
subformulrio, e um para o subformulrio.

LABORATRIO
O.
Abra o banco de dados criado no laboratrio 2:

P.

Com a ajuda do Assistente de Auto formulrio Colunar crie um formulrio para cada tabela do
banco de dados:

Q.

Em cada um dos formulrios criados no item anterior coloque um boto que feche o formulrio:

R.

Crie um formulrio chamado Menu Principal, que possua um boto que abra cada um dos
formulrios criados no item B:

S.

No formulrio Menu Principal crie um boto que feche o Access:

T.

Crie um formulrio com um subformulrio utilizando as tblSetores e tblFuncionrios.

139

Banco de Dados I

Unidade 24 -

RELATRIOS

24.1 O QUE SO RELATRIOS?


Como foi descrito anteriormente um relatrio uma forma de criar listagens e etiquetas de um
banco de dados do Access.
Os relatrios fornecem facilidade na criao de apresentaes personalizadas com a utilizao de
diferentes tipos de efeitos (fontes, linhas, cores), alm de permitir a incluso de frmulas de
totalizao de dados.
Abaixo ilustramos o exemplo de um relatrio de produtos e preos:

140

Banco de Dados I

24.2 CRIANDO UM NOVO RELATRIO


Para criar um novo relatrio o usurio poder utilizar a opo Novo Objeto da barra de
ferramentas da janela banco de dados ou o boto Novo na guia Relatrios.
Ao escolher o boto Novo da guia Relatrios, ser exibida a seguinte caixa de dilogo que
permitir ao usurio escolher um dos Assistentes do Access que auxiliam na criao de novos
relatrios.

Uma das maneiras mais rpidas para se criar um

relatrio padro

utilizar um dos Assistentes de Auto relatrio que


automaticamente criar um relatrio com a mnima

interveno

do

usurio. Clique no boto Novo Objeto na barra de

ferramentas

banco de dados em seguida no comando Relatrio.

Conforme figura

ao lado.

141

Banco de Dados I

No modo design que serve apara alterar relatrios existentes ou criao de novos relatrios ser
exibida a seguinte tela:

142

Banco de Dados I

No modo estrutura de relatrio so exibidos os seguintes botes nas barras de ferramentas.

Boto

Nome

Descrio

Permite selecionar um objeto na estrutura atual


atravs do seu nome.
Altera o tipo de fonte de um objeto que possua esta
Fonte
propriedade.
Tamanho da
Altera o tamanho da fonte.
fonte
Aplica o estilo negrito.
Negrito
Aplica o estilo itlico.
Itlico
Objeto

Sublinhado

Aplica o estilo sublinhado.

Esquerda

Alinha o texto esquerda.

Centro

Centraliza o texto.

Direita

Alinha o texto direita.

Cor
preenchimento

Altera a cor de preenchimento de um objeto.

Cor fonte

Altera a cor da fonte de um objeto.

Cor contorno

Altera a cor de contorno de um objeto.

Contorno

Altera a caneta de contorno de um objeto.

Aplica um dos diferentes efeitos de sombra aos


objetos.
Alterna a exibio entre o modo estrutura/relatrio e
Exibir
folha de dados.
Exibe uma lista de campos, caso o relatrio esteja
Campos
baseado em uma consulta ou tabela.
Exibe/Oculta a caixa de ferramentas.
Ferramentas
Classifica dados de um relatrio e/ou cria novas
Subtotais
sees (quebras de relatrio).
Auto
Permite a escolha de um estilo pronto de formatao.
formatar
Exibe a janela de cdigo do relatrio ou relatrio
Mdulo
atual.
Propriedade
Exibe as propriedades de um objeto.
s
Permite a construo de expresses/macros e cdigo
Construtor
VBA que pode ser utilizado nas propriedades de um
de expresses
objeto.
Sombra

143

Banco de Dados I

24.3 CAIXA DE FERRAMENTAS


Ao trabalharmos com a estrutura de relatrios poderemos acrescentar objetos (controles) atravs
da caixa de ferramentas.
A caixa de ferramentas a ser utilizada no modo design de relatrios a mesma j vista na seo
de formulrios.
Para utilizar a caixa de ferramentas, basta selecionar uma de suas opes e clicar na rea do
relatrio onde o contedo ser colocado.
Alm das barras de ferramentas e da caixa de ferramentas o usurio poder utilizar o boto direito
do mouse para acessar as opes de um determinado objeto.
Os menus do modo estrutura fornecem uma maneira simples de alinhar, distribuir e alterar a
disposio dos objetos em um relatrio.

Outro item importante no modo design de relatrios a folha de propriedades dos objetos que
pode ser acessada pelo boto da barra de ferramentas ou

atravs

do

boto direito do mouse propriedades.


Cada objeto possui vrias propriedades que podem ser

definidas

atravs da folha de propriedades.

Na ilustrao abaixo exibida a folha de propriedades

para

objeto relatrio:

As propriedades de um objeto so divididas em


categorias para facilitar a localizao de uma
propriedade especfica.

144

Banco de Dados I

LABORATRIO 6
U.
Abra o banco de dados criado no laboratrio 2:

V.

Com a ajuda do Assistente de Auto relatrio tabular crie um relatrio para cada tabela do
banco de dados:

W.

Crie um novo formulrio no modo estrutura que possua um boto para visualizar cada um dos
relatrios criados no item B:

X.

Abra a estrutura do formulrio Menu Principal e crie um boto que abra o formulrio criado no
item C:

145

Banco de Dados I

Unidade 25 -

Pgina de dados

25.1 PARA CRIAR UMA PGINA DE ACESSO A DADOS


Pgina de acesso a dados: uma pgina da Web, publicada a partir do Access, que tem uma
conexo com um banco de dados. Em uma pgina de acesso a dados, possvel exibir, adicionar,
editar e manipular os dados armazenados no banco de dados. Uma pgina pode tambm incluir
dados de outras fontes, como o Excel, ou para abrir uma pgina no modo Design, modo Pgina
(modo Pgina: uma janela do Access na qual possvel pesquisar o contedo de uma pgina de
acesso a dados. No modo Pgina, as pginas tm a mesma funcionalidade que tm no Internet
Explorer 5.0 ou posterior.) ou no Microsoft Internet Explorer, necessrio instalar o Microsoft
Internet Explorer 5.01 com Service Pack 2 (SP2) ou posterior.
Se voc criar uma pgina de acesso a dados quando um banco de dados aberto, o Microsoft
Access cria um atalho para a pgina e exibe o atalho na janela Banco de dados. Se voc criar uma
pgina sem abrir um banco de dados, o Microsoft Access criar uma pgina autnoma.
A partir do Microsoft Office Access 2007 j no so suportadas pginas de acesso a dados. Se
pretender implementar um formulrio de introduo de dados atravs da Web e armazenar os
dados resultantes no Access, pode implementar a base de dados num servidor Microsoft Windows
SharePoint Services 3.0 e utilizar as ferramentas fornecidas pelo Windows SharePoint Services.
Se abrir uma base de dados criada numa verso anterior do Access (um arquivo .mdb) e essa
base de dados contiver pginas de acesso a dados, poder ver as pginas no Windows Internet
Explorer. Contudo, no poder efetuar nenhuma ao com essas pginas.

25.2 CRIAR UMA PGINA DE ACESSO


Criar uma pgina de acesso a dados que contm todos os campos de uma fonte de registro nica
(AutoPgina)
O comando AutoPgina cria uma pgina de acesso a dados que contm todos os campos (exceto
campos que armazenem imagens) e registros na tabela, consulta ou modo de exibio base.
Na guia Objetos da janela Banco de Dados, clique em Pginas

Na barra de ferramentas da janela Banco de dados, clique em Novo.


Na caixa de dilogo Nova pgina de acesso a dados, clique em AutoPgina: Colunar.

146

Banco de Dados I

Clique na tabela, na consulta ou no modo de exibio que contenha os dados nos quais voc
deseja basear sua pgina.
Clique em OK.
Na pgina de acesso a dados concluda, cada campo ser exibido em uma linha separada com
um rtulo esquerda. Se a pgina resultante no tiver a aparncia desejada, voc pode modificar
a pgina no modo de design.
Observao: Se voc definiu um tema padro, o Microsoft Access o aplica pgina.
Criar uma pgina de acesso a dados que contm campos de vrias tabelas e consultas
(Assistente de pgina)
O assistente formula perguntas detalhadas sobre origens do registro, campos, layout e formato
desejados e cria uma pgina com base nas suas respostas.
Se o assistente no for iniciado
Essa situao pode ocorrer porque o Access est em execuo no modo seguro, mas o
componente Microsoft Jet 4.0 SP8 ou posterior no est instalado no computador. necessrio
que o Jet 4.0 SP8 ou posterior esteja instalado para que o Access funcione plenamente quando o
modo seguro estiver habilitado.
Observao: Para obter mais informaes sobre a instalao da atualizao do Jet, consulte o
artigo

About

Microsoft

Jet

4.0

SP8

or

later

do

Office

Online,

em

http://office.microsoft.com/assistance/preview.aspx?AssetID=HA010489351033.
Para obter mais informaes sobre o modo seguro, consulte o artigo Sobre o modo seguro do
Microsoft Jet Expression Service.

Na guia Objetos da janela Banco de Dados, clique em Pginas

Na barra de ferramentas da janela Banco de dados, clique em Novo.


Na caixa de dilogo Nova pgina de acesso a dados, clique em Assistente de pgina.
Clique no nome da tabela, consulta ou modo de exibio que inclua os dados nos quais voc
deseja basear sua pgina de acesso a dados.
Observao Voc no precisa fazer isso agora voc pode especificar as origens do registro
para a pgina no assistente.
Clique em OK.
Siga as instrues das caixas de dilogo do assistente.

147

Banco de Dados I

Se a pgina resultante no tiver a aparncia desejada, voc pode modificar a pgina no modo de
design.
Observaes:
a) Caso voc queira incluir campos de vrias tabelas e consultas em sua pgina, no clique em
Avanar nem em Concluir aps selecionar os campos da primeira tabela ou consulta no Assistente
de pgina. Repita as etapas para selecionar uma tabela ou consulta e escolha os campos que
deseja incluir no relatrio, at ter selecionado todos os campos necessrios.
b) Se voc incluir campos de vrias tabelas ou consultas mas no criar nveis de grupo, os
campos de uma das tabelas base podem oferecer suporte a atualizaes no modo de pgina ou
no Microsoft Internet Explorer. O assistente listar as origens de registro da pgina e solicitar que
voc especifique a fonte do recurso atualizvel.

148

Banco de Dados I

Criar uma pgina de acesso a dados no modo de design.


Na guia Objetos da janela Banco de Dados, clique em Pginas

Na barra de ferramentas da janela Banco de dados, clique em Novo.


Na caixa de dilogo Nova pgina de acesso a dados, clique em Modo de design.
Clique no nome da tabela, consulta ou modo de exibio que inclua os dados nos quais voc
deseja basear sua pgina de acesso a dados.
Observao Se voc quiser criar uma pgina em branco, no selecione uma fonte do registro
nesta caixa de dilogo.
Clique em OK.
O Microsoft Access exibe a pgina de acesso a dados no modo de design, no qual voc poder
modificar a pgina. Para adicionar dados pgina, arraste os campos da lista de campos para a
pgina.
Transformar uma pgina da Web existente em uma pgina de acesso a dados
Na janela Banco de Dados, clique em Pginas

, em Objetos.

Clique no boto Novo na barra de ferramentas da janela Banco de dados.


Na caixa de dilogo Nova pgina de acesso a dados, clique em Pgina da Web existente.
Clique em OK.
Na caixa de dilogo Localizar pgina da Web, procure a pgina da Web ou arquivo HTML que
voc deseja abrir.
Observao: Voc pode localizar uma pgina da Web clicando em Pesquisar na Web
na
caixa de dilogo Localizar pgina da Web. Salve uma cpia da pgina usando o comando Salvar
como no menu Arquivo do Microsoft Internet Explorer e inicie esse procedimento novamente para
abrir a pgina no modo design.
Clique em Abrir.
O Microsoft Access cria um atalho para o arquivo HTML na janela Banco de dados e exibe a
pgina no modo de design, onde voc pode modific-la.

Observao: Se voc especificou um arquivo de conexo padro para o banco de dados na guia
Pginas da caixa de dilogo Opes, o Microsoft Access automaticamente definir as
propriedades ConnectionFile e ConnectionString para todas as novas pginas.
Criar uma pgina de acesso a dados autnoma
Se um banco de dados for aberto no Microsoft Access, feche-o.
No menu Arquivo, clique em Novo.
Na caixa de dilogo Novo, clique em Pgina de acesso a dados.
Na caixa de dilogo Selecionar fonte de dados, siga um destes procedimentos:

149

Banco de Dados I

150

Banco de Dados I

Conectar a pgina a um banco de dados do Microsoft Access


Use o seguinte procedimento se voc quiser criar uma pgina e acopl-la a um banco de dados
do Microsoft Access, sem criar um atalho no banco de dados.
Na lista Arquivos do tipo, selecione Bancos de dados do Microsoft Access.
Clique duas vezes no arquivo do banco de dados que voc deseja acoplar a pgina. Se voc no
vir o banco de dados que deseja usar, navegue at a pasta que contm o arquivo e, em seguida,
clique duas vezes no nome do arquivo.
Clique em OK duas vezes.
O Microsoft Access criar uma pgina em branco e a abrir em modo de design. A propriedade
ConnectionString da pgina ser definida para conectar a pgina ao banco de dados
selecionado. Para adicionar dados pgina, arraste os campos da lista de campos para a pgina

LABORATRIO 7
Y.
Como base nas tabelas criadas no laboratrio 2, crie uma pagina de acesso. Layout Livre.

151

Banco de Dados I

Unidade 26 -

PERSONALIZAO E
UTILITRIOS

26.1 CONFIGURAES DE INICIALIZAO


Aps concluir toda a estrutura do aplicativo o usurio poder definir configuraes que faro com
que ao entrar em um banco de dados seja exibido automaticamente um formulrio especifico.
Desta forma e com o que foi visto nos captulos anteriores o usurio poder criar um aplicativo
personalizado de acordo com suas necessidades.
Para definir as opes de inicializao de um banco de dados o usurio dever selecionar a opo
FerramentasInicializar.

Alm do ttulo, cone e formulrio padro o usurio poder definir se os menus podero ser
utilizados ou no e se a Janela Banco de Dados ser exibida.
No Access 2007 selecione o boto do Office (canto superior esquerdo) e clique em "Opes do
Access". Selecione o menu "Banco de dados atual" e desmarque os itens: Permitir Menus
Completos" e "Permitir Barras de Ferramentas Internas. Veja na figura abaixo

152

Banco de Dados I

26.2 Compactando um banco de dados


A compactao de um banco de dados do Access reduz o tamanho do arquivo em disco,
otimizando-o, alm de desfragmentar o arquivo em disco.
Para compactar um banco de dados basta escolher a opo FerramentasUtilitrios de banco de
dadosCompactar e Reparar banco de dados.
No Access 2007 a opo encontrada no boto do Office

153

Banco de Dados I

26.3 REPARANDO UM BANCO DE DADOS


Caso ocorra algum problema no nvel de arquivo e o Access no consiga efetuar a leitura do
mesmo, a ferramenta de reparao poder solucionar o problema.
Para reparar um arquivo de banco de dados danificado basta escolher o comando
FerramentasUtilitrios de banco de dadosCompactar e Reparar banco de dados.

26.4 PROTEGENDO UM APLICATIVO


Aps criar o seu aplicativo no Access qualquer usurio poderia alterar a estrutura dos objetos do
banco de dados.
As principais maneiras de se proteger um de banco de dados no Access so:

154

Banco de Dados I

Protegendo o Arquivo
A proteo de arquivo solicitar uma senha do usurio todas as vezes que o mesmo tentar abrir o
arquivo de banco de dados.
Para ativar a proteo por senha escolha FerramentasSeguranaDefinir senha do banco de
dados.
Criando um Arquivo Mde
Um arquivo MDE na verdade uma verso compilada do arquivo MDB. Um arquivo MDE
permitir apenas alteraes e visualizao de estrutura para tabelas e consultas.
Para criar um arquivo MDE menu FerramentasUtilitrios de Banco de dadosCriar um MDE
Criptografando o Arquivo
A criptografia tornar impossvel que outros aplicativos consigam ler o banco de dados do Access.
Quando o Access for efetuar a abertura do arquivo ele mesmo efetuar a descriptografia dos
dados, o que torna este recurso totalmente transparente para o usurio.
No Access 2007 encontramos estas opes na barra de ferramentas

155

Banco de Dados I

LABORATRIO 8
Z.
Defina o formulrio Menu Principal como formulrio de inicializao do seu banco de dados
criado no laboratrio 2:

AA.

Compacte o banco de dados :

BB.

Criptografe o banco de dados:

CC.

Defina uma senha para o seu banco de dados:

DD.

Crie um arquivo MDE do seu banco de dados:

156

Banco de Dados I

Unidade 27 -

MySQL

27.1 Introduo
O MySQL mais um exemplo de SGBD que utiliza a linguagem SQL como forma de interagir com os dados
armazenados. Obviamente, possui algumas sintaxes de comandos que mesmo provenientes da linguagem
SQL so especficas deste banco. um dos bancos de dados mais utilizados por empresas e usurios pessoais
Podemos citar vrios grandes exemplos de usurios deste sistema de gerenciamento de banco de dados, mas
o maior case de sucesso, no poderia deixar de ser outro: o Google.
Este sistema teve seu lanamento na dcada de 1980, de l para c o numero de usurios e pessoas
responsveis por sua manuteno e testes s tem aumentado. Alm disso uma srie de sistemas satlite vem
sendo desenvolvidos para agregar cada vez mais funcionalidades e este bando.
Inicialmente o MySQL era um sistema que pertencia a uma empresa que o ofertava livremente, sem a
inteno de gerar concorrncia. No entanto a sua grande expanso fez com que grandes corporaes como a
SUN a adquirisse. Ironicamente a SUN foi adquirida pela ORACLE o que criou quase que uma guerra fria
de bancos de dados, tendo a ORACLE de um lado e a Microsoft de outro.
Este grande ganho de mercado que o MySQL obteve tem como um dos grandes fatores a integrao com
uma das linguagens de programao de maior sucesso na Internet, o PHP. Esta configurao de uso do
Linux(Sistema Operacional), MySQL, PHP e o Apache(Servidor), criou uma sigla conhecida como LAMP,
que uma das opes mais aceitas pelos usurios na hora de hospedar seus sites. Tambm comum a
visualizao da sigla WAMP, que nada mais do que troca do sistema operacional Linux pelo Windows
Em seu princpio o MySQL era considerado um SGBD fraco e de poucos recursos. No entanto esta realidade
mudou drasticamente nos ltimos anos e ele j utilizado na gesto de dados com grande volume de acesso
como o Google e a Wikipdia alm de ter sua utilizao empregada em instituies que lidam com a
segurana e preciso da informao como fatores determinantes de seu negcio. Podemos citar como
exemplo a NASA e o exrcito Americano, alm de exemplos nacionais como o banco Bradesco e tantas
outras instituies financeiras

157

Banco de Dados I

Unidade 28 -

O Front-End

28.1 Alguns Exemplos


Manipular os dados armazenados em um banco de dados requer o uso de ferramentas
especficas para esta operao. Estes sistemas so os chamados fron-ends.
A instalao completa do MySQL acompanha o aplicativo desktop chamado MySQL Query
Browser:

Este sistema bem completo e oferece suporte a linguagem, bem como interface amigvel ao
banco em si.
Alm desta possibilidade nativa, possumos uma srie de outros sistemas
desktop, cabendo um destaque ao Navicat.
Entretanto como a maior popularizao do MySQL se deu pelo grande
casamento com a linguagem para web(PHP), no poderia deixar de existir um
sistema nesta linguagem e que o mesmo fosse um dos mais utilizados.
Estamos nos referindo ao phpMyAdmin
Em nosso material vamos citar exemplos de manipulao de dados utilizando o phpMyAdmin bem
como do MySQL Query Browser

158

Banco de Dados I

Unidade 29 -

Conectando ao Banco de Dados

29.1 Atravs de linguagens de programao


Um banco de dados tem por objetivo maior ser um local de armazenamento de informaes para
ser acessada a qualquer momento e preferencialmente de qualquer local. No entanto seu uso mais
comum est ligado integrao com sistemas web e desktop.
A banco de dados MySQL, como j referido anteriormente, tem uma forte ligao com a
linguagem PHP, mas pode, interagir com qualquer outro sistema independente de sua linguagem.
Para estabelecer esta conexo as linguagens se utilizam de scripts prprios.
Exemplo de script em PHP para conexo com MYSQL:
<?
// Este arquivo conecta um banco de dados MySQL - Servidor = localhost
$dbname="teste"; // Indique o nome do banco de dados que ser aberto
$usuario=" "; // Indique o nome do usurio que tem acesso
$password=" "; // Indique a senha do usurio
//1 passo - Conecta ao servidor MySQL
if(!($id = mysql_connect("localhost",$usuario,$password))) {
echo "No foi possvel estabelecer uma conexo
MySQL. Favor Contactar

com o gerenciador

o Administrador.";
exit;
}
//2 passo - Seleciona o Banco de Dados
if(!($con=mysql_select_db($dbname,$id))) {
echo "No foi possvel
MySQL. Favor Contactar

estabelecer

uma

conexo

com

gerenciador

o Administrador.";
exit;
}
?>
Alm deste exemplo existe outras linguagem que possuem seu prprio script de conexo

159

Banco de Dados I

29.2 Atravs do Front-End


Para acessarmos nosso banco de dados, com a inteno de realizar manutenes, extrao de
informaes, gerenciamento de performance, criao de regras, etc. podemos faz-lo de forma
mais rpida e dinmica atravs de nossos fron-ends.
O phpMyAdmin pode ser acessado atravs do endereo IP e porta fornecidos pelo provedor onde
o site de encontra hospedado. Esta informao ou link, normalmente encontra-se disponveis em
painis de controle para sites fornecidos por estes provedores de hospedagem.
Ser exibida uma tela solicitando o usurio e senha que sero utilizados nesta conexo. Abaixo
podemos ver um exemplo desta tela.

No caso de instalao local basta digitar http://localhost/phpmyadmin/ em seu navegador


preferido, ou utilizar algum sistema para trabalhar com PHP, como por exemplo, o WAMP ou
mesmo o easyPHP.
Estes sistemas permitem o acesso de forma mais rpida e sem a necessidade de informar usurio
e senha a todo o momento

160

Banco de Dados I

Vela uma tela de como acessar o phpMyAdmim pelo WAMP.

Por sua vez o MySQL Query Browser um software desktop, portanto, fica instalado na mquina
que ir acessar o banco. Este programa pode ser facilmente baixado atravs do site da MYSQL ou
em local prprios para download de aplicativos, tais como o superdownloads e o baixaki.
A acessar este sistema a seguinte tela ser exibida:

161

Banco de Dados I

Nesta tela dever ser informado;

O IP e a porta de conexo(normalmente 3306) com o servidor(localhost se for localmente)

O usurio(normalmente o mesmo do painel de controle ou root se for localmente)

A senha(definida pelo usurio)

Base de dados padro(A base do projeto)

162

Banco de Dados I

Unidade 30 -

Conhecendo a Interface

30.1 phpMyAdmin
Ao acessar o phpMyAdmin nos exibida um tela com as principais funcionalidades do bando de
dados. Veja uma tela de exemplo abaixo:

Esta tela nos mostra algumas informaes sobre a configurao do servidor em que o banco est
hospedado bem como estatsticas sobre o funcionamento do banco de dados

30.2 MySQL Query Browser


O MySQL Query Browser possui uma tela muito simples e intuitiva para sua utilizao.
Diferentemente do phpMyAdmin esta interface no exibe incialmente informaes sobre o servidor,
mas sim, traz uma caixa de texto para a digitao de sentenas SQL.
Tambm podemos observar existncia de botes que representam sintaxes da linguagem SQL,
que so utilizados para tornar mais gil a criao dos scripts.
Veja uma tela de exemplo deste layout inicial

163

Banco de Dados I

30.3 Acessando uma Base de Dados


No phpMyAdmim possumos na parte superior esquerda da tela uma lista das bases de dados
disponveis, basta clicar sobre a mesma

164

Banco de Dados I

No MySQL Query Browser localizamos estas mesmas opes no canto superior direito:

165

Banco de Dados I

Unidade 31 -

Criando uma nova Base de


Dados

31.1 Interface e Comando


Para criar uma nova base de dados, bem como para a execuo de qualquer consulta, deleo,
ou outra atividade em nosso banco de dados, podemos utilizar de instrues SQL digitadas
diretamente ou nos fazer valer de front-ends.
No caso da criao de uma nova base de dados utilizramos a sentena:
CREATE DATABASE nomedabase
Pelo phpMyAdmin realizamos esta operao, estando na tela inicial (clicar no boto Home basta digitar o nome da nova base e clicar em Criar

No MySQL Query Browser clicamos com o boto direito sobre uma base qualquer e escolhemos a
opo Create New Schema

Por fim digitamos o nome do banco e clicamos em OK

166

Banco de Dados I

Unidade 32 -

Criando Tabelas

32.1 Interface
A criao de tabelas com a utilizao de scripts j foi vista em unidades anteriores, esto vamos
nos deter na facilidade da criao de tabelas com a interao da interface dos font-ends
phpMyAdmin
Com a base de dados selecionada basta digitar o nome da nova tabela e o nmero de campos
que a mesma ter (nmero de arquivos)

Logo apes este passo ser exibida uma tela para as devidas configuraes:

Valores Nulos
Tamanho do Campo

Opes numricas ou update

Tipo de dado
Nome do campo

Formatao Campo

Comentrio

Autoincremento

Texto Completo
Valor padro
Vavio
nico
Indice
Chave Primria

167

Banco de Dados I

Cometrios
Tipo de tabela

Salvar

Incluir campos

Formatao

Executar

O preenchimento das informaes solicitadas nos campos, na realidade gera um script em SQL
para a criao da referida tabela.
Podemos verificar os scripts criados para a criao de tabelas bem como para insero do dados
das mesmas atravs do boto exportar

Esta opo muito til quando precisamos criar uma srie de tabelas que desenvolvemos
localmente para um servidor remoto.
Alm disto este script, tambm utilizado para a instalao de sistemas web baseado em banco
de dados MySQL
MySQL Query Browser
Para o MySQL Query Browser o processo simples, basta clicar com o boto direito sobre a base
de dados na qual desejas que a tabela seja criada.

168

Banco de Dados I

Nome table

Base de Dados

Comentrio

Opes numricas ou update


Autoincremento

Comentrio

Nulo
Tipo Dados
Nome Campo

Salvar

Alm da informaes apontadas nas caixas de texto cabe destacar que na parte inferior da tela
exibida a chave primria selecionada bem como os ndices. Alm disso tambm encontramos mais
detalhes sobre a configurao de cada campo.

169

Banco de Dados I

Unidade 33 -

Criando Consultas

33.1 Interface
A exemplo da criao de bases de dados e tabelas, no caso das consultas, tambm podemos
realiz-las por scripts ou via interface. Vejamos como isso funciona em nossos front-ends
phpMySQL
Com sua base de dados selecionada, a lista com as tabelas exibida a direita. Ao lado de cada
tabela temos o boto de suas propriedades(
basta clicar na aba

). Para a execuo de um script direto em SQL

Para utilizar um assistente na criao de suas consultas clique na aba


A seguinte tela ser exibida;

Limite de registros(limit)

Ordernao(order by)
Campos de resultado

Critrios(where)

Critrios(where)

170

Banco de Dados I

MySQL Query Browser


No Query Browser possumos botes que representam instrues em SQL. A clicar nestes botes
e aps em um campo ou tabela a expresso montada na tela de consulta.
Botes que representam o SQL

Ao arrastar uma tabela veja o resultado

171

Banco de Dados I

Unidade 34 -

SQL Server

34.1 Introduo
O SQL Server um SGDB criado e mantido pela Microsoft. Ele utilizado em muitas empresas,
principalmente por sua grande capacidade de gerenciamento de informaes em alto volume de dados.
Este SGBD tem muitas ferramentas integradas ao ncleo que permitem um ganho realmente significativo em
termos de controle de desempenho e extrao de informaes.
Podemos citar a sua enorme capacidade de gerao de cubos de deciso, bem como seu elevado e confivel
controle de espelhamento e distribuio de dados.
Esta alta confiabilidade na gesto dos dados, bem como a solidez de sua empresa mantenedora fazem do SQL
Server uma das que melhor equilibra a relao custo benefcio.
Para empresas de pequeno porte ou mesmo usurio individual a Microsoft disponibiliza uma verso Express
de seu banco de dados, que apesar de algumas limitaes de recursos, tais como replicao e espelhamento,
supre a necessidade destes clientes.
Um dos maiores concorrentes do SQL Server o SGDB ORACLE, e logicamente cada uma das empresas
detentoras destas marcas coloca o seu sistema como o melhor. Logicamente que se fizermos uma avaliao
fria(sem bandeiras a defender), veremos que cada um deles possui seus pontos positivos e negativos.
A concluso que podemos chegar que cada um deles deve se adequar a realidade de infraestrutura e de
capital que se est disposto a investir, mas ambos so uma boa opo para qualquer linguagem adotada.

172

Banco de Dados I

Cabe apenas destacar, que o SQL Server, por ser um banco da Microsoft utiliza bem melhor os recursos do
sistema operacional quando combinado a plataforma Windows. Mesmo possuindo a possibilidade da
instalao deste bando de dados em um sistema operacional baseado no ncleo do Linux, esta configurao
no se mostra eficiente sob a tica de performance e confiabilidade dos dados armazenados.
Neste tipo de servidor(com Linux), recomenda-se a utilizao de outro SGBD, tal como o ORACLE,
MySQL, PostGre e tantos outros

173

Banco de Dados I

Unidade 35 -

O Front-End

35.1 Ferramenta nativa


O SQL Server possui uma ferramenta nativa de acesso a sua base de dados, no sendo
necessria a utilizao de qualquer outro sistema paralelo.
Mesmo que o banco de dados no esteja fisicamente localizado em sua mquina, este aplicativo
nativo do SQL Server, pode fazer o acesso a bases de dados remotas.
Existem algumas empresas que desenvolvem aplicaes front-end para SQL Server, tais como o
EMS SQL Manager for SQL Server.
No entanto, esta ferramenta paga, no traz todas as funcionalidades que o
aplicativo padro possui.
Portanto em nosso material, vamos nos deter nica e exclusivamente na
ferramenta padro deste SGBD.

174

Banco de Dados I

Unidade 36 -

Conectando ao Banco de Dados

36.1 Atravs de linguagens de programao


Um banco de dados tem por objetivo maior ser um local de armazenamento de informaes para
ser acessada a qualquer momento e preferencialmente de qualquer local. No entanto seu uso mais
comum est ligado a integrao com sistemas web e desktop.
A banco de dados SQL Server, por ser da Microsoft tem uma enorme facilidade de conexo com
sistemas desenvolvidos em linguagem .net(ASP.net, VB.net, etc.).
Para estabelecer esta conexo as linguagens se utilizam de scripts prprios.
Exemplo de script em ASP.net para conexo com SQL Server:
<%@ Import Namespace="System.Data" %>
<%@ Import NameSpace="System.Data.SqlClient" %>
<%
Dim conexao As SqlConnection
conexao =
uid=sa" )

New

SqlConnection(

"server=localhost;

database=nomedabase;

conexao.Open()
%>
Alm deste exemplo existem outras linguagens que possuem seu prprio script de conexo

175

Banco de Dados I

36.2 Atravs do Front-End


Para acessarmos nosso banco de dados, com a inteno de realizar manutenes, extrao de
informaes, gerenciamento de desempenho, criao de regras, etc. podemos faz-lo de forma
mais rpida e dinmica atravs de nossos front-ends.
O SQL Server pode ser acessado atravs do endereo IP e porta fornecidos pelo provedor onde o
site de encontra hospedado. Esta informao ou link, normalmente encontra-se disponveis em
painis de controle para sites fornecidos por estes provedores de hospedagem.
Ser exibida uma tela solicitando o usurio e senha que sero utilizados nesta conexo. Abaixo
podemos ver um exemplo desta tela.

No caso de instalao local basta digitar utilizar no nome de seu computador como o nome do
servidor.

176

Banco de Dados I

Unidade 37 -

Conhecendo a Interface

37.1 Aplicativo Nativo


Ao acessar o SQL Server nos exibida um tela com as principais funcionalidades do bando de
dados. Veja uma tela de exemplo abaixo:

Esta tela nos mostra algumas informaes sobre a configurao do servidor em que o banco est
hospedado bem como estatsticas sobre o funcionamento do banco de dados

37.2 Acessando uma Base de Dados


No SQL Server localizamos a lista com as bases de dados instaladas em nosso canto superior
direito, e alternamos entre elas utilizando o lista suspensa logo acima:

Lista de bases de dados


Lista suspensa

177

Banco de Dados I

Unidade 38 -

Criando uma nova Base de


Dados

38.1 Interface e Comando


Para criar uma nova base de dados, bem como para a execuo de qualquer consulta, deleo,
ou outra atividade em nosso banco de dados, podemos utilizar de instrues SQL digitadas
diretamente ou nos fazer valer de front-ends.
No caso da criao de uma nova base de dados utilizamos a sentena:
CREATE DATABASE nomedabase
Pelo front-end, basta clicar com o boto direito sobre a lista de bases de dados e utilizar a opo
Novo banco de dados

Aps isto ser exibida uma tela para colocarmos o nome de nossa nova base de dados:

178

Banco de Dados I

179

Banco de Dados I

Unidade 39 -

Criando Tabelas

39.1 Interface
A criao de tabelas com a utilizao de scripts j foi vista em unidades anteriores, esto vamos
nos deter na facilidade da criao de tabelas com a interao da interface dos font-ends
Ao expandirmos as bases de dados existentes e posteriormente seu contedo, veremos que ser
exibida a opo de tabelas.
Basta clicar com o boto direito sobre a opo tabelas e por fim utilizar Nova Tabela

Ser exibida uma tela para informarmos quais sero os campos e quais so as suas principais
caractersticas;
Texto Completo

Script alterao

Espacial
Chave primria
Restries
Relacionamento
XML
ndices
Nome Campo

Tipo dado

Nulo

180

Banco de Dados I

Unidade 40 -

Criando Consultas

40.1 Interface
A exemplo da criao de bases de dados e tabelas, no caso das consultas, tambm podemos
realiz-las por scripts ou via interface. Vejamos como isso funciona em nosso front-ends
No canto superior esquerdo encontramos a opo Nova Consulta, ao clicar nela em nossa direita
ser exibida uma tela para digitarmos nosso script em SQL

181

Banco de Dados I

Unidade 41 -

Conhecendo XML

41.1 Introduo
XML (eXtensible Markup Language) uma linguagem marcao para necessidades especiais,
muito utilizada na Web, em podcasts e rss .
um subtipo de SGML (acrnimo de Standard Generalized Markup Language, ou Linguagem
Padronizada de Marcao Genrica) capaz de descrever diversos tipos de dados. Seu propsito
principal a facilidade de compartilhamento de informaes atravs da Internet.
Entre linguagens baseadas em XML incluem-se XHTML (formato para pginas Web), RDF,SDMX
,SMIL, MathML (formato para expresses matemticas), NCL, XBRL, XSIL e SVG (formato grfico
vetorial).
A principal caracterstica do XML, de criar uma infraestrutura nica para diversas linguagens, que
linguagens desconhecidas e de pouco uso tambm podem ser definidas sem maior trabalho e sem
necessidade de serem submetidas aos comits de padronizao.

182

Banco de Dados I

Unidade 42 -

XML no SQL Server

42.1 Criando colunas do tipo XML


Com o tipo de dados XML como um padro no SQL Server, para criar colunas XML basta declarar
o XML como um tipo de dados. Vejamos a seguir um exemplo de como criar uma coluna padro
XML.
O script para criar a tabela MinhaTabela com duas colunas a seguinte:
Create Table MinhaTabela (CodigoID int, dados xml)
Como resultado da execuo dessa instruo teramos.

Podemos usar o Front-end para tambm criar a coluna do tipo XML digitando diretamente a
definio no editor conforme abaixo:

183

Banco de Dados I

42.2 Inserindo valores


Para inserir dados em uma tabela com um ou mais campos XML, devemos executar uma instruo
de insert de maneira normal.
Apenas devemos estar atentos para que devemos tratar a entrada destes dados como strings,
portanto os digitamos entre aspas simples, e no caso da existncia de aspas internas as mesmas
devem ser duplas.
Vamos ento popular nossa tabela com 1 registro para a melhor compreenso do script de
insero deste tipo de informao.
INSERT INTO MinhaTabela
(codigoID,dados)
VALUES
(1,
'<?xml version="1.0"?>
<cliente cod="10">
<nome>Maria Aparecida</nome>
<compras>
<produto descricao="Arroz" valor="1.2"/>
<produto descricao="Feijao" valor="2.8"/>
<produto descricao="Milho" valor="1.1"/>
<produto descricao="Sal" valor="0.9"/>
</compras >
</cliente >')

Ao executarmos uma consulta de seleo para visualizarmos o resultado, teramos o seguinte


retorno:

184

Banco de Dados I

42.3 Atualizando valores


Para modificarmos algum dado armazenado em um campo xml, podemos faz-lo para incluir ou
modificar um valor de um atributo.
Por exemplo, se desejarmos incluir um novo produto na lista de compras do cliente, ou seja, incluir
um novo elemento ou atributo no documento XML armazenado.
Neste caso vamos usar o mesmo comando usado para atualizar dados na linguagem SQL, o
comando UPDATE, mas antes preciso chamar o mtodo modify.
O mtodo modify permite a realizao de alteraes (incluses e atualizaes) e excluses em
documentos ou trechos do documento XML armazenado no SQL Server.
Em nosso exemplo vamos incluir um novo elemento referente a um novo produto e valor na
informao XML armazenado na tabela Minhatabela criada:
Vamos inserir o elemento <produto descricao="Massa" valor="2.7" /> na coluna dados. A instruo
usada a seguinte:
UPDATE MinhaTabela
SET dados.modify
('insert <produto descricao="Massa" valor="2.7" />
into (/cliente/compras)[1]
')
WHERE codigoId = 1

Podemos observar o uso do mtodo modify em nosso update


Para verificar se o comando foi executado corretamente vamos usar a instruo SELECT para
exibir os dados da tabela :

185

Banco de Dados I

Clicando no link exibido na coluna dados iremos obter o arquivo XML abaixo:

Para que possamos incluir o elemento <produto descricao="Batata" valor="2.1" /> antes do
elemento < produto descricao="Feijao" valor="2.8" /> ?
Devemos executar o seguinte script:
UPDATE MinhaTabela
SET dados.modify
('insert <produto descricao="Batata" valor="2.1" />
before (/cliente/compras/produto)[2]
')
WHERE codigoiD = 1

Perceba
a
utilizao
da
clusula
before
e
que
especificamos
o
produto
(/cliente/compras/produto)[2]) atravs do ndice 2 para indicar a posio depois da qual vamos
incluir o elemento.
Naturalmente da mesma forma poderamos ter usado a clusula after para incluir depois da
posio indicada na instruo SQL.
Para efetuar uma alterao em dados XML j cadastrados devemos usar a instruo replace que
idntica a instruo Update e permite alterar valores j cadastrados.
A utilizao da instruo replace no pode ser usada para alterar ns, mas somente valores.
Como exemplo vamos alterar o nome do produto Milho para Ervilha usando a instruo replace.
UPDATE MinhaTabela
Set dados.modify
('replace
value
of
(/cliente/compras/produto[@descricao="Milho"]
@descricao)[1] with "Ervilha"')

186

Banco de Dados I

Where codigoId = 1

A instruo XPath - (/cliente/compras/produto[@descricao="Milho"][1] - vai procurar o primeiro


produto que tenha a descrio Milho e vai substitu-lo pelo texto Ervilha. Para especificar que
desejamos substituir o primeiro usamos o ndice [1].
Aps a execuo da instruo vamos novamente usar uma instruo SQL Select e posteriormente
o link para verificar se o valor foi realmente alterado.

Podemos usar o operador last() para direcionar para o ltimo elemento independente da sua
posio. Assim, para atualizar o valor do ultimo produto para 3.1 usamos a seguinte instruo:
UPDATE MinhaTabela
SET dados.modify
('replace
"3.1"')

value

of

(/cliente/compras/produto/@descricao)[last()]

with

WHERE codigoid = 1

Aps a execuo da instruo vamos novamente usar uma instruo SQL Select e posteriormente
o link para verificar se o valor foi realmente alterado.

187

Banco de Dados I

188

Banco de Dados I

42.4 Deletando valores


Para excluir usamos a clusula DELETE j conhecida da SQL. Ela usada para excluir atributos e
elementos em um documento XML persistidos no SQL Server.
Devemos atentar para o usos da clusula DELETE pois ela pode excluir valores, atributos,
elementos e at mesmo todo o documento XML persistido na base de dados.
Vamos ento verificar alguns exemplos usando DELETE:
UPDATE MinhaTabela
SET dados.modify('
delete /cliente/compras/produto/@descricao[contains(.,"o")]')

Esta instruo exclui todos os elementos descricao cujo atributo nome contenha a string "o"
Por isso voc sempre deve usar uma clusula WHERE em uma instruo DELETE, como no
exemplo abaixo:
UPDATE MinhaTabela
SET dados.modify('
delete /cliente')
WHERE codigoid = 1

A instruo acima exclui todo o contedo XML para o cliente de cdigo igual a 1. Como o cliente
a raiz do documento XML basta definir a raiz do documento que todos os elementos sero
excludos ao final o valor da coluna passa a conter uma string vazia ("").

189

Banco de Dados I

Unidade 43 -

Trabalho Final

43.1 Situao problema


Uma empresa de manipulao deseja automatizar o processo de compra de matria prima,
composio do produto acabado e venda dos produtos que manipulados.
A empresa compra matria prima dos fornecedores.
Esta matria prima armazenada com o Cdigo, Nome da Matria, Tipo, Valor por Grama,
Estoque.
A matria prima atualizada no estoque atravs de requisio quando da sua sada.
Para a compra da matria prima necessrio gerar uma solicitao de compras.
Quando a matria prima atinge seu ponto de reposio gerado uma solicitao de compras.
A compra de matria prima efetuada atravs de uma nota fiscal, a qual obrigatoriamente contm
Nmero da Nota Fiscal, Data da Emisso, Hora da Emisso, Unidade da Mercadoria, Preo
Unitrio, Descrio da Mercadoria comprada.
A nota fiscal atualiza estoque de matria prima e atualizao a solicitao que a gerou atravs do
nmero desta nota.
O produto manipulado composto por Cdigo, Nome do Produto, Frmula, Data de Validade, e
Preo final.
Um Produto pode possuir vrias matrias primas e uma matria prima pode ser um componente
de vrios produtos.
Um Fornecedor pode fornecer vrias matrias primas, e uma matria prima pode ser fornecida por
vrios fornecedores. Um fornecedor composto de Cdigo do Fornecedor, Razo Social, CNPJ,
IE, Endereo, E-mail, Site do Fornecedor, Telefone, FAX, Contato Comercial.
O produto acabado atualiza o estoque de produtos acabados.
A empresa tem uma carteira de clientes, que vo desde farmcias, clnicas, laboratrios, a
atacados.
Os clientes so atendidos no balco, por vendedores (funcionrios) tanto In loco como por
televendas, gerando pedidos.
As notas fiscais de vendas sero atendidas conforme os pedidos gerados, a qual contm
obrigatoriamente as seguintes informaes: Nmero da Nota Fiscal, Data da Emisso, Hora da
Emisso, Unidade da Mercadoria, Preo Unitrio, Preo Total do produto, total da nota fiscal,
Descrio do produto, nome do vendedor, condies de pagamento, nmero do pedido.
As vendas geram um arquivo de contas a receber, com as seguintes informaes: Cdigo, Cdigo
do Cliente, Data da Emisso, Data do vencimento, Nmero da Parcela, Valor da Parcela, e
Nmero da Nota Fiscal.
A nota fiscal de venda atualiza o estoque de produtos acabados.
Em caso de devoluo, gerada uma nota de devoluo e atualizado o estoque.

190

Banco de Dados I

191