Escolar Documentos
Profissional Documentos
Cultura Documentos
BANCO DE DADOS I
V0 Professor: Ivon Rodrigues Canedo
V0
Banco de Dados I
1 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
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
V0
Banco de Dados I
2 076 078 079 080 081 081 082 083 084 084 085 085 087 088 091 111 137 138 143 145 147 149 153
10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
20.
9.22. Subconsulta Sql 9.23. Instruo Transform 9.24. Declao Parameters 9.25. Operador Between...And 9.26. Operador In 9.27. Operador Like 9.28. Caracteres Curinga Create User ou Group Add User Drop User ou Group Alter User ou Database Grant Revoke Tipos de Dados SQL Exerccios SQL Resolvidos O Banco Acadmico Exerccios SQL 19.1. Banco de Dados Acadmico Parte I 19.2. Banco de Dados Cirrgico 19.3. Banco de Dados Famlia Zacharias 19.4. Banco de Dados Transporte 19.5. Banco de Dados Acadmico Parte II Exerccios Diversos
V0
Banco de Dados I
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
Gerenciar grandes volumes de dados Facilitar a eliminao de redundncia e inconsistncia de dados Facilitar o armazenamento e acesso aos dados Garantir o acesso a vrios usurios ao mesmo tempo Garantir a segurana dos dados (Por exemplo, garantir a recuperao dos dados caso haja danificao do meio onde esto armazenados. Garantir segurana de acesso). Garantir a integridade dos dados
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.
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.
V0
Banco de Dados I
V0
Banco de Dados I
7 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
Tipo de Entidade Fraca ou Dependente a entidade cuja identificao no pode ser feita por seus prprios atributos. Para sua identificao completa precisamos de atributos de outra entidade. Exemplo 1. A entidade DEPENDENTE uma entidade fraca pois para a sua identificao h que se utilizar atributos da entidade EMPREGADO (A Matrcula do empregado, por exemplo). Ou seja, quando falamos, Joo Viera (Dependente) precisamos dizer de quem ele dependente (Empregado) para que se possa identificlo completamente. Assim: Joo Vieira dependente de Francisco da Rocha (Empregado)
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
Banco de Dados I
10
1 N
APROVEITAMENTO Nota Data da avaliao
1 N
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
Banco de Dados I
11
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 Matrcula Nome Telefone ID S OB S S S MV AD AC CE NAT TAM N C C 4 40 14 DEC DOM > zero <> Nulo <> Nulo
V0
Banco de Dados I
12
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 Trabalha N 1 DEPARTAMENTO Departamento
r1
. Produo
r2 r3
r4 r5 . Financeiro . Marketing
Jos . r6
No Departamento de Produo (1) trabalham N (3) Empregados ( Francisco, Srgio, Marta) No Departamento Financeiro (1) trabalham N (2) Empregados ( Marcos, Jos) No Departamento de Marketing (1) trabalha N (1) Empregado (Alexandre)
V0
Banco de Dados I
13
Uma Viso de um Relacionamento M:N Entre dois Tipos de Entidades M N
PROFESSOR
DISCIPLINA
Professor
Disciplina
r1 r2 r3
r4 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
Banco de Dados I
14
CLIENTE Cliente
Recebe
r1
. Produo
r2 r3 r4
V0
Banco de Dados I
15
Uma Viso do Relacionamento 1:1 Entre dois Tipos de Entidades sem Obrigatoriedade do laod EMPREGADO
EMPREGADO Empregado Gerencia Flvio . Francisco . Srgio . Alexandre . Marcos . Marta . Rita . r4 1 1 DEPARTAMENTO Departamento
r1 r2
. Produo . Financeiro
r3
. Marketing
Repare que existe empregados que no esto associados a departamento nenhum. So os empregados que no gerenciam departamentos.
V0
Banco de Dados I
16
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
V0
Banco de Dados I
17
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
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
Entidade Associativa
Entidade Primria
Tanto o relacionamento entre ALUNO e APROVEITAMENTO como o relacionamento entre DISCIPLINA e APROVEITAMENTO so do tipo associativo pois ambos relacionam entidades primrias de ALUNO e DISCIPLINA entidade do tipo associativa APROVEITAMENTO.
V0
Banco de Dados I
18
Auto-Relacionamentos PESSOA
Esposo Esposa Origem Voo
CIDADE
Destino
(0,N)
(0,N) Casamento
V0
Banco de Dados I
19
1.6. Convenes para Construo de um DER Tipo de Entidade Tipo de Entidade Fraca
Relacionamento
Atributo Composto
Atributo Derivado
E1
E2
V0
Banco de Dados I
20
E1
E2
(min,max)
V0
Banco de Dados I
21
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 CONTA # Nmero Tipo da Conta Saldo AGNCIA # Cdigo Nome 1,1000 1,1 EMPRESTIMO # Data Valor
Exerccio 2 Quais os possveis atributos que podem identificar as duas entidades no relacionamento a seguir.
V0
Banco de Dados I
22
Exerccio 3 Construir um possvel DER a partir do contedo do relatrio abaixo. Almoxarifado 234 234 456 456 Cdigo Produto Rua 15, Centro A12 Rua 15, Centro F15 Rua 9, S. Oeste J14 Rua 9, S. Oest F15 Endereo 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
Banco de Dados I
23
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)
Produto
(0,N)
(1,1)
(0,N)
(0,N)
Vendedor
(0,N) (1,1)
Cliente
(1,1)
(1,1)
(1,N)
Nota Fiscal
V0
Banco de Dados I
24
Definio dos Atributos Vendedor Atributos ID OB S S S MV AD AC CE NAT TAM N N C 4 4 14 DEC DOM > zero > zero <> Nulo
V0
Banco de Dados I
25
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
Banco de Dados I
26
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
Verificao da Primeira Forma Normal Verificar se cada atributo tem um nico valor para cada instncia da entidade. Nenhum atributo pode ter valores repetidos.
V0
Banco de Dados I
27
Exemplo:
Verificar se a entidade Cliente abaixo est na 1FN.Se no estiver, convert-la para a 1FN.
Nmero
Data de Contato
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.
V0
Banco de Dados I
28
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.
CLIENTE
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:
V0
Banco de Dados I
29
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.
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
Banco de Dados I
30
Endereo do Aluno Data da Avaliao Nome do Aluno Matrcula Professor Matrcula Aluno AVALIAO Nota Obtida Conceito Nome do Professor Graduao do Professor
V0
Banco de Dados I
31
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
Banco de Dados I
32
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 Tuplas ALUNO Matrcula Nome DataNascimento Sexo Atributos
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
Banco de Dados I
33
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
Banco de Dados I
34
RESTRIES NO MODELO RELACIONAL Restries de domnio Restries de domnio especificam que o valor de cada atributo A deve ser um valor atmico pertencente ao domnio dom(A) para este atributo. Os tipos de dados associados a domnios incluem os numricos inteiros, reais, caracteres, strings de tamanho fixo, strings de tamanho varivel, data, etc. Os domnio podem ainda especificar um conjunto de valores vlidos explicitamente identificados.
Restries de Chave ( Chave Primria = Primary Key )
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. 2. 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. 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.
Formalmente: t1 [FK] = t2 [PK]. Importante Em um banco de dados de muitas relaes, existem geralmente muitas restries de integridade referencial. Para especificar estas restries, deve-se primeiro ter uma clara compreenso do significado do papel de cada atributo das vrias relaes do esquema do banco de dados. As restries de integridade referencial surgem dos relacionamentos entre as entidades.
V0
Banco de Dados I
35
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. Algoritmo de Mapeamento ER / RELACIONAL Passo 1 Para cada tipo de entidade forte E no esquema ER, crie uma relao R e inclua todos os atributos simples de E. Inclua somente os atributos componentes simples de cada atributo composto. Escolha uma dos atributos identifivadores de E como chave primria de R. Se a chave escolhida for composta, o conjunto de atributos simples que a formam, juntos formaro a chave primria de R. Passo 2 Para cada tipo de entidade fraca F no esquema ER cujo tipo de entidade forte identificadora E, crie uma relao R, e inclua todos os atributos simples (ou componentes simples de atributos compostos) de F como atributos de R. Alm disso, inclua como chave estrangeira em R os atributos que formam a chave(s) primria(s) da(s) relao(es) que correspondem ao tipo de entidade forte identificadora. Esse procedimento mapeia o relacionamento identificador de F. A chave primria de R a combinao da(s) chave(s) primria(s) da(s) entidade(s) forte(s) e da chave parcial do tipo de entidade fraca F, se existir. Passo 3 Para cada tipo de relacionamento R binrio 1:1 no esquema ER, identifique as relaes S e T que correspondam aos tipos de entidades participantes de R. Escolha uma das relaes digamos, S e inclua como chave estrangeira em S a chave primria de T. melhor escolher um tipo de entidade com participao total em R para desempenhar o papel de S. Inclua todos os atributos simples (ou componentes simples de atributos compostos) do tipo de relacionamento R 1:1 como atributos de S. Passo 4 Para cada tipo de relacionamento binrio R 1:N que no seja identificador de entidade fraca, identifique a relao S que representa o tipo de entidade participante no lado N do tipo de relacionamento. Inclua como chave estrangeira de S a chave primria da relao T que representa o outro tipo de entidade participante de R; isto se deve ao fato de que cada instncia de entidade do lado N se relaciona a, no mximo, uma instncia de entidade do lado 1 do tipo de relacionamento. Inclua todos os atributos simples (ou componentes simples de atributos compostos) do tipo de relacionamento 1:N como atributos de S.
V0
Banco de Dados I
36
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
Banco de Dados I
37
5.
Exerccios de Modelagem de Dados a. Construir o DER correspondente descrio dos relacionamentos abaixo:
Um Item de Pedido de Compra deve se referir a um nico Pedido de Compra. Um Pedido de Compra deve se referir a um nico Fornecedor. Um Item de Pedido de Compra deve se referir a um e somente um Produto. Um Pedido de Compra deve conter um ou vrios Itens de Pedido de Compra. Um Fornecedor pode ter vrios Pedidos de Compra a ele solicitado. Um Produto pode ser referido por nenhum ou vrios Itens de Pedido de Compra. Um Produto deve ser fornecido por um ou vrios Fornecedores. Um Fornecedor deve fornecer um ou vrios Produtos. Um Pedido de Compra pode ser atendido por uma ou vrias Notas Fiscais. Uma Nota Fiscal deve se referir a um e somente um Pedido de Compra. Uma Nota Fiscal deve ser constituda de um ou mais Itens de Nota Fiscal. Um Item de Nota Fiscal deve se referir a uma nica Nota Fiscal.
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
Banco de Dados I
38
V0
Banco de Dados I
39
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
Banco de Dados I
40
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
Banco de Dados I
41
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
Banco de Dados I
42
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
Banco de Dados I
43
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
Banco de Dados I
44
V0
Banco de Dados I
45
SQL
V0
Banco de Dados I
46
V0
Banco de Dados I
47
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 campo1, campo2 tipo tamanho ndice1, ndice2 ndicedemulticampos 1.2. Exemplos a) Criar a tabela: DEPARTAMENTO CREATE TABLE DEPARTAMENTOS (Codigo Text(3) NOT NULL, Nome Text(30) NOT NULL, CONSTRAINT PrkDep PRIMARY KEY (Codigo)) b) Criar a tabela: CURSOS CREATE TABLE CURSOS (Codigo Text(3) NOT NULL, Nome Text(30) NOT NULL, CodigoDepartamento Text(3) NOT NULL, CONSTRAINT PrkCurso PRIMARY KEY (Codigo), CONSTRAINT FrkDepCurso FOREIGN KEY (CodigoDepartamento) REFERENCES DEPARTAMENTOS (Codigo)) Descrio O nome da tabela a ser criada. O nome do campo ou campos a serem criados na nova tabela. Uma tabela deve ter pelo menos um campo. O tipo de dados de campo na nova tabela. O tamanho do campo em caracteres (somente os campos Texto e Binrio). 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.
c)
V0
Banco de Dados I
48
CREATE TABLE DISCIPLINAS (CodigoCurso Text(3) NOT NULL, Numero INTEGER NOT NULL, Nome Text(30) NOT NULL, Creditos Byte NOT NULL, Laboratorio Byte NOT NULL, Prelecao Byte NOT NULL, CodigoDepartamento Text(3) NOT NULL, CONSTRAINT PrkDisciplina PRIMARY KEY (CodigoCurso, Numero), CONSTRAINT FrkCursoDisciplina FOREIGN KEY (CodigoCurso) REFERENCES CURSOS (Codigo)) d) Criar a Tabela: SEMESTRES CREATE TABLE SEMESTRES (Ano Integer NOT NULL, Numero Byte NOT NULL, CONSTRAINT PrkSemestre PRIMARY KEY (Ano,Numero)) e) Criar a Tabela: TURMAS CREATE TABLE TURMAS (CodigoCurso Text(3) NOT NULL, NumeroDisciplina INTEGER NOT NULL, Numero Text(3) NOT NULL, NumeroSubturma Text (1) NOT NULL, AnoSemestre Integer NOT NULL, NumeroSemestre Byte NOT NULL, CONSTRAINT PrkTurma PRIMARY KEY (CodigoCurso, NumeroDisciplina, Numero, NumeroSubTurma, AnoSemestre,NumeroSemestre), CONSTRAINT FrkDisciplinaTurma FOREIGN KEY (CodigoCurso,NumeroDisciplina) REFERENCES DISCIPLINAS (CodigoCurso,Numero), CONSTRAINT FrkDisciplinaSemestre FOREIGN KEY (AnoSemestre,NumeroSemestre) REFERENCES SEMESTRES (Ano,Numero))
1.3. Comentrios Uma clusula CONSTRAINT estabelece vrias restries em um campo e pode ser utilizada para estabelecer a chave primria.
V0
Banco de Dados I
49
1.4. ALTER TABLE Modifica a estrutura de uma tabela depois de ter sido criada com a instruo CREATE TABLE. 1.5. Sintaxe ALTER TABLE tabela {ADD {COLUMN campo tipo[(tamanho)] [NOT NULL] [CONSTRAINT ndice] | CONSTRAINT ndicedemulticampos} | DROP {COLUMN campo I CONSTRAINT nomedondice} } 1.6. A instruo ALTER TABLE tem estas partes: Parte Tabela Campo Tipo Tamanho ndice ndicedemulticampos Descrio O nome da tabela a ser alterada. O nome do campo a ser adicionado ou excludo da tabela. O tipo de dados de campo. O tamanho do campo em caracteres (somente os campos Texto e Binrio). O ndice para campo. Consulte o tpico da clusula CONSTRAINT para maiores informaes sobre como construir este ndice. A definio de um ndice de campos mltiplos a ser adicionado tabela. Consulte o tpico da clusula CONSTRAINT para maiores informaes sobre como construir esta clusula. O nome do ndice de campo mltiplo a ser removido.
Acrescentar na tabela DEPARTAMENTOS, o atributo DataDeCriacao de preenchimento opcional e do tipo data. ALTER TABLE DEPARTAMENTOS ADD COLUMN DataDeCriacao Date
b) Excluir da tabela DEPARTAMENTOS, o atributo DataDeCriacao ALTER TABLE DEPARTAMENTOS DROP COLUMN DataDeCriacao 2.4. Comentrios Atravs da instruo ALTER TABLE, voc pode alterar uma tabela existente de diversas maneiras. Voc pode: Utilizar ADD COLUMN para adicionar um novo campo tabela. Voc especifica o nome do campo, tipo de dados e (para campos Texto e Binrio) um tamanho opcional.
V0
Banco de Dados I
50
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 ndice 3.3. Exemplos a) Excluir a Tabela: TABEXEMPLO criada pelo comando abaixo Criando a tabela CREATE TABLE TABEXEMPLO (Codigo Text(3), Nome Text(30), DataNascimento Date, CONSTRAINT PrkTabExemplo PRIMARY KEY (Codigo)) Excluindo a tabela DROP TABLE TABEXEMPLO b) Excluir o ndice IdxNome criado pelos comandos abaixo: Criando o ndice (Vide comando CREATE INDEX) CREATE INDEX IdxNome ON DEPARTAMENTOS (Nome ASC) Descrio O nome da tabela a ser excluda ou a tabela a partir da qual um ndice deve ser excludo. O nome do ndice a ser excludo da tabela.
V0
Banco de Dados I
51
Excluindo o ndice IdxNome DROP INDEX IdxNome ON DEPARTAMENTOS 3.4. Comentrios Voc deve fechar a tabela para poder exclu-la ou remover um ndice dela. Voc tambm pode utilizar ALTER TABLE para excluir um ndice de uma tabela. Voc pode utilizar CREATE TABLE para criar uma tabela e CREATE INDEX ou ALTER TABLE para criar um ndice. Para modificar uma tabela, use ALTER TABLE. 4. 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 tabela campo Descrio O nome do ndice a ser criado. O nome da tabela existente que conter o ndice. 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) Criar um ndice nico para o campo nome da tabela: DEPARTAMENTOS CREATE UNIQUE INDEX IdxNome ON DEPARTAMENTOS (Nome ASC) A clusula UNIQUE indica que o ndice criado no pode Ter valores duplicados. b) Criar um ndice para o campo nome da tabela DEPARTAMENTOS proibindo a entrada de dados nulos. CREATE INDEX IdxNome
V0
Banco de Dados I
52
ON DEPARTAMENTOS (Nome ASC) WITH DISALLOW NULL A clusula WITH DISALLOW NULL proibe a entrada de dados nulos no campo nome. c) 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
Banco de Dados I
53
Restrio de campos mltiplos: CONSTRAINT nome {PRIMARY KEY (primria1[, primria2 [, ...]]) | UNIQUE (exclusiva1[, exclusiva2 [, ...]]) | NOT NULL (nonulo1[, nonulo2 [, ...]]) | FOREIGN KEY (ref1[, ref2 [, ...]]) REFERENCES tabelaexterna [(campoexterno1 [, campoexterno2 [, ...]])]} 5.5. A clusula CONSTRAINT tem estas partes: Parte Nome primria1, primria2 exclusiva1, exclusiva2 nonulo1, nonulo2 ref1, ref2 Tabelaexterna campoexterno1, campoexterno2 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
Banco de Dados I
54
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 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.
Expressodetabela
O nome da tabela ou das tabelas das quais os registros so inseridos. Este argumento pode ser um nome de tabela simples ou
V0
Banco de Dados I
55
um composto resultante de uma operao INNER JOIN, LEFT JOIN ou RIGHT JOIN ou uma consulta salva. Os valores a serem inseridos nos campos especficos do novo registro. Cada valor inserido no campo que corresponde posio do valor na lista: valor1 inserido no campo1 do novo registro, valor2 no campo2, e assim por diante. Voc deve separar os valores com uma vrgula e colocar os campos de texto entre aspas (' ').
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
Banco de Dados I
56
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.* 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. Descrio O nome opcional da tabela da qual so excludos registros. O nome da tabela da qual so excludos registros. Uma expresso que determina os registros a ser excludos.
7.7. Importante
V0
Banco de Dados I
57
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 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. 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.
V0
Banco de Dados I
58
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
Banco de Dados I
59
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. Especifica que todos os campos da tabela ou tabelas especificadas esto selecionados. O nome da tabela contendo os campos a partir dos quais os registros so selecionados. Os nomes dos campos contendo os dados que voc deseja recuperar. Se voc incluir mais de um campo, eles sero recuperados na ordem listada. Os nomes a serem utilizados como cabealhos de coluna em lugar dos nomes originais de coluna em tabela. O nome da tabela ou tabelas contendo os dados que voc deseja recuperar. nome do banco de dados que contm as tabelas em expressodetabela se elas no estiverem no banco de dados atual.
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
Banco de Dados I
60
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. Uma instruo SELECT contendo estes atributos possui as partes a seguir: Parte ALL 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
Banco de Dados I
61
instruo SQL. Os dois exemplos a seguir so equivalentes e retornam todos os registros da tabela Funcionrios: SELECT ALL * FROM Funcionrios ORDER BY CdigoDoFuncionrio; SELECT * FROM Funcionrios ORDER BY CdigoDoFuncionrio;
DISTINCT
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
Omite dados baseado em registros duplicados completos, e no somente campos duplicados. Por exemplo, voc poderia criar uma consulta que associasse as tabelas Cliente e Pedidos no campo CdigoDoCliente. A tabela Clientes no contm campos CdigoDoCliente duplicados, mas a tabela Pedidos contm, pois cada cliente pode fazer vrios pedidos. A instruo SQL a seguir mostra como voc pode utilizar DISTINCTROW para produzir uma lista de empresas que tm pelo menos um pedido, mas sem exibir detalhes sobre esses pedidos: SELECT DISTINCTROW NomeDaEmpresa FROM Clientes INNER JOIN Pedidos ON Clientes.CdigoDoCliente = Pedidos.CdigoDoCliente ORDER BY NomeDaEmpresa; Se voc omitir DISTINCTROW, esta consulta produzir vrias linhas para cada empresa que tenha mais de um pedido.DISTINCTROW produz um efeito somente quando voc seleciona campos de algumas, mas no todas, as tabelas utilizadas na consulta. DISTINCTROW ser ignorado se a consulta incluir somente uma tabela ou se voc obtiver sada de campos de todas as tabelas.
TOP n [PERCENT]
Retorna um certo nmero de registros que caem no topo ou na base de um intervalo especificado por uma clusula ORDER BY. Suponha que voc deseje obter os nomes dos 25 melhores estudantes da classe de 1994:
V0
Banco de Dados I
62
SELECT TOP 25 Nome, Sobrenome FROM Estudantes WHERE AnoDeGraduao = 1994 ORDER BY MdiaDeNotas DESC; Se voc no incluir a clusula ORDER BY, a consulta retornar um conjunto arbitrrio de 25 registros da tabela Estudantes que satisfaam clusula WHERE.O atributo TOP no escolhe entre valores iguais. No exemplo anterior, se a vigsima quinta e a vigsima sexta melhores mdias de notas forem iguais, a consulta retornar 26 registros.Voc tambm pode utilizar a palavra reservada PERCENT para retornar uma certa porcentagem de registros que se situem no topo ou na base de um intervalo especificado pela clusula ORDER BY. Suponha que, em vez dos 25 melhores estudantes, voc queira os 10% inferiores da classe: SELECT TOP 10 PERCENT Nome, Sobrenome FROM Estudantes WHERE AnoDeGraduao = 1994 ORDER BY MdiaDeNotas ASC; O atributo ASC especifica um retorno de valores inferiores. O valor que se segue a TOP deve ser um Integer sem sinal.TOP no afeta o fato de a consulta ser ou no atualizvel.
tabela
12. Clusula FROM Especifica as tabelas ou consultas que contm os campos listados na instruo SELECT. 12.1. Sintaxe SELECT listadecampos FROM expressodetabela [IN bancodedadosexterno] 12.2. Uma instruo SELECT contendo uma clusula FROM possui as partes a seguir: Parte listadecampos 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. 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.
expressodetabela
V0
Banco de Dados I
63
O caminho completo de um banco de dados externo contendo todas as tabelas em expressodetabela.
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. O nome da tabela a partir da qual os registros so recuperados. Para obter maiores informaes, consulte a clusula FROM. Critrios de seleo. Se a instruo incluir uma clusula WHERE, o mecanismo de banco de dados Microsoft Jet agrupar valores depois de aplicar as condies WHERE aos registros.
tabela critrios
V0
Banco de Dados I
64
Os nomes de at 10 campos utilizados para agrupar os registros. A ordem dos nomes de campo em listadecamposdegrupo determina os nveis de agrupamento do nvel mais alto ao mais baixo do agrupamento.
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. O nome da tabela a partir da qual os registros so recuperados. Para obter maiores informaes, consulte a clusula FROM. Critrios de seleo. Se a instruo inclui uma clusula WHERE, o mecanismo de banco de dados Microsoft Jet agrupa valores depois de aplicar as condies WHERE aos registros.
tabela critriosdeseleo
V0
Banco de Dados I
65
Os nomes de at 10 campos utilizados para agrupar registros. A ordem dos nomes de campo em listadecamposdegrupo determina os nveis de agrupamento do nvel mais alto ao mais baixo de agrupamento. Uma expresso que determina quais registros agrupados exibir.
listadecamposdegrupo
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
Banco de Dados I
66
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 O caminho completo para o diretrio ou arquivo contendo tabela. O nome do tipo de banco de dados utilizado para criar tabela se um banco de dados no for um banco de dados Microsoft Jet (por exemplo, dBASE III, dBASE IV, Paradox 3.x ou Paradox 4.x).
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
Banco de Dados I
67
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
Banco de Dados I
68
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
Banco de Dados I
69
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
Banco de Dados I
70
18. Declarao WITH OWNERACCESS OPTION Em um ambiente multiusurios com um grupo de trabalho seguro, use esta declarao com uma consulta para conceder ao usurio que executa a consulta as mesmas permisses que as do proprietrio da consulta.
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.
19. Funes agregadas SQL Utilizando os SQL funes agregadas, voc pode determinar vrias estatsticas em conjuntos de valores. Voc pode utilizar estas funes em uma consulta e em expresses agregadas na propriedade SQL de um objeto QueryDef ou ao criar um objeto Recordset baseado em uma consulta SQL. Funes Agregadadas Funo Avg Funo Count
V0
Banco de Dados I
71
Funes Min, Max Funes StDev, StDevP Funo Sum Funes Var, VarP 20. Funo Avg Calcula a mdia aritmtica de um conjunto de valores contido em um campo especificado em uma consulta. 20.1. Sintaxe Avg(expr) O espao reservado expr representa uma expresso de seqncia que identifica o campo que contm os dados numricos dos quais voc quer tirar uma mdia 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). 20.2. Comentrios A mdia calculada por Avg a mdia aritmtica (a soma dos valores dividida pelo nmero de valores). Voc poderia utilizar o Avg, por exemplo, para calcular o custo mdio do frete. A funo Avg no inclui nenhum campo Null no clculo. Voc pode utilizar Avg em uma expresso de consulta e na propriedade SQL de um objeto QueryDef ou ao criar um objeto Recordset baseado em uma consulta SQL. 21. Funo Count Calcula o nmero de registros retornado por uma consulta. 21.1. Sintaxe Count(expr) O espao reservado expr representa uma expresso de seqncia de caracteres que identifica o campo que contm os dados que voc quer contar ou uma expresso que realiza um clculo utilizando os dados no campo. Os operandos em expr podem incluir o nome de um campo de tabela ou funo (que pode ser intrnseca ou definida pelo usurio, mas nenhuma outra funo agregada SQL). Voc pode contar qualquer tipo de dados, inclusive texto.
V0
Banco de Dados I
72
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
Banco de Dados I
73
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
Banco de Dados I
74
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
Banco de Dados I
75
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
Banco de Dados I
76
25. Operao UNION Cria uma consulta unio, que combina os resultados de duas ou mais consultas ou tabelas independentes. 25.1. Sintaxe [TABLE] consulta1 UNION [ALL] [TABLE] consulta2 [UNION [ALL] [TABLE] consultan [ ... ]] 25.2. A operao UNION possui as partes a seguir: Parte Descrio consulta1-n Uma instruo SELECT, o nome de uma consulta armazenada ou o nome de uma tabela armazenada precedida da palavra-chave TABLE. Voc pode mesclar os resultados de duas ou mais consultas, tabelas e instrues SELECT, em qualquer combinao, em uma nica operao UNION. O exemplo a seguir mescla uma tabela existente denominada Novas Contas com uma instruo SELECT: TABLE [Novas Contas] UNION ALL SELECT * FROM Clientes WHERE QuantiaDoPedido > 1000; Como padro, nenhum registro duplicado retornado quando voc usa uma operao UNION; entretanto, voc pode incluir o atributo ALL para assegurar que todos os registros sejam retornados. Isso faz com que a execuo da consulta seja mais rpida. Todas as consultas em uma operao UNION devem solicitar o mesmo nmero de campos; contudo, os campos no devero ter o mesmo tamanho ou tipo de dados. Use aliases somente na primeira instruo SELECT pois eles so ignorados em qualquer outra. Na clusula ORDER BY, refira-se aos campos pelo que so chamados na primeira instruo SELECT. Voc pode usar uma clusula GROUP BY ou HAVING em cada argumento consulta para agrupar os dados retornados. Voc pode usar uma clusula ORDER BY no fim do ltimo argumento consulta para exibir os dados retornados em uma ordem especificada. 26. Subconsultas SQL Uma subconsulta uma instruo SELECT aninhada dentro de uma instruo SELECT, SELECT...INTO, INSERT...INTO, DELETE ou UPDATE ou de uma outra subconsulta.
V0
Banco de Dados I
77
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
Banco de Dados I
78
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 instruoselect campodinmicol valor1, valor2 Descrio Uma funo agregada SQL que opera sobre os dados selecionados. Uma instruo SELECT. 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.
V0
Banco de Dados I
79
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 A declarao PARAMETERS possui as partes a seguir: 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. Um dos tipos de dados SQL do Microsoft Jet primrios ou seus sinnimos.
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
Banco de Dados I
80
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 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. Descrio Expresso que identifica o campo que contm os dados a serem avaliados. Expresses em relao as quais voc deseja avaliar expr.
V0
Banco de Dados I
81
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 valor1, valor2 Descrio Expresso que identifica o campo que contm os dados a serem avaliados. Expresso ou lista de expresses em relao a qual voc deseja avaliar expr.
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
Banco de Dados I
82
31.2. A sintaxe do operador Like possui as partes a seguir: Parte Expresso 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) Vrios caracteres a*a aZb, bac Caractere especial a[*]a Vrios caracteres ab* Um nico caractere Um nico dgito a#a No coincidente (retorna False) abc, AABB, Xab Descrio Expresso SQL utilizada em uma clusula WHERE. Seqncia ou literal de seqncia de caracteres em relao a qual expresso comparada.
aa, aBa, aBBBa aBC *ab* a*a aaa cab, aab aBBBa
A, a, &, ~
V0
Banco de Dados I
83
32. CARACTERES CURINGA A correspondncia interna de padres oferece uma ferramenta verstil para fazer comparaes de seqncias. A tabela a seguir mostra os caracteres curinga que voc pode utilizar com o operador Like e o nmero de dgitos ou seqncias aos quais eles podem corresponder. Caractere(s) em padro Coincide com expresso ? Qualquer caractere isolado * Zero ou mais caracteres # Qualquer dgito isolado (0 9) [listadecaract] Qualquer caractere isolado em listadecaract [!listadecaract] Qualquer caractere isolado no-presente em listadecaract Voc pode utilizar um grupo de um ou mais caracteres (listadecaract) entre colchetes ([ ]) para coincidir com qualquer caractere isolado em expresso, e listadecaract pode incluir praticamente qualquer caractere do conjunto de caracteres ANSI, inclusive dgitos. De fato, voc pode utilizar os caracteres especiais colchete de abertura ([ ), ponto de interrogao (?), sinal de nmero (#) e asterisco (*) para que correspondam diretamente a eles mesmos somente se estiverem entre colchetes. Voc pode utilizar o colchete de fechamento ( ]) dentro de um grupo para que corresponda a ele mesmo, mas pode utiliz-lo fora de um grupo como um caractere individual. Alm de uma simples lista de caracteres entre colchetes, listadecaract pode especificar um intervalo de caracteres atravs da utilizao de um hfen (-) para separar os limites superior e inferior do intervalo. Por exemplo, a utilizao de [A-Z] em padro resultar em uma correspondncia se a posio do caractere correspondente em expresso contiver qualquer uma das letras maisculas no intervalo de A a Z. Voc pode incluir vrios intervalos entre os colchetes sem delimitar os intervalos. Por exemplo, [azA-Z0-9] corresponde a qualquer caractere alfanumrico. Outras regras importantes para correspondncia de padro incluem: Um ponto de exclamao (!) no incio de listadecaract significa que uma correspondncia ser feita se qualquer caractere, exceto aqueles na listadecaract, for encontrado em expresso. Quando utilizado sem colchetes, o ponto de exclamao corresponder a si mesmo. Voc pode utilizar o hfen (-) seja no incio (depois de um ponto de exclamao, se este for utilizado) ou no fim de listadecaract para corresponder a si mesmo. Se estiver em qualquer outro local, o hfen identificar um intervalo de caracteres ANSI. Quando voc especifica um intervalo de caracteres, os caracteres devem aparecer em ordem de classificao crescente (A-Z ou 0-100). [A-Z] um padro vlido, mas [Z-A] no . A seqncia de caracteres [ ] ignorada; ela considerada uma seqncia de comprimento zero ("").
V0
Banco de Dados I
84
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.
V0
Banco de Dados I
85
Comentrios Uma vez adicionado um usurio a um grupo, o usurio tem todas as permisses que foram concedidas ao grupo.
35.
Exclui um ou mais usurios ou grupos existentes, ou remove um ou mais usurios existentes de um grupo existente. Sintaxe Excluir um ou mais usurios ou remover um ou mais usurios de um grupo: DROP USER usurio[, usurio, ] [FROM grupo] Excluir um ou mais grupos: DROP GROUP grupo[, grupo, ] A instruo DROP USER ou GROUP tem estas partes: Parte Usurio Grupo 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
Banco de Dados I
86
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.
Recipiente Nomeautoriz
V0
Banco de Dados I
87
recipiente nomeautoriz
V0
Banco de Dados I
88
FLOAT
8 bytes
TEXT IMAGE
V0
Banco de Dados I
89
2 bytes por caractere (Consulte Observaes) Zero a 255 caracteres.
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
Banco de Dados I
90
V0
Banco de Dados I
91
V0
Banco de Dados I
92
V0
Banco de Dados I
93
DEPARTAMEN 1
N EMPREGADO
Contedo das Tabelas DEPARTAMENTO Codigo 01 02 03 Nome Financeiro Engenharia Comercial
CARGO
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
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
CodDep CodCargo 01 03 02 01 01 02 03 05 02 02 01 01 03 03 02 01 01 02
V0
Banco de Dados I
94
FROM 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
Banco de Dados I
95
2. RECUPERANDO DADOS DE UMA TABELA OBEDECENDO DETERMINADAS CONDIES. As condies de recuperao de dados de uma ou mais tabelas so especificadas na clusula WHERE do comando SELECT 2.1. 2.2. Listar o cdigo, o nome e a data de nascimento dos empregados de cdigo 001 e 003. Soluo SELECT Codigo, Nome, DataNascimento Empregado Codigo = 001 OR Codigo = 005
banco
Tabela onde esto os atributos a serem listados Condio para recuperao dos dados
2.4. Observaes Repare que, apenas, os empregados cujos atributos satisfazem a condio especificada na clusula WHERE foram listados.
V0
Banco de Dados I
96
3.
LISTANDO TODOS OS ATRIBUTOS DE UMA TABELA. Para listar todos os dados de uma tabela basta especificar no lugar do nome dos atributos a serem listados um * logo em seguida palavra SELECT. 3.1. Listar todos os atributos de cada cargo 3.2. Soluo SELECT * O asterisco indica que todos os atributos da tabela Empregado sero listados
Cargo
V0
Banco de Dados I
97
4.
RECUPERANDO DADOS DE MAIS DE UMA TABELA. A recuperao de dados de mais de uma tabela requer a utilizao da clausula WHERE para associar uma tabela outra, a menos que se queira fazer o produto cartesiano entre as tabelas considerados. 4.1. Exemplo Listar o cdigo, o nome e o nome do cargo de cada empregado. 4.2. Soluo SELECT Empregado.Codigo, Empregado.Nome, Cargo.Nome Empregado, Cargo
Atributos a serem recuperados do banco Tabelas onde esto os atributos a serem listados Ordem de apresentao dos dados
FROM
WHERE 4.3. Resultado Codigo 001 002 003 004 005 006 007 008 009
Cargo.Codigo = Empregado.CodCargo
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
Banco de Dados I
98
5.
RECUPERANDO DADOS DE MAIS DE UMA TABELA COM RESTRIES DE SELEO. 5.1. Exemplo Listar o cdigo, o nome e o nome do cargo de cada empregado. Somente os empregados vinculados aos departamentos 01 e 03 devem ser listados. 5.2. Soluo SELECT Empregado.Codigo, Empregado.Nome, Cargo.Nome Empregado, Cargo Cargo.Codigo = Empregado.CodCargo AND (Empregado.CodDep = 01 AND Empregado.CodDep = 03)
Atributos a serem recuperados do banco Tabelas onde esto os atributos a serem listados Associa cada empregado ao seu cargo e seleciona os departamentos 01 e 03 exigidos
FROM
WHERE
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
Banco de Dados I
99
6.
ORDENANDO DADOS RECUPERADOS. Os dados recuperados podem ser ordenados de acordo com nossa necessidade. A ordenao dos dados feita pela clausula SORT do comando SELECT. 6.1. Exemplo Listar o cdigo, o nome e a data de nascimento dos empregados de cdigo 001 e 003. Mostrar a lista em ordem crescente de nome do empregado. 6.2. Soluo SELECT Codigo, Nome, DataNascimento Empregado Codigo = 001 OR Codigo = 005
FROM WHERE
Tabela onde esto os atributos a serem listados 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 Repare que a lista est ordenada pela coluna Nome
V0
Banco de Dados I
100
7.
MUDANDO O TITULO DE UMA COLUNA. Listar o cdigo, o nome e a data de nascimento de cada empregado. Mudar o cabealho da coluna DataNascimento para Dada de Nascimento. 7.1. Soluo SELECT Codigo, Nome, DataNascimento AS Data de Nascimento Empregado
FROM
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
Banco de Dados I
101
8.
RECUPERANDO DADOS DE MAIS DE DUAS TABELAS. Listar o cdigo e o nome do empregado, o cdigo do departamento onde ele est vinculado e o nome do seu cargo e salrio. A coluna correspondente ao nome do departamento deve Ter o ttulo: Departamento e a correspondente ao nome do cargo: Cargo. Mostrar a lista em ordem decrescente de salrio. 8.1. Soluo SELECT Empregado.Codigo, Empregado.Nome, Departamento.Nome AS Departamento, Cargo.Nome AS Cargo, Cargo.Salario FROM Empregado, Departamento, Cargo Mudando o ttulo da coluna correspondente ao nome do departamento e do cargo
WHERE
Associa o Empregado ao seu Departamento Associa o Empregado ao seu Cargo Ordenando por salario de modo decrescente
ORDER BY 8.2. Resultado Codigo 003 005 009 002 006 008 004 001 007
Cargo.Salario DESC
Nome Marcio Francisco Francisco Carlos Ferreira Fado Carla Figueiredo Rezende Rocha Jos Ferreira Maria Bonita Maria Araujo Marcia dos Anos
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
Banco de Dados I
102
9.
UTILIZANDO A FUNO DE AGREGAO: COUTN() Listar a quantidade de empregados por cargo. A lista deve conter o cdigo do cargo e a quantidade obtida. A coluna correspondente quantidade de empregados deve ter o ttulo: Quantidade. 9.1. Soluo SELECT Empregado.CodCargo AS Cargo, COUNT(Empregado.Codigo) AS Quantidade Mudando o ttulo da coluna Contando os empregados e mudando o ttulo da
coluna
FROM
Empregado
9.3. Observaes Repare os ttulos das colunas. Recorra ao contedo da tabela Empregado para conferir o resultado da lista obtida.
V0
Banco de Dados I
103
10. UTILIZANDO A FUNO DE AGREGAO: SUM() Listar a soma dos salrios dos empregados de cada cargo. A lista deve conter o cdigo do cargo e a soma dos salrios obtida. A coluna correspondente soma dos salrios deve ter o ttulo: Salrio. 10.1. Soluo SELECT Empregado.CodCargo AS Cargo, SUM(Cargo.Salario) AS Salario Mudando o ttulo da coluna Somando os salrios dos empregados e mudando o ttulo da coluna Tabelas onde esto os atributos a serem listados Associando o cargo ao empregado Agrupando a soma dos salrios dos empregados por cargo
FROM WHERE
GROUP BY Empregado.CodCargo
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
Banco de Dados I
104
11. UTILIZANDO A FUNO DE AGREGAO: MIN() Listar o menor salrio de cada departamento. A lista deve conter o cdigo, o nome e o menor salrio do departamento. A coluna correspondente ao menor salrio deve ter o ttulo: Menor Salrio. 11.1. Soluo SELECT Departamento.Codigo, Departamento.Nome, MIN(Cargo.Salario) AS Menor Salario
Obtendo o menor salrio e mudando o ttulo da coluna Tabelas onde esto os atributos a serem listados Associando o empregado ao cargo ao departamento Agrupando os menores salrios por departamento
FROM WHERE
GROUP BY Departamento.Codigo Departamento.Nome 11.2. Resultado Codigo 01 02 03 Nome Financeiro Engenharia Comercial
11.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. 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
Banco de Dados I
105
12. UTILIZANDO A FUNO DE AGREGAO: MAX() Listar o maior salrio de cada departamento. A lista deve conter o cdigo, o nome e o maior salrio do departamento. A coluna correspondente ao maior salrio deve ter o ttulo: Maiorr Salrio. 12.1. Soluo SELECT Departamento.Codigo, Departamento.Nome, MAX(Cargo.Salario) AS Maior Salario Obtendo o maior salrio e mudando o ttulo da coluna
FROM WHERE
Tabelas onde esto os atributos a serem listados Associando o o empregado cargo e ao departamento
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
Banco de Dados I
106
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
Banco de Dados I
107
13. UTILIZANDO A FUNO DE AGREGAO: AVG() A clusula AVG calcula a mdia aritmtica dos valores de uma determinada coluna. Linhas cuja coluna tenha valor nulo no entra no clculo da mdia. 13.1. Exmplo Listar o mdia dos salrios de cada departamento. A lista deve conter o cdigo, o nome e a mdia dos salrios do departamento. A coluna correspondente mdia dos salrios deve ter o ttulo: Media dos Salrios. 13.2. Soluo SELECT Departamento.Codigo, Departamento.Nome, AVG(Cargo.Salario) AS Mdia dos Salarios Obtendo mdia dos salrios e mudando o ttulo da coluna
FROM WHERE
Tabelas onde esto os atributos a serem listados Associando o empregado ao cargo e ao departamento
GROUP BY Departamento.Codigo, Departamento.Nome 13.3. Resultado Codigo 01 02 03 Nome Financeiro Engenharia Comercial
V0
Banco de Dados I
108
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
Banco de Dados I
109
14. UTILIZANDO A CLAUSULA: HAVING() A clausula HAVING utilizada para selecionar dados (filtrar) obtidos por uma funo de agregao. Ela seleciona os dados depois que eles so agrupados, diferentemente da clausula WHERE que seleciona antes. 14.1. Exemplo Listar os departamentos cuja mdia dos salrios sejam menor que R$ 3.000,00. A lista deve conter o cdigo, o nome e a mdia dos salrios do departamento. A coluna correspondente mdia dos salrios deve ter o ttulo: Mdia dos Salrios. 14.2. Soluo SELECT Departamento.Codigo, Departamento.Nome, AVG(Cargo.Salario) AS Menor Salario Obtendo a mdia dos salrios e mudando o ttulo da coluna
FROM WHERE
Tabelas onde esto os atributos a serem listados Associando o o empregado cargo e ao departamento
V0
Banco de Dados I
110
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
Banco de Dados I
PROFESSOR
(1,1)
(0,N)
DEPARTAMENTO
(0,N)
(1,1)
CURSO
(1,1)
VINCULO
(1,1)
(0,N)
DISCIPLINA
(0,N)
SEMESTRE
(1,1)
(1,1)
AULA
(1,1)
(0,N)
TURMA
(0,N)
(1,1)
DIAS DE AULA
(0,N)
(0,N)
(1,1)
(1,1)
(1,1)
(0,N)
FREQUENCI A
(1,1)
(0,N)
MATRICULA
DIAS DA SEMANA
(1,1)
(0,N)
ALUNO
V0
Banco de Dados I
112
DEPARTAMENTO
ID S
CE
OB S S
NAT C C
TAM 3 30
DEC DOM 0 0
CURSO
ATRIBUTOS Codigo Nome CodigoDepartamento ATRIBUTOS CodigoCurso Codigo Nome Creditos Preleo Laboratorio
ID S
CE
S ID S S CE S
OB S S S OB S S S S S S
NAT C C
TAM 3 30
DEC DOM 0 0
DISCIPLINA
NAT N C N N S
TAM 4 30 1 1 1
DEC DOM 0 0
VINCULO
ID S S S
CE S S S
OB S S S
NAT
TAM
DEC DOM
DIA DA SEMANA
ID S
CE
OB S S
NAT N C
TAM 1 9
DEC DOM 0 0
V0
Banco de Dados I
113
DIAS DE AULA
ATRIBUTOS CodigoCurso CodigoDisciplina NumeroTurma NumeroSubTurma AnoSemestre NumeroSemestre CodigoDiaSemana TipoAula Horario ATRIBUTOS CodigoCurso CodigoDisciplina NumeroTurma NumeroSubTurma AnoSemestre NumeroSemestre Data Numero Resumo CPFProfessor ATRIBUTOS CodigoCurso CodigoDisciplina NumeroTurma NumeroSubTurma AnoSemestre NumeroSemestre DataAula NumeroAula MatriculaAluno Data da Matrcula IndPresena ATRIBUTOS CodigoCurso CodigoDisciplina NumeroTurma NumeroSubTurma AnoSemestre NumeroSemestre MatriculaAluno DataMatricula Nota Final
ID S S S S S S S
CE S S S S S S S
OB S S S S S S S S
NAT
TAM
DEC DOM
C C NAT
AULA
ID S S S S S S S S
CE S S S S S S
S ID S S S S S S S S S S CE S S S S S S S S S S
OB S S S S S S S S S S OB S S S S S S S S S S S OB S S S S S S S S S
D N C
1 60
FREQUENCIA
NAT
TAM
DEC DOM
C NAT
MATRICULA
ID S S S S S S S S
CE S S S S S S S
D N
V0
Banco de Dados I
114
TURMA
ID S S S S S S
CE S S
S S
OB S S S S S S
NAT
TAM
DEC DOM
C C
3 1
ALUNO
ATRIBUTOS Matricula Nome Data de Nascimento Logradouro Bairro Cidade Estado Cep Sexo
ID S
CE
OB S S S S S S S S S
NAT N C D C C C C N
TAM 10 30 30 20 20 2 8
DEC DOM 0 0 0 0 0 0 0
SEMESTRE
ATRIBUTOS Ano Numero Data de Inicio das Aulas Data de Termino das Aulas
ID S S
CE
OB S S S S
NAT N N D D
TAM 4 1
DEC DOM 0 0
V0
banco de Dados I
Nome
11111111111 Ivon Canedo 22222222222 Marcio Kanutto 33333333333 Flcio dos Reis 44444444444 Maria Ribeiro 55555555555 Carla Lemos 66666666666 Marcos Cintra
Data de Logra Nascimen douro to 04/05/47 Rua 1 30/10/50 10/03/43 30/06/60 30/07/52 20/04/51 Rua 2 Rua 2 Rua 3 Rua 4 Rua 5 Rua 6 Rua 7 Rua 8
Bairro S Bueno S Sul Ipanema Pavuna S Oeste S Central Vila Nova S Universitrio Marista
Estado GO GO RJ SP GO GO
CEP
77777777777 Francisco Chagas 12/10/55 88888888888 Virglio 9999999999 DEPARTAMENTO Francisco Reis Codigo CMP FIT ADM ENG ECO BIO ZOO MAF FAR 14/03/56 20/10/58
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
Nome CINCIA DA COMPUTAO FILOSOFIA E TEOLOGIA ADMINISTRAO ENGENHARIA ECONOMIA BIOLOGIA ZOOTECNICA MATEMTICA E FSICA FARMCIA
V0
banco de Dados I
116
Codigo CMP ENC FIL TEO ADM ENG ECO BIO ZOO MAT FIS Nome CINCIA DA COMPUTAO ENGENHARIA DE COMPUTAO FILOSOFIA E TEOLOGIA TEOLOGIA ADMINISTRAO ENGENHARIA CIVIL ECONOMIA BIOLOGIA ZOOTECNICA MATEMTICA FISICA Codigo 4070 4433 4033 3243 1000 3444 3030 1010 1020 4040 8080 2020 9090 Nome 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 Codigo Departamento CMP CMP FIT FIT ADM ENG ECO BIO BIO MAF MAF Creditos Preleo Laborat rio 6 4 2 4 2 2 6 6 0 4 4 0 4 4 0 4 4 0 6 4 2 4 4 0 6 4 0 4 4 0 6 6 0 6 4 2 4 4 0
CURSO
DISCIPLINA CodigoCurso CMP CMP CMP CMP ADM FIL CMP MAT FIS ADM MAT FIS FIL
V0
banco de Dados I
117
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
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
V0
banco de Dados I
118
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
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
V0
banco de Dados I
119
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 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
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
V0
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
120
2020 2020 2020 1010 1010 1010 1010 4033 4033 4033 C01 C01 C01 A01 A01 C01 C01 C01 C01 C01 0 1 2 0 0 0 0 0 0 0 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 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 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 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
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
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
V0
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 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
V0
122
Data de Logra Nascime douro nto
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 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
Bairro
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
Cidade
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
Estado Cep
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 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
Sexo
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
V0
banco de Dados I MATRICULA Codigo Curso CMP 9999999 Codigo Disciplina 4070 Numero Turma A01 Numero Matricula SubTurma 0 Data Matricula 20/06/98 Nota Final
123
DISCIPLINA
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
Nome 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
Creditos 04 06 06 06 06 06 06 06 06 06 06 06 06 06 04
Prelecao 02 00 04 04 04 04 04 04 04 04 04 04 04 04 02
Laboratorio 02 00 02 02 02 02 02 02 02 02 02 02 02 02 02
V0
banco de Dados I
ALUNO Matricula 111111111 222222222 333333333 444444444 555555555 666666666 777777777 888888888 999999999 101010101 202020202 303030303 404040404 505050505 606060606 707070707 808080808 909090909 000111111 000222222 000333333 000444444 000555555 000666666 000777777 000888888 000999999 Nome Ana Carolina Rezende Ana Claudia Pimenta Ana Maria dos Anjos Ana Lucia de Araujo Ana Vieira Peixoto Ana Paula Mamedes Berenice Figueiredo Beatriz Ranz Carla Gomes Fonseca Celia Bezerra Rezende Celina Mesquita Freitas Celimene Mota Gondim Carmem Vistosa Moreira Carmem Lucia Correa Carmem Rosa dos Anjos Danila Freitas Mascarenha Dalva Moreira Machado Diva Maria dos Santos Dalva Carolina Simes Denise Machado Rodrigues Dolarice Rodrigues Cunha Delia Cunha Rezende Dirce dos Amjos Dulce Salomo Rezende Dolores Cravo Reis Data de Nascimento 10/10/80 03/07/79 08/01/80 15/02/79 12/03/78 25/03/78 23/09/75 23/09/87 12/12/80 12/11/81 11/11/78 13/12/78 02/02/77 03/03/80 04/04/80 05/05/78 06/06/78 07/0777 08/08/77 09/03/78 10/10/78 09/08/78 10/08/76 23/09/77 23/10/78 Sexo F F F F F F F F F F F F F F F F F F F F F F F F F F F Logradouro Bairro Cidade Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goiania Goinia Goiania Goiania Esta do 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 Cep Fone
124
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 Rua 70 N.43 Rua 80 N. 456 Rua 90 N.780 Rua 120 N. 800 Rua 700 N. 440 Rua 130 N. 430 Rua 230 N.480 Centro Centro Centro Centro Centro Centro
74000-001 2513456 74000-002 74000-003 9876769 74000-004 9876578 74000-005 74000-006 74000-007 74000-008 74000-009 74000-010 74000-011 74000-012 8765434 2345678 8769099 1234567 2345678 3456789 5678901 6789012
74000-013 7890123 74000-014 8901234 74000-015 9012345 74000-016 8098765 74000-017 9090900 74000-018 1019999 74000-019 2019999 74000-020 2029999 74000-021 2039999 74000-022 2049999 74000-023 2059999 74000-024 2069999 74000-025 2099999 74000-026 2100000 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
banco de Dados I
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 Dilma Guimaraes Teixeira Dagmar Ferreira dos Santos Dora Fernandes Ribeiro 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 Fabola dos Reis Lins 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 12/12/81 01/01/81 01/04/81 03/02/81 03/03/81 02/01/80 03/03/81 03/01/78 17/08/77 12/12/76 21/06/69 22/06/70 12/04/76 04/08/76 05/05/73 15/07/74 12/03/78 13/03/77 03/04/75 23/07/80 13/07/75 12/06/68 30/05/74 12/09/69 13/04/74 12/04/80 F F F F F F F F F F F F F F F F F F F F F F F F F F 870 Rua 799 N. 830 Rua 230 N. 444 Rua 122 N. 333 Rua 333 N.444 Coimbra Vila Nova Vila Nova Vila Nova Vila Nova 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 74000-028 2100002 74000-029 2100003 74000-030 2100004 74000-031 2100005 74000-032 2100006 74000-033 2100007 74000-034 2100008 74000-035 2100009 74000-036 2100010 74000-037 2100011 74000-038 2100012 74000-039 2100013 74000-044 2100014 74000-041 2100015 74000-042 2100016 74000-043 2100017 74000-044 2100018 74000-045 2100019 74000-046 2100020 74000-047 2100030 74000-048 2100031 74000-049 74000-050 74000-051 74000-052 74000-053 2100032 2100033 2100034 2100035 2100036
125
Rua 111 N.111 Vila Nova Rua 222 N.222 Vila Nova Rua 333 N.333 Vila Nova Rua 555 N.555 Vila Nova 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 Rua T-55 N.40 Rua T-40 N.41 Rua T-33 N.42 Rua T-45 N.78 Rua T-40 N.78 Setor Bueno Setor Bueno Setor Bueno Setor Bueno Setor Bueno Rua P-12 N.12
V0
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 Gersina Rosa dos Anjos Helena de Freitas Lima Hozana Maria Pimentel Helia Fernandes Martins Hermnia Fragoso Hilda Francisco Masarda Hortencia Flubius Hilma Magalhaes Helena Guimaraes Peixoto Helia Ribiero Cristina 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 30/03/74 31/03/76 22/04/78 30/04/76 25/10/76 30/10/76 29/08/74 25/07/79 01/01/70 02/03/76 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 12/12/81 15/12/69 07/12/69 08/11/72 12/01/69 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 F F F F F F F F F F F F F F F F F F F F F F F F F F F F Rua T-41 N.40 Rua T-41 N.41 Rua T-45 N.43 Rua T-01 N.44 Rua T-02 N.55 Rua T-03 N.66 Rua T-04 N.77 Rua T-05 N.88 Rua T-06 N.99 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 Rua 14 N.14 Rua 15 N.15 Rua 16 N.16 Rua 17 N.17 Rua 18 N.18 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 Setor Bueno Setor Buendo Setor Bueno Setor Bueno Setor Bueno Setor Bueno Setor Bueno Setor Bueno Setor Bueno Setor Bueno Centro Centro Centro Centro Centro Centro Centro Centro Centro Centro Centro Centro Centro Centro Centro 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 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 GO GO GO GO GO GO GO 74000-054 74000-055 74000-056 74000-057 2100037 2100038 2100039 2100040
126
74000-058 2100041 74000-059 2100042 74000-060 2100043 74000-061 2100044 74000-062 2100045 74000-063 2100046 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 2100047 2100048 2100049 2100050 2100051 2100052 2100053 2100054 2100055 2100056 2100057 2100058 2100059
74000-077 2100060 74000-078 2100061 74000-079 2100062 74000-080 2100063 74000-081 2100064 74000-082 74000-083 74000-084 74000-085 74000-086 74000-087 74000-087 74000-088 74000-089 74000-090 2100065 2100066 2100067 2100068 2100069 2100070 2100071 2100072 2100073 2100074
V0
banco de Dados I
010022222 010033333 010044444 010055555 010066666 010077777 010088888 010099999 010001111 010002222 Maria Matildes Ramos Maria das Dores Rocha Maria Madalena Pessego Maria de Fatima Rosa Maria Odete Fernandes Maria Claudia Bernardes Maria Mercedes Marta Madalena Cintra Patricia Pires do Rio PaulaCndido Ferreira 17/09/74 12/05/74 16/0279 15/04/72 04/09/62 08/05/71 03/09/67 07/04/78 10/10/79 11/11/74 F F F F F F F F F F Rua 29 N.29 Rua 30 N.30 Rua 31 N.31 Rua 32 N.32 Rua 33 N.33 Rua 34 N.34 Rua 35 N.35 Rua 36 N.36 Rua 37 N.37 Rua 38 N.38 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-091 2100075 74000-092 2100076 74000-093 2100077 74000-094 2100078 74000-095 2100079 74000-096 2100080 74000-097 74000-098 74000-099 74000-100 2100081 2100082 2100083 2100084
127
V0
banco de Dados I
128
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
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
1 2 1 2 1 2 1
V0
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 Numero Semestre 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4152 4152 4152 4152 4152 4152 4152 4152 4152 4152 4152 4152 4152 4152 4152 4152 4152 4111 4111 Codigo Curso CMP CMP CMP CMP CMP CMP CMP CMP CMP CMP CMP CMP CMP CMP CMP CMP CMP CMP CMP CMP CMP CMP A01 C01 C01 C02 C02 A01 A01 C01 C01 C02 C02 A01 A01 C01 C01 C02 C02 A01 A01 Codigo Disciplina 4144 4144 4144 4144 4144 4144 4144 4144 4144 4144 4144 4144 4144 4144 4144 4144 4144 4144 4144 4144 4144 4144 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 Numero Turma A01 A01 A01 A01 A01 A01 A01 A01 A01 C01 C01 C01 C01 C01 C01 C01 C01 C01 C02 C02 C02 C02 Sub Turma 1 1 1 1 1 1 2 2 2 1 1 1 1 1 2 2 2 2 1 1 1 1 DataDa Matricula 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 N1 6,5 2,0 7,0 5,0 6,0 7,0 N2 4,2 5,0 6,9 5,5 6,0 8,0
129
V0
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 666666666 777777777 888888888 101010101 202020202 303030303 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 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 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 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 4152 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 A01 A01 A01 C01 C01 C01 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 1 2 2 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 15/07/98 16/07/98 17/07/98 15/07/98 15/07/98 15/07/98
130
V0
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 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
131
V0
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
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
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
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
V0
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 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
133
V0
banco de Dados I
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 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 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
134
FREQUE NCIA
Numero Semestre 1
Numero Aula 1
Matricula Aluno 111111111 222222222 333333333 555555555 666666666 111111111 333333333 444444444 555555555 666666666 111111111 333333333 444444444 555555555 666666666 111111111 333333333 444444444 555555555 666666666 111111111
Ind Presena
1998
CMP
4144
A01
05/03/99
1998
CMP
4144
A01
10/03/99
1998
CMP
4144
A01
12/03/99
1998
CMP
4144
A01
17/03/99
V0
banco de Dados I
333333333 444444444 555555555 666666666 111111111 333333333 444444444 555555555 666666666
135
1998
CMP
4144
A01
19/03/99
V0
banco de Dados I
136
V0
Banco de Dados I
137
EXERCCIOS SQL
Banco de Dados I
138
Banco de Dados I
139
10. Dado as duas relaes abaixo, mostre o contedo da relao RESULTADO obtida da operao
DEP2
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 Matricula 1 7 4 2 8 5 Matricula Nome FERREIRA NETO FRANCISCO RIBEIRO CARLOS GOMES REGINA DUARTE BONAPARTE FIGUEIREDO CARLOS VEIGA Nome FERREIRA NETO FRANCISCO RIBEIRO CARLOS GOMES REGINA DUARTE BONAPARTE FIGUEIREDO CARLOS VEIGA Nome
RESULTADO
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
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
142
15. Mostre a relao RESULTADO resultante do produto da sequencia de operaes a seguir: WORK1 WORK2 SELECT(Codigo = CMP) (CURSO) WORK1 X DISCIPLINA
16. Mostrar o contedo da relao resultante da operao a seguir: CURSO JOIN (Codigo = CodigoCurso) DISCIPLINA 17. Obter uma relao com os alunos matriculados na disciplina Engenharia de Software do curso CMP. A relao resultante deve conter: Matricula do aluno, Nome do aluno, Codigo e Nome da Disciplina e o Codigo do Curso. 18. Obter uma relao com o nmero de faltas do aluno em cada disciplina que ele est matriculado: A relao resultante deve conter: Matricula do Aluno, Data da Aula, Codigo e Nome da Disciplina e Codigo do Curso. 19. Obter uma relao com a quantidade dos alunos matriculados na disciplina Banco de Dados I do curso CMP. 20. Quais disciplinas no tm nenhum aluno matriculado. 21. Quais so as disciplinas lecionadas pelo professor Ivon Canedo. Mostrar todos os atributos das disciplinas. 22. Quais alunos foram reprovados em cada disciplina cursada (Nota Final <5,0). Mostrar: Matricula e Nome do Aluno, Codigo e Nome da Disciplina, Codigo e Nome do Curso e a Nota Final.
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
145
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
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;
146
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;
147
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
CREATE TABLE Cidade (Estado Char(2) NOT NULL, Cidade Char(20) NOT NULL, CONSTRAINT PrkCidade PRIMARY KEY (Estado, Cidade), CONSTRAINT FrkEstadoCidade FOREIGN KEY (Estado) REFERENCES Estado (Estado));
Banco de Dados I
CREATE TABLE Estado (Estado Char(2) NOT NULL, Nome Char(20) NOT NULL, CONSTRAINT PrkEstado PRIMARY KEY (Estado)); CREATE TABLE Icms (EstadoOrigem Char(2) NOT NULL, EstadoDestino Char(2) NOT NULL, Taxa NUMBER(5) NOT NULL, CONSTRAINT PrkIcms PRIMARY KEY (EstadoOrigem, EstadoDestino) CONSTRAINT FrkEstadoOrigemIcms FOREIGN KEY (EstadoOrigem) REFERENCES Estado (Estado), CONSTRAINT FrkEstadoDestinoIcms FOREIGN KEY (EstadoDestino) REFERENCES Estado (Estado)); Tendo como referncia o Banco de Dados TRANSPORTE, do exerccio anterior, responder as questes a seguir:
150
79. Escreva uma sequencia de comandos que provoque uma violao de integridade de entidade, na tabela Cliente. 80. Escreva uma sequencia de comandos que provoque uma violao de integridade referencial entre as tabelas Frete e Cliente. 81. Escreve um comando que provoque uma violao de integridade de domnio, na tabela Cliente. 82. Escreva um comando que provoque uma violao de integridade de chave, na tabela Estado. 83. Listar os fretes das mercadorias embarcadas no perodo de 25/10/99 a 24/11/99. A lista deve conter, alm dos atributos do frete, o Nome do remetente e do destinatrio da mercadoria. 84. Listar o valor do menor e do maior frete transportado no ano de 1998. A lista deve conter, alm dos atributos do frete, o Nome do remetente e do destinatrio da mercadoria. 85. Listar os clientes que no enviaram e nem receberam mercadorias no ano de 1998; A lista deve conter o Codigo, Nome, Cpf, Cgc do Cliente e deve ser mostrada em orderm crescente de nome do cliente. 86. Listar os clientes cujos fretes pagos esto acima da mdia dos fretes transportados no primeiro trimestre de 1999. 87. Obter a quantida de fretes, enviados, para cada cliente no segundo semestre de 1999. Listar, apenas, aqueles clientes que transportaram mercadorias mais de cinco vezes no perodo. 88. Qual o Estado ou estados que tm a maior taxa de Icms para fora do estado. 89. Quantas vezes uma cidade recebeu mercadorias transportadas. Listar, apenas, aquelas que receberam mais de 20 vezes. A listar deve estar em ordem decrescente de nome da cidade. 90. Escreva um comando para adicionar o atributo Sexo em Cliente; 91. Escreva um comando para retirar o atributo Cgc de Cliente; 92. Escreva um comando que cria uma tabela Frete1 com as mesmas caractersticas e que contenha os mesmos dados da tabela Frete; 93. Listar o Cliente que pagou o maior frete transportadora; 94. Escrava um comando para criar uma tabela Estado1 com atributos sufixados de 1, com as mesmas caractersticas e que contenha os mesmos dados da tabela Estado; 95. Listar os estados de onde originou mais de 40% dos valores dos fretes pagos.
Banco de Dados I
Banco de Dados ACADMICO Parte II 1. 2. 3.
151
Listar todos os professores em ordem alfabtica descendente de nome. A lista deve conter todos os atributos de professor. Listar todos os professores, do departamento de computao, em ordem descendente de nome. A lista deve conter todos os atributos de professor. 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. 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. 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. 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. Obter uma lista de todos os cursos em ordem crescente de cdigo do curso. A lista deve conter todos os atributos de curso. 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. 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.
4.
5. 6. 7. 8.
9.
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
EXERCCIOS DIVERSOS 1.
155
A figura abaixo mostra a correspondncia entre as entidades FUNCIONRIO, ENGENHEIRO, MOTORISTA, MDICO, ENGENHEIRO MECNICO E ENGENHEIRO ELETRICISTA do modelo de dados do Sistema de Recursos Humanos de uma empresa. Construir o DER correspondente as entidades descritas. Mostrar, no DER, apenas as entidades e as cardinalidades de cada relacionamento. Funcionrio
3 1 9 2 5 10 13 6
4 7 11
15 8 14 12
1 9
6 7
5 2 10 13
Engenheiro
4 8 3 11 12
Medico
Motorista
10
Engenheiro Mecnico
Engenheiro Eletricista
Banco de Dados I
156
2.
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. Voo 150 Rota Goinia GO Chegada: 06:10 Partida: 07:10 So Paulo SP Chegada: 12:10 Partida: 12:30 R. de Janeiro
Empresa Varig
So Paulo SP Chegada: 07:10 Partida: 08:00 Curitiba PR Chegada: 13:30 Partida: 14:00 Florianpolis
R. Janeiro
Varig
151
Vasp
152
. . . TAM
. . . 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
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 . . . . . .
3.
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
157
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 ... 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 001 007 Pai Nome ... Joo Ribeiro Francisco Resende Rafael Ribeiro dos Anjos Joo Ribeiro Codigo ... 010 011 009 010 Me Nome ... Maria dos Anjos Rosa dos Santos Carla Mendes Maria dos Anjos
012
...
...
...
...
5.
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 Data 10/10/47 15/08/50 20/03/60 10/10/47 12/12/40 Estado Civil Vivo Desquitado Divorciado Vivo Casado
V0
Banco de Dados I
158
6.
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.
Construir o DER correspondente ao ambiente descrito abaixo (representar, apenas, as entidades e os relacionamentos e suas cardinalidades): 1) 2) 3) 4) 5) 6) Para cada Cliente pode ser emitido vrias Notas Fiscais; Cada Nota Fiscal deve se referir a um nico Cliente; Cada Nota Fiscal deve ser composta de vrios Itens de Nota Fiscal; Cada Item de Nota Fiscal deve estar associado a uma nica Nota Fiscal; Cada Item de Nota Fiscal deve se referir a um nico Produto; Cada Produto pode estar associado a vrios Itens de Nota Fiscal.
V0
Banco de Dados I
159
8.
Construir o Diagrama de Entidade x Relacionamento, explicitando entidades, relacionamentos, identificadores e cardinalidades, correspondente s relaes abaixo. As colunas com nomes sublinhadas so as Primary Key da relao.
PEDIDO
Codigo.Fornecedor 01 01 03 03 Saldo 100 800 100 180 Unidade Unitrio Duzia Kg Unitrio
PRODUTO
Descrio Forno microondas Anzol Adubo orgnico KBX Caderno Espiral 100 Fls Codigo.Produt o A1 A2 A3 A1 A2 A3
Quantidade 5 10 3 8 60 20
Ano.Pedido Nmero.Pedido 1998 1998 1998 1998 1998 1999 00001 00001 00001 00002 00002 00001
FORNECEDOR
Codigo 01 02 03 04
9.
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 (AB)
A Codigo 1 2 4 5 Nome Manoel dos Santos Raquel Queiroz Francisco Menelau Ramss Ribas B Codigo 5 4 9 10 Nome Ramss Ribas Francisco Rezende Francisco Menelau Ramss Ribas
B (AB)
Codigo Nome
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 Nome Maria Vieira Merida Frana Viviane Costa Wilmar Cardoso Rocha Rezende Codigo Nome
(A B) B
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 Matricula 1 2 3 4 5 6 7 (A B) B B 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
PRODUTO
CLIENTE Atributos Codigo Nome DataNascimento PEDIDO Atributos Numero Data Valor CodigoCliente
TAM 3 30
CP CE TIPO TAM S Number 5 Date 30 Number 8 S CP CE TIPO S S S Number Number S CP CE TIPO TAM S Text 3 Text 30 Number 8 2 5 TAM
DETALHE Atributos DE PEDIDO NumeroPedido Item Quantidade CodigoProduto PRODUTO ATributos Codigo Nome Valor
Legendas: CP = Chave Primria da tabela; CE = Chave Estrangeira TIPO = Tipo de Dado TAM = Tamanho do campo
V0
Banco de Dados I
163
17. O servio de transporte urbano de pessoas, em Goinia, executado pelas empresas de transporte coletivo sob o regime de concesso do Governo Estadual. A ARAGUAIA e HP so algumas das empresas que prestam esse tipo de servio. O sistema funciona com base no conceito de linhas. Uma linha representa o trajeto que um nibus deve percorrer quais ruas por onde ele deve passar - para prestar os seus servios. A cada linha criada e concedida dado um nmero, que nico para todo o sistema, e a data de sua concesso e definido seu trajeto. Cada rua do trajeto contm os pontos de nibus onde os usurios to transporte toma o nibus. A cada rua dado um nmero, que nico para o sistema, e o nome, e a cada ponto de nibus dado um nmero, que tambm nico para o sistema, e a ordem dele dentro da rua (primeiro, segundo..., etc). Construir o diagrama de entidades x relacionamentos que mostre as linhas, os pontos de nibus, pelos quais a linha passa, e as ruas do sistema. Apresentar a matriz de definio dos atributos. 18. Construir o DER, do banco de dados relacional, correspondente seqncia de comandos abaixo:
a) CREATE TABLE AUTOR (Cpf Long NOT NULL, Nome Text(30) NOT NULL, Fone Long, CONSTRAINT PrkCpf PRIMARY KEY (Cpf)); CREATE TABLE EDITORA (Codigo Long NOT NULL, Nome Text(30) NOT NULL, Fax Long, E-Mail Text(50), CONSTRAINT PrkEditora PRIMARY KEY (Codigo); CREATE TALBE LIVRO (Numero Long NOT NUL, Titulo TEXT(30) NOT NULL, Assunto TEXT(30) NOT NULL, CpfAutor Long NOT NULL, Editora Long NOT NULL, CONSTRAINT PrkLivro PRIMARY KEY (Numero), CONSTRAINT al FOREIGN KEY (CpfAutor) REFERENCES AUTOR (Cpf), CONSTRAINT el FOREIGN KEY (Editora) REFERENCIES EDITORA(Codigo)); b) Considerando que o banco, correspondente aos comandos do item a, esteja criado, o que acontece com a execuo do comando abaixo. Justifique sua resposta. DROP TABLE AUTOR;
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
1.b. Definio dos atributos FORNECEDOR Atributo Cdigo Nome Cgc Fone Id Relacionamento S Tipo N Text N N Req S S Tam Dec 3 0 40 14 0 7 0 Dom >0 Qualquer >0 > 999999
V0
Banco de Dados I
165
Relacionamento
Req S S
S Req S S S
Dom >0 > 31/12/00 Qualquer Qualquer Qualquer Sigla dos Estados >0 >0 Dom >0 Qualquer >=0 >=0 e <= 100 Dom Qualquer Qualquer >= 0,10
Id S
Relacionamento
Req S S S
Tam Dec 4 30 8 2
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 19191919191911 Fone 2000000
4000000
Bairro Centro
Cidade Goiania
S Sul S Oeste
Itumbiara Goinia
Uf Cep CodForn Go 74000000 001 Ms 32001030 010 001 Rs 00001000 001 Go 00002000 004
V0
Banco de Dados I
166
Colunas NmPedido 0001 0001 0002 0003 0003 0003 0003 CodProduto P01 P02 P01 P03 P04 P05 P10 Quantidade 10,00 15,00 12,00 40,00 20,00 10,00 Desconto 20,20 12,00 5,40
PRODUTO Colunas Linhas Cdigo 01 P01 02 P02 03 P03 04 P04 05 P05 06 P01 07 P06 08 P07 09 P08
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
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:
N 1 EMPRES
LINHA 1
N TRAJETO 1 1
CIDADE
N VIAGEM 1
Inicia
Termina
PASSAGEM
PASSAGEIR
A entidade trajeto indica as cidades pelas quais passam as linhas de nibus. Definio das entidades e atributos: EMPRESA = (Cdigo, Nome) LINHA = (Numero, CodigoEmpresa, DataDaConcesso) TRAJETO = (Numero, NmeroLinha, CoidigoCidade, Ordem, HorarioDeChegada, HorarioDePartida) CIDADE = (Cdigo, Uf, Nome) VIAGEM = (NumeroLinha, Numero, Data) PASSAGEM = (NumeroLinha, NumeroViagem, Numero, NumeroPassageiro, NumeroTrajetoInicia, NumeroTrajetoTermina, Valor) PASSAGEIRO = (Numero, Identidade, Sexo, Nome) Observaes: a. Legendas: Os atributos sublinhados so chaves nas tabelas onde aparecem b. Chaves Estrangeiras: Na entidade LINHA: CdigoEmpresa relativa ao relacionamento entre MPRESA e LINHA. Na entidade TRAJETO: NumeroLinha relativa ao relacionamento entre LINHA e TRAJETO e CodigoCidade relativa ao relacionamento entre CIDADE e TRAJETO. Na entidade VIAGEM: NumeroLinha relativa ao relacionamento entre LINHA e VIAGEM. Na entidade PASSAGEM: NumeroLinha e NumeroViagem relativa ao relacionamento entre VIAGEM e PASSAGEM; NumeroTrajetoInicio relativa ao relacionamento Inicia entre TRAJETO e PASSAGEM. NumeroTrajetoTermina relativa ao relacionamento Termina entre TRAJETO e PASSAGEM; NumeroPassageiro relativa ao relacionamento entre PASSAGEIRO e PASSAGEM.
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 Primeiro Rodada 01/07/2000 04/07/2000 08/07/2000 Segundo 11/07/2000 14/07/2000 18/07/2000 Mandante Flamengo So Paulo So Paulo Internacional Internacional Gois Gois Internacional Flamengo Gois Flamengo So Paulo Visitante Gois Internacional Flamengo Gois Flamengo So Paulo Flamengo So Paulo So Paulo Internacional Internacional Gois
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 C1 C9 C2 C6 C1 0 C5 C13
C4 C7
C15 C8 C14
C1 1 C12
Origem
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 Atributos Codigo Nome DataNascimento Sexo NumeroCasamento Atributos Numero CodigoEsposo CodigoEsposa DataCasamento TORCE DOR Atributos CodigoPessoa CodigoClube CLUBE Atributos Codigo Nome Cidade Estado DataFundacao Identificador Rel Tipo S Number Text Date Text S Identificador Rel S S S Date Identificador Rel S S Identificador S S S CE Tipo Number Text Text Text Date Tamanho 4 30 30 2 Tipo Tamanho Tipo Number Tamanho 4 30 1 Requerido S S S S S Requerido S S S S Requerido S S Requerido S S S S S
CASAM ENTO
Tamanho 8
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 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. 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
35. Escrever, na ordem correta, os comandos CREATEs para criar as tabelas correspondentes as descries dos atributos, abaixo: ALMOXARIFADO Atributos Codigo Nome Endereo Primary Key S Foreign Key Tipo Number Text Text Tipo Number Number Number Tipo Text Text Number Tamanho 4 30 60 Tamanho 4 4 7 Tamanho 3 30 7 Requerido S S S Requerido S S
ESTOQUE
Primary Key S S
Foreign Key S S
PRODUTO
Primary Key S
Foreign Key
Requerido S S S
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 ESTOQUE Nome So Jorge Vaca Brava Endereo Rua 15 Centro Rua T-10 Saldo 15 18
CodigoAlmoxarifado CodigoProduto 0001 P01 0002 P02 Cdigo P01 P02 Nome Sof Mesa de Mrmore
PRODUTO
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 N
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 Bibliografia Bibliografia 1. Rumbaugh, James e outros. Modelagem e Projetos Baseados em Objetos. Rio de Janeiro:
Campus, 1988.
175
2. Pompilho, S. Anlise Essencial. Rio de Janeiro: Infobook, 1995. 3. Elmasri, Ramez e Navathe, Shamkant B. Fundamentals of Database Systems, Benjamim/Cummings Publishing Company, U.S.A, 2 Edition 4. Korth, Henry e Silberschatz, Abraham (Livro Texto Bsico) Sistemas de Bancos de Dados, Makron Books do Brasil Editora Ltda, RJ, 1994, 2 Edio 5. 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