Escolar Documentos
Profissional Documentos
Cultura Documentos
Banco Dados
Banco Dados
BANCO DE DADOS I
V0
Professor: Ivon Rodrigues Canedo
V0
Banco de Dados I
NDICE
1.
2.
3.
4.
5.
6.
7.
8.
9.
Banco de Dados
1.1. Um Definio
1.2. Sistema Gerenciador de Banco de Dados
1.3. Tipos de Modelos de Dados
O Modelo de Dados
2.1. Componentes de um Modelo de Dados
Convenes para Construo de um DER
3.1. Nomeclatura dos elementos de um DER
3.2. Exemplos de DER
Exerccios
Normalizao de Dados
Modelo Relacional
Restries no Modelo Relacional
Exerccios de Modelagem de Dados
SQL
9.1. Create Table
9.2. Alter Table
9.3. Drop Table
9.4. Create Index
9.5. Constraint
9.6. Insert Into
9.7. Delete
9.8. Update
9.9. Select Into
9.10. Select
9.11. Atributos ALL, DISTINCT, DISTINCTROW, TOP
9.12. Clausula From
9.13. Clausula Group BY
9.14. Clausula Having
9.15. Clausula In
9.16. Clausula Order BY
9.17. Clausula Where
9.18. Funes Agregadas SQL
9.19. Operao Inner Join
9.20. Operao Left Join e Right Join
9.21. Operao Union
V0
003
003
003
003
007
007
019
020
020
021
022
031
032
037
045
046
049
050
051
052
054
056
057
058
059
060
062
063
064
065
066
068
070
073
074
075
Banco de Dados I
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
V0
076
078
079
080
081
081
082
083
084
084
085
085
087
088
091
111
137
138
143
145
147
149
153
Banco de Dados I
BANCO DE DADOS
Uma Definio
um conjunto de dados, relativos a um determinado ambiente, por exemplo, um empresa de fornecimento de energia
eltrica, armazenados em um ou vrios computadores e que guardam entre si algum relacionamento.
Exemplo
Banco de Dados de Recursos Humanos de uma empresa;
Banco de Dados de Aplicaes Financeiras;
Banco de Dados de uma empresa de energia eltrica.
Base de Dados
o conjunto de todos os dados de um determinado ambiente, estejam eles armazenados em computador ou no.
Exemplo
Banco de Dados de Recursos Humanos + as correspondncias expedidas e recebidas, pela empresa, e que esto
guardadas nos armrios de cada departamento.
Caractersticas de um SGBD
Abstrao de Dados
a possibilidade de entender uma ambiente se preocupando apenas com seus aspectos mais importantes. No caso dos
Bancos de Dados abre a possibilidade a seus usurios de poderem acessar aos dados sem a necessidade de se
preocuparem com os detalhes de como os dados so armazenados.
Nveis de Abstrao
Nvel Fsico
Descreve como os dados so realmente armazenados. Neste nvel de abstrao trabalham os DBAs.
Nvel Conceitual
Descreve quais dados esto armazenados e como eles se relacionam. Neste nvel os usurios no se preocupam os
aspectos fsicos do armazenamento de dados. Aqui trabalham os DBAs e os Analistas de Aplicao.
V0
Banco de Dados I
Nvel de Viso
Uma viso descreve parte de uma banco de dados, de modo que , usurios do banco tenham acesso apenas aos dados que
lhes dizem respeito. Um banco de dados tem muitas vises.
Modelos de Dados
Identificam os dados de um determinado ambiente, as relaes entre eles e suas restries de integridade.
V0
Banco de Dados I
Esquema
a representao do projeto do banco de dados. No mudam com frequncia. Em um banco de dados tempos esquemas
fsicos e conceituais.
Independncia de Dados
possibilidade de mudar esquemas de um nvel de abstrao sem comprometer os esquemas de outros nveis
Independncia Fsica de Dados
a caracterstica que os bancos de dados devem ter e que consiste na possibilidade de que alteraes feitas no
esquema fsico no exigirem alteraes nos programas escritos.
Independncia Lgica de Dados
uma caracterstica dos bancos de dados que permite mudanas nos esquemas conceituais sem exigir
mudanas nos programas escritos. difcil de ser conseguida.
Interagir com o gerenciador de arquivos. Geralmente esses gerenciadores de arquivos so fornecidos pelos sistemas
operacionais. de responsabilidade desses gerenciadores o atendimento solicao de dados.
Garantir Integridade do Dados
Garantir Segurana de Acesso
V0
Banco de Dados I
Recuperao de Dados
Controlar Concorrncia de Acesso.
V0
Banco de Dados I
O MODELO DE DADOS
Uma Definio
O Modelo de Dados uma representao das necessidades de dados de um determinado ambiente e de como esses dados
se relacionam. uma das primeiras atividades que deve ser executada ao longo do processo de identificao e
compreenso de um ambiente, tendo em vista necessidades de automatizao. um dos produtos da fase de Anlise do
Ciclo de Vida de um projeto de desenvolvimento de um sistema. Construir um Modelo de Dados significa: coletar e
documentar informaes relevantes do ambiente estudado; representar as informaes, de forma clara e objetiva, e num
formato padro que possa facilitar o entendimento dos participantes do processo; definir, de maneira clara, o escopo do
ambiente modelado; adquirir o entendimento do ambiente atravs de refinamentos sucessivos do modelo; e representar
graficamente as necessidades de informao independentemente do Software e do Hardware a serem usados na
implementao do Sistema.
1.
1.1. Entidade
Chamamos de entidade, qualquer coisa real ou abstrata, de um determinado ambiente, sobre a qual precisamos
guardar informaes. Se estamos modelando o ambiente de uma biblioteca, por exemplo, ento as informaes
a respeito dos livros devem estar representadas pela entidade: Livro. As informaes relativas aos usurios da
biblioteca poderiam ser representada pela entidade: Cliente. As informaes relativas ao emprstimo de livros
seriam representadas pela entidade: Emprstimo. As reservas de livros por: Reserva, e assim por diante. Nesse
ambiente as informaes da entidade Livro poderiam ser: nome do livro, ISBN do livro, e ttulo do livro. Para a
entidade Cliente poderamos ter: cpf, nome, endereo e telefone. Para a entidade Emprstimo: data do
emprstimo, data provvel de devoluo e taxa de multa para o caso de devoluo com atraso. A entidade
Reserva poderia ter: data da reserva, e data provvel de disponibilidade do livro.
claro que as informaes representadas por uma entidade dependem do ambiente onde ela est inserida. Por
exemplo: uma pessoa para o Ministrio da Fazenda vista como um contribuinte de impostos. E dentro deste
contexto as informaes relevantes de pessoa seriam: cpf, renda anual, despesas mdicas, despesas com
instruo, etc. J o Ministrio da Educao poderia ter outras necessidades de informaes sobre uma pessoa,
como por exemplo: cpf, nvel de escolaridade, idade, data de nascimento, etc. O Ministrio da Sade,
certamente teria interesse em informaes sobre sade: tipo sanguneo, data de nascimento, etc. Podemos
concluir que, uma entidade s deve conter informaes que dizem respeito, ou que so necessrias, ao
ambiente que representa.
V0
Banco de Dados I
Exemplos:
1. A Entidade ALUNO uma entidade primria porque identificada pelos seus prprios atributos. O seu
identificador pode ser o atributo Matrcula do aluno.
ALUNO
# Matrcula
Nome
Sexo
2.
A Entidade DEPARTAMENTO uma entidade primria pois tem como atributo identificador um atributo
prprio. A sigla do departamento, por exemplo.
DEPARTAMENTO
# Sigla
Nome
EMPREGADO
# Matrcula
Nome
Sexo
DEPENDENTE
# Cdigo
Nome
Data de Nascimento
Entidade Associativa
a entidade que no se identifica por si mesma e sua existncia depende da existncia de duas ou mais outras
entidades. Compem seu identificador, os identificadores das entidades que se associaram para lhe dar origem.
Exemplo
1. No diagrama abaixo a entidade, APROVEITAMENTO uma entidade associativa porque a sua
identificao s possvel a partir da Matrcula, identificador da entidade ALUNO e de Cdigo,
identificador da entidade DISCIPLINA. Ou sejam, quando nos referimos ao aproveitamento 7,3, por
V0
Banco de Dados I
exemplo, ele s tem sentido quando associado a uma aluno e a uma disciplina. Assim: Joo Ribeiro Ferraz
(Aluno) obteve a nota 7,3 (Aproveitamento) em Banco de Dados (Disciplina).
V0
10
Banco de Dados I
ALUNO
# Matrcula
Nome
Sexo
DISCIPLINA
# Cdigo
Nome
1
N
APROVEITAMENTO
Nota
Data da avaliao
1.3. Atributos
So partes especficas de uma determinada entidade. So as informaes que caracterizam a entidade.
Exemplos de Atributos
Poderiam ser atributos de uma entidade Aluno: nome, nmero da matrcula, cpf, data de ingresso no
curso, endereo, telefone e data de nascimento. Uma entidade Fornecedor poderia Ter como atributos:
Cgc, nome, Razo Social, Endereo, e Capital Social. Cada entidade tem valores especficos para seus
atributos que diferir ou ser iguais aos valores dos atributos de outras entidades de um mesmo tipo de
entidade.
Valor de um Atributo
Chamamos valor de um atributo ao contedo que um atributo pode ter. Marcos Ferreira, Rosa Cristina,
Deusdete da Cunha poderiam ser valores da entidade Aluno. Casa do Barata, Mesbla, C&A seriam
valores do atributo nome da entidade Fornecedor.
Domnio de um Atributo
o conjunto de valores que um atributo pode assumir. Exemplo: Masculino, Feminino so o domnio do
atributo Sexo da entidade Aluno. O atributo Nota da entidade aluno tem o domnio: {nmeros reais de 0
a 10).
Tipos de Atributos de uma Entidade
nico
Cada entidade tem um valor diferente para este atributo. A matrcula de um aluno em um curso um
atributo nico porque no existe outro aluno matriculado com o mesmo nmero de matrcula.
No-nico
Quando o valor pode se repetir em vrias entidades. Por exemplo, o aproveitamento de um aluno. Mais
de um aluno pode ter a mesma nota.
V0
11
Banco de Dados I
Obrigatrio
Quando tem que existir um valor para este atributo em toda entidade. Por exemplo, o nome do aluno na
entidade ALUNO.
Simples
Quando possui um domnio simples. Por exemplo, o atributo sexo tem um domnio simples pois
formado pelo conjunto (nico) das letras F e M.
Composto
Quando possui mais de um domnio simples. Endereo de uma pessoa, por exemplo. Ele formado
pelos domnios, simples, dos Logradouros, dos Bairros, das Cidades, dos Estados e dos CEPs.
Univalorado
Quando tem um nico valor para cada entidade. Por exemplo, o nmero de matrcula de um aluno. Cada
aluno tem um nico nmero de matrcula.
Multivalorado
Quando pode ter mais de um valor para cada entidade. Por exemplo, o telefone de uma pessoa. Uma
pessoa pode ter mais de um telefone. O do trabalho e da residncia.
Derivado
Quando o seu contedo depende do contedos de outros atributos. Por exemplo, o total de uma nota
fiscal formado pela soma dos totais de cada item componente da nota fiscal.
No derivado
Quando ele no pode ser obtido a partir de outros atributos. Por exemplo, nome de um aluno.
Identificador
o atributo ou atributos que identificam uma entidade de um tipo de entidade de maneira nica. Por
exemplo a matrcula do estudante. Ou a matrcula do aluno e o cdigo da disciplina no tipo de entidade
APROVEITAMENTO.
No Identificador
Quando o identificador no identifica por si s um entidade dentro de um tipo de entidades. Por
exemplo, o nome do aluno no identifica o aluno dentro to tipo de entidade ALUNO.
Matriz de Definio dos Atributos
Atributos
ID
OB
Matrcula
Nome
Telefone
S
S
MV AD
AC
CE
NAT TAM
N
C
C
V0
4
40
14
DEC DOM
> zero
<> Nulo
<> Nulo
12
Banco de Dados I
1.4. Relacionamentos
Chamamos de relacionamento a associao entre duas entidades ou entre uma entidade e ela mesma.
Para expressar, em um modelo, quais as disciplinas nas quais um aluno est matriculado ns poderamos
definir o relacionamento: O aluno est matriculado em... O relacionamento para expressar os
dependentes de um determinado empregado seria: Empregado tem dependentes.
Cardinalidade de um relacionamento
Indica quantas entidades de um tipo de entidade participam de um relacionamento.
Restries de relacionamento
Indica a participao ou no de uma entidade no relacionamento em causa.
Uma Viso de um Relacionamento 1:N entre dois Tipos de Entidades
EMPREGADO
Empregado
DEPARTAMENTO
Departamento
Trabalha
Francisco .
r1
. Produo
Srgio .
r2
Alexandre .
r3
Marcos .
. Financeiro
r4
. Marketing
Marta .
r5
Jos .
r6
V0
13
Banco de Dados I
PROFESSOR
Professor
DISCIPLINA
Disciplina
Leciona
. Fsica
Mario .
r1
. Analise
Srgio .
r2
. Matemtica
Alexandre .
r3
. O&M
Marcos .
r4
Francisco .
r5
O professor Mrio (1) leciona Fsica e Anlise (2) e Fsica (1) lecionada por Mrio e Srgio (2)
O professor Francisco (1) leciona Matemtica (1) e Matemtica (1) lecionada por Francisco (1)
V0
14
Banco de Dados I
CLIENTE
Cliente
Francisco .
CONTA DE LUZ
Conta de Luz
Recebe
r1
. Produo
Srgio .
r2
Alexandre .
r3
. Carlos
Marcos .
r4
. Osires
. Financeiro
Marta .
. Helena
V0
15
Banco de Dados I
DEPARTAMENTO
Empregado
Departamento
Gerencia
Flvio .
Francisco .
r1
Srgio .
r2
Alexandre .
. Produo
. Financeiro
r3
Marcos .
Marta .
. Marketing
r4
Rita .
Repare que existe empregados que no esto associados a departamento nenhum. So os empregados
que no gerenciam departamentos.
V0
16
Banco de Dados I
Tipos de Relacionamentos
Relacionamento tipo Dependncia
Chamamos de Relacionamento de Dependncia ao relacionamento entre um tipo de entidade primria e
um tipo de entidade dependente (fraca).
Exemplo
EMPREGADO
# Matrcula
Nome
Sexo
DEPENDENTE
# Nome
Data de Nascimento
V0
17
Banco de Dados I
O Tipo de entidade EMPREGADO compe-se de entidades primrias porque essas entidades so identificadas
completamente por seus atributos. razovel imaginarmos que numa mesma empresa no exista empregados
com a mesma matrcula. J as entidades de DEPENDENTE so do tipo fraca porque os seus atributos no as
identificam completamente. Suponhamos que Pedro Rodrigues seja filho de Francisco Moreira, cujo nmero
de matrcula seja 10. Se falamos apenas Pedro Rodrigues, no o identificamos, porque pode existir outros
Pedro Rodrigues filhos de outros empregado que no seja o Francisco Moreira de matrcula 10. Para que Pedro
Rodrigues seja completamente identificado precisamos associ-lo ao empregado do qual ele dependente.
Ento dizemos: Pedro Rodrigues dependente de Francisco Moreira de matrcula 10
Outro Exemplo
FORNECEDOR
# Cgc
Nome
Entidade Primria
NOTA FISCAL
# Nmero
Data de Emisso
Entidade dependente
O tipo de entidade FORNECEDOR tambm uma entidade primria porque identificada completamente por
seus atributos. No existe dois fornecedores diferentes com o mesmo nmero de CGC. NOTA FISCAL um
tipo de entidade composto por entidades fracas ou dependentes, porque para identificar uma determinada nota
fiscal completamente precisamos dizer de qual fornecedor a nota fiscal, visto que podem existir notas fiscais
de mesmo nmero pertencentes a fornecedores diferentes.
Relacionamento tipo Associativo
Um relacionamento do tipo associativo se ele relaciona uma entidade primria a uma entidade associativa.
Exemplo
ALUNO
# Matrcula
Nome
Entidade Primria
APROVEITAMEN
TO
# Nota
Data da Avaliao
Entidade Associativa
DISCIPLINA
# Cdigo
Nome
Entidade Primria
V0
18
Banco de Dados I
Auto-Relacionamentos
PESSOA
Esposo
(0,N)
(0,N)
CIDADE
Esposa
Origem
Casamento
Destino
Voo
V0
19
Banco de Dados I
Relacionamento
Atributo
Atributo Identificador
Atributo Multivalorado
Atributo Composto
Atributo Derivado
E1
E2
V0
20
Banco de Dados I
E1
E2
(min,max)
(min,max) representam a
quantidade de ocorrncias de E
em R
DEPARTAMENTO
# Codigo
* Nome
N
N
DEPENDENTE
* Nome
* Data Nascimento
V0
PROJETO
# Codigo
* Nome
21
Banco de Dados I
1.9. Exerccios
Exerccio 1
Considere parte de um ambiente de banco. Um banco tem vrias agncias. As contas de uma agncia podem se
referir a pessoas fsicas ou jurdicas. H contas que podem ter um nico titular e contas que podem ter mais de
um. No h contas sem cliente e nenhum cliente da agncia sem conta. Uma agncia exige necessariamente
um banco e no h banco sem agncia. As agncias fazem emprstimos aos seus clientes h cliente que tem
mais de um emprstimo, mas o nmero de emprstimos de cada agncia limitado a 1000.
BANCO
# Nmero
Nome
1
N
1
N
1,1000
AGNCIA
# Cdigo
Nome
1,1
CONTA
# Nmero
Tipo da Conta
Saldo
EMPRESTIMO
# Data
Valor
CLIENTE
# Cdigo
Nome
Endereo
Telefone
Exerccio 2
Quais os possveis atributos que podem identificar as duas entidades no relacionamento a seguir.
FORNECEDOR
Cgc
Nome
Razo Social
NOTA FISCAL
Nmero
Srie
Data
V0
22
Banco de Dados I
Exerccio 3
Construir um possvel DER a partir do contedo do relatrio abaixo.
Almoxarifado
234
234
456
456
Endereo
Cdigo
Produto
Rua 15, Centro A12
Rua 15, Centro F15
Rua 9, S. Oeste J14
Rua 9, S. Oest F15
Nome Produto
Arroz
Feijo
Acar
Feijo
Quantidade
20
150
180
200
Exerccio 4
Construir possveis relacionamentos entre as entidades abaixo e identificar pelo menos dois atributos para cada
uma delas. As entidades referem-se a um ambiente hospitalar.
Entidades: PACIENTE, CIRURGIO, CIRURGIA, TIPO DE CIRURGIA.
Exerccio 5
Construir o DER correspondente s entidades abaixo referentes ao ambiente de recursos humanos de uma
empresa. Identifique pelo menos dois atributos para cada entidade e indique o identificador de cada uma.
Justifique sua resposta.
Exerccio 6
Construir o DER correspondente a um ambiente escolar com as seguintes entidades: DEPARTAMENTO,
ALUNO, DISCIPLINA, TURMA, APROVEITAMENTO, PROFESSOR respondendo as seguintes perguntas:
1. Qual professor leciona cada disciplina?
2. Qual a nota do aluno em determinada disciplina e qual o professor que deu a nota?
3. Em qual turma de qual disciplina o aluno est matriculado e quais os professores dessa turma?
4. Em qual departamento o professor est vinculado?
5. Quais as disciplinas que so de responsabilidade de cada departamento?
6. Qual o horrio de aula de cada turma?
7. Quantos so os alunos do sexo masculino e quantos so do sexo feminino?
8. Qual a idade de cada aluno?
9. Quais so os pais de cada aluno?
Exerccio 7
Que alteraes seriam necessrias fazer no DER do exerccio anterior, considerando que os pais de um aluno
tambm podem ser estudantes, sem que haja duplicidade de informaes no modelo?
V0
23
Banco de Dados I
Exerccio 8
Identificar os relacionamentos entre as entidades relacionadas abaixo, e para cada entidade identifique, pelo
menos, trs atributos. Construa o quadro de definio dos atributos para cada entidade. As entidades se referem
ao ambiente de um ponto de comrcio varejista (por exemplo, uma loja de calados).
O modelo construdo deve responder as seguintes perguntas:
1. Quais Empregados so Empacotadores, Contadores e Vendedores?
2. Qual o Vendedor que atendeu o Cliente?
3. Quem empacotou os produtos comprados para o Cliente?
4. Qual o valor total da compra do Cliente?
5. Quais os Clientes que foram atendidos mas que no compraram nada?
6. Se o Cliente comprou alguma coisa, quais os produtos comprados?
7. Qual o total de vendas de cada Vendedor por dia?
8. Qual o total das vendas correspondentes s mercadorias empacotadas por cada Empacotador?
Relao de entidades:
Empregado, Contador, Empacotador, Vendedor, Cliente, Nota Fiscal, Detalhes de Notas Fiscais (Relao de
Produtos) e Produto.
DER proposto
Contador
Empacotador
(1,1)
(1,1)
(0,1)
(0,1)
Empregado
(0,1)
(0,N)
(0,N)
(1,1)
Produto
(0,N)
Vendedor
Cliente
(0,N)
(1,1)
(1,1)
Detalhes de
Nota Fiscal
(1,1)
(1,N)
Nota Fiscal
V0
24
Banco de Dados I
ID
Matrcula
S
Taxa de Comisso
Telefone
OB
MV AD
AC
S
S
S
V0
CE
NAT TAM
DEC DOM
N
N
C
4
4
14
> zero
> zero
<> Nulo
25
Banco de Dados I
2.
Normalizao de Dados
Normalizao um processo de depurao de um modelo de dados para reduzir sua redundncia e aumentar
sua estabilidade.
CONCEITOS BSICOS
V0
26
Banco de Dados I
PASSOS:
Entidade
No Normalizada
Eliminar grupos de atributos que se
repetem e atributos multivalorados
1FN
Eliminar dependncias funcionais
parciais
2FN
Eliminar dependncias funcionais
transitivas
3FN
V0
27
Banco de Dados I
Exemplo:
Verificar se a entidade Cliente abaixo est na 1FN.Se no estiver, convert-la para a 1FN.
Data de
Contato
Nmero
CLIENTE
O Atributo data de contato pode ter mltiplos valores, portanto a entidade CLIENTE no est na 1FN. Para
transform-la para a 1FN vamos criar uma entidade adicional CONTATO e relacion-la com um
relacionamento 1:M no sentido CLIENTE - CONTATO.
Verificao da Segunda Forma Normal
Verificar se cada atributo dependente apenas do identificador da entidade.
Verificar se existe algum atributo dependente apenas de parte do identificador da entidade.
Exemplo:
Verificar se entidade CURSO est normalizada.
Nome
Preo
Cdigo
Durao
CURSO
V0
28
Banco de Dados I
Cada cdigo determina um valor especfico para nome, durao e preo, todos eles so dependentes
exclusivamente do identificador, e nenhum dos atributos derivado um do outro. Portanto a entidade est
normalizada.
Exemplo:
Verificar se as entidades abaixo esto normalizadas.
Nome
Cdigo
Quantidade
Data do
Pedido
CLIENTE
Nmero
Preo do
Item
REQUISITA
PEDIDO
Cada instncia de CLIENTE e PEDIDO determina valores especficos de quantidade e preo do tem. O
atributo data do pedido est perdido na entidade CLIENTE, porque ele no dependente do identificador da
entidade. Ele deve ser um atributo de PEDIDO.
Exemplo:
Normalizar a entidade abaixo:
Data do
Pedido
Nmero do
Pedido
Nome
Endereo
Quantidade
Pedida
Cdigo
Valor
Unitrio
CLIENTE
V0
29
Banco de Dados I
Como a entidade no tem nenhum atributo com valores repetidos ela est na 1FN. Entretanto os atributos data
do pedido, nmero do pedido, quantidade pedida e valor unitrio no so dependentes do identificador da
entidade, portanto ela no est na 2FN. Para normaliz-la devemos criar uma entidade auxiliar com os atributos
no dependentes do identificador.
Verificao da Terceira Forma Normal
Verificar se existe algum atributo no identificador dependente de outro atributo no identificador.
Retirar os atributos no identificadores dependentes para uma entidade auxiliar.
Exemplo:
Verificar se a entidade abaixo est na terceira forma normal.
Valor
Unitrio
Quantidade
Pedida
Nmero do
Cliente
Data do
Pedido
Nmero do
Pedido
Nome do
Cliente
Limite de
Crdito
PEDIDO
No existe nenhum atributo com valores repetidos logo a entidade est na 1FN. Os atributos nmero do cliente,
nome do cliente e limite de crdito no so dependentes do identificador da entidade, portanto ela no est na
2FN. Logo a entidade no est na 3FN.
Para pass-la para a 2FN devemos criar uma entidade auxiliar com os atributos no dependentes do
identificador.
V0
30
Banco de Dados I
Exemplo:
Verificar se a entidade abaixo est na 3FN.
Valor
Unitrio
Quantidade
Pedida
Data do
Pedido
Nmero do
Pedido
Total do
Item
PEDIDO
No existe nenhum atributo com valores repetidos, logo a entidade est na 1FN. Todos os atributos no
identificadores so dependentes do identificador da entidade, logo ela est na 2FN. O atributo total do tem
dependente da quantidade pedida e do valor unitrio, portanto a entidade no est na 3FN.
Para pass-la para a 3FN basta eliminar o atributo total do tem que desnecessrio na entidade.
EXERCCIO:
Normalizar a entidade abaixo:
Endereo
do Aluno
Data da
Avaliao
Nome do
Professor
Graduao
do Professor
Nome do
Aluno
Matrcula
Professor
Nota
Obtida
Matrcula
Aluno
Conceito
AVALIAO
V0
31
Banco de Dados I
3. MODELO RELACIONAL
O Modelo Relacional representa a base de dados como uma coleo de relaes. Uma relao concebida como uma
tabela de valores, cada linha da tabela representa uma coleo de valores de dados relacionados. Estes valores podem
ser interpretados como fatos que descrevem uma entidade ou um relacionamento do mundo real. Os nomes de
tabelas e nomes de colunas servem tambm para auxiliar na interpretao do significado dos valores em cada linha
de cada tabela.
Na terminologia do Modelo Relacional, uma linha chamada TUPLA, o cabealho de uma coluna chamado
ATRIBUTO e a tabela chamada RELAO. Os tipos de dados que descrevem os tipos de valores que podem
aparecer em cada coluna so chamados de DOMNIO.
DOMNIO
Um domnio D um conjunto de valores atmicos, isto , cada valor do domnio indivisvel segundo o contexto
sobre o qual o modelo concebido. Um mtodo comum de especificar um domnio consiste em especificar o tipo de
dado segundo o qual os valores dos dados que formam o domnio so estabelecidos.
Exemplos:
Alunos_Matrculas: Conjunto de 5 dgitos vlidos como matrcula
Alunos_Datas_Nascimento: Conjunto de datas vlidas.
Alm de nome, tipo de dado e formato, informaes adicionais podem ser fornecidas para facilitar a interpretao
dos valores do domnio.
Exemplos:
Alunos_Datas_Nascimento: Conjunto de datas compreendidas entre 01/01/1950 e 31/12/1982.
Alunos_Sexo: Deve ser M ou F.
RELAO (Relation Schema R)
Uma relao R, denotada por R(A1, A2, . . . , An), representa uma relao de nome R e uma lista de atributos A1,
A2, . . . , An. Cada atributo Ai refere-se a um domnio correspondente D na relao R. D chamado de domnio de
Ai e denotado por dom(Ai). O grau da relao R o nmero de atributos que ela contm.
Exemplo:
ALUNO ( Matrcula, Nome, DataNascimento, Sexo )
ALUNO o nome da Relao e seu grau 4 porque tem quatro atributos. Seus domnios so:
dom ( Matrcula ) = Matrculas
dom ( Nome ) = Nomes
dom ( DataNascimento ) = Datas_Nascimento
dom ( Sexo ) = Sexos
V0
32
Banco de Dados I
TUPLA
Uma instncia r de uma relao R(A1, A2, . . . , An), tambm denotada por r(R), um conjunto de n-tuplas r = { t1,
t2, ..., tm }. Cada n-tupla t uma lista ordenada de n valores t = <v1, v2, ..., vn>, onde cada valor vi, 1<i<n, um
elemento do domnio dom (Ai) ou nulo.
Exemplo:
Nome da Relao
Atributos
Tuplas
ALUNO
Matrcula
Nome
DataNascimento
Sexo
A instncia de uma relao em um determinado momento reflete somente as tuplas vlidas que representam um
estado particular do mundo real. Em geral, como o estado do mundo real muda, muda tambm a instncia da
relao, transformando-se em outro estado. Entretanto, o esquema da relao, R, relativamente esttico e
raramente muda, como por exemplo, quando adicionamos um novo atributo para representar uma nova
informao que no existia originalmente. possvel que vrios atributos, de uma mesma relao ou de
relaes diferentes, compartilhem o mesmo domnio. Os atributos indicam diferentes interpretaes para o
domnio. Por exemplo, o domnio Datas_Nascimento para o atributo DataNascimento da relao ALUNO
significa a data de nascimento do aluno, j para a relao PROFESSOR, representar a data de nascimento do
professor.
CARACTERSTICAS DAS RELAES
V0
33
Banco de Dados I
Entretanto, em um nvel lgico, a ordem dos atributos e seus valores no so realmente importante tanto como a
correspondncia entre atributos e seus valores.
Uma definio alternativa de relao
Considerando-se desnecessria a ordenao de valores em uma tupla, pode-se consider-la como um conjunto
de pares (<atributo>,<valor>), onde cada par fornece o valor para cada atributo.
Exemplo:
t = < ( Matrcula, ________ ) , ( Nome, _________ ) , ( DataNascimento , _____ ) , ( Sexo , __ ) >
t = < (Nome, ________ ) , (Sexo, _________ ) , (Matrcula, _____ ) , (DataNascimento, _____) >
Valores nas tuplas
Cada valor em uma tupla um valor atmico, isto , indivisvel no contexto do modelo relacional. Portanto,
atributos compostos e multivalorados no so permitidos. A est a importncia das tcnicas de normalizao.
Os valores de alguns atributos em uma tupla em particular podem ser desconhecidos ou no existirem para esta
tupla. Um valor especial, denominado nulo, usado para estes casos.
Notao para o modelo relacional
Relao R de grau n
Tupla t na relao r (R)
Nomes de Relaes
Instncias de Relaes
Tuplas
R ( A1 , A2 , ... , An )
t = < v1 , v2 , ... , vn >
Onde vi o valor correspondente ao atributo Ai.
Q,R,S
q,r,s
t,u,v
Nomes dos atributos podem ser qualificados com o nome da relao a que pertencem, por exemplo:
ALUNO.Matrcula, ALUNO.Nome, etc.
V0
34
Banco de Dados I
Uma relao definida como um conjunto de tuplas. Por definio, todos os elementos do conjunto so distintos,
portanto, todas as tuplas em uma relao devem tambm ser distintas. Isto significa que no pode haver duas tuplas
com a mesma combinao de valores para todos os atributos.
Restrio de Integridade de Entidade
A restrio de integridade de entidade estabelece que o valor para a chave primria no pode ser nulo. Isto porque o
valor da chave primria usado para identificar individualmente tuplas de uma relao.
Restries de chave e restries de integridade de entidade so especificadas para cada relao individualmente.
Restrio de Integridade Referencial
A restrio de integridade referencial especificada entre duas relaes e usada para manter a consistncia entre
as tuplas dessas duas relaes. A restrio de integridade referencial estabelece que uma tupla em uma relao que
se refere a outra relao deve se referir a uma tupla existente da outra relao.
Chave Estrangeira ( Foreign Key )
As duas condies citadas a seguir, estabelecem a restrio de integridade referencial entre duas relaes R1 e R2.
Um atributo, ou conjunto de atributos, FK em uma relao R1, (so) uma chave estrangeira de R1 se:
1.
O(s) atributo(s) FK tem o mesmo domnio do(s) atributo(s) da chave primria PK da relao R2; diz-se que o(s)
atributo(s) FK refere(m)-se relao R2.
2.
O(s) valor(es) de FK na tupla t1 de R1 existe(m) como o valor de uma PK em alguma tupla de R2 ou nulo.
V0
35
Banco de Dados I
Exemplo:
PROFESSOR
CPF
Nome
DataNascimento
DEPARTAMENTO
Codigo
Sexo
CodigoDepartamento
Nome
CURSO
Codigo
Nome
CodigoDepartamento
Todas as restries de integridade devem ser especificadas se desejamos manter as restries para todas as
instncias do banco de dados. Portanto, em um sistema relacional, a linguagem de definio de dados (DDL) deve
prover recursos para especificar os vrios tipos de restries para que o sistema gerenciador do banco de dados possa
cumpri-los automaticamente.
4.
V0
36
Banco de Dados I
Passo 5 Para cada tipo de relacionamento binrio R M:N, crie uma nova relao S para representar R. Inclua
como chaves estrangeiras em S os atributos que formam as chaves primrias das relaes que representam os tipos
de entidades participantes de R; a combinao dessas chaves estrangeiras formaro a chave primria de S. Tambm
inclua todos os atributos simples do tipo de relacionamento M:N (ou componentes simples de atributos compostos)
como atributos de S.
Passo 6 Para cada atributo multivalorado A, crie uma nova relao R que inclui um atributo correspondente a A
mais a chave primria K (como chave estrangeira em R) da relao que representa o tipo de entidade ou tipo de
relacionamento que tem A como atributo. A chave primria de R a combinao de A com K. Se o atributo
multivalorado composto, ento inclua somente seus componentes simples.
Passo 7 Para cada tipo de relacionamento n-rio R, com n > 2, crie uma nova relao S para representar R. Inclua
como chaves estrangeiras em S as chaves primrias das relaes que representam os tipos de entidades participantes
de R. Tambm inclua todos os atributos simples (ou componentes simples de atributos compostos) como atributos
de S. A chave primria de S , normalmente, a combinao de todas as chaves estrangeiras que referenciam as
relaes que representam os tipos de entidades participantes de R. No entanto, se a restrio de participao
(min,max) de um dos tipos de entidades participantes de R (digamos, E) tiver max = 1, ento a chave primria de S
pode ser simplesmente a chave estrangeira que referencia a relao E correspondente a E, pois, nesse caso, cada
entidade e em E participar em, no mximo, uma instncia de relacionamento de R e, portanto, pode identificar
unicamente essa instncia de relacionamento.
V0
37
Banco de Dados I
5.
c. Construir um DER e definir todos os seus atributos para o problema a seguir: (Profa.
Karin Becker da PUCRS)
Uma firma vende produtos de limpeza. Cada produto caracterizado por um cdigo nico, nome do produto,
categoria (e.g. detergente, sabo em p, sabonete, etc.), e seu preo. A categoria uma classificao criada pela
prpria firma. A firma possui informaes sobre todos os seus clientes. Cada cliente identificado por um
cdigo nico (tambm interno firma), o nome do cliente, endereo (rua, nmero, sala, cidade, CEP, UF),
telefone, o status do cliente (bom, mdio, ruim), e o seu limite de crdito. Guarda-se igualmente a
informao dos pedidos feitos pelos clientes. Cada pedido possui um nmero e guarda-se a data de elaborao
do pedido. Cada pedido pode envolver de um a vrios produtos e para cada produto, indica-se a quantidade
pedida.
V0
38
Banco de Dados I
V0
39
Banco de Dados I
Outra questo importante para a empresa, o controle de manuteno de cada veculo. Essas manutenes so
feitas em auto-mecnicas previamente habilitadas. Um veculo enviado para manuteno a cada 5.000 Km
rodados ou de seis em seis meses, o que ocorrer primeiro. Ento da manuteno precisa-se saber: o tipo de
manuteno (Preventiva, Gratuita, Corretiva), a data da ltima manuteno e a quilometragem na poca da
manuteno. Para cada manuteno efetuada, a empresa registra a quantidade de horas e o valor da mo de obra
cobrado por tipo, horas de eletricista, de pintura, de mecnico, etc. Alm disso so registrados a quantidade e o
tipo de peas usadas para a manuteno (embreagem, pastilhas de freio, farol, etc.). S interessa os dados da
ltima manuteno efetuada.
V0
40
Banco de Dados I
auxiliar. Por exemplo: nas linhas que servem o percurso de Goinia a So Paulo, as empresas devem escalar 4
motoristas para a viagem, j que a distncia a ser percorrida maior que 600 Km. Dois motoristas conduzem o
nibus at Uberaba e os outros dois, de Uberaba a So Paulo. Outro fato importante que cada linha tem os
pontos certos de parada obrigatria. Caldas Novas, Uberlndia, Uberaba, Ribeiro Preto e Pirassununga so
paradas obrigatrias de uma linha Goinia So Paulo. s vezes numa mesma viagem pode ocorrer troca de
nibus. Essa troca no coincide necessariamente com a troca de motoristas, ou seja, pode no ocorrer na mesma
cidade. Uma viagem definida como o percurso do trajeto que define uma linha de nibus.
Uma passagem, relativa a uma viagem, deve indicar o nome do passageiro, seu nmero de identidade, a origem
e o destino da passagem, data e hora de embarque, o valor e a plataforma de embarque. A origem e o destino
das passagens devem, obrigatoriamente, fazer parte das cidades que compe o trajeto da linha, embora um
passageiro possa descer em qualquer ponto do percurso. No permitido, a no ser em caso de incidentes que
impeam o trfego no trajeto da linha, desvio da rota definida. O nmero de passagens vendidas no pode
exceder o nmero de cadeiras do nibus, ou seja, no h possibilidade de um passageiro viajar em p. Atraso na
chegada em cada cidade, de mais de uma hora, deve ser comunicado sede da empresa que responde pela linha.
Outra coisa importante, tendo em vista a segurana dos passageiros, que um motorista s pode ser escalado
para uma viagem a intervalos de 72 horas. Uma transgresso a esta norma, que determinada pelo poder
pblico, pode acarretar pesadas multas para a empresa infratora.
A respeito das linhas, bom salientar, que elas so definidas pelo percurso e pelo sentido do percurso, ou seja, a
linha de Goinia - So Paulo tem um nmero diferente da linha So Paulo - Goinia, embora possam ter o
mesmo trajeto e os mesmos pontos de paradas.
V0
41
Banco de Dados I
inscrio estadual, CGC, endereo da empresa e telefones de contato. Para o destinatrio o conhecimento deve
conter as mesmas informaes do remetente. O Conhecimento deve conter ainda, o preo da mercadoria
transportada, o valor do ICMS a ser recolhido aos cofres do estado, o valor do pedgio, se existir, o frete peso
ou o frete valor, conforme o caso. A indicao de quem paga o frete necessria, se o remetente ou o
destinatrio do frete e o peso. Precisa-se tambm da data em que foi realizado o frete, para efeito de registro
contbil da empresa transportadora.
E por fim, deve-se saber tambm, qual foi o funcionrio da empresa responsvel pela emisso do Conhecimento
de Transporte Rodovirio de Carga, neste caso, apenas o nmero do registro do empregado na empresa e o seu
nome.
V0
42
Banco de Dados I
Outro conceito importante o de escala. Para cada cidade da rota que a aeronave pousa, ns dizemos que o vo
faz escala nesta cidade. Ento no nosso exemplo do vo 140 da Varig ns dizemos que ele faz escalas em:
Braslia, Rio de Janeiro, So Paulo, Curitiba, Florianpolis e Porto Alegre. Para efeito de informao, aos
passageiros em aeroportos, o gestor do sistema de transporte area (infraero) precisa saber de cada escala de
cada vo as seguintes informaes: qual a companhia area responsvel pelo vo, qual foi a ltima escala
desse vo (o que significa querer saber de qual cidade a aeronave est vindo), qual a prxima escala do vo (o
que significa querer saber para qual cidade o vo est indo), qual o horrio previsto de chegada do vo, se no
houver atraso, e qual o horrio de partida do vo. Outra coisa importante que se precisa saber de cada rota,
qual a primeira cidade da rota, o que o mesmo que querer saber de onde procede o vo. Ento, no nosso
exemplo de rota, ns dizemos que, se estamos dando informao de So Paulo: o vo 140 da Varig, procedente
de Braslia, com destino a Porto Alegre e com escala em Curitiba e Florianpolis, tem chega prevista para tal
horas e tantos minutos. Ento precisa-se saber em cada escala qual primeira e ltima cidade da rota. Aqui o
conceito de rota circular. Ento a cidade de Braslia, na rota descrita, segue a de Porto Alegre, embora a
cidade de Braslia seja a primeira e a de Porto Alegre seja a ltima da rota. Diante do que est descrito podemos
dizer ento que: em uma cidade pode haver vrias escalas sendo cada escala de um vo diferente, embora um
mesmo vo possa ter vrias escalas no mesmo dia mas em horrios diferentes. Isso porque, no caso de rotas
curtas, um vo pode percorrer a rota mais de uma vez por dia. Uma escala deve se referir sempre cidade de
onde o vo procede e a uma cidade para qual o vo se destina. Uma escala sempre pertence a um determinado
vo. Diante do exposto construir um Diagrama de Entidades x Relacionamentos que nos possibilite prestar as
informaes necessrias em cada aeroporto onde o vo faz escala. Quais sejam: Companhia Area responsvel
pelo vo, quais os vos que fazem escala em uma determinada cidade, qual foi a escala anterior escala de
referncia e qual a prxima escala. Qual a primeira cidade e ltima cidade da rota do vo. Qual o horrio
previsto de chegada e partida do vo em cada escala. O DER, deve ser apresentado completo: entidades com
seus respectivos atributos, identificadores, relacionamentos e cardinalidades.
V0
43
Banco de Dados I
Alm das informaes particulares para certa categoria de membros da famlia (mdicos, engenheiros,
advogados, professores), precisa-se saber de cada elemento: o nome, o endereo completo, a data de
nascimento, pelo menos um telefone e a data de falecimento, para aqueles j falecidos. O endereo dos
componentes uma informao importante. Afinal de contas os elementos precisam se corresponderem por
meio postal. Sabe-se que alguns componentes da famlia residem no exterior, e outros so de destino ignorado.
Informaes importantes, e que tambm devem ser registradas, so as relativas escolaridade. Qual a
escolaridade de cada membro, em quais escolas estudou e em que perodo. Por exemplo, o sr. Figueiredo
Bambini Zacharias, estudou o primrio no Grupo Escolar Maria Freitas, de 1960 a 1967, o curso secundrio, no
Colgio Santa Mnica, de 1968 a 1975, e se formou em Engenharia Civil, pela Universidade Federal de Minas
Gerais, em 1980, sendo que o seu ingresso no curso superior se deu em 1976, e concluiu o curso de Mestrado
em Estruturas Metlicas, em 1983, na Universidade Federal do Rio de Janeiro, depois de dois anos que
ingressou no curso. Para os membros com curso superior, indicar em que eles so formados e qual a sua
especialidade. Pode haver algum membro com mais de uma especialidade. Por exemplo, h pessoas formadas
em medicina com especialidade em neurologia e clnica geral, h professores, da famlia, especialistas em
ensino infantil e em histria das artes, mas h tambm aqueles formados que no se especializaram. O sr.
Francisco Bambini Zacharias, formou em Medicina Veterinria, e nunca mais estudou na vida. H elementos,
inclusive que nunca foi escola, outros terminaram s o primrio, outros conseguiram terminar o curso
secundrio, e uma pequena minoria conseguiu fazer o curso superior. No comum, mas h alguns elementos
que tm mais de um curso superior.
No caso de morte de um componente da famlia, precisa-se saber qual a causa da morte, em que cemitrio e em
que cidade foi sepultado e qual a data de falecimento. Por exemplo, h morte por acidente automobilstico, por
acidente de avio, por doena de cncer, etc. H morte que tm mais de uma causa, neste caso deve-se registrar
apenas a causa principal. H que saber quais pessoas da famlia j faleceram, quais ficaram vivas, qual casal
perdeu algum filho por falecimento e quais filhos j perderam o pai e/ou a me. Quais irmos j morreram e
quais esto vivos. No caso de morte de um casal com filhos menores, estes filhos so criados por outros casais
da famlia, com se fossem seus filhos. Neste caso, o filho, um filho adotivo especial. uma adoo por
parentesco.
bom saber, tambm, a bebida preferida de cada membro da famlia, informao importantssima para
preparao de festas familiares, e qual o clube de futebol preferido de cada membro. H membros que no
bebem e no gostam de futebol.
E por fim, registrar a preferncia religiosa de cada membro. Lembrando sempre que nem todas as pessoas
professam alguma religio, e que ao longo da vida uma mesma pessoa pode optar por religies diferentes. Em
vista disso, bom saber em qual perodo uma pessoa professa uma determinada religio. Por exemplo, o sr.
Roberto Bambini Zacharias, dos 7 aos 30 anos era Catlico Apostlico Romano, dos 31 aos 40 anos no
professou nenhuma religio e nos anos restantes de vida ele era Esprita.
Nenhuma outra informao tem importncia relevante para a famlia.
.
V0
44
Banco de Dados I
V0
45
Banco de Dados I
SQL
V0
46
Banco de Dados I
V0
47
Banco de Dados I
1.
CREATE TABLE
Use a instruo CREATE TABLE para definir uma nova tabela e seus campos e restries de campo
1.1. Sintaxe
CREATE TABLE tabela (campo1 tipo [(tamanho)] [NOT NULL] [ndice1] [, campo2 tipo [(tamanho)] [NOT
NULL] [ndice2] [, ...]] [, CONSTRAINT ndicedemulticampos [, ...]])
1.2. A instruo CREATE TABLE tem estas partes:
Parte
tabela
Descrio
O nome da tabela a ser criada.
campo1, campo2
O nome do campo ou campos a serem criados na nova tabela. Uma tabela deve ter
pelo menos um campo.
tipo
tamanho
ndice1, ndice2
Uma clusula CONSTRAINT que define um ndice de campo nico. Para maiores
informaes vide a clusula CONSTRAINT deste manual.
Uma clusula CONSTRAINT que define um ndice de campos mltiplos. Para
maiores informaes consulte o tpico CONSTRAINT.
ndicedemulticampos
1.2. Exemplos
a)
c)
V0
48
Banco de Dados I
1.3. Comentrios
Uma clusula CONSTRAINT estabelece vrias restries em um campo e pode ser utilizada para estabelecer a
chave primria.
V0
49
Banco de Dados I
Descrio
O nome da tabela a ser alterada.
Campo
Tipo
Tamanho
ndice
ndicedemulticampos
Nomedondice
2.3. Exemplos
a)
V0
50
Banco de Dados I
Utilizar ADD CONSTRAINT para adicionar um ndice de campos mltiplos. Para maiores informaes sobre
ndices de campos mltiplos, consulte o tpico da clusula CONSTRAINT.
Utilizar DROP COLUMN para excluir um campo. Voc especifica somente o nome do campo.
Utilizar DROP CONSTRAINT para excluir um ndice de campos mltiplos. Voc especifica somente o nome
do ndice aps a palavra reservada CONSTRAINT.
Voc no pode adicionar ou excluir mais de um campo ou ndice de cada vez.
Voc pode utilizar NOT NULL em um campo nico ou dentro de uma clusula CONSTRAINT nomeada que
se aplica tanto a uma CONSTRAINT de campo nico ou campos mltiplos. Contudo, voc pode aplicar a
restrio NOT NULL somente uma vez a um campo pois, seno, ocorrer um erro em tempo de execuo.
3.
DROP TABLE
Exclui uma tabela existente de um banco de dados ou exclui um ndice existente de uma tabela.
3.1. Sintaxe
DROP {TABLE tabela | INDEX ndice ON tabela}
3.2. A instruo DROP tem estas partes:
Parte
Tabela
Descrio
O nome da tabela a ser excluda ou a tabela a partir da qual um ndice deve ser excludo.
ndice
3.3. Exemplos
a)
V0
51
Banco de Dados I
CREATE INDEX
Cria um novo ndice em uma tabela existente.
4.1. Sintaxe
CREATE [ UNIQUE ] INDEX ndice ON tabela (campo [ASC|DESC][, campo [ASC|DESC], ...])
[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]
4.2. A instruo CREATE INDEX tem estas partes:
Parte
ndice
Descrio
O nome do ndice a ser criado.
tabela
campo
O nome do campo ou campos a serem indexados. Para criar um ndice de campo nico, liste o
nome do campo entre parnteses aps o nome da tabela. Para criar um ndice de campos
mltiplos, liste o nome de cada campo a ser includo no ndice. Para criar ndices
descendentes, use a palavra reservada DESC; caso contrrio, assume-se que os ndices so
ascendentes.
4.3. Exemplos
a)
b) Criar um ndice para o campo nome da tabela DEPARTAMENTOS proibindo a entrada de dados nulos.
CREATE INDEX IdxNome
V0
52
Banco de Dados I
Criar um ndice para o campo nome da tabela DEPARTAMENTOS que no contenha valores nulos
CREATE INDEX IdxNome
ON DEPARTAMENTOS (Nome ASC)
WITH IGNORE NULL
A clusula WITH IGNORE NULL proibe valores nulos no ndice.
4.4. Comentrios
Para proibir valores duplicados no campo ou campos indexados de diferentes registros, use a palavra reservada
UNIQUE.
Na clusula WITH opcional, voc pode impor regras de validao de dados. Voc pode:
Proibir entradas Null no campo ou campos indexados dos novos registros, utilizando a opo DISALLOW
NULL
Impedir que registros com valores Null no campo ou campos indexados sejam includos no ndice utilizando a
opo IGNORE NULL.
Designar o campo ou campos indexados como a chave primria utilizando a palavra reservada PRIMARY.
Isto significa que a chave exclusiva e, portanto, voc pode omitir a palavra reservada UNIQUE.
Voc tambm pode utilizar a instruo ALTER TABLE para adicionar um ndice de campo nico ou de
campos mltiplos a uma tabela e pode utilizar a instruo ALTER TABLE ou a instruo DROP para remover
um ndice criado com ALTER TABLE ou CREATE INDEX.
5.
CONSTRAINT
Uma restrio semelhante a um ndice, embora tambm possa ser utilizada para estabelecer uma relao com uma
outra tabela.
Voc utiliza a clusula CONSTRAINT nas instrues ALTER TABLE e CREATE TABLE para criar ou excluir
restries. H dois tipos de clusulas CONSTRAINT: um para criar uma restrio em um campo nico e outro para
criar uma restrio em mais de um campo.
5.4. Sintaxe
Restrio de campo nico:
CONSTRAINT nome {PRIMARY KEY | UNIQUE | NOT NULL | REFERENCES tabelaexterna
[(campoexterno1, campoexterno2)]}
V0
53
Banco de Dados I
Descrio
O nome da restrio a ser criada.
O nome do campo ou campos a ser designado(s) chave primria.
O nome do campo ou campos a ser designado(s) como uma chave exclusiva.
O nome do campo ou campos que esto restritos a valores no-Null
O nome do campo ou campos de uma chave externa que fazem referncia a campos
em uma outra tabela.
O nome da tabela externa contendo o campo ou campos especificados por
campoexterno.
O nome do campo ou campos na tabelaexterna especificados por ref1, ref2. Voc
pode omitir esta clusula se o campo referenciado for a chave primria de
tabelaexterna.
5.6. Comentrios
Voc utiliza a sintaxe para uma restrio de campo nico na clusula de definio de campo de uma instruo
ALTER TABLE ou CREATE TABLE que se segue imediatamente especificao do tipo de dados do
campo.
Voc utiliza a sintaxe para uma restrio de campos mltiplos sempre que utilizar a palavra reservada
CONSTRAINT fora de uma clusula de definio de campo em uma instruo ALTER TABLE ou CREATE
TABLE.
Utilizando CONSTRAINT, voc pode designar um campo como um dos seguintes tipos de restries:
Voc pode utilizar a palavra reservada UNIQUE para designar um campo como chave exclusiva. Isto significa
que no pode haver dois registros em uma tabela que tenham o mesmo valor neste campo. Voc pode
restringir qualquer campo ou lista de campos como exclusivo. Se uma restrio de campos mltiplos for
designada como uma chave exclusiva, os valores combinados de todos os campos no ndice devem ser
exclusivos, mesmo que dois ou mais registros tenham o mesmo valor em apenas um dos campos.
V0
54
Banco de Dados I
Voc pode utilizar as palavras reservadas PRIMARY KEY para designar um campo ou conjunto de campos em
uma tabela como uma chave primria. Todos os valores na chave primria devem ser exclusivos e no Nulos e
s pode haver uma chave primria para uma tabela.
Voc pode utilizar as palavras reservadas FOREIGN KEY para designar um campo como uma chave externa.
Se a chave primria da tabela externa consistir em mais de um campo, voc dever utilizar uma definio de
restrio de campos mltiplos, listando todos os campos referenciais, o nome da tabela externa e os nomes dos
campos referenciados na tabela externa, na mesma ordem em que os campos referenciais so listados. Se o
campo ou campos referenciados forem a chave primria da tabela externa, voc no precisar especificar os
campos referenciados por padro, o mecanismo de banco de dados se comporta como se a chave primria da
tabela externa fosse os campos referenciados.
6.
INSERT INTO
Adiciona um registro ou mltiplos registros a uma tabela. Isto chamado de consulta acrscimo.
6.4. Sintaxe
Acrscimo de mltiplos registros:
INSERT INTO destino [IN bancodedadosexterno] [(campo1[, campo2[, ...]])]
SELECT [origem.]campo1[, campo2[, ...]
FROM expressodetabela
Consulta acrscimo de registro nico:
INSERT INTO destino [(campo1[, campo2[, ...]])]
VALUES (valor1[, valor2[, ...])
6.5. A instruo INSERT INTO possui as partes a seguir:
Parte
destino
bancodedadosexterno0
origem
campo1, campo2
Expressodetabela
Descrio
O nome da tabela ou consulta qual acrescentar os registros.
O caminho at um banco de dados externo. Para obter uma descrio
do caminho, consulte a clusula IN.
O nome da tabela ou consulta a partir da qual os registros vo ser
copiados.
Nomes dos campos aos quais os dados sero acrescentados, se se
seguirem a um argumento destino, ou os nomes dos campos a partir
dos quais os dados sero obtidos, se se seguirem a um argumento
origem.
V0
55
Banco de Dados I
valor1, valor2
6.6. Comentrios
Voc pode usar a instruo INSERT INTO para adicionar um nico registro a uma tabela usando a sintaxe da
consulta acrscimo de registro nico como mostrado acima. Nesse caso, o cdigo especifica o nome e o valor
de cada campo do registro. Voc deve especificar cada um dos campos do registro ao qual ser atribudo um
valor e um valor para aquele campo. Quando voc no especifica os campos, o valor padro ou Null inserido
para colunas ausentes. Os registros so adicionados ao fim da tabela.
Voc pode tambm usar INSERT INTO para acrescentar um conjunto de registros de uma outra tabela ou
consulta utilizando a clusula SELECT ... FROM, como mostrado acima na sintaxe da consulta acrscimo de
mltiplos registros. Nesse caso, a clusula SELECT especifica os campos a acrescentar tabela destino
especificada.
A tabela origem ou destino pode especificar uma tabela ou uma consulta. Se for especificada uma consulta, o
mecanismo de banco de dados Microsoft Jet acrescenta registros a todas as tabelas especificadas pela consulta.
INSERT INTO opcional, mas, quando includa, precede a instruo SELECT.
Se a tabela de destino contiver uma chave primria, certifique-se de acrescentar valores exclusivos no-Null ao
campo ou campos da chave primria; se no o fizer, o mecanismo de banco de dados Microsoft Jet no
acrescentar os registros.
Se voc acrescentar os registros a uma tabela com um campo AutoNumerao e quiser renumerar os registros
acrescentados, no inclua esse campo. Inclua o campo AutoNumerao na consulta se quiser conservar os
valores originais do campo.
Use a clusula IN para acrescentar os registros a uma tabela em um outro banco de dados.
Para criar uma nova tabela, use a instruo SELECT... INTO em lugar de criar uma consulta criar tabela.
Para descobrir quais registros sero acrescentados antes de executar a consulta acrscimo, primeiro execute e
visualize os resultados de uma consulta seleo que use os mesmos critrios de seleo.
Uma consulta acrscimo copia registros de uma ou mais tabelas para outra. As tabelas que contm os registros
que voc acrescenta no so afetadas pela consulta acrscimo.
Em vez de acrescentar registros existentes de uma outra tabela, voc pode especificar o valor de cada campo
em um nico registro novo, usando a clusula VALUES. Se voc omitir a lista de campos, a clusula
VALUES dever incluir valores para todos os campos da tabela; caso contrrio, a operao INSERT falhar.
Use uma instruo INSERT INTO adicional com uma clusula VALUES para cada registro adicional que
quiser criar.
V0
56
Banco de Dados I
7.
DELETE
Remove os registros de uma ou mais tabelas relacionadas na clusula FROM que satisfaam clusula WHERE.
7.4. Sintaxe
DELETE [tabela.*] FROM tabela WHERE critrios
7.5. A instruo DELETE possui as partes a seguir:
Parte
tabela.*
Descrio
O nome opcional da tabela da qual so excludos registros.
tabela
Critrios
7.6. Comentrios
DELETE especialmente til quando voc quer excluir muitos registros.
Para excluir uma tabela inteira do banco de dados, voc pode usar o mtodo Execute com uma instruo
DROP. No entanto, se voc excluir a tabela a estrutura ser perdida. Em contrapartida, quando voc usa
DELETE, somente os dados so excludos; a estrutura da tabela e todas as suas propriedades, como atributos
de campo e ndices, permanecem intactos.
Voc pode usar DELETE para remover registros de tabelas que esto em um relacionamento um-para-muitos
com outras tabelas. As operaes de excluso em cascata fazem com que os registros em tabelas que esto no
lado muitos do relacionamento sejam excludos quando o registro correspondente no lado um do
relacionamento excludo na consulta. Por exemplo, nos relacionamentos entre as tabelas Clientes e Pedidos,
a tabela Clientes est no lado um e a tabela Pedidos est no lado muitos do relacionamento. A excluso de um
registro de Clientes resulta na excluso dos registros Pedidos correspondentes se a opo de excluso em
cascata estiver especificada.
O comando DELETE exclui registros inteiros, no somente os dados em campos especficos. Se voc quiser
excluir valores de um campo especfico, crie uma consulta atualizao que altere os valores para Null.
7.7. Importante
V0
57
Banco de Dados I
Depois de remover os registros utilizando uma consulta excluso, voc no poder desfazer a operao. Se
quiser saber quais registros foram excludos, examine antes os resultados de uma consulta seleo que use os
mesmos critrios e, depois, execute a consulta excluso.
8. UPDATE
Altera valores de campos em uma tabela especificada, com base em critrios especificados.
8.4. Sintaxe
UPDATE tabela SET novovalor WHERE critrios;
8.5. A instruo UPDATE possui as partes a seguir:
Parte
tabela
Novovalor
critrios
Descrio
O nome da tabela contendo os dados que voc quer modificar.
Uma expresso que determina o valor a ser inserido em um campo especfico dos registros
atualizados.
Uma expresso que determina quais registros sero atualizados. Apenas os registros que
satisfazem expresso so atualizados.
8.6. Comentrios
UPDATE especialmente til quando voc quer alterar vrios registros ou quando os registros que voc quer
alterar esto em vrias tabelas.
Voc pode alterar vrios campos ao mesmo tempo. O exemplo a seguir aumenta os valores de Quantia do
Pedido em 10% e os valores de Frete em 3% para transportadores no Reino Unido (UK):
UPDATE Pedidos
SET QuantiaDoPedido = QuantiaDoPedido * 1.1, Frete = Frete * 1.03
WHERE PasDeDestino = 'UK';
Importante
UPDATE no gera um conjunto de resultados. Alm disso, depois de atualizar os registros usando uma consulta
de atualizao, voc no poder desfazer a operao. Se quiser saber quais os registros que foram atualizados,
examine antes os resultados de uma consulta seleo que usem os mesmos critrios e, depois, execute a
consulta de atualizao.
Mantenha sempre cpias de backup dos dados. Se voc atualizar os registros errados, poder recuper-los a
partir das cpias.
V0
58
Banco de Dados I
9. SELECT INTO
Cria uma criar tabela.
9.4. Sintaxe
SELECT campo1[, campo2[, ...]] INTO novatabela [IN bancodedadosexterno] FROM origem
9.5. A instruo SELECT...INTO possui as partes a seguir:
Parte
campo1, campo2
novatabela
bancodedadosexterno
origem
Descrio
Os nomes dos campos a ser copiados na nova tabela.
O nome da tabela a ser criada. Deve ser compatvel com s
convenes de nomenclatura padro. Se novatabela for igual ao
nome de uma tabela existente, ocorrer um erro interceptvel.
O caminho para um banco de dados externo. Para obter uma
descrio do caminho, consulte a clusula IN.
O nome da tabela existente a partir da qual os registros so
selecionados. Podem ser tabelas simples ou mltiplas ou um
consulta.
9.6. Comentrios
Voc pode utilizar consultas criar tabela para arquivar registros, fazer cpias de backup das tabelas ou
fazer cpias para exportar para um outro banco de dados, ou para usar como base para relatrios que
exibem dados sobre um determinado perodo de tempo. Por exemplo, voc poderia produzir um relatrio
de Vendas Mensais por Regio, executando a mesma consulta criar tabela todos os meses.
Convm definir uma chave primria para a nova tabela. Quando voc cria a tabela, os campos na nova
tabela herdam o tipo de dados e tamanho de campo de cada campo das tabelas base da consulta, mas
nenhuma outra propriedade do campo ou da tabela transferida.
Para adicionar dados a uma tabela existente, use a instruo INSERT INTO em vez de criar uma consulta
acrscimo.
Para descobrir quais registros sero selecionados antes de executar a consulta criar tabela, examine antes
os resultados de uma instruo SELECT que use os mesmos critrios de seleo.
V0
59
Banco de Dados I
10. SELECT
Retorna informaes do banco de dados como um conjunto de registros.
10.4. Sintaxe
SELECT [atributo] { * | tabela.* | [tabela.]campo1 [AS alias1] [, [tabela.]campo2 [AS alias2] [, ...]]}
FROM expressodetabela [, ...] [IN bancodedadosexterno]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]
[WITH OWNERACCESS OPTION]
10.5. A instruo SELECT possui as partes a seguir:
Parte
atributo
Descrio
Um dos atributos a seguir: ALL, DISTINCT, DISTINCTROW ou
TOP. Voc utiliza o atributo para restringir o nmero de registros
retornados. Se nenhum for especificado, o padro ser ALL.
tabela
campo1, campo2
alias1, alias2
expressodetabela
bancodedadosexterno
10.6. Comentrios
Para executar esta operao, o mecanismo de banco de dados Microsoft Jet procura a tabela ou tabelas
especificadas, extrai as colunas escolhidas, seleciona as linhas que atendem aos critrios e classifica ou
agrupa as linhas resultantes na ordem especificada.
As instrues SELECT no alteram os dados no banco de dados.
V0
60
Banco de Dados I
SELECT geralmente a primeira palavra em uma instruo SQL. A maioria das instrues SQL so
instrues SELECT ou SELECT...INTO.
A sintaxe mnima para uma instruo SELECT :
SELECT campos FROM tabela
Voc pode utilizar um asterisco (*) para selecionar todos os campos em uma tabela. O exemplo a seguir
seleciona todos os campos na tabela Funcionrios:
SELECT * FROM Funcionrios;
Se um nome de campo for includo em mais de uma tabela na clusula FROM, coloque antes dele o nome
da tabela e o operador . (ponto). No exemplo a seguir, o campo Departamento est tanto na tabela
Funcionrios quanto na tabela Supervisores. A instruo SQL seleciona os departamentos a partir da
tabela Funcionrios e os nomes de supervisores a partir da tabela Supervisores:
SELECT Funcionrios.Departamento, Supervisores.SupvNome
FROM Funcionrios INNER JOIN Supervisores
WHERE Funcionrios.Departamento = Supervisores.Departamento;
Sempre que utilizar funes agregadas ou consultas que retornam nomes de objetos Field ambguos ou
duplicados, voc deve utilizar a clusula AS para fornecer um nome alternativo para o objeto Field. O
exemplo a seguir utiliza o ttulo ContagemDePessoas para nomear o objeto Field retornado no objeto
Recordset resultante:
SELECT COUNT(CdigoDoFuncionrio)
AS ContagemDePessoas FROM Funcionrios;
Voc pode utilizar as outras clusulas em uma instruo SELECT para ampliar a restrio e organizar os
dados retornados. Para maiores informaes, consulte o tpico da Ajuda para a clusula que voc est
utilizando.
11. Atributos ALL, DISTINCT, DISTINCTROW e TOP
Especifica registros selecionados com consultas SQL.
11.4.
Sintaxe
SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]
FROM tabela
11.5.
Descrio
Adotada quando voc no inclui um dos atributos. O mecanismo de banco de
dados Microsoft Jet seleciona todos os registros que atendam s condies na
V0
61
Banco de Dados I
Omite registros que contm dados duplicados nos campos selecionados. Para serem
includos nos resultados da consulta, os valores de cada campo listado na instruo
SELECT devem ser exclusivos. Por exemplo, vrios funcionrios listados em uma
tabela Funcionrios podem ter o mesmo sobrenome. Se dois registros contiverem
Smith no campo Sobrenome, a instruo SQL a seguir retornar somente um deles:
SELECT DISTINCT Sobrenome
FROM Funcionrios;
Se voc omitir DISTINCT, esta consulta retornar os dois registros Smith.Se a
clusula SELECT contiver mais de um campo, a combinao de valores de todos os
campos devero ser exclusivos para que um dado registro seja includo nos
resultados.A sada de uma consulta que utiliza DISTINCT no atualizvel e no
reflete alteraes subseqentes feitas por outros usurios.
DISTINCTROW
TOP n [PERCENT]
V0
62
Banco de Dados I
Descrio
O nome do campo ou campos a serem recuperados juntamente com quaisquer aliases
de nome de campo, funes agregadas SQL, atributos de seleo (ALL, DISTINCT,
DISTINCTROW ou TOP) ou outras opes da instruo SELECT.
expressodetabela
Uma expresso que identifica uma ou mais tabelas a partir das quais os dados so
recuperados. A expresso pode ser um simples nome de tabela, um nome de consulta
salvo ou uma composio resultante de um INNER JOIN, LEFT JOIN, ou RIGHT
JOIN.
V0
63
Banco de Dados I
bancodedadosexterno
12.3. Comentrios
FROM exigido e segue-se a qualquer instruo SELECT.
A ordem dos nomes de tabela em expressodetabela no importante.
Para um melhor desempenho e facilidade de utilizao, convm utilizar uma tabela vinculada em vez de
uma clusula IN para recuperar dados de um banco de dados externo.
O exemplo a seguir mostra como voc pode recuperar os dados da tabela Funcionrios:
SELECT Sobrenome, Nome
FROM Funcionrios;
13.
Clusula GROUP BY
Combina registros com valores idnticos na lista de campos especificada em um nico registro. Um
valor de resumo criado para cada registro se voc incluir uma funo agregada SQL, como Sum ou
Count, na instruo SELECT.
13.1. Sintaxe
SELECT listadecampos
FROM tabela
WHERE critrios
[GROUP BY listadecamposdegrupo]
13.2. Uma instruo SELECT contendo uma clusula GROUP BY possui as partes a seguir:
Parte
listadecampos
Descrio
O nome do campo ou dos campos a serem recuperados juntamente com
qualquer alias de nome de campo, funes agregadas SQL, atributos de
seleo (ALL, DISTINCT, DISTINCTROW ou TOP) ou outras opes da
instruo SELECT.
tabela
critrios
V0
64
Banco de Dados I
listadecamposdegrupo
13.3. Comentrios
GROUP BY opcional.
Os valores de resumo so omitidos se no houver uma funo agregada SQL na instruo SELECT.
Valores Null nos campos GROUP BY so agrupados e no so omitidos. Contudo, valores Null no
so avaliados em nenhuma funo SQL agregada.
Utilize a clusula WHERE para excluir linhas que voc no deseja que permaneam agrupadas e
utilize a clusula HAVING para filtrar os registros depois de eles terem sido agrupados.
Todos os campos na lista de campos SELECT devem estar includos na clusula GROUP BY ou serem
includos como argumentos em uma funo SQL agregada.
14.
Clusula HAVING
Especifica quais registros agrupados so exibidos na instruo SELECT com uma clusula GROUP
BY. Depois de GROUP BY combinar os registros, HAVING exibir qualquer registro agrupado pela
clusula GROUP BY que satisfaa s condies da clusula HAVING.
14.1. Sintaxe
SELECT listadecampos
FROM tabela
WHERE critriosdeseleo
GROUP BY listadecamposdegrupo
[HAVING critriosdegrupo]
14.2. Uma instruo SELECT contendo uma clusula HAVING possui as partes a seguir:
Parte
listadecampos
Descrio
O nome do campo ou campos a serem recuperados juntamente com qualquer
alias de nome de campo, funes SQL agregadas, atributos de seleo (ALL,
DISTINCT, DISTINCTROW ou TOP) ou outras opes da instruo
SELECT.
tabela
critriosdeseleo
V0
65
Banco de Dados I
listadecamposdegrupo
critriosdegrupo
14.3. Comentrios
HAVING opcional.
HAVING semelhante a WHERE, que determina quais registros so selecionados. Depois de os
registros serem agrupados com o GROUP BY, HAVING determina os registros a serem exibidos:
SELECT CdigoDaCategoria, Sum(UnidadesNoEstoque)
FROM Produtos
GROUP BY CdigoDaCategoria
HAVING Sum(UnidadesNoEstoque) > 100 And Like "BOS*";
Uma clusula HAVING pode conter at 40 expresses vinculadas por operadores lgicos, como And e
Or.
15. Clusula IN
Identifica tabelas em qualquer banco de dados externo ao qual o mecanismo de banco de dados
Microsoft Jet pode se conectar, como um banco de dados dBASE ou Paradox ou um banco de dados
Microsoft Jet externo.
15.1. Sintaxe
Para identificar uma tabela de destino:
[SELECT | INSERT] INTO destino IN
{caminho | ["caminho" "tipo"] | ["" [tipo; DATABASE = caminho]]}
Para identificar uma tabela de origem:
FROM expressodetabela IN
{caminho | ["caminho" "tipo"] | ["" [tipo; DATABASE = caminho]]}
15.2. Uma instruo SELECT contendo uma clusula IN possui as partes a seguir:
Parte
destino
Descrio
O nome da tabela externa qual os dados so inseridos.
V0
66
Banco de Dados I
expressodetabela O nome da tabela ou tabelas a partir das quais os dados so recuperados. Este
argumento pode ser um nico nome de tabela, uma consulta salva ou uma
composio resultante de um INNER JOIN, LEFT JOIN ou RIGHT JOIN.
caminho
tipo
15.3. Comentrios
Voc pode utilizar IN para se conectar a um nico banco de dados externo de cada vez.
Em alguns casos, o argumento caminho refere-se ao diretrio que contm os arquivos do banco de
dados. Por exemplo, ao trabalhar com tabelas de banco de dados dBASE, FoxPro ou Paradox, o
argumento caminho especifica o diretrio contendo os arquivos .dbf ou .db. O nome do arquivo de
tabela deriva do argumento destino ou expressodetabela.
Para especificar um banco de dados no-Microsoft Jet, anexe um ponto-e-vrgula (;) ao nome e coloqueo entre aspas simples (' ') ou duplas (" "). Por exemplo, tanto 'dBASE IV;' quanto "dBASE IV;" so
aceitos.
Voc tambm pode utilizar a palavra reservada DATABASE para especificar o banco de dados externo.
Por exemplo, as linhas a seguir especificam a mesma tabela:
... FROM Table IN "" [dBASE IV; DATABASE=C:\DBASE\DATA\SALES;];
... FROM Table IN "C:\DBASE\DATA\SALES" "dBASE IV;"
Para um melhor desempenho e facilidade de uso, utilize uma tabela vinculada em lugar de IN.
Voc tambm pode utilizar a palavra reservada IN como um operador de comparao em uma
expresso. Para obter maiores informaes, consulte o operador In.
16.
Clusula ORDER BY
Classifica os registros resultantes de uma consulta em um campo ou campos especificados, em ordem
crescente ou decrescente.
16.1. Sintaxe
SELECT listadecampos
FROM tabela
WHERE critriosdeseleo
[ORDER BY campo1 [ASC | DESC ][, campo2 [ASC | DESC ]][, ...]]]
V0
67
Banco de Dados I
16.2.
Uma instruo SELECT contendo uma clusula ORDER BY possui as partes a seguir:
Parte
Descrio
listadecampos O nome do campo ou campos a serem recuperados juntamente com qualquer alias de
nome de campo, funes SQL agregadas, atributos de seleo (ALL, DISTINCT, DISTINCTROW ou
TOP) ou outras opes da instruo SELECT.
tabela O nome da tabela a partir da qual os registros so recuperados. Para obter maiores
informaes, consulte a clusula FROM.
critriosdeseleo
Critrios de seleo. Se a instruo incluir uma clusula WHERE, o
mecanismo de banco de dados Microsoft Jet ordenar os valores depois de aplicar as condies
WHERE aos registros.
campo1, campo2 Os nomes dos campos nos quais os registros devem ser classificados.
16.3. Comentrios
ORDER BY opcional. Entretanto, se desejar que os dados sejam exibidos em ordem classificada,
ento voc dever utilizar ORDER BY.
A ordem de classificao padro ascendente (de A a Z, de 0 a 9). Os dois exemplos a seguir
classificam os nomes dos funcionrios pela ordem do sobrenome:
SELECT Sobrenome, Nome
FROM Funcionrios
ORDER BY Sobrenome;
SELECT Sobrenome, Nome
FROM Funcionrios
ORDER BY Sobrenome ASC;
Para classificar em ordem decrescente (de Z a A, de 9 a 0), adicione a palavra reservada DESC ao final
de cada campo que voc queira classificar em ordem decrescente. O exemplo a seguir seleciona os
salrios e os classifica em ordem decrescente:
SELECT Sobrenome, Salrio
FROM Funcionrios
ORDER BY Salrio DESC, Sobrenome;
Se voc especificar um campo contendo dados de Memorando ou Objeto OLE na clusula ORDER
BY, um erro ser gerado. O mecanismo de banco de dados Microsoft Jet no classifica campos desses
tipos.
ORDER BY geralmente o ltimo item em uma instruo SQL.
V0
68
Banco de Dados I
Voc pode incluir campos adicionais na clusula ORDER BY. Os registros so classificados pelo
primeiro campo listado aps ORDER BY. Os registros que tm valores iguais naquele campo sero
ento classificados pelo valor no segundo campo listado e assim por diante.
17. Clusula WHERE
Especifica quais registros das tabelas listadas na clusula FROM so afetados por uma instruo
SELECT, UPDATE ou DELETE.
17.1. Sintaxe
SELECT listadecampos
FROM expressodetabela
WHERE critrios
17.2. Uma instruo SELECT contendo uma clusula WHERE possui as partes a seguir:
Parte
Descrio
listadecampos
O nome do campo ou campos a serem recuperados juntamente com quaisquer aliases
de nome de campo, atributos de seleo (ALL, DISTINCT, DISTINCTROW ou TOP) ou outras opes
da instruo SELECT.
expressodetabela O nome da tabela ou tabelas a partir das quais os dados so recuperados.
critrios Uma expresso que os registros devem atender para serem includos nos resultados da
consulta.
17.3. Comentrios
O mecanismo de banco de dados Microsoft Jet seleciona os registros que satisfazem s condies
listadas na clusula WHERE. Se voc no especificar uma clusula WHERE, a consulta retornar todas
as linhas da tabela. Se voc especificar mais de uma tabela na consulta e no tiver includo uma clusula
WHERE ou uma clusula JOIN, a consulta ir gerar um produto cartesiano das tabelas.
WHERE opcional, mas quando includo, se segue ao FROM. Por exemplo, voc pode selecionar todos
os funcionrios no departamento de vendas (WHERE Depto = 'Vendas') ou todos os clientes com idades
entre 18 e 30 anos (WHERE Idade Between 18 And 30).
Se voc no utilizar uma clusula JOIN para executar operaes de associao SQL em vrias tabelas, o
objeto Recordset resultante no ser atualizvel.
WHERE semelhante a HAVING. WHERE determina quais registros so selecionados. Da mesma
forma, depois de os registros serem agrupados com GROUP BY, HAVING determina quais registros
sero exibidos.
Utilize a clusula WHERE para eliminar os registros que voc no deseja que sejam agrupados por uma
clusula GROUP BY.
V0
69
Banco de Dados I
Utilize vrias expresses para determinar quais registros a instruo SQL retorna. Por exemplo, a
instruo SQL a seguir seleciona todos os funcionrios cujos salrios sejam maiores que R$21.000:
SELECT Sobrenome, Salrio
FROM Funcionrios
WHERE Salrio > 21000;
Uma clusula WHERE pode conter at 40 expresses vinculadas por operadores lgicos, como And e
Or.
Ao digitar um nome de campo que contm um espao ou pontuao, coloque o nome entre colchetes ([
]). Por exemplo, uma tabela de informaes sobre o cliente poderia incluir informaes sobre clientes
especficos:
SELECT [Restaurante Favorito do Cliente]
Quando voc especifica o argumento critrios, os literais de data devero estar no formato dos EUA,
mesmo que voc no esteja utilizando a verso norte-americana do mecanismo de banco de dados
Microsoft Jet. Por exemplo, 10 de maio de 1996 escrito 10/5/96 no Brasil e 5/10/96 nos Estados
Unidos. Certifique-se de colocar os literais de data entre sinais de nmero (#), como mostrado nos
exemplos a seguir.
Para encontrar registros datados de 10 de maio de 1996 em um banco de dados dos Estados Unidos,
voc deve utilizar a instruo SQL a seguir:
SELECT *
FROM Pedidos
WHERE DataDeEnvio = #5/10/96#;
Voc tambm pode utilizar a funo DateValue, que sensvel s configuraes internacionais
estabelecidas pelo Microsoft Windows. Por exemplo, utilize este cdigo para os Estados Unidos:
SELECT *
FROM Pedidos
WHERE DataDeEnvio = DateValue('5/10/96');
E utilize este cdigo para o Brasil:
SELECT *
FROM Pedidos
WHERE DataDeEnvio = DateValue('10/5/96');
Se a coluna referenciada na seqncia de critrios for do tipo GUID, a expresso de critrios utilizar
uma sintaxe ligeiramente diferente:
WHERE ReplicaID = {GUID {12345678-90AB-CDEF-1234-567890ABCDEF}}
No deixe de incluir as chaves e hifens embutidos, como mostrado.
V0
70
Banco de Dados I
18.1. Sintaxe
instruosql WITH OWNERACCESS OPTION
18.2. Comentrios
A declarao WITH OWNERACCESS OPTION opcional.
O exemplo a seguir permite que o usurio visualize informaes sobre salrios (mesmo que, de outra
forma, o usurio no tenha permisso para visualizar a tabela FolhaDePagamento), desde que o
proprietrio da consulta tenha essa permisso:
SELECT Sobrenome, Nome, Salrio
FROM Funcionrios
ORDER BY Sobrenome
WITH OWNERACCESS OPTION;
Se de alguma outra forma o usurio for impedido de criar ou adicionar a uma tabela, voc pode usar
WITH OWNERACCESS OPTION para permitir que ele execute uma consulta criar tabela ou consulta
acrscimo.
Se voc deseja impor configuraes de segurana de grupo de trabalho e permisses de usurios, no
inclua a declarao WITH OWNERACCESS OPTION.
Essa opo requer que voc tenha acesso ao arquivo System.mdw associado ao banco de dados.
realmente til somente nas implementaes de multiusurios com segurana.
V0
71
Banco de Dados I
V0
72
Banco de Dados I
21.2. Comentrios
Voc pode utilizar Count para contar o nmero de registros em uma consulta base. Por exemplo, voc
poderia utilizar Count para contar o nmero de pedidos enviados a um determinado pas.
Embora expr possa realizar um clculo em um campo, Count simplesmente computa o nmero de
registros, independentemente dos valores armazenados nos registros.
A funo Count no conta registros que tenham campos Null, exceto quando expr for o caractere curinga
asterisco (*). Se voc utilizar um asterisco, Count calcular o nmero total de registro, inclusive aqueles
que contm campos Null. Count(*) consideravelmente mais rpido que Count([Nome da Coluna]).
No coloque o asterisco entre aspas (' '). O exemplo a seguir calcula o nmero de registros na tabela
Pedidos:
SELECT Count(*) AS TotalDePedidos
FROM Pedidos;
Se expr identificar vrios campos, a funo Count contar um registro somente se um dos campos no
for Null. Se todos os campos especificados forem Null, o registro no ser contado. Separe os nomes de
campo com um e-comercial (&). O exemplo a seguir mostra como voc poderia limitar a contagem aos
registros nos quais DataDeEnvio ou Frete no fosse Null:
SELECT Count('DataDeEnvio & Frete') AS [Not Null]
FROM Pedidos;
Voc pode utilizar Count em uma expresso de consulta. Voc tambm pode utilizar esta expresso na
propriedade SQL de um objeto QueryDef ou durante a criao de um objeto Recordset baseado em uma
consulta SQL.
22. Funo Sum
Retorna a soma de um conjunto de valores contido em um campo especificado em uma consulta.
22.1. Sintaxe
Sum(expr)
O espao reservado expr representa uma expresso de seqncia que identifica o campo que contm os
dados numricos que voc quer adicionar ou uma expresso que realiza um clculo utilizando os dados
naquele campo. Os operandos em expr podem incluir o nome de um campo de tabela, uma constante ou
uma funo (que pode ser intrnseca ou definida pelo usurio, mas nenhuma das outras funes
agregadas SQL).
22.2. Comentrios
A funo Sum totaliza os valores em um campo. Por exemplo, voc poderia utilizar a funo Sum para
determinar o custo total dos encargos de frete.
V0
73
Banco de Dados I
A funo Sum ignora os registros que contenham campos Null. O exemplo a seguir mostra como
voc pode calcular a soma dos produtos dos campos PreoUnitrio e Quantidade:
SELECT Sum(PreoUnitrio * Quantidade)AS [Receita Total]
FROM [Detalhes do Pedido];
Voc pode utilizar a funo Sum em uma expresso de consulta. Voc tambm pode utilizar esta
expresso na propriedade SQL de um objeto QueryDef ou durante a criao de um objeto Recordset,
com base em uma consulta SQL.
23. Operao INNER JOIN
Combina registros de duas tabelas sempre que houver valores correspondentes em um campo comum.
23.1. Sintaxe
FROM tabela1 INNER JOIN tabela2 ON tabela1.campo1 opercomp tabela2.campo2
23.2. A operao INNER JOIN possui as partes a seguir:
Parte
tabela1, tabela2
Descrio
Os nomes das tabelas das quais os registros so combinados.
campo1, campo2 Os nomes dos campos que so associados. Se no forem numricos, os campos
devero ser do mesmo tipo de dados e conter o mesmo tipo de dados, mas no precisaro ter o mesmo
nome.
opercomp Qualquer operador de comparao relacional: "=," "<," ">," "<=," ">=," ou "<>."
23.3. Comentrios
Voc pode usar uma operao INNER JOIN em qualquer clusula FROM. Este o tipo mais comum de
associao. As associaes internas combinam registros de duas tabelas sempre que houver valores
correspondentes em um campo comum a ambas.
Voc pode usar INNER JOIN com as tabelas Departamentos e Funcionrios para selecionar todos os
funcionrios em cada departamento. Em contrapartida, para selecionar todos os departamentos (mesmo
que alguns no tenham funcionrios designados para eles) ou todos os funcionrios (mesmo que alguns
no sejam designados a um departamento), voc pode usar uma operao LEFT JOIN ou RIGHT JOIN
para criar uma associao externa.
Se voc tentar associar campos contento dados de Memorando ou Objeto OLE, ocorrer um erro.
Voc pode associar quaisquer dois campos numricos de tipos semelhantes. Por exemplo, voc pode
associar em campos AutoNumerao e Longo pois so tipos semelhantes. Entretanto, voc no pode
associar os tipos de campo nico e Duplo.
V0
74
Banco de Dados I
O exemplo a seguir mostra como voc poderia associar as tabelas Categorias e Produtos no campo
CdigoDaCategoria:
SELECT NomeDaCategoria, NomeDoProduto
FROM Categorias
INNER JOIN Produtos
ON Categorias.CdigoDaCategoria = Produtos.CdigoDaCategoria;
No exemplo acima, CdigoDaCategoria o campo associado, mas no includo na sada da
consulta pois no est includo na instruo SELECT. Para incluir o campo associado, inclua o
nome do campo na instruo SELECT neste caso, Categorias.CdigoDaCategoria.
Voc pode tambm vincular vrias clusulas ON em uma instruo JOIN, usando a sintaxe a
seguir:
SELECT campos
FROM tabela1 INNER JOIN tabela2
ON tabela1.campo1 opercomp tabela2.campo1 AND
ON tabela1.campo2 opercomp tabela2.campo2) OR
ON tabela1.campo3 opercomp tabela2.campo3)];
Voc pode tambm aninhar instrues JOIN usando a seguinte sintaxe:
SELECT campos
FROM tabela
INNER JOIN (tabela2 INNER JOIN [( ]tabela3
[INNER JOIN [( ]tabelax [INNER JOIN ...)]
ON tabela3.campo3 opercomp tabelax.campox)]
ON tabela2.campo2 opercomp tabela3.campo3)
ON tabela1.campo1 opercomp tabela2.campo2;
Uma instruo LEFT JOIN ou RIGHT JOIN pode ser aninhada dentro de uma INNER
JOIN, mas uma INNER JOIN no pode ser aninhada dentro de uma LEFT JOIN ou de
uma RIGHT JOIN.
24. Operaes LEFT JOIN, RIGHT JOIN
Combina registros da tabela de origem quando usados em qualquer clusula FROM.
24.1. Sintaxe
FROM tabela1 [ LEFT | RIGHT ] JOIN tabela2
ON tabela1.campo1 opercomp tabela2.campo2
24.2. As operaes LEFT JOIN e RIGHT JOIN possuem as partes a seguir:
Parte
tabela1, tabela2
Descrio
Os nomes das tabelas das quais os registros so combinados.
V0
75
Banco de Dados I
campo1, campo2 Os nomes dos campos que so associados. Os campos devem ser do mesmo tipo de
dados e conter o mesmo tipo de dados, mas no precisam ter o mesmo nome.
opercomp
Qualquer operador de comparao relacional: "=," "<," ">," "<=," ">=," ou "<>."
24.3. Comentrios
Utilize uma operao LEFT JOIN para criar uma associao externa esquerda. As associaes externas
esquerdas incluem todos os registros da primeira (esquerda) de duas tabelas, mesmo que no haja
valores correspondentes para os registros na segunda tabela (direita).
Utilize uma operao RIGHT JOIN para criar uma associao externa direita. As associaes externas
direitas incluem todos os registros da segunda (direita) de duas tabelas, mesmo que no haja valores
correspondentes para registros na primeira (esquerda) tabela.
Por exemplo, voc poderia usar LEFT JOIN com as tabelas Departamentos (esquerda) e Funcionrios
(direita) para selecionar todos os departamentos, inclusive os que no tenham funcionrios designados
para eles. Para selecionar todos os funcionrios, inclusive os que no esto designados para um
departamento, voc usaria RIGHT JOIN.
O exemplo a seguir mostra como voc poderia associar as tabelas Categorias e Produtos no campo
CdigoDaCategoria. A consulta produz uma lista de todas as categorias, inclusive aquelas que no
contm produtos:
SELECT NomeDaCategoria, NomeDoProduto
FROM Categorias
LEFT JOIN Produtos
ON Categorias.CdigoDaCategoria = Produtos.CdigoDaCategoria;
Neste exemplo, CdigoDaCategoria o campo associado, mas no includo nos resultados da consulta
pois no est includo na instruo SELECT. Para incluir o campo associado, digite o nome do campo na
instruo SELECT neste caso, Categorias.CdigoDaCategoria.
Para criar uma consulta que inclua somente registros nos quais os dados nos campos associados sejam os
mesmos, utilize uma operao INNER JOIN.
Uma operao LEFT JOIN ou RIGHT JOIN pode ser aninhada dentro de uma operao INNER JOIN, mas
uma INNER JOIN no pode ser aninhada dentro de uma LEFT JOIN ou de uma RIGHT JOIN. Consulte a
matria sobre como aninhar no tpico INNER JOIN para ver como aninhar associaes dentro de outras
associaes.
Voc pode vincular vrias clusulas ON. Consulte a matria sobre vinculao de clusulas no tpico INNER
JOIN para ver como isso feito.
Se voc tentar associar campos contendo dados de Memorando ou Objeto OLE, ocorrer um erro.
V0
76
Banco de Dados I
V0
77
Banco de Dados I
26.1. Sintaxe
Voc pode usar trs formas de sintaxe para criar uma subconsulta:
comparao [ANY | ALL | SOME] (instruosql)
expresso [NOT] IN (instruosql)
[NOT] EXISTS (instruosql)
26.2. Uma subconsulta possui as partes a seguir:
Parte
Descrio
comparao
Uma expresso e um operador de comparao que compara a expresso com
os resultados da subconsulta.
expresso
Uma expresso para a qual o conjunto de resultados da subconsulta
procurado.
instruosql
Uma instruo SELECT, que segue o mesmo formato e regras de qualquer
outra instruo SELECT. Deve estar entre parnteses.
26.3. Comentrios
Voc pode usar uma consulta em lugar de uma expresso na lista de campos de uma instruo SELECT
ou ema clusula WHERE ou HAVING. Em uma subconsulta, voc usa uma instruo SELECT para
proporcionar um conjunto de um ou mais valores especficos para avaliar na expresso de clusula
WHERE ou HAVING.
Use o atributo ANY ou SOME, que so sinnimos, para recuperar registros na consulta principal que
satisfaam a comparao com qualquer registro recuperado na subconsulta. O exemplo a seguir retorna
todos os produtos cujo preo unitrio maior que o de qualquer produto vendido com um desconto de
25% ou maior:
SELECT * FROM Produtos
WHERE PreoUnitrio > ANY
(SELECT PreoUnitrio FROM DetalhesDoPedido
WHERE Desconto >= .25);
Use o atributo ALL para recuperar somente os registros da consulta principal que satisfaam a
comparao com todos os registros recuperados na subconsulta. Se voc tivesse alterado ANY para ALL
no exemplo anterior, a consulta retornaria somente os produtos cujo preo unitrio fosse maior que o de
todos os produtos vendidos com um desconto de 25% ou maior. Isso bem mais restritivo.
Use o atributo IN para recuperar somente os registros da consulta principal para os quais algum registro
na subconsulta contenha um valor igual. O exemplo a seguir retorna todos os produtos com um desconto
de 25% ou maior:
SELECT * FROM Produtos
WHERE CdigoDoProduto IN
(SELECT CdigoDoProduto FROM DetalhesDoPedido
WHERE Desconto >= .25);
V0
78
Banco de Dados I
Da mesma forma, voc pode usar NOT IN para recuperar somente os registros na consulta principal para
os quais nenhum registro na subconsulta contenha um valor igual.
Use o atributo EXISTS (com a palavra reservada NOT opcional) em comparaes verdadeiro/falso para
determinar se a subconsulta retorna algum registro.
Voc pode tambm usar aliases de nome de tabela em uma consulta para se referir a tabelas relacionadas
em uma clusula FROM fora da subconsulta. O exemplo a seguir retorna os nomes dos funcionrios
cujos salrios so iguais ou maiores do que o salrio mdio de todos os funcionrios que tm o mesmo
cargo. A tabela Funcionrios recebe o alias "T1":
SELECT Sobrenome, Nome, Ttulo, Salrio
FROM Funcionrios AS T1
WHERE Salrio >= (SELECT Avg(Salrio)
FROM Funcionrios
WHERE T1.Ttulo = Funcionrios.Ttulo) Order by Ttulo;
No exemplo anterior, a palavra reservada AS opcional.
Algumas subconsultas so permitidas em consultas de tabela de referncia cruzada especificamente,
como atributos (os da clusula WHERE). Subconsultas como sada (as da lista SELECT) no so
permitidas em consultas de tabela de referncia cruzada.
27. Instruo TRANSFORM
Cria uma consulta tabela de referncia cruzada.
27.1. Sintaxe
TRANSFORM funoagrg
instruoselect
PIVOT campocentral [IN (valor1[, valor2[, ...]])]
27.2. A instruo TRANSFORM possui as partes a seguir:
Parte
funoagrg
Descrio
Uma funo agregada SQL que opera sobre os dados selecionados.
instruoselect
campodinmicol
O campo ou expresso que voc quer usar para criar ttulos de coluna no
conjunto de resultados da consulta.
Valores fixos usados para criar ttulos de colunas.
valor1, valor2
V0
79
Banco de Dados I
27.3. Comentrios
Quando resume dados utilizando uma consulta tabela de referncia cruzada, voc seleciona valores de
campos ou expresses especificadas como ttulos de colunas para poder visualizar os dados em um
formato mais compacto do que com uma consulta seleo.
A instruo TRANSFORM opcional, mas quando for includa ser a primeira instruo em uma
seqncia SQL. Ela antecede uma instruo SELECT que especifica os campos usados como ttulos de
linhas e uma clusula GROUP BY que especifica o agrupamento de linhas. Opcionalmente, voc pode
incluir outras clusulas, como WHERE, que especifiquem critrios adicionais de seleo ou de
classificao. Voc pode tambm usar subconsultas como atributos especificamente, aqueles em uma
clusula WHERE em uma consulta tabela de referncia cruzada.
Os valores retornados em campodinmico so usados como ttulos de colunas no conjunto de resultados
da consulta. Por exemplo, articular os nmeros das vendas no ms da venda em uma consulta tabela de
referncia cruzada criaria 12 colunas. Voc pode restringir campodinmico para criar ttulos a partir de
valores fixos (valor1, valor2 ) relacionados na clusula IN opcional. Voc pode tambm incluir valores
fixos para os quais no existam dados para criar colunas adicionais.
28. Declarao PARAMETERS
Declara o nome e o tipo de dados de cada parmetro em uma consulta parmetro.
28.1. Sintaxe
PARAMETERS nome tipodedados [, nome tipodedados [, ...]]
28.2.
Parte
nome
Descrio
O nome do parmetro. Atribudo propriedade Name do objeto Parameter e usado para
identificar esse parmetro na coleo Parameters. Voc pode usar nome como uma
seqncia de caracteres que exibida em uma caixa de dilogo enquanto o aplicativo
executa a consulta. Use colchetes ([ ]) para envolver o texto que contm espaos ou
pontuao. Por exemplo, [Preo baixo] e [Comear relatrio com que ms?] so
argumentos nome vlidos.
tipodedados
28.3. Comentrios
Para consultas executadas regularmente, voc pode utilizar uma declarao PARAMETERS para criar
uma consulta parmetro. Uma consulta parmetro pode ajudar a automatizar o processo de alterao dos
critrios da consulta. Em uma consulta parmetro, o cdigo precisar fornecer os parmetros a cada vez
que a consulta for executada.
V0
80
Banco de Dados I
A declarao PARAMETERS opcional, mas quando includa precede qualquer outra instruo, inclusive
SELECT.
Se a declarao incluir mais de um parmetro, separe-os com vrgulas. O exemplo a seguir inclui dois
parmetros:
PARAMETERS [Preo baixo] Currency, [Data inicial] DateTime;
Voc pode usar nome, mas no tipodedados em uma clusula WHERE ou HAVING. O exemplo a seguir
espera que dois parmetros sejam fornecidos e, ento, aplica os critrios aos registros na tabela Pedidos:
PARAMETERS [Preo baixo] Currency, [Data inicial] DateTime;
SELECT NmeroDoPedido, QuantiaDoPedido
FROM Pedidos
WHERE QuantiaDoPedido > [Preo baixo] AND DataDoPedido >= [Data inicial];
29. Operador Between...And
Determina se o valor de uma expresso se situa dentro de um intervalo especificado de valores. Voc pode
utilizar este operador em instrues SQL.
29.1. Sintaxe
expr [Not] Between valor1 And valor2
29.2. A sintaxe do operador Between...And possui as partes a seguir:
Parte
expr
valor1, valor2
Descrio
Expresso que identifica o campo que contm os dados a serem avaliados.
Expresses em relao as quais voc deseja avaliar expr.
29.3. Comentrios
Se o valor de expr estiver entre valor1 e valor2 (inclusive), o operador Between...And retornar True; caso
contrrio, retornar False. Voc pode incluir o operador lgico Not para avaliar a condio oposta (isto , se
expr estiver situado fora do intervalo definido por valor1 e valor2).
Voc poderia utilizar Between...And para determinar se o valor de um campo est situado em um intervalo
numrico especificado. O exemplo a seguir determina se um pedido foi enviado a um local situado em um
intervalo de cdigos postais. Se o cdigo postal estiver entre 98101 e 98199, a funo IIf retornar "Local".
Caso contrrio, retornar "Nolocal".
SELECT IIf(CdigoPostal Between 98101 And 98199, "Local", "Nolocal") FROM Editores
Se expr, valor1 ou valor2 forem Null, Between...And retornar um valor Null.
V0
81
Banco de Dados I
Uma vez que os caracteres curinga, como *, so tratados como literais, voc no pode utiliz-los com o
operador Between...And. Por exemplo, voc no pode utilizar 980* e 989* para localizar todos os
cdigos postais que comeam com 980 e 989. Em vez disso, voc tem duas alternativas: pode adicionar
uma expresso para a consulta que pegue os trs caracteres da esquerda do campo de texto e utilizar
Between...And nesses caracteres, ou pode preencher os valores superior e inferior com caracteres extras
neste caso, 98000 a 98999, ou 98000 a 98999 9999 se estiver utilizando cdigos postais estendidos.
(Voc deve omitir o 0000 dos valores inferiores pois, caso contrrio, 98000 ser excludo se alguns
cdigos postais tiverem sees e outros no.)
30. Operador In
Determina se o valor de uma expresso igual a algum dos vrios valores em uma lista especificada.
30.1. Sintaxe
expr [Not] In(valor1, valor2, . . .)
30.2. A sintaxe do operador In possui as partes a seguir:
Parte
expr
Descrio
Expresso que identifica o campo que contm os dados a serem avaliados.
valor1, valor2
Se expr for encontrado na lista de valores, o operador In retornar True; caso contrrio, retornar False.
Voc pode incluir o operador lgico Not para avaliar a condio oposta (isto , se expr no est na lista
de valores).
Por exemplo, voc pode utilizar In para determinar os pedidos a serem enviados a um conjunto de
regies especificadas:
SELECT *
FROM Pedidos
WHERE RegioDeRemessa In ('Avon','Glos','Som')
31. Operador Like
Compara uma expresso de seqncia com um padro em uma expresso SQL.
31.1. Sintaxe
expresso Like "padro"
V0
82
Banco de Dados I
Descrio
Expresso SQL utilizada em uma clusula WHERE.
padro
31.3. Comentrios
Voc pode utilizar o operador Like para localizar valores em um campo que correspondam ao padro
especificado. Para padro, voc pode especificar o valor completo (por exemplo, Like "Smith") ou pode
utilizar caracteres curinga para encontrar um intervalo de valores (por exemplo, Like "Sm*").
Em uma expresso, voc pode utilizar o operador Like para comparar um valor de campo a uma
expresso de seqncia. Por exemplo, se voc digitar Like "C*" em uma consulta SQL, a consulta
retornar todos os valores de campo que comeam com a letra C. Em uma consulta parmetro, voc
pode solicitar ao usurio que fornea um padro pelo qual procurar.
O exemplo a seguir retorna dados que comeam com a letra P, seguida por qualquer letra entre A e F e
trs dgitos:
Like "P[A-F]###"
A tabela a seguir mostra como voc pode utilizar Like para testar expresses para diferentes padres.
Tipo de correspondncia
Padro
Coincidente (retorna True)
a*a
abcdefg, abc
Um nico caractere
a?a
Um nico dgito
aaa, a10a
Intervalo de caracteres
[a-z]
f, p, j
2, &
Fora de um intervalo
[!a-z]
9, &, % b, a
Nenhum dgito
[!0-9]
A, a, &, ~
Combinado
a[!b-m]#
a#a
aaa
cab, aab
aBBBa
0, 1, 9
V0
abc, aj0
83
Banco de Dados I
V0
84
Banco de Dados I
33.
Descrio
O nome de um usurio a ser adicionado ao arquivo de
informaes do grupo de trabalho.
O nome de um grupo a ser adicionado ao arquivo de informaes
do grupo de trabalho.
A senha a ser associada ao nome de usurio especificado.
A identificao pessoal.
Comentrios
Um usurio e um grupo no podem ter o mesmo nome.
necessria uma senha para cada usurio ou grupo criado.
Parte
Usurio
Grupo
Descrio
O nome de um usurio a ser adicionado ao arquivo
de informaes do grupo de trabalho.
O nome de um grupo a ser adicionado ao arquivo de
informaes do grupo de trabalho.
V0
85
Banco de Dados I
Comentrios
Uma vez adicionado um usurio a um grupo, o usurio tem todas as permisses que foram concedidas
ao grupo.
35.
Descrio
O nome de um usurio a ser removido do arquivo de informaes
do grupo de trabalho.
O nome de um grupo a ser removido do arquivo de informaes
do grupo de trabalho..
Comentrios
Se a palavra-chave FROM for usada na instruo DROP USER, cada um dos usurios listados na
instruo ser removido do grupo especificado em seguida palavra-chave FROM. No entanto, os
prprios usurios no sero excludos.
A instruo DROP GROUP excluir o(s) grupo(s) especificado(s). Os usurios que so membros do(s)
grupo(s) no sero afetados, mas deixaro de ser membros do(s) grupo(s) excludo(s).
V0
86
Banco de Dados I
Parte
Usurio
Senhanova
Senhaantiga
Descrio
O nome de um usurio a ser adicionado ao arquivo de informaes do grupo de
trabalho.
A nova senha a ser associada ao nome de usurio ou database especificado.
A senha existente a ser associada ao nome de usurio ou grupo especificado.
Descrio
O privilgio ou privilgios a serem concedidos. Os
privilgios so especificados usando as seguintes palavraschave:
SELECT, DELETE, INSERT, UPDATE, DROP,
SELECTSECURITY, UPDATESECURITY,
DBPASSWORD, UPDATEIDENTITY, CREATE,
SELECTSCHEMA, SCHEMA e UPDATEOWNER.
Nometabela
Objeto
Recipiente
Nomeautoriz
V0
87
Banco de Dados I
Descrio
O privilgio ou privilgios a ser revogado. Os privilgios so
especificados usando as seguintes palavras-chave:
SELECT, DELETE, INSERT, UPDATE, DROP,
SELECTSECURITY, UPDATESECURITY,
DBPASSWORD, UPDATEIDENTITY, CREATE,
SELECTSCHEMA, SCHEMA e UPDATEOWNER.
tabela
objeto
recipiente
nomeautoriz
V0
88
Banco de Dados I
Tamanho de
armazenamento
1 byte por caractere
BIT
1 byte
TINYINT
MONEY
1 byte
8 bytes
DATETIME
(Consulte DOUBLE)
UNIQUEIDENTIFIER
8 bytes
128 bits
REAL
4 bytes
FLOAT
8 bytes
SMALLINT
INTEGER
2 bytes
4 bytes
DECIMAL
17 bytes
TEXT
IMAGE
Descrio
Qualquer tipo de dados pode ser armazenado em um
campo deste tipo. No feita nenhuma converso
dos dados (por exemplo, para texto). O modo como
os dados so inseridos em um campo binrio dita o
modo como eles aparecero como sada.
Valores e campos Yes e No que contenham somente
um dos dois valores.
Um valor inteiro entre 0 e 255.
Um nmero inteiro escalado entre
922.337.203.685.477,5808 e
922.337.203.685.477,5807.
Um valor de data ou hora entre os anos 100 e 9999.
V0
89
Banco de Dados I
CHARACTER
Observaes
A semente e o incremento podem ser modificados usando-se uma instruo ALTER TABLE. Novas
linhas inseridas na tabela tero valores, com base na nova semente e valores de incremento, que so
gerados automaticamente para a coluna. Se a nova semente e incremento puderem produzir valores que
correspondam a valores gerados com base na semente e incremento anteriores, sero geradas
duplicaes. Se a coluna for uma chave primria, ento inserir novas linhas pode resultar em erros
quando so gerados valores duplicados.
Para localizar o ltimo valor usado em uma coluna de incrementao automtica, voc pode usar a
instruo a seguir: SELECT @@IDENTITY. Voc no pode especificar um nome de tabela. O valor
retornado da ltima tabela, contendo uma coluna de incrementao automtica, que foi atualizada.
Os caracteres em campos definidos como TEXT (tambm conhecidos como MEMO) ou CHAR
(tambm conhecidos como TEXT(n) com um comprimento especfico) so armazenados no formato de
representao Unicode. Os caracteres Unicode exigem uniformemente dois bytes para armazenar cada
caractere. Para bancos de dados existentes do Microsoft Jet que contenham predominantemente dados de
caracteres, isto pode significar que o arquivo do banco de dados quase dobraria de tamanho ao ser
convertido para o formato do Microsoft Jet 4.0. No entanto, a representao Unicode de muitos
conjuntos de caracteres, anteriormente identificados como Single-Byte Character Sets (SBCS, conjuntos
de caracteres de byte nico) pode ser facilmente compactada em um nico byte. Para obter mais
detalhes, consulte CREATE TABLE. Se voc definir uma coluna CHAR com o atributo
COMPRESSION, os dados sero compactados automaticamente medida que forem armazenados e
descompactados quando recuperados a partir da coluna.
V0
90
Banco de Dados I
V0
91
Banco de Dados I
EXERCCIOS
SQL
RESOLVIDOS
V0
92
Banco de Dados I
V0
93
Banco de Dados I
DEPARTAMEN
1
N
1
EMPREGADO
CARGO
Codigo
01
02
03
Nome
Financeiro
Engenharia
Comercial
CARGO
Codigo
01
02
03
04
05
06
07
Nome
Advogado
Analista de Sistemas
Contador
Engenheiro
Programador
Medico
Auxiliar de Escritrio
EMPREGADO
Codigo
001
002
003
004
005
006
007
008
009
Nome
Maria Araujo
Carla Figueiredo
Marcio Francisco
Maria Bonita
Francisco Carlos
Rezende Rocha
Marcia dos Anos
Jos Ferreira
Ferreira Fado
Salario
3000,00
4000,00
1000,00
4000,00
1500,00
4000,00
400,00
DataNascimento
10/10/70
02/05/76
30/06/49
20/07/80
18/08/72
25/03/60
27/12/55
02/03/51
14/11/55
V0
CodDep CodCargo
01
03
02
01
01
02
03
05
02
02
01
01
03
03
02
01
01
02
94
Banco de Dados I
FROM
Codigo,
Nome
Empregado
1.3. Resultado
Codigo
001
002
003
004
005
006
007
008
009
Nome
Maria Araujo
Carla Figueiredo
Marcio Francisco
Maria Bonita
Francisco Carlos
Rezende Rocha
Marcia dos Anos
Jos Ferreira
Ferreira Fado
1.4. Observaes
Observe que esto listados, apenas, os atributos especificados no comando SELECT, apesar da tabela conter
outros atributos
V0
95
Banco de Dados I
Listar o cdigo, o nome e a data de nascimento dos empregados de cdigo 001 e 003.
2.2.
Soluo
SELECT
Codigo,
Nome,
DataNascimento
banco
Tabela onde esto os atributos a serem
listados
FROM
Empregado
WHERE
Condio para
recuperao dos dados
2.3. Resultado
Codigo
001
005
Nome
Maria Araujo
Francisco Carlos
DataNascimento
10/10/70
18/08/72
2.4. Observaes
Repare que, apenas, os empregados cujos atributos satisfazem a condio especificada na clusula
WHERE foram listados.
V0
96
Banco de Dados I
3.
FROM
Cargo
3.3. Resultado
Codigo
01
02
03
04
05
Nome
Advogado
Analista de Sistemas
Contador
Engenheiro
Programador
Salario
3000,00
4000,00
1000,00
4000,00
1500,00
V0
97
Banco de Dados I
4.
FROM
Empregado.Codigo,
Empregado.Nome,
Cargo.Nome
Atributos a serem
recuperados do banco
Empregado,
Cargo
WHERE
Cargo.Codigo = Empregado.CodCargo
4.3. Resultado
Codigo
001
002
003
004
005
006
007
008
009
Nome
CodCargo
Maria Araujo
Contador
Carla Figueiredo
Advogado
Marcio Francisco Analista de Sistemas
Maria Bonita
Programador
Francisco Carlos Analista de sistemas
Rezende Rocha
Advogado
Marcia dos Anos
Contador
Jos Ferreira
Advogado
Ferreira Fado
Analista de Sistema
V0
98
Banco de Dados I
5.
Empregado.Codigo,
Empregado.Nome,
Cargo.Nome
FROM
Empregado,
Cargo
WHERE
Cargo.Codigo = Empregado.CodCargo
AND
(Empregado.CodDep = 01
AND
Empregado.CodDep = 03)
5.3. Resultado
Codigo
001
003
004
006
007
009
Nome
CodCargo
Maria Araujo
Contador
Marcio Francisco Analista de Sistemas
Maria Bonita
Programador
Rezende Rocha
Advogado
Marcia dos Anos
Contador
Ferreira Fado
Analista de Sistema
5.4. Observaes
Repare que a associao entre as tabelas e as condies de seleo dos dados aparecem todas na clusula
WHERE.
V0
99
Banco de Dados I
6.
Codigo,
Nome,
DataNascimento
FROM
Empregado
WHERE
Condio para
recuperao dos dados
Ordenando por nome
ORDER BY Nome
6.3. Resultado
Codigo
005
001
Nome
Francisco Carlos
Maria Araujo
DataNascimento
18/08/72
10/10/70
6.4. Observaes
V0
100
Banco de Dados I
7.
FROM
Codigo,
Nome,
DataNascimento AS Data de Nascimento
Mudando o ttulo da
coluna
Empregado
7.2. Resultado
Codigo
001
002
003
004
005
006
007
008
009
Nome
Maria Araujo
Carla Figueiredo
Marcio Francisco
Maria Bonita
Francisco Carlos
Rezende Rocha
Marcia dos Anos
Jos Ferreira
Ferreira Fado
Data de Nascimento
10/10/70
02/05/76
30/06/49
20/07/80
18/08/72
25/03/60
27/12/55
02/03/51
14/11/55
Repare que o cabealho da coluna correspondente data de nascimento, na lusta, foi mudada de DataNascimento
para Data de Nascimento.
V0
101
Banco de Dados I
8.
Soluo
SELECT
Empregado.Codigo,
Empregado.Nome,
Mudando o ttulo da coluna
correspondente ao nome do
departamento e do cargo
Departamento.Nome AS Departamento,
Cargo.Nome AS Cargo,
Cargo.Salario
FROM
WHERE
Empregado,
Departamento,
Cargo
Associa o Empregado ao
seu Departamento
Departamento.Codigo = Empregado.CodDep
AND
Empregado.CodCargo = Cargo.Codigo
ORDER BY
8.2.
Cargo.Salario DESC
Resultado
Codigo
003
005
009
002
006
008
004
001
007
Nome
Marcio Francisco
Francisco Carlos
Ferreira Fado
Carla Figueiredo
Rezende Rocha
Jos Ferreira
Maria Bonita
Maria Araujo
Marcia dos Anos
Associa o Empregado ao
seu Cargo
Departamento
Financeiro
Engenharia
Financeiro
Engenharia
Financeiro
Engenharia
Comercial
Financeiro
Comercial
Cargo
Analista de Sistemas
Analista de Sistemas
Analista de Sistemas
Advogado
Advogado
Advogado
Programador
Contador
Contador
Salario
4000,00
4000,00
4000,00
3000,00
3000,00
3000,00
1500,00
1000,00
1000,00
Repare os ttulos das colunas Departamento e Cargo alterados e a ordem de apresentao da lista. Do maior
salrio para o menor.
V0
102
Banco de Dados I
9.
Empregado.CodCargo AS Cargo,
COUNT(Empregado.Codigo) AS Quantidade
FROM
Contando os empregados
e mudando o ttulo da
coluna
Empregado
Agrupando a quantidade de
empregados por cargo
GROUP BY Empregado.CodCargo
9.2. Resultado
Cargo
01
02
03
05
Quantidade
03
03
02
01
9.3. Observaes
Repare os ttulos das colunas. Recorra ao contedo da tabela Empregado para conferir o resultado da lista
obtida.
V0
103
Banco de Dados I
Empregado.CodCargo AS Cargo,
SUM(Cargo.Salario) AS Salario
FROM
Cargo, Empregado
WHERE
Cargo.Codigo = Empregado.CodCargo
Associando o cargo ao
empregado
Agrupando a soma dos salrios dos
empregados por cargo
GROUP BY Empregado.CodCargo
10.2. Resultado
Cargo
01
02
03
05
Salrio
9.000,00
12.000,00
2.000,00
1.500,00
Repare os ttulos das colunas. Recorra ao contedo das tabelas Empregado e Cargos para conferir o resultado da
lista obtida.
Observe que s foram listados os cargos para os quais tem algum empregado vinculado.
V0
104
Banco de Dados I
Departamento.Codigo,
Departamento.Nome,
MIN(Cargo.Salario) AS Menor Salario
FROM
WHERE
Cargo.Codigo = Empregado.CodCargo
AND
Empregado.CodDep= Departamento.Codigo
Associando o
empregado ao cargo ao
departamento
Agrupando os menores salrios por
departamento
GROUP BY Departamento.Codigo
Departamento.Nome
11.2. Resultado
Codigo
01
02
03
11.3.
Nome
Financeiro
Engenharia
Comercial
Menor Salrio
1.000,00
3.000,00
1.000,00
Observaes
Repare os ttulos das colunas. Recorra ao contedo das tabelas Departamento, Empregado e Cargos para
conferir o resultado da lista obtida.
Observe que s foram listados os departamentos para os quais tem algum empregado vinculado.
Repare que as clusulas FROM e WHERE fazem referncia tabela Empregado, embora nenhum dado
desta tabela pedido na lista. Ela aparece porque porque est no caminho dos relacionamentos que
conduzem a tabela Departamento (que contm dados a serem listados) e a tabela Cargo (que contm dados
a serem listgados). Na realidade o menor salrio diz respeito aos empregados vinculados aos
departamentos.
V0
105
Banco de Dados I
Departamento.Codigo,
Departamento.Nome,
Obtendo o maior salrio e
mudando o ttulo da
coluna
FROM
WHERE
Cargo.Codigo = Empregado.CodCargo
AND
Empregado.CodDep= Departamento.Codigo
Associando o o
empregado cargo e ao
departamento
GROUP BY Departamento.Codigo,
Departamento.Nome
12.2. Resultado
Codigo
01
02
03
Nome
Financeiro
Engenharia
Comercial
Maior Salrio
4.000,00
4.000,00
1.500,00
12.3. Observaes
Repare os ttulos das colunas. Recorra ao contedo das tabelas Departamento, Empregado e Cargos para
conferir o resultado da lista obtida.
Observe que s foram listados os departamentos para os quais tem algum empregado vinculado.
V0
106
Banco de Dados I
Repare que as clusulas FROM e WHERE fazem referncia tabela Empregado, embora nenhum dado
desta tabela pedido na lista. Ela aparece porque porque est no caminho dos relacionamentos que
conduzem a tabela Departamento (que contm dados a serem listados) e a tabela Cargo (que contm dados
a serem listgados). Na realidade o menor salrio diz respeito aos empregados vinculados aos
departamentos.
V0
107
Banco de Dados I
Departamento.Codigo,
Departamento.Nome,
Obtendo mdia dos
salrios e mudando o
ttulo da coluna
FROM
WHERE
Cargo.Codigo = Empregado.CodCargo
AND
Empregado.CodDep= Departamento.Codigo
Associando o
empregado ao cargo e ao
departamento
GROUP BY Departamento.Codigo,
Departamento.Nome
13.3. Resultado
Codigo
01
02
03
Nome
Media dos
Salarios
3.000,00
3.333,33
1.250,00
Financeiro
Engenharia
Comercial
V0
108
Banco de Dados I
13.4. Observaes
Repare os ttulos das colunas. Recorra ao contedo das tabelas Departamento,
Empregado e Cargo para conferir o resultado da lista obtida.
Observe que s foram listados os departamentos para os quais tem algum empregado
vinculado.
Repare que as clusulas FROM e WHERE fazem referncia tabela Empregado,
embora nenhum dado desta tabela pedido na lista. Ela aparece porque est no
caminho dos relacionamentos que conduzem a tabela Departamento (que contm
dados a serem listados) e a tabela Cargo (que contm dados a serem listados). Na
realidade o menor salrio diz respeito aos empregados vinculados aos departamentos.
V0
109
Banco de Dados I
Departamento.Codigo,
Departamento.Nome,
Obtendo a mdia dos
salrios e mudando o
ttulo da coluna
FROM
WHERE
Cargo.Codigo = Empregado.CodCargo
AND
Empregado.CodDep= Departamento.Codigo
GROUP BY Departamento.Codigo,
Departamento.Nome
HAVIING
Associando o o
empregado cargo e ao
departamento
14.3. Resultado
Codigo
03
Nome
Comercial
Menor Salrio
1.500,00
V0
110
Banco de Dados I
14.4. Observaes
Repare os ttulos das colunas. Recorra ao contedo das tabelas Departamento, Empregado e Cargos para
conferir o resultado da lista obtida.
Observe que s foram listados os departamentos para os quais tem algum empregado vinculado.
Repare que as clusulas FROM e WHERE fazem referncia tabela Empregado, embora nenhum dado
desta tabela pedido na lista. Ela aparece porque porque est no caminho dos relacionamentos que
conduzem a tabela Departamento (que contm dados a serem listados) e a tabela Cargo (que contm dados
a serem listados). Na realidade o menor salrio diz respeito aos empregados vinculados aos
departamentos.
V0
111
Banco de Dados I
O BANCO ACADMICO
PROFESSOR
(1,1)
(0,N)
DEPARTAMENTO
(0,N)
(1,1)
CURSO
(0,N)
(1,1)
(0,N)
(1,1)
VINCULO
(1,1)
(0,N)
(0,N)
(0,N)
(1,1)
AULA
DISCIPLINA
(1,1)
(0,N)
SEMESTRE
(0,N)
(1,1)
DIAS DE AULA
(1,1)
(1,1)
(0,N)
TURMA
(0,N)
(0,N)
(1,1)
(1,1)
(1,1)
(0,N)
MATRICULA
DIAS DA
SEMANA
FREQUENCI
A
(1,1)
(0,N)
(1,1)
(0,N)
ALUNO
V0
112
Banco de Dados I
ATRIBUTOS
Cpf
Nome
Data de Nascimento
Logradouro
Bairro
Cidade
Estado
Cep
CodigoDepartamento
ID
S
CE
OB
S
S
S
S
S
S
S
S
S
NAT
N
C
D
C
C
C
C
N
TAM
11
30
DEC DOM
0
0
30
20
20
2
8
0
0
0
0
0
DEPARTAMENTO
ATRIBUTOS
Cdigo
Nome
ID
S
CE
OB
S
S
NAT
C
C
TAM
3
30
DEC DOM
0
0
CURSO
ATRIBUTOS
Codigo
Nome
CodigoDepartamento
ID
S
CE
OB
S
S
S
NAT
C
C
TAM
3
30
DEC DOM
0
0
ATRIBUTOS
CodigoCurso
Codigo
Nome
Creditos
Preleo
Laboratorio
ID
S
S
CE
S
OB
S
S
S
S
S
S
NAT
TAM
DEC DOM
N
C
N
N
S
4
30
1
1
1
VINCULO
ATRIBUTOS
CpfProfessor
CodigoCurso
CodigoDisciplina
ID
S
S
S
CE
S
S
S
OB
S
S
S
NAT
TAM
DEC DOM
DIA DA SEMANA
ATRIBUTOS
Codigo
Nome
ID
S
CE
OB
S
S
NAT
N
C
TAM
1
9
DEC DOM
0
0
DISCIPLINA
V0
0
0
113
Banco de Dados I
DIAS DE AULA
AULA
FREQUENCIA
MATRICULA
ATRIBUTOS
CodigoCurso
CodigoDisciplina
NumeroTurma
NumeroSubTurma
AnoSemestre
NumeroSemestre
CodigoDiaSemana
TipoAula
Horario
ID
S
S
S
S
S
S
S
ATRIBUTOS
CodigoCurso
CodigoDisciplina
NumeroTurma
NumeroSubTurma
AnoSemestre
NumeroSemestre
Data
Numero
Resumo
CPFProfessor
ID
S
S
S
S
S
S
S
S
ATRIBUTOS
CodigoCurso
CodigoDisciplina
NumeroTurma
NumeroSubTurma
AnoSemestre
NumeroSemestre
DataAula
NumeroAula
MatriculaAluno
Data da Matrcula
IndPresena
ID
S
S
S
S
S
S
S
S
S
S
ATRIBUTOS
CodigoCurso
CodigoDisciplina
NumeroTurma
NumeroSubTurma
AnoSemestre
NumeroSemestre
MatriculaAluno
DataMatricula
Nota Final
ID
S
S
S
S
S
S
S
S
CE
S
S
S
S
S
S
S
CE
S
S
S
S
S
S
V0
CE
S
S
S
S
S
S
S
S
S
S
CE
S
S
S
S
S
S
S
OB
S
S
S
S
S
S
NAT
TAM
S
S
C
C
1
2
OB
S
S
S
S
S
S
S
S
S
S
NAT
TAM
D
N
C
1
60
OB
S
S
S
S
S
S
S
S
S
S
S
NAT
TAM
OB
S
S
S
S
S
S
S
S
S
NAT
TAM
D
N
DEC DOM
DEC DOM
DEC DOM
DEC DOM
114
Banco de Dados I
TURMA
ALUNO
SEMESTRE
ATRIBUTOS
CodigoCurso
CodigoDisciplina
Numero
NumeroSubTurma
AnoSemestre
NumeroSemestre
ID
S
S
S
S
S
S
CE
S
S
ATRIBUTOS
Matricula
Nome
Data de Nascimento
Logradouro
Bairro
Cidade
Estado
Cep
Sexo
ID
S
CE
ATRIBUTOS
Ano
Numero
Data de Inicio das Aulas
Data de Termino das Aulas
ID
S
S
S
S
V0
CE
OB
S
S
S
S
S
S
NAT
TAM
C
C
3
1
OB
S
S
S
S
S
S
S
S
S
NAT
N
C
D
C
C
C
C
N
TAM
10
30
OB
S
S
S
S
NAT
N
N
D
D
TAM
4
1
DEC DOM
DEC DOM
0
0
30
20
20
2
8
0
0
0
0
0
DEC DOM
0
0
115
banco de Dados I
Bairro
Cidade
Estado
Data de
Logra
Nascimen douro
to
04/05/47 Rua 1
S Bueno
Goinia
GO
30/10/50
Rua 2
S Sul
Goinia
GO
10/03/43
Rua 2
Ipanema
RJ
30/06/60
Rua 3
Pavuna
Rio de
Janeiro
So Paulo
SP
30/07/52
Rua 4
S Oeste
Goinia
GO
20/04/51
Rua 5
S Central
Goinia
GO
Rua 6
Vila Nova
B Horizonte MG
88888888888 Virglio
14/03/56
Rua 7
S Universitrio
Salvador
BA
9999999999
20/10/58
Rua 8
Marista
Goinia
GO
DEPARTAMENTO
Nome
Francisco Reis
Codigo
CMP
FIT
ADM
ENG
ECO
BIO
ZOO
MAF
FAR
Nome
CINCIA DA COMPUTAO
FILOSOFIA E TEOLOGIA
ADMINISTRAO
ENGENHARIA
ECONOMIA
BIOLOGIA
ZOOTECNICA
MATEMTICA E FSICA
FARMCIA
V0
CEP
Codigo
Departa
mento
74000- CMP
001
74000- CMP
002
60000- FIT
003
50000- ADM
004
74000- ADM
005
75000- ENG
006
45000- ENG
007
35000- BIO
008
36000- FIt
009
116
banco de Dados I
CURSO
Codigo
Nome
CMP
ENC
FIL
TEO
ADM
ENG
ECO
BIO
ZOO
MAT
FIS
CINCIA DA COMPUTAO
ENGENHARIA DE COMPUTAO
FILOSOFIA E TEOLOGIA
TEOLOGIA
ADMINISTRAO
ENGENHARIA CIVIL
ECONOMIA
BIOLOGIA
ZOOTECNICA
MATEMTICA
FISICA
DISCIPLINA CodigoCurso
CMP
CMP
CMP
CMP
ADM
FIL
CMP
MAT
FIS
ADM
MAT
FIS
FIL
Codigo
Departamento
CMP
CMP
FIT
FIT
ADM
ENG
ECO
BIO
BIO
MAF
MAF
Codigo
Nome
4070
4433
4033
3243
1000
3444
3030
1010
1020
4040
8080
2020
9090
ENGENHARIA DE SOFTWARE
BANCO DE DADOS I
PROJETO DE SISTEMA
ANLISE
INTRODUO A ADMINISTRAO
INTRODUO A FILOSOFIA
BANCO DE DADOS II
CLCULO I
FISICA I
ADMINISTRAO PBLICA
ALGEBRA LINEAR
FISICA II
FILOFIA II
V0
117
banco de Dados I
VINCULO CpfProfessor
11111111111
22222222222
22222222222
11111111111
33333333333
44444444444
33333333333
55555555555
66666666666
77777777777
77777777777
88888888888
88888888888
DIA DA SEMANA
Codigo
1
2
3
4
5
6
7
CodigoCurso
CMP
CMP
CMP
CMP
CMP
ADM
CMP
ADM
FIL
FIS
FIS
MAT
MAT
CodigoDisciplina
4070
4433
4033
3030
3243
1000
3030
4040
3444
1020
2020
8080
1010
Nome
DOMINGO
SEGUNDA-FEIRA
TERA-FEIRA
QUARTA-FEIRA
QUINTA-FEIRA
SEXTA-FEIRA
SBADO
V0
118
banco de Dados I
TURMA
Codigo
Curso
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
ADM
ADM
FIL
MAT
MAT
FIS
FIS
CMP
CMP
CMP
CMP
Codigo
Nmero
Disciplina
4070
A01
4070
A01
4070
A02
4070
A01
4433
A01
4433
C01
4433
A02
4033
A01
1000
A01
1000
C01
3444
A01
1010
A01
1010
C01
2020
A01
2020
C01
3243
A01
3243
C01
3243
A02
3030
A01
Numero
SubTurma
1
2
1
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
V0
Ano
Semestre
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
Numero
Semestre
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
119
banco de Dados I
DIAS DE
AULA
Codigo
Curso
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
ADM
ADM
ADM
ADM
FIL
FIL
FIS
FIS
FIS
FIS
FIS
Codigo
Disciplina
4070
4070
4070
4070
4070
4070
4070
4070
4433
4433
4433
4433
4433
4433
4433
4433
4433
3030
3030
3030
3030
1000
1000
1000
1000
3444
3444
2020
2020
2020
2020
2020
Numero
Turma
A01
A01
A01
A01
C01
C01
C01
C01
A01
A01
A01
C01
C01
C01
A02
A02
A02
A01
A01
A01
A01
A01
A01
C01
C01
A01
A01
A01
A01
A01
A01
C01
Nmero
Subturma
0
0
1
2
0
0
1
2
0
1
2
0
1
2
0
1
2
0
0
1
2
0
0
0
0
0
0
0
0
1
2
0
V0
Ano
Semestre
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
Numero
Semestre
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
Codigo
Dia Semana
4
7
4
7
4
6
4
6
2
5
5
3
6
6
4
7
7
2
5
5
5
4
7
4
7
2
4
5
7
7
7
3
Tipo
Aula
P
P
L
L
P
P
L
L
P
L
L
P
L
L
P
L
L
P
P
L
L
P
P
P
P
P
P
P
P
L
L
P
Horrio
1M
1M
2M
3M
1N
1N
2N
3N
1M
1M
2M
2N
2N
3N
1M
1M
2M
2M
1M
2M
3M
1M
1M
2N
2N
1M
1M
1M
1M
2M
3M
1N
120
banco de Dados I
FIS
FIS
FIS
MAT
MAT
MAT
MAT
CMP
CMP
CMP
AULA Codigo
Curso
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
2020
2020
2020
1010
1010
1010
1010
4033
4033
4033
C01
C01
C01
A01
A01
C01
C01
C01
C01
C01
Codigo
Numero Numero
Disciplina Turma
Subturma
4070
4070
4070
4070
4070
4070
4070
4070
4433
4433
4433
4433
4433
4333
4433
4433
4433
4033
4033
4033
3030
A01
A01
A01
A01
C01
C01
C01
C01
A01
A01
A01
C01
C01
C01
A02
A02
A02
C01
C01
C01
A01
0
0
1
2
0
0
1
2
0
1
2
0
1
2
0
1
2
0
0
0
0
0
1
2
0
0
0
0
0
0
0
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
2
2
2
2
2
2
2
2
2
2
Ano
Semestre
Numero
Semestre
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
V0
Data
03/03/99
06/03/99
03/03/99
06/03/99
03/03/99
05/03/99
03/03/99
05/03/99
01/03/99
04/03/99
04/03/99
02/03/99
05/03/99
05/03/99
02/03/99
06/03/99
06/03/99
02/03/99
03/03/99
06/03/99
01/03/99
6
6
6
4
7
4
7
3
4
7
P
L
L
P
P
P
P
P
P
P
N Resumo
me
ro
1
RESUMO 1
1
RESUMO 2
1
RESUMO 3
2
RESUMO 3
1
RESUMO 1
1
RESUMO 2
2
RESUMO 3
2
RESUMO 3
1
RESUMO 1
1
RESUMO 2
1
RESUMO 2
1
RESUMO 1
1
RESUMO 2
2
RESUMO 2
1
RESUMO 2
1
RESUMO 3
2
RESUMO 4
1
RESUMO 1
1
RESUMO 2
1
RESUMO 3
1
RESUMO 1
1N
2N
3N
3M
3M
3N
3N
3N
3N
3N
Cpf
Professor
11111111111
11111111111
11111111111
11111111111
11111111111
11111111111
11111111111
11111111111
22222222222
22222222222
22222222222
22222222222
22222222222
22222222222
22222222222
33333333333
33333333333
22222222222
22222222222
22222222222
33333333333
banco de Dados I
CMP
CMP
CPM
ADM
ADM
ADM
ADM
FIL
FIL
FIS
FIS
FIS
FIS
FIS
FIS
FIS
FIS
MAT
MAT
MAT
MAT
121
3030
3030
3030
1000
1000
1000
1000
3444
3444
2020
2020
2020
2020
2020
2020
2020
2020
1010
1010
1010
1010
A01
A01
A01
A01
A01
C01
C01
A01
A01
A01
A01
A01
A01
C01
C01
C01
C01
A01
A01
C01
C01
0
1
2
0
0
0
0
0
0
0
0
1
2
0
0
1
2
0
0
0
0
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
V0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
04/03/99
04/03/99
04/03/99
03/06/99
06/03/99
03/06/99
06/03/99
01/03/99
03/03/99
04/10/99
06/03/99
06/03/99
06/03/99
02/03/99
05/03/99
05/03/99
05/03/99
03/03/99
06/03/99
03/03/99
06/03/99
1
1
1
1
1
1
1
1
1
1
1
2
3
1
1
2
3
1
1
2
2
RESUMO 2
RESUMO 3
RESUMO 3
RESUMO 1
RESUMO 2
RESUMO 3
RESUMO 3
RESUMO 1
RESUMO 2
RESUMO 1
RESUMO 2
RESUMO 3
RESUMO 3
RESUMO 1
RESUMO 2
RESUMO 3
RESUMO 3
RESUMO 1
RESUMO 2
RESUMO 1
RESUMO 2
33333333333
33333333333
33333333333
44444444444
44444444444
44444444444
44444444444
66666666666
66666666666
77777777777
77777777777
77777777777
77777777777
77777777777
77777777777
77777777777
77777777777
88888888888
88888888888
88888888888
88888888888
122
banco de Dados I
ALUNO
Matrc Nome
ula
Data de Logra
Nascime douro
nto
Bairro
Cidade
Estado Cep
Sexo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
10/10/78
03/03/79
20/05/80
12/10/80
03/03/77
10/10/78
03/03/79
20/05/80
12/10/80
03/03/77
10/10/78
03/03/79
20/05/80
12/10/80
03/03/77
10/10/78
03/03/79
20/05/80
12/10/80
03/03/77
10/10/78
03/03/79
20/05/80
12/10/80
03/03/77
10/10/78
03/03/79
20/05/80
12/10/80
03/03/77
15/02/80
S BUENO
S CENTRAL
BILA NOVA
S MARISTA
P LUDOVICO
S OESTE
S SUL
S COIMBRA
J AMERICA
CAMPINAS
S BUENO
S CENTRAL
BILA NOVA
S MARISTA
P LUDOVICO
S OESTE
S SUL
S COIMBRA
J AMERICA
CAMPINAS
S BUENO
S CENTRAL
BILA NOVA
S MARISTA
P LUDOVICO
S OESTE
S SUL
S COIMBRA
J AMERICA
CAMPINAS
DERGO
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GOIANIA
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
M
F
M
M
M
M
F
F
M
M
M
F
F
F
M
M
M
M
F
F
M
M
F
F
F
M
M
F
M
F
M
ADNALDO LEMES
ADIRANA BELLINI
ALEXANDRE BARRETO
CARLOS VENAN IO
DANIEL PINTO
DANILLO LUGSTOSA
DENNIA ASSIS
ELIZZIANE VIEIRA
EMERSON SALGADO
FABIANO ROCHA
FABRICIO PERICLES
FERNANDA CURADO
FERNANDA FRANA
FERNANDA RIBEIRO
FERNANDO ANTONIO
GUSTAVO ALESSANDRO
LEANDRO HENRIQUE
LEONARDO DIAS
LORAYNE NOVAIS
LORENA CAETANO
MARCELO NARVAES
MARCUS BORGES
PATRICIA DE PAULA
PATRICIA SILVA
RENATA CARVALHO
RICARDO LOPES
RODRIGO BORGES
STEFANE CELIAC
TACITO CLAUDIO
TATIANA PIRES
WALKER DA SILVA
RUA 1
RUA 2
RUA 3
RUA 4
RUA 5
RUA 6
RUA 7
RUA 8
RUA 9
RUA 10
RUA 11
RUA 1
RUA 2
RUA 3
RUA 4
RUA 5
RUA 6
RUA 7
RUA 8
RUA 9
RUA 10
RUA 11
RUA 1
RUA 2
RUA 3
RUA 4
RUA 5
RUA 6
RUA 7
RUA 8
RUA 9
V0
74000-000
71230-000
78000-000
65000-000
54000-000
23000-500
73000-000
74000-000
74000-000
71230-000
78000-000
65000-000
54000-000
23000-500
73000-000
74000-000
74000-000
71230-000
78000-000
65000-000
54000-000
23000-500
73000-000
74000-000
74000-000
71230-000
78000-000
65000-000
54000-000
23000-500
73000-000
123
banco de Dados I
MATRICULA
DISCIPLINA
Codigo
Curso
CMP
9999999
Codigo
Curso
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
Codigo
4144
4153
4152
4111
4120
4121
4131
4133
4134
4142
4143
4151
4154
4155
4157
Codigo
Disciplina
4070
Numero
Turma
A01
Nome
Creditos
Banco de Dados I
Analise e Projeto de Sistemas
Banco de Dados II
Int Ciencia da Computao I
Telep e Rede de Computadores
Int Cincia da Computao II
Estrutura de Dados I
Sistemas Digitais I
Paradigmas de Programao
Linguagens de Montagem
Estrutura de Dados II
Sistemas Operacionais I
Compiladores
Complexidade de Algoritmos
Pesquisa Operacional I
Numero
Matricula
SubTurma
0
04
06
06
06
06
06
06
06
06
06
06
06
06
06
04
V0
Prelecao
02
00
04
04
04
04
04
04
04
04
04
04
04
04
02
Data
Matricula
20/06/98
Nota
Final
Laboratorio
02
00
02
02
02
02
02
02
02
02
02
02
02
02
02
124
banco de Dados I
ALUNO
Matricula
Nome
Sexo
Logradouro
Data de
Nascimento
10/10/80
03/07/79
08/01/80
111111111
222222222
333333333
F
F
F
444444444
15/02/79
555555555
666666666
777777777
888888888
999999999
101010101
202020202
303030303
12/03/78
25/03/78
23/09/75
23/09/87
12/12/80
12/11/81
11/11/78
13/12/78
F
F
F
F
F
F
F
F
404040404
Carmem Vistosa
Moreira
Carmem Lucia Correa
02/02/77
03/03/80
04/04/80
05/05/78
06/06/78
Rua 70 N.43
07/0777
08/08/77
09/03/78
F
F
F
10/10/78
000444444
Rua 18 N.430
Centro
Rua 120 N.670 Centro
Rua C-340
Jardim
America
Rua C-460
Jardim
America
Rua C-320
Nova Sua
Rua T-49
Setor Bueno
Rua T-43
Setor Bueno
Rua T-24
Setor Bueno
Rua T-24
Setor Bueno
Rua T-25 N.43 Setor Bueno
Rua T-25 N.98 Setor Bueno
Rua T-25
Setor Bueno
N.100
Rua T-40
Setor Bueno
N.107
Rua T-37
Setor Bueno
N.203
Rua T-78
Setor Buendo
N.450
Rua 43
Centro
09/08/78
000555555
10/08/76
Rua 80 N. 456
Rua 90 N.780
Rua 120 N.
800
Rua 700 N.
440
Rua 130 N.
430
Rua 230 N.480
000666666
23/09/77
000777777
Dulce Salomo
Rezende
Dolores Cravo Reis
23/10/78
000888888
000999999
505050505
606060606
707070707
808080808
909090909
000111111
000222222
000333333
17/03/79
Bairro
Goiania
Goiania
Goiania
Esta
do
GO
GO
GO
74000-001 2513456
74000-002
74000-003 9876769
Goiania
GO
74000-004 9876578
Goiania
Goiania
Goiania
Goiania
Goiania
Goiania
Goiania
Goiania
GO
GO
GO
GO
GO
GO
GO
GO
74000-005
74000-006
74000-007
74000-008
74000-009
74000-010
74000-011
74000-012
Goiania
GO
74000-013 7890123
Goiania
GO
74000-014 8901234
Goiania
GO
74000-015 9012345
Goiania
GO
74000-016 8098765
Centro
Goiania
GO
74000-017 9090900
Centro
Centro
Centro
Goiania
Goiania
Goiania
GO
GO
GO
74000-018 1019999
74000-019 2019999
74000-020 2029999
Centro
Goiania
GO
74000-021 2039999
Centro
Goiania
GO
74000-022 2049999
Goiania
GO
74000-023 2059999
Goiania
GO
74000-024 2069999
Goinia
GO
74000-025 2099999
Goiania
GO
74000-026 2100000
Goiania
GO
74000-027 2100001
Setor
Coimbra
Rua 237 N.140 Setor
Coimbra
Rua 240 N.170 Setor
Coimbra
Rua 137 N.
Setor
767
Coimbra
Rua 435 N.
Setor
V0
Cidade
Cep
Fone
8765434
2345678
8769099
1234567
2345678
3456789
5678901
6789012
125
banco de Dados I
000011111
000022222
000033333
000044444
Dilma Guimaraes
Teixeira
Dagmar Ferreira dos
Santos
Dora Fernandes Ribeiro
12/12/81
01/01/81
01/04/81
03/02/81
870
Rua 799 N.
830
Rua 230 N.
444
Rua 122 N.
333
Rua 333 N.444
Coimbra
Vila Nova
Goiania
GO
74000-028 2100002
Vila Nova
Goiania
GO
74000-029 2100003
Vila Nova
Goiania
GO
74000-030 2100004
Vila Nova
Goiania
GO
74000-031 2100005
03/03/81
02/01/80
03/03/81
F
F
F
Goiania
Goiania
Goiania
GO
GO
GO
74000-032 2100006
74000-033 2100007
74000-034 2100008
03/01/78
Goiania
GO
74000-035 2100009
17/08/77
Goiania
GO
74000-036 2100010
12/12/76
Goiania
GO
74000-037 2100011
21/06/69
Goiania
GO
74000-038 2100012
22/06/70
Goiania
GO
74000-039 2100013
12/04/76
Goiania
GO
74000-044 2100014
04/08/76
Goiania
GO
74000-041 2100015
Goiania
GO
74000-042 2100016
Goiania
GO
74000-043 2100017
Goiania
GO
74000-044 2100018
Goiania
GO
74000-045 2100019
000005555
Eunice Carmem
Mendes
Erika Mendes Sobrinho
Elma Mahcado Goes
Edna Rodrigues
Machado
Eugenica Franga
Candido
Evandssa Magalhaes
Rosa
Elvira Garrotte
Mascarenhas
Francisca Rodrigues
Cunha
Fernanda Pacheco
Costa
Flavia Cascudo da
Costa
Fatima Casco Vieira
000006666
05/05/73
000007777
Filomena Cardoso
Amaral
Fabiana Cristovam
Pimenta
Fabola Rezende
Cardoso
Gisele Mendona
Ribeiro
Gleice Quincas Batista
Gilda Pereira
Guimaraes
Gina Guimaraes Rosa
Gilka Ferreira Mendes
Geralda Zacharias
Galba Mendes Ribas
Gilmara Rezende
Ribeiro
15/07/74
12/03/78
13/03/77
03/04/75
23/07/80
13/07/75
F
F
Setor
Funcionarios
Rua P-13 N.13 Setor
Funcionarios
Rua P-14 N.14 Setor
Funcionarios
Rua P-15 N.15 Setor
Funcionarios
Rua P-16 N.16 Setor
Funcionarios
Rua P-43 N.70 Setor
Funcionarios
Rua P_45 N.32 Setor
Funcionarios
Rua P-56 N.43 Setor
Funcionarios
Rua P_12 N.
Setor
120
Funcionarios
Rua P_13
Setor
N.340
Funcionarios
Rua T-35
Setor Bueno
N.777
Rua T-40 N.44 Setor Bueno
Rua T-55 N.55 Setor Bueno
12/06/68
30/05/74
12/09/69
13/04/74
12/04/80
F
F
F
F
F
000055555
000066666
000077777
000088888
000099999
000001111
000002222
000003333
000004444
000008888
000009999
000000111
000000222
000000333
000000444
000000555
000000666
000000777
000000888
V0
Setor Bueno
Setor Bueno
Setor Bueno
Setor Bueno
Setor Bueno
Goiania
GO
74000-046 2100020
Goiania
Goiania
GO
GO
74000-047 2100030
74000-048 2100031
Goiania
Goiania
Goiania
Goiania
Goiania
GO
GO
GO
GO
GO
74000-049
74000-050
74000-051
74000-052
74000-053
2100032
2100033
2100034
2100035
2100036
126
banco de Dados I
000000999
000000011
000000022
000000033
000000044
000000055
000000066
000000077
000000088
000000099
000000001
000000002
000000003
000000004
000000005
000000006
000000007
000000008
000000009
011111111
022222222
033333333
044444444
055555555
066666666
077777777
088888888
099999999
010111111
010222222
010333333
010444444
010555555
010666666
010777777
010888888
010999999
010011111
30/03/74
31/03/76
22/04/78
30/04/76
F
F
F
F
Setor Bueno
Setor Buendo
Setor Bueno
Setor Bueno
Goiania
Goiania
Goiania
Goiania
GO
GO
GO
GO
74000-054
74000-055
74000-056
74000-057
25/10/76
30/10/76
F
F
Setor Bueno
Setor Bueno
Goiania
Goiania
GO
GO
74000-058 2100041
74000-059 2100042
29/08/74
25/07/79
01/01/70
F
F
F
Setor Bueno
Setor Bueno
Setor Bueno
Goiania
Goiania
Goiania
GO
GO
GO
74000-060 2100043
74000-061 2100044
74000-062 2100045
02/03/76
Setor Bueno
Goiania
GO
74000-063 2100046
Ivana da Conceio
Ivete Rodrigues Cunha
Izis Marins Gomes
Ivone Rosa dos Anos
Ivonilde Maria da Costa
Iris Gouveia Jatoba
Irany Pimenta Cedro
Irene Rosa Pinheiro
Isolina Marques
Janaina Melissa Reis
Joana Marques Ferreira
Jordana Pires Ribeiro
Joselice Pinheiro
Machado
Judite Maria Medeiros
Josefa Ferreira Ros
Jurema Madalena
Vieria
Julia Maria Madalena
Juliete Fernandes
Castro
Ludimila Carmen Reis
Lorena Freitas Borges
Letcia dos Santos
Luiza Ribeiro de Freitas
Luzia Fernandes da Luz
Lara dos Santos Pinho
Livia Martins Lima
Leila Loreno Marques
Liria da Luz Mendes
Maria Ines Marques
03/06/74
23/04/72
24/05/78
25/04/78
04/07/65
31/03/74
21/04/74
05/05/73
27/05/78
21/05/78
03/09/79
04/09/77
09/05/73
F
F
F
F
F
F
F
F
F
F
F
F
F
Rua T-07
N.100
Rua 1 N.2
Rua 2 N.40
Rua 3 N.3
Rua 4 N.4
Rua 5 N.5
Rua 6 N.6
Rua 7 N.7
Rua 8 N.8
Rua 9 N.9
Rua 10 N.10
Rua 11 N.11
Rua 12 N.12
Rua 13 N.13
Centro
Centro
Centro
Centro
Centro
Centro
Centro
Centro
Centro
Centro
Centro
Centro
Centro
Goiania
Goiania
Goiania
Goiania
Goiania
Goiania
Goiania
Goiania
Goiania
Goiania
Goiania
Goiania
Goiania
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
74000-064
74000-065
74000-066
74000-067
74000-068
74000-069
74000-070
74000-071
74000-072
74000-073
74000-074
74000-075
74000-076
12/12/81
15/12/69
07/12/69
F
F
F
Rua 14 N.14
Rua 15 N.15
Rua 16 N.16
Centro
Centro
Centro
Goiania
Goiania
Goiania
GO
GO
GO
74000-077 2100060
74000-078 2100061
74000-079 2100062
08/11/72
12/01/69
F
F
Rua 17 N.17
Rua 18 N.18
Centro
Centro
Goiania
Goiania
GO
GO
74000-080 2100063
74000-081 2100064
27/10/68
23/06/72
13/04/64
23/05/81
21/03/64
22/04/65
12/09/74
25/10/75
22/12/73
23/03/79
F
F
F
F
F
F
F
F
F
F
Rua 19 N.19
Rua 20 N.20
Rua 21 N.21
Rua 22 N.22
Rua 23 N.23
Rua 24 N.24
Rua 25 N.25
Rua 26 N.26
Rua 27 N.27
Rua 28 N.28
Centro
Centro
Centro
Centro
Centro
Centro
Centro
Centro
Centro
Centro
Goiania
Goiania
Goiania
Goiania
Goiania
Goiania
Goiania
Goiania
Goiania
Goiania
GO
GO
GO
GO
GO
GO
GO
GO
GO
GO
74000-082
74000-083
74000-084
74000-085
74000-086
74000-087
74000-087
74000-088
74000-089
74000-090
V0
2100037
2100038
2100039
2100040
2100047
2100048
2100049
2100050
2100051
2100052
2100053
2100054
2100055
2100056
2100057
2100058
2100059
2100065
2100066
2100067
2100068
2100069
2100070
2100071
2100072
2100073
2100074
127
banco de Dados I
010022222
010033333
010044444
010055555
010066666
010077777
010088888
010099999
010001111
010002222
17/09/74
12/05/74
16/0279
F
F
F
Rua 29 N.29
Rua 30 N.30
Rua 31 N.31
Centro
Centro
Centro
Goiania
Goiania
Goiania
GO
GO
GO
74000-091 2100075
74000-092 2100076
74000-093 2100077
15/04/72
04/09/62
08/05/71
F
F
F
Rua 32 N.32
Rua 33 N.33
Rua 34 N.34
Centro
Centro
Centro
Goiania
Goiania
Goiania
GO
GO
GO
74000-094 2100078
74000-095 2100079
74000-096 2100080
03/09/67
07/04/78
10/10/79
11/11/74
F
F
F
F
Rua 35 N.35
Rua 36 N.36
Rua 37 N.37
Rua 38 N.38
Centro
Centro
Centro
Centro
Goiania
Goiania
Goiania
Goiania
GO
GO
GO
GO
74000-097
74000-098
74000-099
74000-100
V0
2100081
2100082
2100083
2100084
128
banco de Dados I
TURMA
Ano
Semestre
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1998
1998
1998
1998
1999
1999
1999
1999
1998
1998
1998
1998
1998
1998
1998
Numero
Semestre
1
1
1
1
1
1
1
2
2
2
2
2
2
1
1
1
1
1
1
2
2
2
2
2
2
1
1
2
2
1
1
2
2
1
1
1
1
1
1
2
Codigo
Curso
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
Codigo
Disciplina
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4153
4153
4153
4153
4153
4153
4153
4153
4152
4152
4152
4152
4152
4152
4152
Numero
A01
A01
A01
C01
C01
C02
C02
A01
A01
C01
C01
C02
C02
A01
A01
C01
C01
C02
C02
A01
A01
C01
C01
C02
C02
A01
C01
A01
C01
A01
C01
A01
C01
A01
A01
C01
C01
C02
C02
A01
Numero Sub
Turma
1
2
3
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
V0
129
banco de Dados I
1998
1998
1998
1998
1998
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1998
1998
MATRIC
ULA
Martricula
Aluno
111111111
222222222
333333333
444444444
555555555
666666666
777777777
888888888
999999999
101010101
202020202
303030303
404040404
505050505
606060606
707070707
808080808
909090909
000111111
000222222
000333333
000444444
2
2
2
2
2
1
1
1
1
1
1
2
2
2
2
2
2
1
1
Ano
Semestr
e
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4111
4111
A01
C01
C01
C02
C02
A01
A01
C01
C01
C02
C02
A01
A01
C01
C01
C02
C02
A01
A01
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
Numero
Semestre
Codigo
Curso
Codigo
Disciplina
Numero
Turma
Sub
Turma
DataDa
Matricula
N1
N2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
A01
A01
A01
A01
A01
A01
A01
A01
A01
C01
C01
C01
C01
C01
C01
C01
C01
C01
C02
C02
C02
C02
1
1
1
1
1
1
2
2
2
1
1
1
1
1
2
2
2
2
1
1
1
1
20/01/98
20/01/98
21/01/98
21/01/98
22/01/98
23/01/98
15/01/98
15/01/98
16/01/99
12/01/98
12/01/98
13/01/98
14/01/98
15/01/98
20/01/98
20/01/98
21/01/98
21/01/98
22/01/98
23/01/98
15/01/98
15/01/98
6,5
2,0
7,0
5,0
6,0
7,0
4,2
5,0
6,9
5,5
6,0
8,0
V0
130
banco de Dados I
000555555
000666666
000777777
000888888
000999999
000011111
000022222
000033333
000044444
000055555
000066666
000077777
000088888
000099999
000001111
000002222
000003333
000004444
000005555
000006666
000007777
000008888
000009999
000000111
000000222
000000333
000000444
000000555
000000666
000000777
000000888
000000999
111111111
222222222
333333333
444444444
555555555
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4152
4152
4152
4152
4152
C02
C02
C02
C02
C02
A01
A01
A01
A01
A01
A01
A01
A01
A01
C01
C01
C01
C01
C01
C01
C01
C01
C01
C02
C02
C02
C02
C02
C02
C02
C02
C02
A01
A01
A01
A01
A01
1
2
2
2
2
1
1
1
1
1
2
2
2
2
1
1
1
1
1
2
2
2
2
1
1
1
1
1
2
2
2
2
1
1
1
1
1
16/01/99
12/01/98
12/01/98
13/01/98
14/01/98
15/07/98
15/07/98
15/07/98
16/07/98
17/07/98
15/07/98
15/07/98
15/07/98
16/07/98
17/07/98
15/07/98
15/07/98
15/07/98
16/07/98
17/07/98
15/07/98
15/07/98
15/07/98
16/07/98
17/07/98
15/07/98
15/07/98
15/07/98
16/07/98
17/07/98
15/07/98
15/07/98
15/07/98
16/07/98
17/07/98
15/07/98
15/07/98
666666666
777777777
888888888
101010101
202020202
303030303
1998
1998
1998
1998
1998
1998
2
2
2
2
2
2
CMP
CMP
CMP
CMP
CMP
CMP
4152
4152
4152
4152
4152
4152
A01
A01
A01
C01
C01
C01
1
2
2
1
1
1
15/07/98
16/07/98
17/07/98
15/07/98
15/07/98
15/07/98
V0
131
banco de Dados I
404040404
505050505
606060606
707070707
808080808
909090909
000111111
000222222
000333333
000444444
000555555
000666666
000777777
000888888
000999999
111111111
222222222
333333333
444444444
555555555
666666666
777777777
888888888
101010101
202020202
303030303
404040404
505050505
606060606
707070707
808080808
909090909
000111111
000222222
000333333
000444444
000555555
000666666
000777777
000888888
000999999
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
C01
C01
C01
C01
C01
C01
C02
C02
C02
C02
C02
C02
C02
C02
C02
A01
A01
A01
A01
A01
A01
A01
A01
C01
C01
C01
C01
C01
C01
C01
C01
C01
C02
C02
C02
C02
C02
C02
C02
C02
C02
V0
1
1
2
2
2
2
1
1
1
1
1
2
2
2
2
16/07/98
17/07/98
15/07/98
15/07/98
15/07/98
16/07/98
17/07/98
15/07/98
15/07/98
15/07/98
16/07/98
17/07/98
15/07/98
15/07/98
15/07/98
16/01/99
17/01/99
16/01/99
17/01/99
16/01/99
17/01/99
16/01/99
17/01/99
16/07/99
17/07/99
16/07/99
17/07/99
16/07/99
17/07/99
16/07/99
17/07/99
16/07/99
17/07/99
16/07/99
17/07/99
16/07/99
17/07/99
16/07/99
17/07/99
16/07/99
17/07/99
banco de Dados I
Ano
AULA
Semestre
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
132
Numero
Semestre
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
Codigo
Curso
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
Codigo
Disciplina
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
CodigoTur Sub
ma
Turma
A01
1
A01
1
A01
1
A01
1
A01
1
A01
1
A01
2
A01
2
A01
2
C01
1
C01
1
C01
1
C01
1
C01
1
C01
2
C01
2
C01
2
C01
2
C02
1
C02
1
C02
1
C02
1
C02
1
C02
2
C02
2
C02
2
C02
2
A01
1
A01
1
A01
1
A01
1
A01
1
A01
2
A01
2
A01
2
A01
2
C01
1
C01
1
C01
1
C01
1
C01
1
C01
2
C01
2
V0
Data
03/03/99
05/03/99
10/03/99
12/03/99
17/03/99
19/03/99
05/07/99
12/05/99
19/05/99
01/03/99
03/03/99
08/03/99
10/03/99
15/03/99
03/03/99
10/03/99
17/03/99
19/03/99
02/04/99
05/04/99
08/04/99
11/04/99
14/04/99
17/04/99
20/04/99
23/04/99
26/04/99
01/08/99
03/08/99
05/08/99
07/08/99
09/08/99
03/08/99
05/08/99
07/08/99
09/08/99
01/08/99
03/08/99
05/08/99
07/08/99
09/08/99
03/08/99
05/08/99
Nume
ro
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Cpf
Professor
ResumoAula
133
banco de Dados I
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1998
1999
1999
1999
1999
1999
1999
1999
1999
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
1
1
1
1
1
1
1
1
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4144
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4152
4153
4153
4153
4153
4153
4153
4153
4153
C01
C01
C02
C02
C02
C02
C02
C02
C02
C02
C02
A01
A01
A01
A01
A01
A01
A01
A01
C01
C01
C01
C01
C01
C01
C01
C01
C01
C02
C02
C02
C02
C02
C02
C02
C02
C02
A01
A01
A01
A01
A01
A01
A01
A01
2
2
1
1
1
1
1
2
2
2
2
1
1
1
1
1
1
2
2
1
1
1
1
1
2
2
2
2
1
1
1
1
1
2
2
2
2
V0
07/08/99
09/08/99
01/08/99
03/08/99
05/08/99
07/08/99
09/08/99
03/08/99
05/08/99
07/08/99
09/08/99
01/08/99
03/08/99
05/08/99
07/08/99
09/08/99
03/08/99
05/08/99
07/08/99
06/08/99
01/08/99
03/08/99
05/08/99
07/08/99
09/08/99
03/08/99
05/08/99
07/08/99
09/08/99
01/08/99
03/08/99
05/08/99
07/08/99
10/08/99
03/08/99
05/08/99
07/08/99
05/01/99
05/01/99
06/01/99
06/01/99
07/01/99
07/01/99
08/01/99
09/01/99
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
1
2
1
2
1
1
134
banco de Dados I
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
1999
FREQUE
NCIA
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
CMP
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
4153
C01
C01
C01
C01
C01
C01
C01
C01
C01
C02
C02
C02
C02
C02
C02
C02
C02
C02
Ano
Semestre
Numero
Semestre
Codigo
Curso
Codigo
Disciplina
Codigo
Turma
1998
CMP
4144
1998
CMP
1998
1998
1998
05/01/99
05/01/99
06/01/99
06/01/99
07/01/99
07/01/99
08/01/99
09/01/99
09/01/99
05/01/99
05/01/99
06/01/99
06/01/99
07/01/99
07/01/99
08/01/99
09/01/99
09/01/99
1
2
1
2
1
2
1
1
2
1
2
1
2
1
2
1
1
2
Data
Aula
Numero
Aula
A01
Numero
Sub
Turma
1
03/03/99
4144
A01
05/03/99
CMP
4144
A01
10/03/99
CMP
4144
A01
12/03/99
CMP
4144
A01
17/03/99
V0
Matricula
Aluno
Ind
Presena
111111111
222222222
333333333
555555555
666666666
111111111
333333333
444444444
555555555
666666666
111111111
333333333
444444444
555555555
666666666
111111111
333333333
444444444
555555555
666666666
111111111
135
banco de Dados I
1998
CMP
4144
A01
V0
19/03/99
333333333
444444444
555555555
666666666
111111111
333333333
444444444
555555555
666666666
136
banco de Dados I
V0
Banco de Dados I
137
EXERCCIOS
SQL
Banco de Dados I
138
Banco de Dados I
139
Escreva uma operao de insero na relao Professor que viola a restrio de integridade de entidade.
2.
Escreva uma operao de insero na relao Professor que viola restries de integridade referencial.
3.
Escreva uma operao de insero na relao Aluno que viola restries de integridade de chave.
4.
Escreva uma operao de excluso na relao Departamento que viola restries de integridade
referencial.
5.
Escreva uma operao de alterao na relao Aluno que viola restries de domnio.
6.
Obtenha uma relao com todos os atributos dos professores do departamento CMP.
7.
Obtenha uma relao com Cpf, Nome e Endereo dos professores do departamento ADMINISTRAO.
8.
Obtenha uma relao das disciplinas dos cursos de CINCIA DA COMPUTAO e FISICA.
9.
Obtenha a relao DEP com os atributos Sigla e Nome do Departamento que devem corresponder
respectivamente aos atributos Codigo e Nome da relao DEPARTAMENTO.
10. Dado as duas relaes abaixo, mostre o contedo da relao RESULTADO obtida da operao
DEP1 DEP2.
DEP1
Codigo
CMP
FIT
ADM
ENG
Nome
CINCIA DA COMPUTAO
FILOSOFIA E TEOLOGIA
ADMINISTRAO
ENGENHARIA
DEP2
Codigo
ADM
ENG
ECO
Nome
ADMINISTRAO
ENGENHARIA
ECONOMIA
RESULT Codigo
ADO
Nome
Banco de Dados I
140
11. Dados as duas relaes a seguir, mostre o contedo da relao RESULTADO obtida da operao
AB
A
Matricula
1
2
3
4
8
5
Nome
FERREIRA NETO
FRANCISCO RIBEIRO
CARLOS GOMES
REGINA DUARTE
BONAPARTE FIGUEIREDO
CARLOS VEIGA
Matricula
1
7
4
2
8
5
Nome
FERREIRA NETO
FRANCISCO RIBEIRO
CARLOS GOMES
REGINA DUARTE
BONAPARTE FIGUEIREDO
CARLOS VEIGA
RESULTADO
Matricula
Nome
Banco de Dados I
141
12. Dado as duas relaes abaixo mostre a relao RESULTADO obtida da operao A B
A
Matricula
1
2
3
4
5
6
7
Matricula
1
3
2
4
RESULTADO Matricula
13. Dado as relaes A e B, mostrar o contedo da relao RESULTADO aps a sequncia de operaes a
seguir:
RESULTADO
A
Matricula
1
2
3
4
5
6
7
Matricula
1
5
3
10
11
15
9
(A B) - B
Banco de Dados I
142
14. Dado as relaes A e B abaixo, mostrar o contedo da relao C aps as a sequncia de operaes a
seguir:
C
(A B) B
Matricula
1
2
3
4
5
6
7
Matricula
1
3
2
4
Matricula
WORK2
WORK1 X DISCIPLINA
Banco de Dados I
143
23. Quais alunos forma reprovados, em cada disciplina cursada, por falta (Nnmero de faltas > 25% do total
de aulas). Mostrar: Matricula e Nome do Aluno, Codigo e Nome da Disciplina, Codigo e Nome do Curso,
o Numero de Aulas e Nmero de faltas.
24. Quais os professores que reprovaram mais de 3 alunos ( por falta ou por nota). Mostrar o Cpf e o Nome do
Professor.
25. Qual a mdia das notas de cada disciplina. Mostrar o Codigo e Nome da disciplina, o cdigo do curso, a
soma das notas da disciplina, o nmero de alunos matriculados e a mdia.
26. Obter a menor e a maior nota obtida em cada disciplina. Mostrar: o Cdigo e Nome da disciplina e a
menor e a maior nota.
27. Obter a relao dos alunos que obtiveram notas menor que 3,0 e maior que 8,0 em cada disciplina.
Mostrar: a Matrcula e Nome do Aluno, Codigo e Nome da disciplina, o Codigo do Curso e a nota obtida.
28. Obter a relao das disciplinas de cada curso com os seus respectivos dias de aula. Mostrar: o Codigo e
Nome do Curso, Codigo e Nome da Disciplina, O dia de aula (segunda, tera, etc.) , o horrio da aula e o
tipo (se laboratrio ou preleo).
29. Obter uma relao com todos os alunos do Departamento de Computao: Mostrar todos os atributos de
ALUNO e o Codigo e o Nome do Departamento.
30. Obter a relao das disciplinas que no tm alunos matriculados. Mostrar: todos os dados de
DISCIPLINA.
31. Obter a relao de alunos que no fizeram matrculas.
32. Obtenha o nmero total de alunos reprovados reprovados ((media =( N1*4 + N2*6)/10) <m 10) por
semestre.
33. Obtenha o nmero total de alunos matriculados em cada curso.
34. Encontre a quantidade de aulas lecionadas pelo professor IVON.
35. Obter uma relao dos professores do curso de Cincias da Computao, em ordem alfabtica. A lista
deve conter todos os atributos de Professor e o cdigo do departamento onde ele est vinculado.
36. Escreva uma sequencia de comandos que remova todas as disciplinas do curso de Administrao.
(Lembrar que o Banco de Dados Acadmico no permite excluso em cascata)
37. Considerando que exista cadastrado no Bancdo Acadmico o aluno cuja matrcula 748 escrever o
comando que matricula esse aluno na disciplina 7777 do curso de cdigo ADM, na turma A01/1 do
primeiro semestre de 1999.
38. Listar os alunos, que tiveram notas acima da mdia de cada turma, em ordem decrescente da nota.
39. Listar os alunos e o nmero de faltas de cada um, em ordem decrescente de nome dos alunos que foram
reprovados por falta (25 % do total de aulas dadas).
40. Listar as disciplinas que tm aulas na Segunda e na Quarta-feira. A lista deve conter: O codigo e o nome
do curso, o codigo, o nome e os crditos da disciplina e o dia da semana);
41. Listar os alunos matriculados em Banco de Dados I, eliminando as linhas duplicadas. A lista deve conter,
apenas o nome dos alunos;
42. Que restries de integridade podem ser violadas com a execuo do comando:
DELETE FROM Professor
Where Codigo = FIT;
43. Considerando que o Banco de Dados Acadmico esteja vazio, por que o comando de insero abaixo no
consegue fazer a incluso.
INSERT INTO Matrcula
(Matrcula, Nome, DataMatricula)
Values (187, Flavio Rezende Da Matta , #10-OCT-99#);
Banco de Dados I
44. Criar tabela Disciplina1 com os mesmos dados e requisitos de disciplina.
144
Banco de Dados I
145
Banco de Dados - CIRURGICO
45. Construir o DER, do banco de dados CIRRGICO, que deu origem aos comandos Create Table abaixo:
CREATE TABLE Cirurgia
(Nmero NUMBER (5) NOT NULL,
Data DATE NOT NULL,
Ocorrencias Char (50),
CpfMedico NUMBER (11) NOT NULL,
CpfPaciente NUMBER (11) NOT NULL,
CodigoCirurgia CHAR(3) NOT NULL,
CONSTRAINT PrkCirurgia (Nmero),
CONSTRAINT FrkTipoCirurgia FOREIGN KEY (CodigoCirurgia)
REFERENCES Tipo_Cirurgia (Codigo),
CONSTRAINT FrkMedicoCirurgia FOREIGN KEY (CpfMedico)
REFERENCES Medico (Cpf),
CONSTRAINT FrkPacienteCirurgia FOREIGN KEY (CpfPaciente)
REFERENCES Paciente (Cpf))
CREATE TABLE Tipo_Cirurgia
(Codigo CHAR (3) NOT NULL,
Nome CHAR (30) NOT NULL,
Peo NUMBER (8) NOT NULL,
CONSTRAINT PrkTipoCirurgia PRIMARY KEY (Codigo));
CREATE TABEL Medico
(Cpf NUMBER(11) NOT NULL,
Nome CHAR(30) NOT NULL,
DataNascimento DATE NOT NULL,
Telefone NUMBER (7),
CONSTRAINT PrkMedico PRIMARY KEY (Cpf));
CREATE TABEL Paciente
(Cpf NUMBER(11) NOT NULL,
Nome CHAR(30) NOT NULL,
DataNascimento DATE NOT NULL,
Telefone NUMBER (7),
Logradouro CHAR (30),
Setor CHAR (20),
Cidade CHAR (20),
Estado CHAR (2),
Cep NUMBER (8),
CONSTRAINT PrkPaciente PRIMARY KEY (Cpf));
As questes a seguir tm como referncia o Banco de Dados CIRURGICO definido no exerccio anterior.
46. Escreva o comando para incluir o atributo TempoDeDurao na tabela Cirurgia do.
47. Escreva o comando para excluir o atributo Ocorrencias da tabela Cirurgia..
48. Em que condio ou condies a execuo do comando Delete, abaixo, no fere restries de integridade
referencial.
DELETE FROM Medico
Where Cpf > 500;
Banco de Dados I
146
49. Em que condio ou condies a execuo do comando Update, abiaxo, no fere as restries de
integridade referencial.
UDATE Cirurgia
Set CpfPaciente = 458,
CpfMedico = 300
Where Numero = 4;
50. Escreva o comando que reajusta o preo dos tipos de cirurgia em 20%;
51. Listar a quantidade de cirurgias, por tipo, que foram realizadas a partir de 10/10/99;
52. Listar os mdicos que no realizaram nenhuma cirurgia no ms de dezembro de 1998;
53. Listar os pacientes que fizeram mais de uma cirurgia no perodo de 01/02/99 a 30/07/99;
54. Listar os tipos de cirurgia que no tiveram nenhuma cirurgia realizada em 1998;
55. Listar os mdicos que realizaram mais de 3 cirurgias no ano de 1999;
56. Listar total de cirurgias por tipo no perodo de 01/09/99 a 31/12/99;
57. Obter um lista dos mdicos em ordem alfabtica;
58. Obter uma relao com o cpf e o nome do mdico, o nmero e a data da cirurgia o nome e o preo da
cirurgia, o cpf e o nome do paciente. A relao deve ser obtida por ordem alfabtica crescente do nome do
mdico.
59. Listar os pacientes que fizeram cirurgia do corao (Codigo = 15);
60. Listar os tipos de cirurgias, em ordem crescente de cdigo, que no teve nenhum paciente operado no
perodo de 01/01/99 a 01/07/99;
Banco de Dados I
147
Banco de dados FAMILIA ZACHARIAS
61. Construir o DER que deu origem aos comandos DDL, abaixo:
CREATE TABLE Cidade
Estado CHAR(2) NOT NULL,
Cidade CHAR(20) NOT NULL,
CONSTRAINT PrkCidade PRIMARY KEY (Estado, Cidade))
CREATE TABLE Cemiterio
(Numero NUMBER(5) NOT NULL,
Estado CHAR(2) NOT NULL,
Cidade CHAR(20) NOT NULL,
CONSTRAINT PrkCemiterio PRIMARY KEY (Numero)
CONSTRAINT FrkCidadeCemiterio FOREIGN KEY (Estado, Cidade)
REFERENCES Cidade (Estado, Cidade));
CREATE TABLE Pessoa
(Codigo NUMBER(5) NOT NULL,
Nome CHARr(30) NOT NULL,
DataNascimento DATE NOT NULL,
Sexo CHAR(1) NOT NULL,
NumeroPaternidade NUMBER(11),
EstadoNatal CHAR(2) NOT NULL,
CidadeNatal CHAR(20) NOT NULL,
Logradouro CHAR(30) NOT NULL,
Setor CHAR(20) NOT NULL,
Cidade CHAR(20) NOT NULL,
Estado CHAR(2) NOT NULL,
CONSTRAINT PrkPessoa PRIMARY KEY (Codigo),
CONSTRAINT FrkFilho FOREIGN KEY (NumeroPaternidade)
REFERENCES Paternidade (Numero),
CONSTRAINT FkrCidadeNatal FOREIGN KEY (EstadoNatal, CidadeNatal)
REFERENCES Cidade (Estado, Cidade));
CREATE TABLE Falecimento
(CodigoPessoa NUMBER(5) NOT NULL,
DataFalecimento DATE NOT NULL,
NumeroCertidaoObto NUMBER(8),
NumeroCemiterio NUMBER(5) NOT NULL,
CONSTRAINT PrkFalecimento PRIMARY KEY (CodigoPessoa),
CONSTRAINT FrkPessoaFalecimento FOREIGN KEY (CodigoPessoa)
REFERENCES Pessoa (Codigo),
CONSTRAINT FrkCemiterioFalecimento FOREIGN KEY (NumeroCemiterio)
REFERENCES Cemiterio (Numero));
CREATE TABLE Casamento
( Numero NUMBER (11) NOT NULL,
CodigoPai NUMBER(5),
CodigoMae NUMBER(5),
DataCasamento DATE NOT NULL,
CONSTRAINT PrkPaternidade PRIMARY KEY (Numero),
CONSTRAINT FrkPai FOREIGN KEY (CodigoPai)
REFERENCES Pessoa (Codigo),
CONSTRAINT FrkMae FOREIGN KEY (CodigoMae)
REFERENCES Pessoa (Codigo));
ALTER TABLE Pessoa
ADD CONSTRAINT FrkPaternidadePessoa FOREIGN KEY (NumeroPaternidade)
REFERENCES Paternidade (Numero);
Banco de Dados I
148
Tomando como referncia o banco de dados da FAMILIA ZACHARIAS, do exerccio anterior, resolver as
questes a seguir:
62. Listar todas as pessoas com pai e me desconhecidos. A lista deve conter todos os atributos da pessoa.
63. Listar todas as pessoas j falecidas, da famlia. A lista deve conter: Todos os dados da pessoa, a cidade e
o estado onde a pessoa faleceu, a data do falecimento e o nmero do atestado de bito.
64. Listar as pessoas da cidade de So Paulo que ainda esto vivas e que tenham mais de 70 anos. A lista deve
conter todos os atributos de pessoa e deve estar em ordem crescente de Nome da pessoa.
65. Listar as pessoas que nasceram no ano de 1998. A lista deve conter todos os atributos de pessoa e deve
estar em ordem crescente de data de nascimento.
66. Listar as pessoas cuja idade est acima da mdia de idade da famlia. A lista deve conter todos os atributos
da pessoa, a idade e mdia de idade da famlia.
67. Obter uma lista das cidades onde mora algum da famlia, indicando a quantidade de pessoas da famlia
que mora na cidade, o estado e o nome da cidade.
68. Obter uma lista que contenha a quantidade de pessoas falecidas em cada cidade do estado do Paran.
69. Obter uma relao das cidades onde residem pessoas da famla. A lista deve conter todos os atributos da
pessoa. Orden-la por ordem crescente de nome da cidade.
70. Obter uma relao, em alfabtica crescente de nome, das pessoas que tm mais de 3 filhos. A lista deve
conter todos os atributos da pessoa.
71. Obter a quantidade de homens e de mulheres da famlia Zacharias.
72. Obter uma relao das pessoas que tm mais filhos homens. Listar todos os atributos da pessoa mais a
quantidade de filhos e de filhas que cada pessoa tem.
73. Listar as pessoas que no tm nenhum filho. A lista teve conter todos os atributos de pessoa.
74. Listar as pessoas que so casadas. A lista deve conter o nome do esposo, o nome da esposa e da data de
casamento, e deve ser ordenada por nome do esposo (ascendente).
75. Listar os casais que no tm filhos.
76. Listar as pessoas solteiras.
77. Listar as pessoas que tiveram mais de um casamento.
Banco de Dados I
149
Banco de Dados I
150
Banco de Dados I
151
Banco de Dados ACADMICO Parte II
1.
Listar todos os professores em ordem alfabtica descendente de nome. A lista deve conter todos os
atributos de professor.
2.
3.
Listar a quantidade de professores vinculados a cada departamento. A lista deve conter o cdigo do
departamento, a quantidade de professores do departamento e ser ordenada por cdigo do departamento
em ordem descendente.
4.
Listar os departamentos que tm mais de 5 professores a ele vinculados. A lista deve conter o cdigo do
departamento, a quantidade de professores do departamento e ser ordenada por cdigo do departamento
em ordem crescente.
5.
Listar os professores com mais de vinte e cinco anos. Alista deve conter o Cpf, o nome, a data de
Nascimento e a idade de cada professor. A lista deve ser ordenada por ordem crescente de idade.
6.
Listar os professores que no tm endereo cadastrado. A lista deve conter todos os atributos de professor
e ser ordenada em ordem crescente de nome.
7.
Obter uma lista de todos os cursos em ordem crescente de cdigo do curso. A lista deve conter todos os
atributos de curso.
8.
Listar a quantidade de cursos vinculados a cada departamento. A lista deve conter o cdigo do
departamento e a quantidade de cursos a ele vinculada. A lista deve ser ordenada em ordem decrescente da
quantidade de cursos obtida.
9.
Listar os departamentos com mais de 2 cursos a ele vinculados. A lista deve conter o cdigo do
departamento e a quantidade de cursos a ele vinculada. A lista deve ser ordenada em ordem decrescente da
quantidade de cursos obtida.
10. Obter uma lista das disciplinas do curso de Cincias da Computao. A lista deve conter todos os atributos
de disciplina e deve ser mostrada em ordem crescente de cdigo do curso e cdigo da disciplina.
11. Listar as disciplinas do curso de Administrao que tm menos de 4 crditos. A lista deve conter todos os
atributos de disciplina e deve ser mostrada em ordem crescente de crditos.
12. Obter a carga horria do curso de Cincia da Computao. Listar o cdigo do curso e a carga horria em
ordem crescente carga horria.
13. Listar as disciplinas que no tm aulas de laboratrio. A lista deve conter todos os atributos da disciplina e
deve ser mostrada em ordem decrescente de cdigo do curso e cdigo da disciplina.
14. Obter a quantidade de disciplinas, a quantidade de crditos, a quantidade de aulas de preleo e a
quantidade das aulas de laboratrio de cada curso. A lista deve conter alm das quantidades pedidas o
cdigo do curso e ser ordenada por cdigo do curso.
15. Obter uma lista dos cursos cuja carga horria sejam maior que 400 horas. Listar o cdigo do curso e a
carga horria e ordenar a lista por cdigo do curso.
16. Listar as disciplinas oferecidas no ano de 1999. A lista deve conter o cdigo do curso, o cdigo da
disciplina e dever ser ordenada por cdigo do curso e cdigo da disciplina em ordem crescente.
17. Obter uma lista dos alunos em ordem crescente de nome. A lista deve conter todos os atributos de aluno.
Banco de Dados I
152
18. Obter uma lista dos alunos que no tm telefone. A lista deve conter todos os atributos de aluno e deve ser
ordenada por nome do aluno em ordem decrescente.
19. Obter uma lista com a mdia geral de cada disciplina, no primeiro semestre de 1999. A lista deve conter o
cdigo do curso, o cdigo da disciplina e a mdia e deve ser mostrada em ordem decrescente da mdia.
20. Obter uma lista das disciplinas cuja mdia geral, no segundo semestre de 1999 tenha ficado inferior a 5. A
lista deve conter o cdigo do curso, o cdigo da disciplina e a mdia e deve ser mostrada em ordem
decrescente da mdia.
21. Obter uma relao dos cursos cuja mdia geral no primeiro semestre de 1999 seja superior a 6. A lista
deve conter o cdigo do curso e a mdia e estar ordenada por cdigo do curso.
22. Obter o total de alunos matriculados em cada subturma aberta no primeiro semestre de 1999. A lista deve
conter o cdigo do curso, o cdigo da disciplina, o cdigo da turma e da subturma, o ano e o semestre e o
total obtido.
23. Listar os alunos reprovados em Banco de Dados I (nota < 5,0). A lista deve conter a matrcula do aluno, o
cdigo da disciplina, o cdigo do curso e a nota do aluno. Mostrar a lista em ordem crescente de cdigo
do curso e cdigo da disciplina.
24. Obter uma lista das turmas abertas no segundo semestre de 1998 com menos de 10 alunos matriculados. A
lista deve conter o cdigo do curso, o cdigo da disciplina, o cdigo da turma e da subturma, o ano e o
semestre e o total obtido. Mostrar a lista em ordem crescente de ano, semestre, cdigo do curso, cdigo da
disciplina.
25. Listar as matrculas ocorridas entre 01/01/99 e 30/01/99. A lista deve conter todos os atributos de
matrcula e deve ser mostrada em ordem crescente de matrcula, turma e subturma.
26. Listar a quantidade de aulas acontecidas entre 01/03/99 e 30/04/99.
27. Listar a quantidade de aulas acontecidas no primeiro semestre de 1999, por curso. A lista deve conter o
cdigo do curso e a quantidade de aulas obtidas. Ordenar a lista em ordem decrescente de cdigo de curso.
28. Listar a quantidade de aulas acontecidas no primeiro semestre de 1999, por disciplina. Mostrar na lista o
cdigo do curso, o cdigo da disciplina e a quantidade de aulas obtidas. Ordenar a lista em ordem
crescente de cdigo de curso e cdigo de disciplina.
29. Listar as disciplinas que tiveram mais de 16 aulas por ms. A lista deve conter o cdigo do curso, o cdigo
da disciplina, o mes e a quantidade de aulas obtidas. Ordenar a lista em ordem crescente de cdigo de
curso e cdigo da disciplina.
30. Obter uma lista dos alunos reprovados por falta (faltas >= 25 % das aulas dadas). A lista deve estar
ordenada por matrcula, em ordem crescente, e deve conter a matrcula do aluno, o cdigo do curso, o
cdigo da disciplina, o cdigo da turma, o cdigo da subturma, o semestre e o ano, o total de faltas e o
total de aulas dadas.
31. Listar o total de aulas assistidas por cada aluno da turma A01, subturma 2 da disciplina CMP 1010 no
segundo semestre de 1999. Mostrar a matrcula e o total de aulas assistidas em ordem crescente de
matrcula.
Banco de Dados I
153
32. Obter o total de disciplinas do curso de Cincias da Computao. Mostrar na lista o cdigo e o nome do
curso e o total de disciplinas obtido. A lista deve ser mostrada em ordem crescente de cdigo de curso.
33. Obter a quantidade de turmas aberta por disciplina no semestre. Mostrar na lista, o cdigo e o nome do
curso, o cdigo e o nome da disciplina, o ano e o nmero do semestre e a quantidade de turma obtida, e
orden-la por ano, semestre, cdigo e nome do curso e cdigo e nome da disciplina.
34. Listar as disciplinas vinculadas a cada professor. A lista deve conter o cpf e o nome do professor, o cdigo
e o nome do curso e o cdigo e o nome da disciplina. Ordenar a lista em ordem crescente de: Nome do
professor, cdigo do curso e cdigo da disciplina.
35. Obter uma relao dos professores que deram aula no primeiro semestre de 1999. A relao deve conter
os seguintes dados: cpf e nome do professor, cdigo e nome do curso, cdigo e nome da disciplina e a
data da aula. Ordenar a relao por nome do professor, cdigo do curso e cdigo da disciplina, em ordem
crescente.
36. Relacionar a quantidade de aulas dadas por cada professor no ano de 1999. A relao deve conter o nome
do professor e a quantidade de aulas dadas e deve estar ordenada por nome do professor em ordem
crescente.
37. Relacionar os alunos de cada curso em ordem crescente de cdigo e nome do curso e nome do aluno. A
relao deve conter o cdigo e o nome do curso e a matrcula e o nome do aluno.
38. Listar os alunos matriculados no curso de Filosofia, por semestre, a partir de 1997. Mostrar a matrcula e
o nome do aluno, o cdigo e o nome do curso, o ano e o semestre. Ordenar em ordem crescente de ano,
semestre, nome do curso e nome do aluno.
39. Listar o resumo das aulas, de cada professor, do primeiro semestre de 1998. A lista deve conter o nome do
professor, o cdigo do curso, o cdigo da disciplina, o nmero da aula, o cdigo da turma, a subturma, a
data da aula e o resumo. Ordenar por nome do professor, cdigo da turma, subturma e data da aula, em
ordem crescente.
40. Obter uma relao de alunos com as respectivas aulas assistidas, do segundo semestre de 1999. Mostrar a
matrcula e o nome do aluno, o cdigo e o nome do curso, o cdigo e o nome da disciplina, a turma,
subturma e a data da aula. Orden-la por nome do aluno, nome do curso, nome da disciplina e data da
aula.
41. Relacionar os alunos reprovados por falta (faltas >= 25 % das aulas dadas) no primeiro semestre de 1999.
Mostrar na relao a matrcula e o nome do aluno, o cdigo do curso, o cdigo e o nome da disciplina, a
quantidade de aulas dadas, a quantidade de faltas e o percentual das faltas em relao s aulas dadas.
Orden-la por nome do aluno, por cdigo do curso e cdigo da disciplina.
42. Relacionar os alunos reprovados por nota (< 5,0) no segundo semestre de 1998. A relao deve conter os
seguintes dados: matrcula e nome do aluno, cdigo do curso, cdigo e nome da disciplina e a nota.
Mostrar a relao ordenada por: matricula do aluno, cdigo do curso e cdigo da disciplina.
43. Obter uma relao dos alunos reprovados por um professor dado, em um semestre dado de um ano dado.
Apresentar na relao o ano, o semestre e o cpf dados, o nome do professor, o cdigo do curso, o cdigo e
o nome da disciplina, a matrcula e o nome do aluno. Classificar a relao por: nome do aluno, ano,
semestre, nome do professor.
Banco de Dados I
154
44. Listar quantas vezes um determinado aluno foi reprovado numa determinada disciplina. Mostrar a
matrcula e o nome do aluno, o cdigo do curso e o cdigo e o nome da disciplina. Ordenar a lista por
nome do aluno, cdigo do curso e cdigo da disciplina.
45. Listar quantas vezes um determinado aluno cursou determina disciplina. Mostrar a matrcula e o nome do
aluno, o cdigo do curso e o cdigo e o nome da disciplina. Ordenar a lista por nome do aluno, cdigo do
curso e cdigo da disciplina.
46. Obter uma relao dos professores que no lecionaram em 1998. Mostrar na relao todos os dados do
professor e orden-la por nome do professor.
47. Obter uma relao das disciplinas que no foram oferecidas num determinado semestre. A relao deve
conter: o ano, o semestre, o cdigo do curso e o cdigo e o nome da disciplina e deve ser ordenada por
ano, semestre, cdigo do curso e nome da disciplina, em ordem crescente.
48. Listar os alunos que no matricularam em 1997 em nenhuma disciplina. A ordenao e o contedo da lista
deve ser sugerido pelo aluno.
49. Listar as disciplinas que tiveram mais de 20% de reprovao no primeiro semestre de 1999. A ordenao e
o contedo da lista deve ser sugerido pelo aluno.
50. Obter uma lista de aulas que tiveram menos de 15 alunos presentes. Mostrar na lista o nome e a matrcula
do aluno, o cdigo do curso, o cdigo e o nome da disciplina e a quantidade de alunos obtida. Sugerir a
classificao mais interessante para a lista.
51. Obter uma lista dos alunos com nota acima da mdia da turma. Mostrar: a matrcula e o nome do aluno, o
cdigo do curso, cdigo e nome da disciplina, o cdigo da turma, a mdia da turma e a nota do aluno.
Ordenar a lista por nome do aluno, cdigo do curso e nome da disciplina.
52. Listar os professores que deram aula nas Teras-feiras de 1998 . Mostrar o nome do professor e o cdigo e
o nome das disciplinas lecionadas e o cdigo da turma e a subturma. Ordenar a lista por nome do
professor.
53. Listar os alunos que s assistiram 70% das aulas do ms de marco do primeiro semestre de 1998. Sugerir
o contedo e ordenao que sejam mais interessantes para a lista.
54. Obter uma lista dos alunos cujo nmero de faltas seja maior que o nmero de faltas da turma. Sugerir o
contedo e a ordenao mais interessantes para a lista.
Banco de Dados I
155
EXERCCIOS DIVERSOS
1.
3
1
5
9
15
2
6
8
14
10
11
12
13
6
9
5
2
12
11
10 13
Medico
Motorista
Engenheiro
10
Engenheiro
Mecnico
Engenheiro
Eletricista
Banco de Dados I
2.
156
O segmento de relatrio abaixo, produzido por um sistema hipottico de controle de voos areos
domsticos nacionais. Construir o segmento de DER do modelo de dados do sistema que possa ter dado
origem ao relatrio mostrado.
Empresa
Varig
Voo
150
Rota
Goinia GO
Chegada: 06:10
Partida: 07:10
So Paulo SP
Chegada: 07:10
Partida: 08:00
Varig
151
So Paulo SP
Chegada: 12:10
Partida: 12:30
Curitiba PR
Chegada: 13:30
Partida: 14:00
Vasp
152
R. de Janeiro
.
.
.
200
Chegada: 07:00
Chegada: 09:00
Partida: 09:30
Partida: 08:00
.
.
.
.
.
.
Uberlndia Mg So Paulo SP
Chegada: 10:00
Chegada: 12:00
Sada: 11:00
Partida: 12:30
.
.
.
TAM
3.
Florianpolis
R. Janeiro
Salvador BA Aracaju SE
Chegada: 11:45
Chegada:
Partida: 12:00
12:30
Chegada: 09:00
Partida: 12:45
Partida: 09:45
Florianpolis Porto Alegre
SC
Chegada: 15:00
Partida: 15:30 Chegada: 16:30
Partida: 17:00
So Paulo SP Goinia GO Braslia DF
Chegada: 11:10 Chegada: 13:10
Chegada:
Partida: 12:00
Partida: 13:30
13:50
Sada: 14:00
.
.
.
Braslia DF
Chegada: 13:00
Sada: 14:00
.
.
.
.
.
.
Um hospital precisa saber ao final de cada ms, para efeito de pagamento dos mdicos. O pagamento dos
mdicos feito com base em um relatrio que emitido no final do ms que contm os seguintes dados:
nome e endereo de cada paciente operado. Nome de cada mdico que fez a cirurgia no paciente. Qual
mdico foi o responsvel e quais foram os mdicos auxiliares de cada cirurgia. O nome de cada cirurgia
e o valor que deve ser pago a cada mdico por cirurgia e o valor total que deve ser pago para cada
mdico por ms. H pacientes que fazem mais de um cirurgia.
Construir o DER de um sistema que possa atender ao hospital.
V0
Banco de Dados I
4.
O segmento de relatrio abaixo mostra parte da rvore genealgica de uma famlia. Construir o DER a
partir do qual seja possvel emitir o relatrio. As colunas correspondentes a Pai e Me no preenchidos
significam que a pessoa tem pai e/ou me desconhecidos.
Codigo
...
001
002
003
004
005
006
007
008
009
010
011
012
...
5.
157
Pessoa
Nome
...
Rafael Ribeiro dos Anjos
Ulisses Resende dos
Santos
Maria das Graas Ribeiro
Maria Ribeiro dos Anjos
Joo Martins Filho
Carlos Gomes
Joo Ribeiro
Francisco Resende
Carla Mendes
Maria dos Anjos
Rosa dos Santos
Rogrio dos Anjos
...
Codigo
...
007
008
Pai
Nome
...
Joo Ribeiro
Francisco Resende
Codigo
...
010
011
Me
Nome
...
Maria dos Anjos
Rosa dos Santos
001
007
009
010
Carla Mendes
Maria dos Anjos
012
...
...
...
...
A lista abaixo, mostra o contedo dos atributos de entidades de um tipo de entidade A. Existe algum
atributo, da relao, que pode ser escolhido como identificador da entidade? Justifique sua resposta.
A
Nome
Francisco dos Anjos
Maria Antonieta
Carlos Rosemberg
Flacio Rocha
Maria Antonieta
Endereo
Rua 18
Rua 17
Rua 14
Rua 18
Rua 12
Sexo
M
F
M
F
M
V0
Data
10/10/47
15/08/50
20/03/60
10/10/47
12/12/40
Estado Civil
Vivo
Desquitado
Divorciado
Vivo
Casado
Banco de Dados I
6.
158
Construir o DER que possa ter dado origem ao comando CREATE TABLE, escrito abaixo. (Representar
entidades, relacionamentos e suas cardinalidades e os atributos).
CREATE TABLE APROVEITAMENTO
(CodigoAluno INTEGER NOT NULL,
CodigoDisciplina INTEGER NOT NULL,
Nota BYTE NOT NULL,
CONSTRAINT PrkAproveitamento
PRIMARY KEY (CodigoAluno, CodigoDisciplina),
CONSTRAINT FrkDisciplinaAproveitamento
FOREIGN KEY (CodigoAluno)
REFERENCES ALUNO (Codigo),
CONSTRAINT FrkAlunoAproveitamento
FOREIGN KEY (CodigoDisciplina)
REFERENCES DISCIPLINA (Cdigo))
7.
V0
Banco de Dados I
8.
159
PEDIDO
PRODUTO
Codigo
A1
A2
A3
A4
DETALHE DE Item
PEDIDO
01
02
03
01
02
01
FORNECEDOR
5
10
3
8
60
20
Data de Emisso
10/10/98
10/11/98
20/01/99
20/02/99
Descrio
Forno microondas
Anzol
Adubo orgnico KBX
Caderno Espiral 100 Fls
Quantidade
Codigo
01
02
03
04
9.
Nmero
00001
00002
00001
00002
Ano
1998
1998
1999
1999
Codigo.Produt
o
A1
A2
A3
A1
A2
A3
Nome
Irmos Cunha
Casa da Pesca
Pecuarista do
Povo
Papelaria
Moderna
Codigo.Fornecedor
01
01
03
03
Saldo
100
800
100
180
Unidade
Unitrio
Duzia
Kg
Unitrio
Ano.Pedido Nmero.Pedido
1998
1998
1998
1998
1998
1999
00001
00001
00001
00002
00002
00001
Endereo
Rua 15
Rua 80
Rua So Joo
CGC
CGC1
CCG2
CGC3
Capital Social
3.000.000,00
150.000,00
200.000,00
Categoria
Atacadista
Varejista
Rural
Rua 23
CGC3
100.000,00
Escolar
Com base nas relaes da questo anterior, obter, atravs de operaes da lgebra relacional, uma relao
indicadora do resumo de pedidos de cada produto por ano. A relao deve conter: O ano do pedido, O
Cdigo e o Nome do Produto, a Soma das quantidades de cada DETALHE DE PEDIDO para cada
produto no ano e o nmero de ocorrncias de cada produto em DETALHE DE PEDIDO no ano.
V0
Banco de Dados I
160
10. Com base nas relaes da Questo 2, obter, atravs de operaes da lgebra relacional, uma relao de
fornecedores que no tm pedidos a eles relacionados. A relao deve conter todas as colunas da relao
FORNECEDOR.
11. Com base nas relaes, A e B, abaixo, mostrar o contedo da relao obtida atravs da
expresso: B (A
B)
A
Codigo
1
2
4
5
B (A
B)
Codigo Nome
Nome
Manoel dos Santos
Raquel Queiroz
Francisco Menelau
Ramss Ribas
Codigo
5
4
9
10
Nome
Ramss Ribas
Francisco Rezende
Francisco Menelau
Ramss Ribas
12. Com base nas relaes, A e B, abaixo, mostrar o contedo da relao obtida atravs da
expresso: (AB) B
A
Codigo
00001
00120
00430
00130
00028
(A B) B
Nome
Maria Vieira
Merida Frana
Viviane Costa
Wilmar Cardoso
Rocha Rezende
Codigo
Codigo
00028
00040
00001
00120
Nome
Rocha Rezende
Francisco Rezeck
Maria Vieira
Rosa Maria
Nome
V0
Banco de Dados I
161
13. Um pessoa ou uma empresa compram veculos financiados atravs da rede bancria. Uma mesma
empresa pode ter vrios veculos financiados ao mesmo tempo, inclusive com financiamento de bancos
diferentes. J uma pessoa s pode comprar outro carro financiado depois de quitar o financiamento
anterior, se existir. H um contrato, para cada carro financiado, que identificado por: um nmero e pela
data de emisso. E mais, o valor, a data do financiamento, o valor da prestao, a quantidade de
prestaes e a data de vencimento de cada prestao. Cada contrato se refere a um nico veculo, mesmo
que a mesma pessoa ou empresa tenha financiado mais de um veculo. Cada veculo identificador por:
cor, marca, nmero do chassis e a quantidade de passageiros. Do agente financeiro preciso: do nome,
do endereo e do CGC. Das empresas h que ser informado: o CGC, a razo social, o nome de fantasia e
endereo, alm do CPF, do endereo, e do nome de cada um de seus scios. Uma pessoa, que tenha carro
financiado, deve ser identificada pelo nome, endereo, CPF, Nmero da carteira de identidade e rgo
emissor. Para cada contrato de financiamento h pelo menos um avalista, podendo existir mais de um.
H contratos que tm como avalistas empresas e pessoas fsicas. Cada avalista identificado, por CGC,
Razo Social e endereo, se empresa, e CPF, nome e endereo, se pessoa fsica.
Construir um DER para o ambiente acima, mostrando: entidades com seus atributos, identificador de
cada entidade e entidades fracas.
14. Dado as duas relaes abaixo mostre a relao RESULTADO obtida da operao A B.
A
Matricula
1
2
3
4
5
6
7
Matricula
1
3
2
4
RESULTADO
15. Dado as relaes A e B abaixo, mostrar o contedo da relao C aps as a sequncia de operaes a
seguir:
C
A
(A B) B
Matricula
1
2
3
4
5
6
7
Matricula
1
3
2
4
Matricula
V0
Banco de Dados I
162
16. Dado o DER e a descrio de seus atributos, abaixo, escrever os dois comandos SELECT pedidos a
seguir:
a)
(1,5 pontos) - Listar a quantidade de pedidos de cada cliente. A lista deve conter o cdigo e o nome
do cliente e o nmero. Mostrar a lista em ordem decrescente da quantidade obtida.
b) (1,5 pontos) - Listar os pedidos de cada cliente. A lista deve conter o nmero e da dada do pedido, o
cdigo, o nome e o valor do produto, o cdigo e o nome do cliente e a quantidade de cada detalhe de
pedido de cada produto.
CLIENTE
PEDIDO
DETALHE
DE PEDIDO
CLIENTE Atributos
Codigo
Nome
DataNascimento
CP CE TIPO
S
Number
Text
Date
PEDIDO
CP CE TIPO
TAM
S
Number
5
Date
30
Number
8
S
Atributos
Numero
Data
Valor
CodigoCliente
PRODUTO
TAM
3
30
DETALHE Atributos
DE
PEDIDO
NumeroPedido
Item
Quantidade
CodigoProduto
CP CE TIPO
PRODUTO ATributos
Codigo
Nome
Valor
CP CE TIPO
TAM
S
Text
3
Text
30
Number
8
S
S
TAM
S
Number
Number
2
5
V0
Banco de Dados I
163
V0
Banco de Dados I
164
19. Para a resoluo das questes propostas a seguir, considerar o banco de dados criado na
questo anterior, item a.
a) Escreva a sequencia de comandos, na ordem correta, para inserir duas linhas em cada tabela.
b) (Em que condies o comando, abaixo, pode provocar uma violao de integridade referencial?
DELETE FROM AUTOR
WHERE Cpf < 11111111111;
c) Escreva uma seqncia de comandos que provoque uma violao de integridade de chave, na tabela
AUTOR.
20. Para a resoluo das questes propostas a seguir, considerar o banco de dados criado na questo 18 tem
a.
a) Escreva o comando para listar os autores que no tenham nenhum livro editado. A lista deve conter
todos os dados de Autor;
b) Listar os autores com livros editados. A lista deve conter todos os dados de autor, o nmero e o ttulo
do livro e o cdigo e o nome da editora. Ordenar a lista por nome da editora, nome do autor e ttulo do
livro.
21. As questes 22 e 23 a seguir devem ser respondidas de acordo com as definies do Banco de dados
abaixo:
1.a. DER
FORNECEDOR
PEDIDO
1
N
PRODUTO
DETALHES DE
PEDIDO
Id Relacionamento
S
V0
Tipo
N
Text
N
N
Req
S
S
Tam Dec
3
0
40
14
0
7
0
Dom
>0
Qualquer
>0
> 999999
Banco de Dados I
165
PEDIDO Atributo
Id
Numero
S
Data
Logradouro
Bairro
Cidade
Uf
Relacionamento
Cep
CodForn
Tipo
N
Date
Text
Text
Text
Text
N
N
Fornecedor-Pedido
DETALHES Atributo
Id
DE
PEDIDO
NumPedido S
CodProduto
Relacionamento
Pedido-Detalhes
de Pedido
Produto-Detalhes
de Pedido
Id
S
Relacionamento
Tam Dec
4
0
8
40
20
20
2
Dom
>0
> 31/12/00
Qualquer
Qualquer
Qualquer
Sigla dos
Estados
>0
>0
8
3
Tipo
Req
Tam Dec
Text
N
N
6
5
Tipo
Text
Text
N
Req
S
S
S
Quantidade
Desconto
PRODUTO Atributo
Cdigo
Nome
Preo
Req
S
S
Dom
>0
Qualquer
1
2
>=0
>=0 e <=
100
Tam Dec
4
30
8
2
Dom
Qualquer
Qualquer
>= 0,10
22. Considerando que as tabelas abaixo so tabelas do banco de dados relacional definido anteriormente,
encontrar pelo menos sete erros de inconsistncia de dados das tabelas mostradas. Justificar a sua
resposta.
FORNECEDOR Colunas
Cdigo
Linhas
01
001
02
002
03
003
04
004
PEDIDO Colunas
Linhas Nmero Data
01
0001
10/10/87
02
0002
01/01/01
03
0003
01/01/51
04
0020
30/70/70
05
10/10/02
Nome
Casa do Lavrador
Fornecedor X
Fornecedor Y
Fornecedor Z
Cgc
10101010000101
8181818100023459
Fone
2000000
19191919191911
4000000
Logradouro
Rua 10
Rua 13
Bairro
Centro
Cidade
Goiania
Rua 55
Rua 70
S Sul
S Oeste
Itumbiara
Goinia
V0
Uf Cep
CodForn
Go 74000000
001
Ms 32001030
010
001
Rs 00001000
001
Go 00002000
004
Banco de Dados I
DETALHES DE
PEDIDO
Linhas
01
02
03
04
05
06
07
166
Colunas
NmPedido
0001
0001
0002
0003
0003
0003
0003
PRODUTO Colunas
Linhas
Cdigo
01
P01
02
P02
03
P03
04
P04
05
P05
06
P01
07
P06
08
P07
09
P08
CodProduto
P01
P02
P01
P03
P04
P05
P10
Nome
Detergente y
Desinfetante Z
Acar 5 Kg
Q-Boa
Sabonete z
Sabo em p z
Palha de ao K
Arroz tipo z
Feijo C
Quantidade
10,00
15,00
12,00
40,00
20,00
Desconto
20,20
12,00
5,40
10,00
Preo
0,50
1,80
3,00
0,40
0,41
2,40
0,20
5,40
1,10
23. A matriz abaixo mostra comandos CREATE TABLE hipotticos, aplicados nas tabelas do banco de
dados relacional definidos na questo 21. Cada linha da matriz contm uma seqncia de comandos
create table que so executados da esquerda para a direita conforme indicado no ttulo das colunas.
Primeiro executa o comando da coluna Primeiro da primeira linha, depois o da coluna Segundo da
mesma linha e assim sucessivamente at a coluna Quarto. Quais tabelas so criadas como resultado da
execuo da seqncia de comandos de cada linha da matriz?. Justificar a sua resposta.
Linhas
01
02
03
04
05
06
07
Primeiro
Segundo
Terceiro
Quarto
CREATE TABLE
CREATE TABLE
CEATE TABLE
CREATE TABLE
Fornecedor ...
Produto ...
DetalhesDePedido...
Pedido ...
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
Pedido ...
Fornecedor ...
Produto ...
DetalhesDePedido...
CREATE TABLE
CREATE TABLE
CREATE TABLE
CREATE TABLE
Produto ...
Pedido ...
DetalhesDePedido...
Fornecedor ...
CREATE TABLE
CREATE TABLE
CEATE TABLE
CREATE TABLE
DetalhesDePedido...
Produto ...
Fornecedor ...
Pedido ...
CREATE TABLE
CREATE TABLE
CEATE TABLE
CREATE TABLE
Produto ...
Fornecedor ...
DetalhesDePedido...
Pedido ...
CREATE TABLE
CEATE TABLE
CREATE TABLE
CREATE TABLE
Produto ...
DetalhesDePedido...
Pedido ...
Fornecedor ...
CREATE TABLE
CREATE TABLE
CREATE TABLE
CEATE TABLE
Fornecedor ...
Produto ...
Pedido ...
DetalhesDePedido...
V0
Banco de Dados I
167
24. O Banco de Dados Relacional definido, abaixo, refere-se a um ambiente de transporte interurbano de
passageiros, via nibus. Com base nesta definio resolver as trs questes seguintes:
LINHA
N
1
CIDADE
TRAJETO
1
1
EMPRES
Inicia
N
VIAGEM
Termina
PASSAGEM
PASSAGEIR
V0
Banco de Dados I
168
25. Listar as cidades correspondentes ao trajeto de cada linha de cada empresa. Mostrar na lista o nome da
empresa, o nmero da linha e o cdigo, uf e nome de cada cidade do trajeto da linha. Ordenar a lista por
nome da empresa e nmero da linha.
26. Listar a quantidade de viagens feitas por linha e por empresa no ano de 2000. A lista deve conter o
cdigo e o nome da empresa, o nmero da linha e a quantidade de viagens feitas. A coluna
correspondente quantidade de viagens feitas deve ter o ttulo: Viagens.
27. Listar o valor mdio das passagens de cada viagem, por linha e empresa no primeiro semestre de 2001.
Mostrar na lista: O nome da Empresa responsvel pela linha, o nmero da linha, o nmero da viagem e o
valor mdio apurado. Ordenar a lista em ordem decrescente do valor mdio apurado.
28. A Confederao Brasileira de Futebol CBF vai promover um torneio de futebol entre os clubes:
Flamengo, Gois, Internacional de Porto Alegre e o So Paulo Futebol Clube, para homenagear o atleta
do sculo PEL. O torneio levar o verdadeiro nome do referido atleta e tem a seguinte tabela de
realizao dos jogos, mostrada abaixo. Construir um possvel Diagrama de Entidade x Relacionamento
DER que possa dar origem tabela mostrada.
Tabela dos jogos do torneio Edson Arantes do Nascimento
Turno
Rodada
Mandante
Visitante
Primeiro
01/07/2000
Flamengo
So Paulo
So Paulo
Internacional
Internacional
Gois
Gois
Internacional
Flamengo
Gois
Flamengo
So Paulo
Gois
Internacional
Flamengo
Gois
Flamengo
So Paulo
Flamengo
So Paulo
So Paulo
Internacional
Internacional
Gois
04/07/2000
08/07/2000
Segundo
11/07/2000
14/07/2000
18/07/2000
V0
Banco de Dados I
169
29. A figura abaixo mostra a correspondncia entre as entidades CIDADE e PASSAGEM de um modelo de
dados hipottico. Construir o DER correspondente as entidades descritas. Os atributos das entidades no
precisam ser mostrados..
CIDADE
C3
C4
C2
C1
C9
C6
C1
0
C5
C13
Origem
C15
C7
C8
C1
1 C12
C14
Destino
P
1
P
4
P
2
P
3
PASSAGEM
V0
Banco de Dados I
170
30. Construir o DER, completo, inclusive mostrando as entidades fracas, correspondente s relaes
definidas abaixo:
PESSOA
CASAM
ENTO
Atributos
Codigo
Nome
DataNascimento
Sexo
NumeroCasamento
Atributos
Identificador Rel
Tipo
S
Number
Text
Date
Text
S
Tamanho
4
30
Identificador Rel
Tipo
Tamanho
Requerido
Number
S
S
S
S
Tamanho
Requerido
Numero
CodigoEsposo
CodigoEsposa
DataCasamento
TORCE
DOR
CLUBE
Atributos
S
S
Date
Identificador Rel
CodigoPessoa
CodigoClube
S
S
S
S
Atributos
Codigo
Nome
Cidade
Estado
DataFundacao
Identificador
S
CE
Tipo
Requerido
S
S
S
S
S
S
S
Tipo
Number
Text
Text
Text
Date
Tamanho
4
30
30
2
Requerido
S
S
S
S
S
Obs:
1) O NumeroCasamento, na relao PESSOA, indica que a pessoa filha das pessoas indicadas na
relao CASAMENTO.
2) H pessoas que no so casadas.
3) H pessoas que no so torcedoras de nenhuma clube.
4) H pessoas que so casadas mais de uma vez e h pessoas com mais de um filho.
31. Que alterao deveramos fazer no DER e nas relaes apresentadas na questo anterior, para representar
a situao de no se saber quem so os pais de uma determinada pessoa?
32. Ainda em relao ao DER da questo 30, listar as pessoas casadas mais de uma vez. A lista deve conter:
O cdigo, o nome e a quantidade de casamentos da pessoa.
33. Ainda em relao ao DER da questo 30, listar as pessoas que torcem para o FLAMENGO. A lista deve
conter todos os dados da Pessoa e deve ser apresentada em ordem crescente de nome da pessoa.
V0
Banco de Dados I
171
34. Obter uma relao de passageiros, como a mostrada abaixo, para cada linha da empresa ARAGUAIA, do
dia 10/10/2000 da linha 120.
Passageiro
Carlos Figueiredo
Fernando Rassi
Francisco Beltro
Luiz Ricardo
............
.
............
.
............
.
............
.
Maria dos Santos
Maria Ribeiro
Sandro Rivera
Cidade Embarque
Uberaba
Morrinhos
Goinia
Goinia
...............
...
...............
...
...............
...
...............
...
Goinia
Goinia
Goinia
Uf
Mg
Go
Go
Go
...
.
...
.
...
.
...
.
Go
Go
Go
Cidade Desembarque
Franca
So Paulo
Campnas
Uberlndia
................
...
................
...
................
...
................
...
Ribeiro Preto
Limeira
So Paulo
Uf
Sp
Sp
Sp
Mg
...
.
...
.
...
.
...
.
Sp
Sp
Sp
Valor
50,00
80,00
70,00
30,00
.....
.
.....
.
.....
.
.....
.
60,00
70,00
90,00
Observaes:
a.
b.
c.
d.
Observe que a relao deve ser mostrada em ordem alfabtica por nome do passageiro.
As linhas pontilhadas representam dados hipotticos.
Cidade Embarque a cidade onde cada passagem se inicia.
Cidade Desembarque a cidade onde a passagem termina.
35. Escrever, na ordem correta, os comandos CREATEs para criar as tabelas correspondentes as descries
dos atributos, abaixo:
ALMOXARIFADO
ESTOQUE
PRODUTO
Atributos
Codigo
Nome
Endereo
Primary Key
S
Foreign Key
Tipo
Number
Text
Text
Tamanho
4
30
60
Requerido
S
S
S
Atributos
CodigoAlmoxarifado
CodigoProduto
Saldo
Primary Key
S
S
Foreign Key
S
S
Tipo
Number
Number
Number
Tamanho
4
4
7
Requerido
S
S
Primary Key
S
Foreign Key
Tipo
Text
Text
Number
Tamanho
3
30
7
Requerido
S
S
S
Atributos
Cdigo
Nome
EstoqueMinimo
V0
Banco de Dados I
172
Obs:
1) Uma ocorrncia de ALMOXARIFADO pode ter uma ou mais ocorrncias de ESTOQUE a ele
vinculada.
2) Uma ocorrncia de ESTOQUE deve se vincular a uma e somente uma ocorrncia de
ALMOXARIFADO.
3) Uma ocorrncia de PRODUTO pode ter uma ou mais ocorrncias de ESTOQUE a ela vinculada
4) Uma ocorrncia de ESTOQUE deve ser vinculada a uma e somente uma ocorrncia de PRODUTO.
5) O atributo CodigoAlmoxarifado Foreign Key de ALMOXARIFADO em ESTOQUE.
6) O atributo CdigoProduto pe a Foreign Key de PRODUTO EM ESTOQUE.
36. Escrever os comandos INSERT INTO, na ordem correta, para incluir os dados relacionados, abaixo:
ALMOXARIFADO Cdigo
0001
0002
Nome
So Jorge
Vaca Brava
Endereo
Rua 15 Centro
Rua T-10
ESTOQUE
CodigoAlmoxarifado CodigoProduto
0001
P01
0002
P02
PRODUTO
Cdigo
P01
P02
Nome
Sof
Mesa de Mrmore
Saldo
15
18
EstoqueMinimo
10
20
37. Tomando como base as relaes da questo 36: Listar os saldos de cada produto por almoxarifado. A
lista deve conter todos os atributos de almoxarifado, todos de produto e o saldo em estoque do produto no
estoque. Mostrar a lista ordenada por nome do produto.
38. Tomando como base as relaes da questo 36: Listar os produtos cujos saldos em estoque sejam menor
ou igual ao EstoqueMnimo do produto. Mostrar na lista o cdigo, nome e estoque mnimo do produto e o
saldo do produto em estoque. Mostrar a lista ordenada por nome do produto.
39. Tomando como base as relaes da questo 36: Listar o total do saldo de cada produto em estoque. A
lista deve conter: O cdigo e o nome do produto e o total do saldo em estoque. A coluna correspondente
ao total do saldo deve ter o ttulo: Saldo.
40. Tomando como base as relaes da questo 36: Escreva um comando INSERT INTO, para a tabela
PRODUTO, que viole as restries de integridade de chave.
41. Tomando como base as relaes da questo 36: Escreva um comando DELETE, para a tabela
ALMOXARIFADO, que viole as restries de integridade referencial.
42. Tomando como base as relaes da questo 36: Listar os produtos que no tenham nenhuma ocorrncia
na tabela ESTOQUE. A lista deve conter todos os atributos de PRODUTO e deve ser mostrada em ordem
crescente de cdigo do produto.
43. Tomando como base as relaes da questo 36: Criar uma copia da tabela ESTOQUE com os mesmos
atributos e o mesmo contedo da tabela original.
44. Tomando como base as relaes da questo 36: Alterar a tabela PRODUTO
o atributo Unidade, com trs caracteres de tamanho.
V0
Banco de Dados I
173
45. Colocar os comandos abaixo, na ordem correta para que as tabelas possam ser criadas e construir o DER
correspondente.
Comando 1:
CREATE TABLE Concedente
(Codigo NUMBER (3) NOT NULL,
Nome CHAR (30) NOT NULL,
CONSTRAINT Concedente PRIMARY KEY (Codigo))
Comando 2:
CREATE TABLE PromocaoProduto
(Codigo NUMBER (3) NOT NULL,
Numero NUMBER (3) NOT NULL,
Produto NUMBER (3) NOT NULL,
CONSTRAINT PromocaoProduto PRIMARY KEY (Codigo, Numero, Produto),
CONSTRAINT PromocaoProduto1 FOREIGN KEY (Codigo, Numero)
REFERENCES Promocao (Codigo,Numero),
CONSTRAINT PromocaoProduto2 FOREIGN KEY (Produto)
REFERENCES Produto (Codigo))
Comando 3:
CREATE TABLE Promocao
(Codigo NUMBER (3) NOT NULL,
Numero NUMBER (3) NOT NULL,
Categoria CHAR (1) NOT NULL,
Objeto CHAR (1) NOT NULL,
Beneficiario CHAR (1) NOT NULL,
CONSTRAINT Promocao PRIMARY KEY (Codigo, Numero),
CONSTRAINT Promocao1 FOREIGN KEY (Codigo)
REFERENCES Concedente (Codigo))
Comando 4:
CREATE TABLE Produto
(Codigo NUMBER (3) NOT NULL,
Nome CHAR (30) NOT NULL,
Valor NUMBER (8),
CONSTRAINT Produto PRIMARY KEY (Codigo))
V0
Banco de Dados I
174
46. Escreva o comando CREATE TABLE, para criar a balela e os relacionamentos representativos do DER
abaixo. Sugerir, pelo menos, quatro para a tabela criada.
av
av
Pessoa
neta
neta
47. Escreva um comando, CREATE TABLE, para criar a tabela e o relacionamento representativos do DER
abaixo. Sugerir, pelo menos, quatro atributos para a tabela criada.
Chefe
Funcionario
48. Um comando DELETE sempre viola uma restrio ou restries de integridade? Justifique sua resposta.
V0
Banco de Dados I
175
Bibliografia
Bibliografia
1. Rumbaugh, James e outros. Modelagem e Projetos Baseados em Objetos. Rio de Janeiro:
Campus, 1988.
6. Oracle. Data Modelling and Database Design. California. Oracle Corporation, 1992.
V0