[e-Book] Banco de Dados - INFORMÁTICA

Page 1


BANCO DE DADOS INFORMÁTICA

ATIVIDADES COMPLEMENTARES


INFORMÁTICA

ATIVIDADES COMPLEMENTARES

Módulo

|

Capítulo |

1 Banco de Dados

Autor

| Danilo Marcus Santos Ribeiro

MiniCV

| Mestrando em engenharia mecânica pela Faculdade de Engenharia de Bauru, da UNESP, pós-graduando em redes de comunicação pela AVM Faculdade Integrada e graduado em sistemas de informação pela Faculdade de Tecnologia e Ciências de Feira de Santana. Atuou como supervisor em rede de combustível e no suporte e na manutenção de computadores

no

Posto

Shalom,

e

na

secretaria

administrativa do Polo EAD da UMESP. Atualmente é monitor do curso superior em análise e desenvolvimento de sistemas da UMESP em polo EAD e professor de WebDeveloper com foco em PHP e MySQL no Instituto Americano de Lins.


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________

SUMÁRIO 1

ATIVIDADES COMPLEMENTARES ...................................................... 1

1.1 ATIVIDADES COMPLEMENTARES | AULA 01 ............................................1 1.2 ATIVIDADES COMPLEMENTARES | AULA 02 ............................................7 1.3 ATIVIDADES COMPLEMENTARES | AULA 03 .......................................... 15 1.4 ATIVIDADES COMPLEMENTARES | AULA 04 .........................................25 1.5 ATIVIDADES COMPLEMENTARES | AULA 05 ......................................... 32 2

APÊNDICE ...................................................................................... 44

2.1 GABARITO DAS ATIVIDADES COMPLEMENTARES | AULA 01 ..................... 44 2.2 GABARITO DAS ATIVIDADES COMPLEMENTARES | AULA 02 ..................... 50 2.3 GABARITO DAS ATIVIDADES COMPLEMENTARES | AULA 03 ..................... 58 2.4 GABARITO DAS ATIVIDADES COMPLEMENTARES | AULA 04 ..................... 73 2.5 GABARITO DAS ATIVIDADES COMPLEMENTARES | AULA 05 ..................... 81


BANCO DE DADOS

1

ATIVIDADES COMPLEMENTARES

1.1 ATIVIDADES COMPLEMENTARES | AULA 01 Resolva estas atividades complementares e teste seu conhecimento: 01) O modelo conceitual para a modelagem de dados é o momento ideal para obter os requisitos que são relevantes para a construção de qualquer sistema. Analisar o sistema é analisar principalmente o ambiente, pois tudo que é pertinente à aplicação faz parte da estrutura física e lógica do ambiente. Física, porque pode ser um produto como livros ou computadores. Lógica, porque podem ser comercializados cursos, aulas e softwares. Dada a explanação acima, responda ao que se pede. Relacione a 1ª e a 2ª colunas: 1 - Modelagem Conceitual

(

) Itens específicos que são listados à medida que um ambiente é analisado.

(

) Série de processos que funciona como uma receita para o desenvolvimento ideal de um banco de dados

(

) Processo conceitual efetuado para definir a estrutura de dados do banco conforme a estrutura básica de um SGBD.

(

) Processo efetuado por um analista que permite criar um perfil abstrato ao relatar a estrutura de dados de um sistema de forma independente do SGBD.

(

) Processo mental que permite a um analista extrair do ambiente todos os itens importantes para o desenvolvimento de um sistema.

(

) Responsável por gerenciar as inúmeras requisições solicitadas ao BD, que são

2 - SGBD

3 – Requisitos

4 – Modelagem Lógico

5 – Modelagem

6 - Abstração

Página 1


BANCO DE DADOS

feitas por usuários e pelo sistema.

02) Escreva o que você entende por abstração na análise de sistemas. Explique como é possível, para um analista, fazer um julgamento eficiente das reais necessidades de uma empresa. Qual a melhor maneira de se obterem os requisitos ideais, sem faltar praticamente nada que seja fundamental. ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ 03) Escreva as possíveis Entidades de um ambiente hospitalar. Apenas liste os nomes dos itens que julgar importantes para um sistema hospitalar que

controla

dados

dos

pacientes,

médicos,

equipamentos

e

suprimentos medicinais. ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ 04) Faça o modelo conceitual de uma loja de roupas, registrando as Entidades relevantes em forma de lista. Liste, no mínimo, três Entidades e descreva o papel de cada Entidade da forma mais detalhada possível. ________________________________________________________ ________________________________________________________

Página 2


BANCO DE DADOS

________________________________________________________ ________________________________________________________

05) Faça o modelo conceitual de uma loja de cursos online, isto é, um site, registrando as Entidades relevantes em forma de lista. Liste, no mínimo, três Entidades e descreva o papel de cada Entidade da forma mais detalhada possível. ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ 06) Faça o modelo lógico, que foi obtido através da análise da loja de roupas, realizada na questão 4. Coloque o máximo de atributos (características) de cada Entidade que foi relacionada. ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ 07) Faça o modelo lógico, que foi obtido através da análise da loja de cursos online, realizada na questão 5. Coloque o máximo de atributos (características) de cada Entidade que foi relacionada. ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________

Página 3


BANCO DE DADOS

08) Marque (C) para Correto e (E) para Errado, a respeito das instruções abaixo: (

) As entidades de um ambiente podem ser físicas ou lógicas;

(

) A Modelagem de dados é feita após a construção do banco de dados;

(

) O modelo ER reflete a realidade de um ambiente analisado;

(

) O modelo lógico especifica detalhes (atributos) de cada

Entidade; (

) Entidade é um objeto que não pode ser qualquer coisa dentro de um ambiente;

( (

) O relacionamento é feito entre duas ou mais Entidades; )

Relacionamentos identificam o tipo de operação que ocorre entre as Entidades;

(

) Os tipos de relacionamentos são 1:1, N:1 e N:N;

(

) Uma Entidade jamais poderá se auto relacionar;

(

) O relacionamento ternário envolve apenas duas Entidades.

09) Dada a figura abaixo, indique quais poderiam ser as Entidades A e B e os seus respectivos relacionamentos (ocorrência), de forma que obedeçam à cardinalidade de cada relacionamento e façam sentido com ela.

Página 4


BANCO DE DADOS

Fonte: autor.

10.

Na seguinte tela, que faz parte de um sistema de gestão escolar, observe atentamente todos os detalhes deste sistema e tente extrair dele quais as possíveis Entidades. Lembre-se que as Entidades são os elementos importantes desse ambiente, aqueles que são essenciais para o sistema funcionar.

Página 5


BANCO DE DADOS

Fonte: <http://www.siaeweb.com.br/siae/telasFree.html>

Pรกgina 6


BANCO DE DADOS

1.2 ATIVIDADES COMPLEMENTARES | AULA 02 Realize estas atividades complementares e teste seu conhecimento: O modelo ER é uma ferramenta amplamente utilizada para modelar sistemas de banco de dados. Ele funciona como um guia para a construção do sistema e representa, através das Entidades, relacionamentos, atributos e todas as suas características, o que vai existir dentro do sistema e como ele irá funcionar. Com base nos assuntos relacionados, responda ao que se pede. Para algumas atividades será usado um programa de desenvolvimento de DER. Existem vários programas como o Astah Professional e o Microsoft Visio que são pagos. Há também os gratuitos como o brModelo, o DIA Diagram. Nesses exemplos poderá usar o DIA ou o brModelo. Você pode fazer o download no site: <http://sourceforge.net/projects/dia-installer/> Eis também o site do brModelo <http://sis4.com/brModelo/download.aspx>

11) Explique o que são e qual a utilização de cada um dos elementos do DER:  Entidade: _______________________________________________  Relacionamento: _________________________________________  Atributo: ________________________________________________  Cardinalidade: ___________________________________________ 12) Escolha três Entidades para um ambiente de um estoque e atribua, no mínimo,

cinco

atributos

para

cada

uma.

Página 7


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________

13) (Atividade prática) Faça o DER das Entidades escolhidas na questão anterior. Caso não tenha feito, apenas crie o DER com as Entidades que julgar necessárias para um sistema de estoque. Coloque, no mínimo, três Entidades, os seus relacionamentos e dois atributos para cada Entidade. (Use o programa DIA)

14) Com base no seguinte modelo de Entidade, crie outras Entidades que são especificações da Entidade padrão. Por exemplo, a Entidade Funcionário pode derivar vários tipos de funcionários em uma

Página 8


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

empresa. Crie as outras Entidades, acrescentando mais campos, de acordo com o tipo de funcionário. Neste caso, o ambiente será um hospital. Faça o que se pede abaixo: FUNCIONÁRIO

FUNCIONÁRIO: Médico

Atributos:

Atributos:

Nome

Nome

Registro

CRM

Contato

Área Especialidade Telefone E-mail Endereço

Com base no modelo fornecido acima, crie mais duas Entidades para representar outros tipos de funcionários dentro do hospital: a enfermeira e o atendente. Ambos são funcionários, porém com informações diferentes.

15) (Atividade prática) Sabe-se que geralmente as Entidades se tornarão tabelas em um banco de dados. Sabe-se também que as tabelas são compostas de linhas e de colunas. Com base na imagem abaixo, responda ao que se pede.

Página 9


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

Fonte:

http://www.analisesuporte.com.br/analisesuporte/Default.asp?conteudo=351&submenu=351

Extraia da imagem quais as possíveis Entidades ou tabelas desse sistema, informe alguns de seus campos, determinando os tipos de dados específicos de cada campo. Escreva se é número inteiro, texto ou outro. Por fim, faça o DER no DIA Diagram da melhor forma que quiser. ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ ____________________________________________________________

Página 10


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

____________________________________________________________ ____________________________________________________________ 16) Relacione a 1ª à 2ª coluna: 1 - Tipos de dados

(

) Também chamado de registros ou linhas da tabela.

(

) Característica de uma coluna que representa um campo de outra tabela que é chave primária.

(

) São os campos ou os atributos de cada entidade ou tabela.

(

) Característica atribuída a uma coluna que deve ter a unicidade dentro de uma tabela. Identifica cada tupla.

(

) Característica de um campo que tem grandes chances de se tornar a chave primária.

(

) Especifica a natureza do dado armazenado em uma determinada coluna / campo de uma base de dados.

2 – Colunas da tabela 3 – primary key 4 – Chave Candidata 5 - foreign key 6 - Tuplas

17) Marque (C) para correto e (E) para errado, a respeito das instruções abaixo: (

) A normalização não é um procedimento que organiza e melhora as tabelas;

(

) A normalização está ligada à forma com que as tabelas se relacionam;

(

) Quando se aplica a normalização, sempre haverá um aumento de novas tabelas;

Página 11


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

(

) Um dos benefícios da normalização é, sem dúvida, evitar a inconsistência de dados.

(

) As anomalias que a normalização pode resolver são: inserção, exclusão e alteração.

(

) Uma tabela, com vários registros na mesma coluna (e na mesma célula), pode-se considerar um caso de anomalia e de problema de inserção.

(

) A 1FN é responsável por resolver problemas de chave estrangeira que possui vários campo repetidos em uma mesma coluna.

(

) A normalização é um processo aplicado exclusivamente para o SGBD MySQL.

(

) A normalização é uma característica do modelo relacional.

(

) Os tipos de dados podem e devem ser aplicados em cada linha da tabela.

18) Passe as seguintes tabelas para a 1FN e explique o motivo das alterações. Tabela A8 Codigo Livro - tombo 21 A arte de amar – ZTXF 5006

autor Joseh Mattos

Editora - estado Rivas/SP Amiam/RJ Grow/BA

32

Banco para sentar – TXGH 95110

Almeida Genine

33

O verão da salvação – HUYT45 90065

Vasquez Erniatori

43

Chove na minha terra – PMBCQ 84120

Levinhon Cadiví

Cati/ES Fonte: autor.

Página 12


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

Tabela B8 ID

Imovel

Proprietário

cidadeestado Lins/SP

1

Rua Arnita Viara, 55, Centro; 16400500

Matias Barros

2

Av. Baltazar, 1500 – 11400-365

Carol Lopez

3

Av. Contorno, 1500B – 44020-065

Val Atari

Piracicaba/SP Itaberaba/BA

4

Travessa São Pedro – 46120-000

Dan D'marco

Vitória/ES Fonte: autor.

19) Passe as seguintes tabelas para a 2FN e explique o motivo das alterações. Tabela A9 ID_livro 121

Livro A arte de amar

autor Joseh Mattos

Cod_autor A1

Editora Rivas

322

Banco para sentar

Almeida Genine

A2

393

O verão da salvação

Vasquez Erniatori

A3

Amiam Grow

493

Chove na minha terra

Levinhon Cadiví

A4

Cati Fonte: autor.

Tabela B9 cod 21

curso Java SE

Qtd_aulas 30

Prof. Marcos Kranklin

id_prof Pf05

32

PHP com OO

30

David Lucas

33

MySQL

25

Mônica Moura

Pf45 Pf07

43

MongoDB

25

Francisco Moura

Pf08

Fonte: autor.

Página 13


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

20) Passe as seguintes tabelas para a 3FN e explique o motivo das alterações. Tabela A10 ID_livro 121

Livro A arte de amar

Cod_autor A1

Editora Rivas

322

Banco para sentar

A2

393

O verão da salvação

A3

Amiam Grow

400

O talento de Jhon

A5

Grow

493

Chove na minha terra

A4

Cati

500

Quem sou eu?

A6

Cati Fonte: autor.

Tabela B10 cod 21

curso Java SE

Qtd_aulas id 30 Pf05

categoria Liguagem

32

PHP com OO

30

33

MySQL

25

Pf45 Liguagem Pf07 Banco de Dados

43

MongoDB

25

Pf08 Banco de Dados

43

DELPHI

25

Pf08

IDE

43

DREAMWEAVER

25

Pf08

IDE Fonte: autor.

Página 14


BANCO DE DADOS

1.3

ATIVIDADES COMPLEMENTARES | AULA 03 Resolva estas atividades complementares e teste seu conhecimento:

Tendo em vista a primeira impressão da prática de modelagem, utilizando o software DIA Diagram, agora é hora de experimentar o brModelo e de verificar, na prática, qual ferramenta melhor se encaixa para o perfil individual de cada aluno. Desta vez a cardinalidade será exigida. 21) (Atividade prática) Utilizando as seguintes Entidades, use o programa brModelo para criar o DER, coloque a devida cardinalidade entre as Entidades e explique a escolha da cardinalidade. Por fim, exporte o DER em forma de imagem. a) Livro, Autor e Leitor. b) Curso, Professor e Aluno. c) Passageiro, Aeronave e Companhia. d) Cliente, Conta Bancária e Gerente. 22) Sabe-se que a 4ª e a 5ª FN são feitas para desmembrar tabelas que se encontram com campos em duplicidade. Para um BD que contém apenas 10 ou 20 registros, isso não terá tanta importância; porém, uma tabela, com um milhão de registros, com certeza haverá muita repetição. A ideia é então separar o máximo que puder, fazendo todas as ligações possíveis entre todas as tabelas. Considere a seguinte situação: um fornecedor distribui peças de carros que servem para vários modelos. Observe que o Fornecedor 1, o Fornecedor 2 e o Fornecedor 3 sempre têm duplicidade com a peça 1, que serve para dois modelos de carros.

Página 15


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

Imagine que não importa se a peça funciona para um ou para vários modelos de carro, não é necessário repetir a ligação [Peça1 | Carro1] ou [Peça2 | Carro2]. Tampouco deve aparecer duplicidade com os outros dados, por exemplo: [Forn1 | Peça1] ou [Forn1 | Peça2]. Como resolver isso? Faça todas as alterações necessárias transformando para a 4FN. Tabela FP

Peças Fornecedor

Peça

Modelo

Forn1

Peça1

Carro1

Forn1

Peça1

Carro2

Forn1

Peça2

Carro1

Forn1

Peça2

Carro2

Forn1

Peça3

Carro1

Forn1

Peça3

Carro2

Forn2

Peça1

Carro1

Forn2

Peça2

Carro2

Forn2

Peça3

Carro3

Forn2

Peça4

Carro1

Forn2

Peça3

Carro2

A grandiosa linguagem SQL é a responsável por mover e operar todos os bancos de dados. Ela cria, manipula e remove as mais diversas estruturas utilizadas em um SGBD. Dando seguimento à parte prática, será utilizado o

Página 16


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

software MYSQL Workbench para as atividades posteriores. O software é gratuito

e

facilmente

baixado

no

site

oficial

MYSQL

<http://dev.mysql.com/downloads/tools/workbench/>. 23) Relacione a 1ª à 2ª coluna: 1 - CREATE

(

) comando DDL que elimina um database.

2 – ALTER

(

) comando DML que adiciona tuplas.

3 – DROP

(

) comando DML que elimina registros.

4 – INSERT

(

5 - UPDATE

(

6 - DELETE

(

) comando DML que altera tuplas. ) Comando DDL que cria um database. ) Comando DDL que modifica uma tabela.

24) Marque (C) para correta e (E) para errada, a respeito das instruções abaixo: (

) Para armazenar a palavra "Pedro" o tipo de dado ideal é float.

(

) Para armazenar um texto longo como um artigo usa-se text.

(

) Para armazenar a frase "Pedro é legal" pode-se usar varchar(80).

(

) Para armazenar o valor 100.90 pode-se usar o int.

(

) Para armazenar o valor 1999.99 usa-se o tipo float.

(

) Para armazenar a palavra "Amora" pode-se usar varchar(3).

(

) Com os tipos date e time podemos armazenar qualquer tipo de dado.

(

) Para armazenar apenas dois valores como 0 e 1, pode-se usar char(2).

(

) Para armazenar apenas dois valores como 0 e 1 pode-se usar int.

(

) Timestamp armazena dados importantes no formato "Ano-mês-dia hora".

Página 17


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

25) (Atividade prática) Para conhecer a interface de execução do MySQL Workbench é importante fazer algumas tarefas e observar o resultado obtido. Siga o roteiro abaixo:

Objetivos: Conhecer a interface do programa, saber onde aplicar os comandos SQL, verificar status de erros e ver como conectar a um servidor. Não é preciso explicar os comandos SQL em detalhes.

Requisitos: 1. WampServer; 2. MySQL Workbench;

Procedimento: 1. Abrir o MySQL Workbench e fazer a conexão local (localhost ou 127.0.0.1). A senha do MySQL server é "root" ou em branco ""; 

Deverá observar o resultado dos comandos executados através da janela de output no rodapé do programa.

Deverá observar a janela ao centro chamada de Query 1. Novas janelas podem ser abertas pelo comando "Ctrl+ T" ou indo ao menu File.

Deverá observar que, ao lado esquerdo, são exibidos os bancos de dados existentes (janela SCHEMAS). E, abaixo dessa janela,

existe

Página 18


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

outra, chamada de Information que exibe informações do banco selecionado. 

Para executar um comando pode clicar no "raio amarelo", apertar "Ctrl+ Enter" ou ir ao menu Query.

2. Os próximos comandos serão executados na Janela Query. Observe o resultado na janela OUTPUT. 1. create database meubanco; 2. create database meubanco; (propositalmente gera um erro)

3. Qual a mensagem de erro gerada pelo último comando: ______________________________________________________ 4. Atualize a janela de SCHEMAS para verificar o seu "meubanco" criado; 5. use meubanco; // seleciona como o banco Default (padrão) 6. create table minhatabela( campo1 VARCHAR(80), campo2 INT); 7. Experimente tentar executar o mesmo comando acima. O que ocorre?

Página 19


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

8. create table produto( codigo INT NOT NULL AUTO_INCREMENT, marca VARCHAR(100), preco DOUBLE(8,2), PRIMARY KEY(codigo)); 9. Atualize a janela de SCHEMAS e abra as setas do seu banco para localizar o nome "Tables" e em seguida as duas tabelas criadas. 10. Agora utilize os dois comandos abaixo para consultar as estruturas das tabelas. 

DESCRIBE minhatabela; // exibe a estrutura da tabela

DESCRIBE produto; // exibe a estrutura da tabela

11. A tabela foi criada. O próximo passo é inserir produtos. a) INSERT INTO produto VALUE(null, "Samsung", 1850.00); b) INSERT INTO produto VALUE(1, "Apple", 2590.00); // gera um erro c) Qual o erro da questão anterior? ____________________________________________________ d) INSERT INTO produto VALUE(null, "Apple", 2590.00); e) SELECT * FROM produto; f) SELECT * FROM produto WHERE marca = "Apple"; g) UPDATE produto SET preco = 3000 WHERE marca = "Apple"; h) SELECT * FROM produto; // mostra a alteração do preço i) DELETE FROM produto; // apaga todos os campos

Página 20


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

j) SELECT * FROM produto; // verifica que não há mais registros k) DROP TABLE produto; l) DESCRIBE produto; Qual o erro? ____________________________________________________ m) DROP DATABASE meubanco; Verifique, na janela de SCHEMAS, que o DB desapareceu. 26)

Com base na estrutura básica de SQL, escreva abaixo os comandos para cada necessidade. Coloque todos os tipos de dados: a) Crie uma tabela chamada de cargos com no mínimo 3 campos, sendo um deles a chave primária; b) Crie uma tabela chamada de contasreceber com no mínimo 5 campos, sendo um deles a chave primária; c) Crie uma tabela chamada de eletrônicos com no mínimo 5 campos, sendo um deles a chave primária; d) Crie uma tabela chamada de móveis com no mínimo 5 campos, sendo um deles a chave primária;

27) (Atividade prática) Com as tabelas feitas na questão anterior, siga os procedimentos abaixo: Objetivo: Criar todas as tabelas e verificar os resultados. Aplicar o comando de alteração, ALTER. Tudo através do MySQL Workbench;

Requisitos:

Página 21


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

1. WampServer; 2. MySQL Workbench; Procedimento: 1. Criar as tabelas de:  cargos;  contasreceber (adicione o campo cod_barra);  eletronicos (adicione o campo distribuidor);  moveis (adicione o campo cor); 2. Faça a alteração usando o comando ALTER; após toda alteração, use o comando DESCRIBE para checar se a mudança: a) ALTER TABLE cargos ADD COLUMN setor varchar(60). b) ALTER TABLE contasreceber DROP COLUMN cod_barra. c)

ALTER

TABLE

eletronicos

CHANGE

COLUMN

distribuidor

fornecedor varchar(80) not null. d) ALTER TABLE moveis MODIFY cor int. 28) Faça o que se pede abaixo, escrevendo corretamente os comandos SQL. a) Crie um comando para alterar a tabela turmas, adicionando um atributo chamado série (não nulo). Escolha o tipo de dado ideal. b) Crie um comando para eliminar a coluna data_acesso da tabela usuários. c) Crie um comando que modifica a coluna autor da tabela tbautor para número inteiro não nulo. d) Crie o comando que apaga todas as tuplas da tabela tbautores e depois o que remove a tabela completamente.

Página 22


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

29) Faça o que se pede abaixo, escrevendo corretamente os comandos SQL. a) Crie o comando padrão para inserir um registro na tabela tbfotos, atribuindo os campos [data, hora, local]. b) Crie o comando para inserir um registro na tabela tbfotos, atribuindo os valores: "2013-10-10", "12:30:25" e "Roma". c) Crie o comando para inserir um registro na tabela tbfotos apenas na coluna local, atribuindo o valor "Paris". d) Crie o comando que selecione todas as tuplas da tabela tbfotos onde o local é "Paris". 30) Associe a palavra à sua característica: SELECT * FROM tblocais

SELECT (nome, data) FROM

Altera

todos

tblocais,

os

registros

atribuindo

Brasil

da

tabela

ao

campo

nome.

Comando

DML

que

altera/modifica

qualquer conteúdo de uma tupla.

tblocais

Update tblocais set nome='Brasil'

Comando DQL que seleciona todos os registros

da

tabela

tblocais

exibindo

todos os campos

Palavra reservada que é usada para UPDATE

alterar um atributo da tabela. É usado com o Update.

Página 23


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

Comando DQL que seleciona todas as SET

tuplas da tabela tblocais, exibindo apenas dois campos

MICROSOFT ACCESS

Palavra reservada, usada junto com o comando DML Insert.

Pode ser completado com as palavras VALUES

reservadas table e database a fim de removê-los.

DROP

Um SGBD relacional que permite criar BDs

Página 24


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES

1.4

ATIVIDADES COMPLEMENTARES | AULA 04 Resolva estas atividades complementares e teste seu conhecimento:

31) Quais são os parâmetros de configuração de uma nova conexão padrão para acessar um servidor de banco de dados MySQL. ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ 32) Marque (C) para correto e (E) para errado, a respeito das instruções abaixo: (

) Para um campo numérico, cujo valor será entre 10 e 180, pode-se usar o tipo Tinyint;

(

) Para armazenar registros de 50 mil pessoas, o campo que terá o código pode ser do tipo Smallint Unsigned;

(

) O campo auto incremento e que é chave primária em uma tabela, geralmente pode receber o tipo int, pois atenderá à maioria das necessidade. Isso porque o tipo int suporta mais de 4 bilhões de registros;

(

) O tipo muito usado para textos curtos e pequenas frases é o varchar;

(

) Para atribuir caracteres como Letras em um campo pode-se usar o tipo char;

(

) O maior tipo para texto é o MediumText;

(

) O único tipo para ponto flutuante, isto é, números reais, é o float;

(

)

Com

o

tipo

date

é

possível

armazenar

a

hora

atual;

Página 25


BANCO DE DADOS ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

(

) O MySQL não tem um tipo para armazenar data e hora no mesmo campo;

(

) O formato padrão do tipo date é "AAAA-MM-DD", que é padrão americano.

33) Relacione a 1ª e a 2ª colunas: 1 – PRIMARY KEY(cod) 2 – NOT NULL 3 – AUTO_INCREMENT 4 – DEFAULT

(

) Modificador para atributo que afirma que o valor não pode ser nulo.

(

) Modificador que permite atribuir um valor padrão para um campo qualquer.

(

) Modificador para campos numéricos que não permite utilizar valores negativos.

(

) Define o campo "cod" como chave primária da tabela.

(

) Quando atribuído a uma campo, não permite que esse tenha valores repetidos.

(

) Define um campo numérico para atribuir valores automaticamente.

5 - UNSIGNED 6 - UNIQUE

34) Explique o que ocorre quando um index é criado em um campo de uma tabela. Por fim, dê um exemplo de criação de índice, usando o comando create table. Para isso, crie a tabela tbmoveis e um campo ambiente que tenha um index. ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________

Página 26


BANCO DE DADOS ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

35) Siga as instruções abaixo para criar a tabela: 1.

Crie uma tabela chamada tbesportes conforme orientações: a. Crie o campo id como chave primária, não nula, com incremento e sem sinal; b. Crie o campo nome como varchar, não null, e valor padrão 'auto'; c.

Crie o campo modalidade como nula e varchar;

d. Crie o campo historia como text; e. Crie um index no campo nome; 2.

Faça o comando que insira três registros diferentes;

3.

Faça uma consulta apenas do campo nome, usando a cláusula WHERE filtrando pelo campo que possui o index.

36) (Atividade prática) Siga as orientações da questão anterior, enquanto utiliza o MYSQL Workbench. Objetivo: Criar a tabela de acordo com o solicitado e verificar os resultados. Inserir os registros e selecionar os dados. Tudo através do MySQL Workbench; Requisitos: 1. WampServer; 2. MySQL Workbench; Procedimento: 1. Crie as tabelas tbesportes conforme requisitos da questão 5. 2. Faça a inserção dos três registros. 3. Use o DESCRIBE para ver a tabela.

Página 27


BANCO DE DADOS ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

4. Execute o seguinte comando: 

DELIMITER $$ CREATE PROCEDURE insere_dados() BEGIN DECLARE a int; SET a = 1; WHILE a < 10000 DO INSERT INTO tbesportes VALUES (null, CONCAT(a,""), CONCAT(a, " campo"), CONCAT(a," surgiu a muito tempo")); set a = a +1; END WHILE; END $$ DELIMITER //

5. Execute o seguinte comando: 

call insere_dados(); // vai executar o procedimento criado no item 4;

6. O que aconteceu com a tabela tbesportes? Faça os testes necessários. _______________________________________________________ 7. SELECT nome FROM tbesportes WHERE nome > 5000. 37) Crie as visões através do comando CREATE VIEW. Atente para as especificações a seguir: a) A tabela tbgaleria tem vários campos, porém queremos pesquisar apenas os campos necessários para exibir as fotos com alguns dados [data, url_foto, legenda e local].  CREATE

VIEW

consulta_fotos_galeria

AS

SELECT

data,

url_foto, legenda, local FROM tbgaleria; b) A tabela tbprodutos tem vários campos, porém queremos pesquisar apenas os campos para fazer reposição de estoque [nome, preço, estoque, reposição, fornecedor, telefone].  CREATE VIEW consulta_estoque_reposicao AS SELECT nome, preço, estoque, reposição, fornecedor,

Página 28


BANCO DE DADOS ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

telefone FROM tbprodutos; 38) (Atividade prática) Com base na resposta da questão anterior, faça o que se pede, utilizando o MYSQL Workbench. Objetivo: Aprender a criar, usar e remover um VIEW; Requisitos: 1. WampServer; 2. MySQL Workbench; Procedimento: 1. Crie a tabela tbgaleria com os mesmos campos da questão 7; 2. Crie a VIEW chamada de consulta_fotos_galeria com os mesmos campos, porém ordenada por data decrescente; 3. Insira dois registros distintos; 4. Faça a consulta, usando a VIEW recém-criada; 5. Remova a VIEW: 6. Faça os devidos testes para ver o que aconteceu. Tente selecionar os dados, usando a VIEW novamente; 7. Crie a tabela tbprodutos com os mesmos campos da questão 7; 8. Crie a VIEW chamada de consulta_estoque_reposicao com os mesmos campos, porém ordenada por estoque crescente; 9. Insira quatro registros distintos; 10. Faça a consulta usando a VIEW recém-criada; 11. Remova a VIEW; 12. Faça os devidos testes para ver o que aconteceu. Tente selecionar os dados usando a VIEW novamente. 39)

Responda

ao

Página 29


BANCO DE DADOS ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

que se pede: a) O que é possível fazer com uma trigger? ________________________________________________________ ________________________________________________________ ________________________________________________________ b) Quando uma trigger pode ser acionada? ________________________________________________________ ________________________________________________________ ________________________________________________________ c) O que significa o OLD e o NEW? ________________________________________________________ ________________________________________________________ ________________________________________________________

40) Responda às perguntas abaixo a respeito de Stored Procedures: a) O que é Stored Procedures e quais as possibilidades no seu uso? ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________ b) Para que servem as palavras reservadas IN e OUT? ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________

Página 30


BANCO DE DADOS ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

c) Forneรงa exemplos de uso de um procedure em um sistema. ________________________________________________________ ________________________________________________________ ________________________________________________________ ________________________________________________________

Pรกgina 31


BANCO DE DADOS

1.5

ATIVIDADES COMPLEMENTARES | AULA 05 Realize estas atividades complementares e teste seu conhecimento:

41) Marque (C) para correto e (E) para errado, a respeito das instruções abaixo (Atente apenas para a sintaxe dos comandos): (

) ALTER TABLE tbveiculos modify column marca set text;

(

) ALTER TABLE tbveiculos delete column marca;

(

) ALTER TABLE tbveiculos drop column marca;

(

) ALTER TABLE tbveiculos ADD CONSTRAINT FK_MARCA FOREIGN KEY(marca) references tbmarcas(id_marca);

(

) ALTER TABLE tbveiculos delete FOREIGN KEY FK_MARCA;

(

) ALTER TABLE tbveiculos drop FOREIGN KEY FK_MARCA;

(

) ALTER TABLE tbpessoas ADD INDEX nome (pessoa);

(

) É possível alterar uma VIEW com o comando ALTER;

(

) ALTER TABLE tbpessoas DROP INDEX nome;

(

) É possível ter mais de uma Foreign Key na mesma tabela;

(

) É possível ter mais de uma Primary Key na mesma tabela;

(

) É possível ter vários campos como Unique na mesma tabela;

(

) É possível ter vários campos com Index na mesma tabela.

42) Relacione a 1ª à 2ª coluna: 1 - CALL sp_executa_listagem();

( ) Palavras usadas dentro do Procedure.

2 – DELIMITER //

( ) Comando de criação de um gatilho.

3 – CREATE PROCEDURE

( ) Comando que executa um procedure.

4 – CREATE TRIGGER

(

5 – IN e OUT

( ) Comando de criação de um procedimento armazenado.

) Palavras usadas dentro da Trigger.

Página 32


BANCO DE DADOS

6 – OLD e NEW

( ) Palavra usada para delimitar o espaço de criação de triggers e procedures.

43) Faça o que se pede: 1. Crie uma tabela que contemple uma chave primária, uma chave estrangeira, um Index, um campo Unique, o engine InnoDB, um campo Unsigned e um campo NOT NULL. 2. Crie a tabela que você referenciou como chave secundária (FK) no item anterior:

44) (Atividade prática) Faça o que se pede: Objetivo: Praticar a inserção, a alteração e a remoção de registros. Ver a criação de uma consulta, unindo duas tabelas com JOIN; Requisitos: 1) WampServer; 2) MySQL Workbench; Procedimento: 1. Crie as seguintes tabela; CREATE TABLE tbmontadoras ( cod_montadora int(10) unsigned NOT NULL AUTO_INCREMENT, nome varchar(20) UNIQUE, PRIMARY KEY (cod_montadora ) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE tbseguros ( id_seguro int(10) unsigned NOT NULL AUTO_INCREMENT, modelo varchar(80) NOT NULL, placa_veiculo varchar(20) UNIQUE NOT NULL, montadoras INT UNSIGNED NOT NULL,

Página 33


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

tipo_seguro varchar(80) NOT NULL, preco double(8,2) DEFAULT NULL, PRIMARY KEY (id_seguro ), INDEX (montadoras ), INDEX (placa_veiculo), CONSTRAINT FK_MONTADORA FOREIGN KEY REFERENCES tbmontadoras (cod_montadora) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

(montadoras)

2. Insira dados na primeira tabela (Montadoras Ford, Fiat e etc); INSERT INTO ('FORD'); INSERT INTO ('FIAT');

`meubanco`.`tbmontadoras`

(`nome`)

VALUES

`meubanco`.`tbmontadoras`

(`nome`)

VALUES

3. Insira dados (ao menos 6) na segunda tabela (cuidado com a FK); INSERT INTO `meubanco`.`tbseguros` (`modelo`, `placa_veiculo`, `montadoras`, `tipo_seguro`, `preco`) VALUES ('UNO', 'HFD-4578', '2', 'Normal', '1200'); INSERT INTO `meubanco`.`tbseguros` (`modelo`, `placa_veiculo`, `montadoras`, `tipo_seguro`, `preco`) VALUES ('Siena', 'DUI-7474', '2', 'Premium', '2500'); INSERT INTO `meubanco`.`tbseguros` (`modelo`, `placa_veiculo`, `montadoras`, `tipo_seguro`, `preco`) VALUES ('Palio', 'PAL-7898', '2', 'Total PLUS', '3000'); INSERT INTO `meubanco`.`tbseguros` (`modelo`, `placa_veiculo`, `montadoras`, `tipo_seguro`, `preco`) VALUES ('Styllo', 'STY-4130', '2', 'MEGA', '5000'); INSERT INTO `meubanco`.`tbseguros` (`modelo`, `placa_veiculo`, `montadoras`, `tipo_seguro`, `preco`) VALUES ('Courier', 'TRT8463', '1', 'Normal', '1350'); INSERT INTO `meubanco`.`tbseguros` (`modelo`, `placa_veiculo`, `montadoras`, `tipo_seguro`, `preco`) VALUES ('Fusion', 'FUS3517', '1', 'Mega', '4985'); INSERT INTO `meubanco`.`tbseguros` (`modelo`, `placa_veiculo`, `montadoras`, `tipo_seguro`, `preco`) VALUES ('F250', 'FGZ-6510', '1', 'Mega', '6580'); Pรกgina 34


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

INSERT INTO `meubanco`.`tbseguros` (`modelo`, `placa_veiculo`, `montadoras`, `tipo_seguro`, `preco`) VALUES ('Fiesta', 'FIE-6433', '1', 'Premium', '3250'); 4. Faça duas instruções de UPDATE, alterando dois campos onde o id_seguro seja 1 e 2; altere o valor e o tipo de seguro; UPDATE `meubanco`.`tbseguros` SET `tipo_seguro`='Premium', `preco`='2000' WHERE `id_seguro`='1'; UPDATE `meubanco`.`tbseguros` SET `tipo_seguro`='Normal', `preco`='1500' WHERE `id_seguro`='2'; 5. Descubra e remova os 3 últimos registros da tabela de seguros: DELETE FROM `meubanco`.`tbseguros` WHERE `id_seguro`='6'; DELETE FROM `meubanco`.`tbseguros` WHERE `id_seguro`='7'; DELETE FROM `meubanco`.`tbseguros` WHERE `id_seguro`='8'; 6. Faça os devidos testes para ver o que aconteceu. Use o Select. 7. Crie a seguinte VIEW: CREATE VIEW view_consulta_seguros AS SELECT s.modelo, s.placa_veiculo, s.preco, s.tipo_seguro, m.nome FROM tbseguros s INNER JOIN tbmontadoras m ON m.cod_montadora = s.montadoras; 8. Faça a consulta, usando a VIEW recém-criada, porém ordenando por preço; select * from view_consulta_seguros ORDER BY preco;

9. Explique o que aconteceu nessa consulta pela VIEW; ______________________________________________________ 10. Remova a VIEW: Página 35


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

DROP VIEW view_consulta_seguros; 45) Crie os comandos solicitados: 1. Crie uma trigger para a tabela tbfotos para ativar após a remoção de uma foto. A trigger não precisa ter código em seu corpo, apenas a assinatura de criação com início e fim: 2. Crie uma trigger para a tabela tbpecasautomotivas para ativar após a atualização de uma peça. A trigger não precisa ter código em seu corpo, apenas a assinatura de criação com início e fim: 3. Crie uma trigger para a tabela tbpecas para ativar DEPOIS da atualização de uma peça. Em seu corpo, deve remover uma peça da tabela tbpecas_velha (campo id), passando o id_peça da tabela tbpecas: 4. Remova a TRIGGER da questão anterior.

46) Faça as instruções solicitadas abaixo: a) Crie um comando que seleciona todas as fotos distintas na tabela tbfotos (campo foto); b) Crie um comando que seleciona todas as fotos, mesmo que os valores sejam iguais, na tabela tbfotos (campo local); c) Crie um comando que seleciona todas as fotos na tabela tbfotos, em que a data é igual a "2014-02-10" e ordene pelo id_foto; d) Crie um comando que conta todas as fotos na tabela tbfotos;

Página 36


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

e) Crie um comando que seleciona todas as fotos na tabela tbfotos, em que o campo local tenha as palavras ‘as’ em qualquer parte do valor do campo; f)

Crie um comando que seleciona todas as fotos na tabela tbfotos, em que o id_foto esteja entre 20 e 50.

47) (Atividade prática) Faça o que se pede: Objetivo: Praticar o uso do SELECT com algumas modificações. Requisitos: 1. WampServer; 2. MySQL Workbench; Procedimento: 1. Crie as seguintes tabela; CREATE TABLE tbmontadoras ( cod_montadora int(10) unsigned NOT NULL AUTO_INCREMENT, nome varchar(20) UNIQUE, PRIMARY KEY (cod_montadora ) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE tbseguros ( id_seguro int(10) unsigned NOT NULL AUTO_INCREMENT, modelo varchar(80) NOT NULL, placa_veiculo varchar(20) UNIQUE NOT NULL, montadoras INT UNSIGNED NOT NULL, tipo_seguro varchar(80) NOT NULL, preco double(8,2) DEFAULT NULL, Página 37


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

PRIMARY KEY (id_seguro ), INDEX (montadoras ), INDEX (placa_veiculo), CONSTRAINT

FK_MONTADORA

FOREIGN

KEY

(montadoras)

REFERENCES tbmontadoras (cod_montadora) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 2. Insira dados para fazer os testes (ao menos dois de cada); 3. Crie as seguintes consultas; s) Seleciona a soma de todos os preços dos seguros; b) Seleciona a média de todos os preços dos seguros; c) Seleciona o maior preço dos seguros; d) Seleciona o menor preço dos seguros; e) Como fazer para selecionar os preços dos seguros que são menores que 2000 e maiores que 4000; f) Selecione apenas os preços dos seguros usando um Alias de tabela chamado de "a"; g) Selecione apenas os preços e os tipos de seguros da tabela tbseguros, usando um Alias de tabela chamado de "aseg" e um alias para os atributos chamado VALOR e TIPO.

48) Um sistema de cadastro do governo permite que pessoas recebam prêmios quando chegarem num determinado nível. O nível sobe no

Página 38


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

momento em que a pessoa atinge uma quantidade de experiência específica. Suponha que os níveis sejam: 1) Nível 1 = júnior (Experiência entre 500 e 1000) a) Prêmio: Salário + 500 2) Nível 2 = pleno (Experiência entre 1001 e 2000) b) Prêmio: Salário + 2000 3) Nível 3 = sênior (Experiência entre 2001 até infinito) b) Prêmio: Salário + 5000 Para resolver este problema no banco de dados, de forma que a mudança fique automática, o Analista DBA solicitou que você fizesse a criação de uma trigger para toda a vez que a tabela de funcionários fosse atualizada, verificar a situação da experiência e acionar a trigger ou não. O nível de todo funcionário, quando entra, é zero. Faça a análise desse cenário, crie as tabelas, a trigger e faça os testes para verificar as mudanças. Apenas para ajudar, uma trigger só pode alterar dados de outra tabela que não esteja em uso na mesma trigger. Notas importantes:  Deve haver um código que referencie um funcionário com sua situação em outra tabela, isto é, seu nível e salário. Não precisa ser Fk para ficar mais simples.  Tudo que vai ser alterado precisará estar em outra tabela fora dos funcionários.

Página 39


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

 Insira os valores manualmente para as duas tabelas.  A mudança será feita quando setar um novo valor da experiência. 49) Faça o que se pede: Dadas as seguintes tabelas: 1. CREATE TABLE tbautor( a. cod_autor

int

UNSIGNED

NOT

NULL

PRIMARY

KEY

PRIMARY

KEY

AUTO_INCREMENT, b. autor varchar(200), 2. email varchar(200) 3. ENGINE=InnoDB DEFAULT CHARSET=utf8; 4. CREATE TABLE tbeditora( a) id_editora

int

UNSIGNED

NOT

NULL

AUTO_INCREMENT, b) editora varchar(200) )ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE tblivros(

id_livro int UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, livro varchar(200), tombo varchar(80), cod_autor int UNSIGNED NOT NULL, id_editora int UNSIGNED NOT NULL, CONSTRAINT FK_AUTOR FOREIGN KEY (cod_autor)

Página 40


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

REFERENCES tbautor(cod_autor), CONSTRAINT FK_EDITORA FOREIGN KEY (id_editora) REFERENCES tbeditora(id_editora) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Insira dados em todas as tabelas; respeite as FK. a) Crie um SELECT com JOIN que mostre todos os livros e o nome do respectivo autor. Exiba apenas os campos livro e autor; b) Crie um SELECT com JOIN que mostre todos os livros, o nome do respectivo autor e o da editora. Não exiba os códigos PK nem FK; c) Crie dois usuários novos (Augusto e Marcelo) para manipular apenas o banco de dados meubanco. Senha 'root' para ambos e para qualquer local (servidor); d) Dê privilégios plenos para o primeiro usuário para manipular apenas o banco de dados meubanco (todas as tabelas); e) Dê privilégios de leitura, escrita e atualização para o segundo usuário para manipular apenas o banco de dados meubanco (todas as tabelas); f) Renomeie o nome do segundo usuário criado para Jonas; g) Remova todos os privilégios que foram concedidos para ambos os usuários criados; h) Faça as consultas com os comandos de testes e depois remova todos os usuários criados. Página 41


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

50) (Atividade prática) Com base na questão anterior: Objetivo: Praticar o uso do SELECT com JOIN. Manipular Usuários. Manipular Privilégios. Usar Procedure e Transaction. Exportar e Importar dados. Requisitos: 1. WampServer; 2. MySQL Workbench; Procedimento: Dadas as seguinte tabelas, faça o que se pede:

 CREATE TABLE tbautor( cod_autor

int

UNSIGNED

NOT

NULL

PRIMARY

KEY

PRIMARY

KEY

PRIMARY

KEY

AUTO_INCREMENT, autor varchar(200), email varchar(200) )ENGINE=InnoDB DEFAULT CHARSET=utf8;  CREATE TABLE tbeditora( id_editora

int

UNSIGNED

NOT

NULL

AUTO_INCREMENT, editora varchar(200) )ENGINE=InnoDB DEFAULT CHARSET=utf8;  CREATE TABLE tblivros( id_livro

int

UNSIGNED

NOT

NULL

AUTO_INCREMENT, livro varchar(200), tombo varchar(80), Página 42


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

cod_autor int UNSIGNED NOT NULL, id_editora int UNSIGNED NOT NULL, CONSTRAINT FK_AUTOR FOREIGN KEY (cod_autor) REFERENCES tbautor(cod_autor), CONSTRAINT FK_EDITORA FOREIGN KEY (id_editora) REFERENCES tbeditora(id_editora) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Insira dados em todas as tabelas conforme questão anterior; Área de Manipulação de Procedure e Transaction: a) Crie um procedimento que recebe um valor de um tombo de um determinado livro, faz a consulta na tabela e retorna se existe ou não (Pode retornar um valor na tela como 0 ou 1, ou sim e não); Dica: passe o parâmetro; b) Crie uma transação que selecione e remova o último registro da tabela de livros; Dica: use o SELECT id... into @var... para colocar o id selecionado na variável @var e usá-lo na instrução DELETE depois. Área de Manipulação de importação e de exportação: c) Exporte os dados da tabela tbautor para um arquivo autor.txt; d) Crie uma tabela idêntica a tbautor com o nome de tbcopia; e) Importe os dados do arquivo exportado para a tabela tbcopia.

Página 43


BANCO DE DADOS

2

APÊNDICE

2.1 GABARITO DAS ATIVIDADES COMPLEMENTARES | AULA 01 01)

A ordem correta é 3, 5, 4, 1, 6 ,2.

02)

A própria pergunta já lista palavras importantes como eficiente, real necessidade e fundamental. Se um amigo chamar para ir a uma pizzaria à noite, você não terá dúvida de que vai comer pizza. Por quê? Por que o negócio da empresa é vender pizza e não feijoada. Se for a uma churrascaria, com certeza haverá um churrasco delicioso e não um sushi. Dessa maneira, o próprio negócio em si já delineia o tipo de objeto (Entidade) importante para a empresa. Para o sistema, a Entidade vai fazer o sistema funcionar dentro da empresa. Imagine um aeroporto. Qual o principal objeto que faz funcionar uma empresa de aviação. Com certeza você pensou nas passagens. As passagens, isto é, a necessidade de viajar é o que une o passageiro e a aeronave. Só aqui já foram três Entidades, passageiro, passagens e aeronave. Ao observar mais fundo, perceberá que a empresa precisa de funcionários como pilotos, aeromoças e aqueles que auxiliam nas mais diversas tarefas. Outra coisa importante é o destino que o passageiro terá. Observe que só aqui foram listadas as coisas fundamentais para o funcionamento de uma empresa de aviação. Não foi observada a estrutura física do aeroporto, da lâmpada ou do banheiro da aeronave. Isso, para o sistema de vendas de passagens aéreas, é de certa forma irrelevante.

outras

coisas

importantes

que

podem

ser

acrescentadas, porém o foco da análise é sempre a partir do ponto mais crucial para o funcionamento do negócio. E a partir desse ponto é que se obtêm todas as Entidades relacionadas. Página 44


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

03) O processo de abstração começa desde o enunciado da questão, a partir da necessidade de um cliente, um negócio ou uma empresa. Da necessidade é que faz surgir a análise e daí então, conseguintemente, surge o sistema ideal. Nesse caso de um ambiente hospitalar é fato que os pacientes, os médicos, os equipamentos e os suprimentos são essencialmente Entidades desse sistema. 04) Para uma simples loja de roupas, é sabido que haverá operações de entrada e saída de produtos, haverá compras e vendas com os clientes, existirão contas a pagar, extrato de vendas, relatório de caixa e etc. Para representar bem esse ambiente comercial e criar os requisitos do sistema, as seguintes entidades serão listadas: Produtos: Tudo gira em torno dos produtos. Os produtos são comprados, lançados no estoque, vendidos e listados em nota fiscal. Clientes: Os clientes compram os produtos e pagam com dinheiro ou outra forma que é exibida no caixa na hora da compra. Os clientes também tem um prazo de garantia. Funcionários: São registrados no sistema para saber quem operou o caixa, quem foi o vendedor que atendeu e listar o melhor vendedor do mês para receber uma comissão. Caixa: Lista todas as vendas diárias, contém dados dos funcionários, dos clientes, dos produtos vendidos, da nota fiscal emitida, a data e o valor. Fornecedores: Lista dos fornecedores usada para fazer novas compras e para dar entrada em novos produtos adquiridos. Contar a pagar: Listagem de contas a pagar contendo as informações relevantes. Página 45


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

Contas a receber: Listagem de contas as receber contendo as informações relevantes. 05) Para um site de venda de cursos online, os produtos são lógicos, ou seja, não é nada palpável como uma roupa. Os cursos ficam registrados sendo possível um usuário se cadastrar no site, fazer a compra, fazer o curso e por fim receber um certificado de conclusão. Para representar bem este ambiente online e criar os requisitos da loja online, as seguintes entidades serão listadas: Produtos: Tudo gira em torno dos produtos, sejam cursos, apostilas ou webcast. Os produtos são cadastrados no site e comprados pelos usuários. O mesmo curso pode ser visto por milhares de pessoas ao mesmo tempo. Não há um estoque. Ou o curso existe ou não, porém depois que passa a existir, não tem fim ou quantidade. Usuários: Os usuários são os clientes que se cadastram no site, compram através de cartão, depósito ou boleto, nunca dinheiro, pois não há a quem entregar pessoalmente. Um mesmo usuário pode fazer até todos os cursos sem precisar sair de casa, Pode comprar quando quiser e deve seguir as regras e normas da empresa, como prazo e cumprimento de atividades. Funcionários: É também registrado no site para dar manutenção, fornecer suporte aos usuários clientes tanto na parte comercial quanto na parte acadêmica. Libera o material de estudo, os resultados das avaliações online e, por fim, o certificado. Cada funcionário pode ter um nível de acesso, bem como funções e áreas específicas liberadas dentro do site. Atividades: Lista todas as atividades de cada curso, como tarefas e avaliações. Página 46


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

Movimento: Listagem das compras de todos os usuários com a situação do usuário em relação ao curso escolhido. Contas a receber: Listagem de contas as receber. Trabalha em conjunto com a entidade movimento para saber quem já pagou e já pode iniciar o curso com acesso livre à plataforma de aprendizagem.

06)

O modelo lógico que pode ser obtido a partir da análise é o seguinte: 

Produtos

o

(codigo,

modelo,

marca,

fornecedor,

cor,

tamanho,

preco,

quantidade_estoque) 

Clientes

o

(cod_cliente, nome_cliente, cpf_cliente, email, telefone)

Funcionários

o

(cod_func,

nome_func,

cpf_func,

email,

telefone,

salario,

comissao, registro, setor, função, dependentes, pis, cart_trabalho) 

Caixa

o

(codigo_caixa,

cod_cliente,

cod_func,

data,

valor,

produto,

quantidade, total, numero_nota, desconto, forma_pgto, prazo) Obs: É claro que para uma realidade comercial, este modelo do caixa não é o ideal, porém para entendimento e aprendizado é o suficiente. 

Fornecedores

o

(cod_forn, razao, cnpj, contato, email, telefone, endereco)

Contar a pagar

o

(codigo_cp, cod_forn, vencimento, numero_nota, valor)

Contas a receber

o

(codigo_cr, cod_cliente, vencimento, numero_nota, valor)

Página 47


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

07)

O modelo lógico que pode ser obtido a partir da análise é o seguinte: 

Produtos

o

(codigo, categoria, tipo, autor, faixas, preco)

Usuários

o

(codigo, nome, cpf, email, usuario, senha, endereco, telefone, quantidade_acessos)

Funcionários

o

(cod_func, nome, cpf, usuario, senha, endereco, email, telefone, nivel, data_ultimo_acesso, funcao)

Atividades

o

(codigo, cod_curso, cod_func, peso, nota, prazo, data_envio)

Movimento

o

(codigo, cod_usuario, cod_curso, situação, valor, data_pedido)

Contas a receber

o

(codigo,

cod_usuario,

cod_curso,

valor,

data_pedido,

forma_pagamento, data_recebimento) 08)

(C) - (E) – (C) – (C) – (E) - (C) - (C) – (C) - (E) – (E).

09) As possibilidades são inúmeras: Exemplo 1: Para uma empresa de transporte de ônibus 

Um Funcionário usa um Veículo (1:1)

Um Veículo tem vários Roteiros (1:N)

Vários Veículos transporta várias pessoas (N:N)

Exemplo 2: Para uma empresa de cursos online 

Um Curso tem uma Grade Curricular (1:1)

Página 48


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

Um Curso tem várias Atividades (1:N)

Vários Usuários compram vários Cursos (N:N)

Exemplo 3: Para uma empresa de estoque

10)

Uma Nota de Compra tem uma Transportadora (1:1)

Uma Nota Fiscal tem vários Produtos (1:N)

Vários Clientes compram vários Produtos (N:N)

Alunos,

Funcionários,

Cursos,

Categorias,

Turmas,

Matrículas

e

Contratos. As Entidades podem ser encontradas a partir de palavraschave exibidas na própria interface do sistema.

Página 49


BANCO DE DADOS

2.2 GABARITO DAS ATIVIDADES COMPLEMENTARES | AULA 02 11)

Entidades: São todos os objetos (físicos ou lógicos) que são abstraídos de um ambiente que é analisado. As Entidades representam todos os elementos que são relevantes para a construção do sistema. Toda entidade será criada e utilizada dentro do sistema, ou seja, de alguma forma elas vão se relacionar. Relacionamentos: O relacionamento é basicamente a forma com que as Entidades se associam e operam entre si. O relacionamento identifica qual a importância que as entidades possuem à medida que se relacionam. Entidades mais importantes tendem a se relacionar mais dentro do sistema. Atributos: Geralmente as Entidades representam os objetos e elementos do mundo real, como por exemplo: As pessoas, os clientes, os funcionários e os carros. Observe que por mais simples e menos importante que seja uma Entidade dentro do sistema, ela com certeza terá ao menos um ou mais atributos. Os atributos são também chamados de características de cada Entidade. Uma pessoa tem um nome, um CPF e assim sucessivamente. Geralmente todos os atributos são gerados para permitir um maior controle administrativo dentro do sistema. E também irá identificar para que serve cada Entidade. Cardinalidade:

Sabe-se

que

toda

Entidade

vai

se

relacionar,

entretanto é importante saber o nível de associação e relacionamento que elas terão. Uma Entidade A qualquer pode ter uma ou várias ocorrências da Entidade B e vice-versa. E várias Entidades C podem ter sempre várias ocorrências da Entidade D e vi. Uma pessoa pode morar em apenas uma casa. Várias pessoas podem comprar vários carros.

Página 50


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

12) As Entidades são: Produtos, Clientes e Fornecedores. Os atributos podem ser diversos e estão ligados à necessidade do sistema. Por exemplo, se há a necessidade de armazenar o e-mail ou o endereço, então este atributo entra, senão não é atribuído. Veja três exemplos simplistas. Produtos: Os atributos podem ser um código, o nome do produto, a marca, o fornecedor, a validade (se houver), o peso, o custo, o preço de venda. Clientes: Para os clientes podem ter um código, o nome, o CPF ou CNPJ, o RG ou I.E., o endereço, o e-mail, o telefone, o nível do cliente, a data de cadastro, o nome do cônjuge. Fornecedores: Nos fornecedores pode haver um código, a razão social, o nome fantasia, um CNPJ, um endereço, um ou mais telefones, e-mail. 13) Observe a seguir o resultado do DER feito do programa DIA Diagram.

Página 51


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

Fonte: Autor 14) Observe que a enfermeira tem dados distintos do médico e do atendente. Atente que os dados abaixo não são definitivos, ou seja, em cada caso poderá haver alterações entre os atributos. Em um mesmo sistema, podem existir várias Entidades similares para lidar com as mais diversas

situações.

FUNCIONÁRIO: enfermeira Atributos:

FUNCIONÁRIO: atendente Atributos:

Nome

Nome

COREN

Telefone

Data Emissão COREN

Carteira de Trabalho

Telefone

Salário

Carteira de Trabalho

E-mail

Salário

Endereço

E-mail

Data de admissão

Endereço

15) A imagem é bem complexa, principalmente para quem não conhece o sistema. Porém, para o analista, é possível abstrair alguns detalhes como, por exemplo: Logo no topo há informações de um Cliente; então sabemos que existe uma Entidade para Cliente e, logicamente, uma tabela que armazena os seus dados. Nesse caso, tal tela apresenta dois campos dessa tabela que são um código e o nome. O código é número inteiro e o nome, texto.

Página 52


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

As próximas tabelas são as seguintes: Funcionários: O funcionário é o motorista que tem como atributos (campos) da tabela: matrícula (tipo de dado é número inteiro) e nome (tipo de dado é texto). Ônibus: Apesar de extremamente importante, só aparece o nome Marcopollo, sem placa nem dados adicionais do veículo. O campo nome é do tipo texto. Contrato: Sem dúvida é o que mais possui campos sendo exibidos nessa tela. O contrato tem muitas informações pertinentes à viagem, como data de saída e de regresso, hora de saída e de regresso, quantidade de passageiros, local de saída, km previsto, origem, UF da origem, destino, UF do destino, valor do serviço, sinal de 20%, saldo a pagar, valor do motorista, piso asfalto, piso terra, km chegada e algumas estatísticas para a viagem. Os campos de valores monetários são todos do tipo moeda (double), o campo de km pode ser número inteiro, todos os campos de hora são deste tipo (time=hora) e os campos de data também são deste tipo (date - data). O restante pode ser colocado como texto. 16)

A ordem correta é: 6, 5, 2, 3, 4, 1.

17) A ordem correta é: E, C, E, C, C, C, E, E, C, E. 18) Para a tabela A8, deve haver uma coluna para o livro e o tombo; da mesma maneira para a Editora e a UF. Para a tabela B8, é interessante separar o CEP do endereço, bem como a cidade do estado. A questão é que, em uma busca por cidade ou estado, ter-se-ia que antes fazer a separação

dos

Página 53


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

dados. Também, durante uma alteração ou inserção de registros, surgiria uma enorme quantidade de anomalias e de registros repetidos ou inconsistentes. Para os outros campos, o motivo é o mesmo. Tabela A8 Codigo Livro 21 A arte de amar

tombo ZTXF 5006

autor Joseh Mattos

Editora UF Rivas SP

TXGH 95110

Almeida Genine

Amiam

RJ

32

Banco para sentar

33

O verão da salvação

HUYT45 90065

Vasquez Erniatori

Grow

BA

43

Chove na minha terra

PMBCQ 84120

Levinhon Cadiví

Cati

ES

Fonte: autor.

Tabela B8 ID

Imovel

CEP

Proprietário

cidadeestado Lins/SP

1

Rua Arnita Viara, 55, Centro

16400-500

Matias Barros

2

Av. Baltazar, 1500

11400-365

Carol Lopez

3

Av. Contorno, 1500B

44020-065

Val Atari

Piracicaba/SP Itaberaba/BA

4

Travessa São Pedro

46120-000

Dan D'marco

Vitória/ES Fonte: autor.

19) No caso da primeira tabela, observe que existem os campos autor e cod_autor, onde o cod_autor apenas faz referência exclusivamente ao autor e não ao livro. Da mesma maneira, a tabela de cursos tem o campo id_prof que referencia exclusivamente o campo prof, ou seja, serve de referência apenas para o professor. A solução é a separação dos campos para outra tabela e utilizar o conceito de chaves estrangeiras ou foreign key. Isso evita problemas de anomalia de

Página 54


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

alteração, de inclusão e de remoção. Tabela A9 ID_livro

Livro

Cod_autor

Editora

121

A arte de amar

A1

Rivas

322

Banco para sentar

A2

Amiam

393

O verão da salvação

A3

Grow

493

Chove na minha terra

A4

Cati

Fonte: autor. Tabela A9-1 Cod_autor

autor

A1

Joseh Mattos

A2

Almeida Genine

A3

Vasquez Erniatori

A4

Levinhon Cadiví Fonte: autor. Tabela B9

cod

curso

Qtd_aulas id_prof

21

Java SE

30

Pf05

32

PHP com OO

30

Pf45

33

MySQL

25

Pf07

43

MongoDB

25

Pf08

Fonte: autor.

Tabela B9-1

Página 55


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

id_prof

Prof.

Pf05

Marcos Kranklin

Pf45

David Lucas

Pf07

Mônica Moura

Pf08

Francisco Moura Fonte: autor.

20)

Nas tabelas abaixo, a Editora depende do campo livro e da chave primária id_livro. Da mesma forma ocorre com a categoria do curso que depende de qual curso é e do campo cod que é a sua chave primária.

A

ideia

da

3FN

é

o

campo

não

chave

depender

exclusivamente da chave primária da tabela e não de outro campo. A isso chamamos de dependência funcional transitiva ou indireta. Para resolver esse problema, deve-se criar uma nova tabela para cada situação e novamente usar o conceito de chave estrangeira ou foreign key. Tabela A10 id_livro

Livro

Cod_autor

id_editora

121

A arte de amar

A1

e12

322

Banco para sentar

A2

e32

393

O verão da salvação

A3

e39

400

O talento de Jhon

A3

e39

493

Chove na minha terra

A4

e40

500

Quem sou eu?

A4

e40 Fonte: autor.

Página 56


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES ________________________________________________________________________________

Tabela A10-1 id_editora

Editora

e12

Rivas

e32

Amiam

e39

Grow

e40

Cati

Fonte: autor. Tabela B10 cod

curso

Qtd_aulas

id

cod_cat

21

Java SE

30

Pf05

C1

32

PHP com OO

30

Pf45

C1

33

MySQL

25

Pf07

C2

43

MongoDB

25

Pf08

C2

43

DELPHI

25

Pf08

C3

43

DREAMWEAVER

25

Pf08

C3

Fonte: autor. Tabela B10-1 cod_cat

categoria

C1

Liguagem

C2

Banco de Dados

C3

IDE Fonte: autor.

Pรกgina 57


BANCO DE DADOS

2.3 GABARITO DAS ATIVIDADES COMPLEMENTARES | AULA 03

21) a) Livro, Autor e Leitor.

Fonte: autor. As associações de cardinalidade são as seguintes: Um livro deve ser escrito por um ou mais autores. Um autor pode não ter nenhum ou ter vários livros. (Há quem diga que alguém só é autor se tiver pelo menos um livro escrito, enfim, fica a cargo do analista e da necessidade). Um livro pode não ter sido lido ainda como poder ter sido lido por vários leitores. Um

leitor

pode

ter

lido

nenhum

ou

vários

livros.

Página 58


BANCO DE DADOS ATIVIDADES COMPLEMENTARES _______________________________________________________________________

b) Curso, Professor e Aluno.

Fonte: autor. As associações de cardinalidade são as seguintes: Um professor pode ter nenhum ou vários cursos. Um curso deve ter um ou vários professores. Um Aluno pode estar inscrito em nenhum ou em vários cursos. Um curso pode ter nenhum ou vários alunos. Outra associação que poderia ser feita é entre professores e alunos para o atendimento, em que um professor atende a nenhum ou a vários alunos e vice-versa.

Página 59


BANCO DE DADOS ATIVIDADES COMPLEMENTARES _______________________________________________________________________

c) Passageiros, Aeronave e Companhia.

Fonte: autor. As associações de cardinalidade são as seguintes: Um passageiro pode viajar em uma ou várias aeronaves (por conta da escala de voo). Uma aeronave pode comportar nenhum ou vários passageiros. Um passageiro pode viajar por uma e apenas uma companhia. Uma companhia pode ter nenhum ou vários passageiros. Uma companhia pode ter uma ou várias aeronaves. Uma aeronave faz parte de uma e apenas uma companhia.

Página 60


BANCO DE DADOS ATIVIDADES COMPLEMENTARES _______________________________________________________________________

d) Cliente, Conta Bancária e Gerente.

Fonte: autor. As associações de cardinalidade são as seguintes: Um cliente pode possuir uma ou várias contas bancária. Uma conta bancária pode ter um ou vários clientes. (No caso de conta conjunta) Um cliente possui um e apenas um gerente de conta. Um gerente pode ter um ou vários clientes. Um gerente pode cuidar de uma ou várias contas bancária. Uma conta bancária possui um e apenas um gerente. 22) A solução é criar novas tabelas para associar cada coisa por uma única vez. Assim se evitam duplicidades, como "Forn1 | Peça1" nas linhas 1 e 2. Os espaços em branco provam que as linhas repetidas foram eliminadas. Tabela FP 01

Página 61


BANCO DE DADOS ATIVIDADES COMPLEMENTARES _______________________________________________________________________

Fornecedor e Peças Fornecedor

Peça

Forn1

Peça1

Forn1

Peça2

Forn1

Peça3

Forn2

Peça1

Forn2

Peça2

Forn2

Peça3

Forn2

Peça4

Tabela FP 02 Peças e Modelo Peça

Modelo

Peça1

Carro1

Peça1

Carro2

Peça2

Carro1

Peça2

Carro2

Peça3

Carro1

Peça3

Carro2

Peça3

Carro3

Peça4

Carro1

Página 62


BANCO DE DADOS ATIVIDADES COMPLEMENTARES _______________________________________________________________________

Peças e Modelo Peça

Modelo

Tabela FP 03 Fornecedor e Modelo Fornecedor

Modelo

Forn1

Carro1

Forn1

Carro2

Forn2

Carro1

Forn2

Carro2

Forn2

Carro3

Da forma com que, agora, ficou dividida, não há replicações e todos os elementos continuam associados entre si. As tabelas podem crescer sem limites e sem repetições. E, principalmente, as tabelas podem se relacionar, para garantir que cada fornecedor atinja todas as peças e todos os carros correlacionados. 23) A ordem correta é: 3, 4, 6, 5, 1, 2.

Página 63


BANCO DE DADOS ATIVIDADES COMPLEMENTARES _______________________________________________________________________

24) A ordem correta é: E, C, C, E, C, E, E, C, C, C; 25) Seguem apenas algumas das respostas que aparecerão: Não é preciso explicar os comandos SQL em detalhes. 1. cria um DB (banco de dados) chamado de "meubanco"; 2. Gera um erro, pois um banco (DB) com este nome já foi criado; 3. create database meubanco

Error

Code:

database 'meubanco'; database exists

1007.

Can't

create

0.000 sec;

4. atualizar. 5. Seleciona o banco criado para que as próximas execuções SQL sejam alocadas/direcionadas para ele; 6. Cria uma tabela chamada "minhatabela" contendo dois campos; 7. create table minhatabela( campo1 varchar(80), campo2 int) Error Code: 1050. Table 'minhatabela' already exists

0.000 sec;

8. Cria uma tabela chamada "produto" contendo três campos. 9. Atualizar e abrir. 10. Consulta. 11. a) Insere o primeiro registro na tabela produto; b) Gera um erro por duplicidade de chave primária; Como o campo codigo

é

auto_increment

(auto

incrementável),

ele

inicia

a

contagem em 1. Página 64


BANCO DE DADOS ATIVIDADES COMPLEMENTARES _______________________________________________________________________

O primeiro registro foi adicionado no item "11-a" e o código recebeu o valor 1, pois foi enviado um null para ele. Como aqui o código passado é o 1, então gerou esse erro: Chave primária deve ser única. c) insert into produto value(1, "Apple", 2590.00) Duplicate entry '1' for key 'PRIMARY'

Error Code: 1062.

0.000 sec

d) Insere o produto corretamente; e) exibe todos os produtos cadastrados;

f) exibe todos os produtos cadastrados onde a marca é Apple;

g) Atualiza a tabela de produto alterando o preço para 3000 onde a marca é igual a "Apple"; h) Exibe a alteração do preço da marca Apple; i)

Apaga todos os campos da tabela deixando ela completamente limpa;

Página 65


BANCO DE DADOS ATIVIDADES COMPLEMENTARES _______________________________________________________________________

j) Exibe a tabela completamente vazia; k) Remove a tabela produto; l)

O erro é gerado, pois a tabela não existe mais, foi removida no comando anterior; Veja o erro abaixo: describe produto doesn't exist

m)

Error Code: 1146. Table 'meubanco.produto'

0.000 sec

Remove o banco de dados meubanco com tudo que tem dentro dele, como a tabela "minhatabela";

26) A criação das tabelas é relativamente simples. Só se deve observar que a tabela tem os campos (atributos) que refletem a estrutura ideal de cada objeto que irá representar. Por exemplo a tabela de cargos. Faça perguntas como: O que todo cargo tem? Geralmente a resposta se transforma em campos. a) Tabela cargos; 1. CREATE TABLE cargos ( 2. codigo INT NOT NULL AUTO_INCREMENT, 3. cargo VARCHAR(60), 4. salario double(8,2), 5. PRIMARY KEY (codigo)); b) Tabela contasreceber; 1. CREATE TABLE contasreceber ( 2. codigo INT NOT NULL AUTO_INCREMENT, 3. cliente VARCHAR(100), 4. numero_nota INT,

Página 66


BANCO DE DADOS ATIVIDADES COMPLEMENTARES _______________________________________________________________________

5. cod_barra VARCHAR(200), 6. valor DOUBLE(8,2), 7. vencimento DATE, 8. forma_pagamento VARCHAR(50), 9. PRIMARY KEY (codigo)); c) Tabela eletronicos; 1. CREATE TABLE eletronicos ( 2. id_eletronico INT NOT NULL AUTO_INCREMENT, 3. nome VARCHAR(100), 4. marca VARCHAR(80), 5. cod_barra VARCHAR(200), 6. preco DOUBLE(8,2), 7. custo DOUBLE(8,2), 8. distribuidor VARCHAR(100), 9. cor VARCHAR(70), 10. PRIMARY KEY (id_eletronico)); d) Tabela moveis; 1. CREATE TABLE moveis ( 2. id_movel INT NOT NULL AUTO_INCREMENT, 3. tipo VARCHAR(100), 4. modelo VARCHAR(80), 5. ambiente VARCHAR(80), 6. custo DOUBLE(8,2), 7. cod_barra VARCHAR(200), 8. preco DOUBLE(8,2), 9. cor VARCHAR(80), 10. PRIMARY KEY (id_movel ));

Pรกgina 67


BANCO DE DADOS ATIVIDADES COMPLEMENTARES _______________________________________________________________________

27) Basta digitar as instruções no MySQL Workbench. Item 1: 

CREATE TABLE cargos (

codigo INT NOT NULL AUTO_INCREMENT, cargo VARCHAR(60), salario double(8,2), PRIMARY KEY (codigo)); 

CREATE TABLE contasreceber (

codigo INT NOT NULL AUTO_INCREMENT, cliente VARCHAR(100), numero_nota INT, cod_barra VARCHAR(200), valor DOUBLE(8,2), vencimento DATE, forma_pagamento VARCHAR(50), PRIMARY KEY (codigo)); 

CREATE TABLE eletronicos (

id_eletronico INT NOT NULL AUTO_INCREMENT, nome VARCHAR(100), marca VARCHAR(80), cod_barra VARCHAR(200), preco DOUBLE(8,2), custo DOUBLE(8,2), distribuidor VARCHAR(100), cor VARCHAR(70), PRIMARY KEY (id_eletronico)); 

CREATE TABLE moveis (

Página 68


BANCO DE DADOS ATIVIDADES COMPLEMENTARES _______________________________________________________________________

id_movel INT NOT NULL AUTO_INCREMENT, tipo VARCHAR(100), modelo VARCHAR(80), ambiente VARCHAR(80), custo DOUBLE(8,2), cod_barra VARCHAR(200), preco DOUBLE(8,2), cor VARCHAR(80), PRIMARY KEY (id_movel )); Item 2: a) ALTER TABLE cargos ADD COLUMN setor varchar(60); DESCRIBE cargos; b) ALTER TABLE contasreceber DROP COLUMN cod_barra; DESCRIBE contasreceber; c)

ALTER

TABLE

eletronicos

CHANGE

COLUMN

distribuidor

fornecedor varchar(80) not null; DESCRIBE eletronicos; d) ALTER TABLE moveis MODIFY cor int; DESCRIBE moveis;

Exemplo de visualização: Observe que o campo cor agora é int.

Página 69


BANCO DE DADOS ATIVIDADES COMPLEMENTARES _______________________________________________________________________

28)

a) ALTER TABLE turmas ADD COLUMN serie varchar(20) not null; b) ALTER TABLE usuarios DROP COLUMN data_acesso; c) ALTER TABLE tbautor MODIFY autor int NOT NULL; d) DELETE FROM tbautores;  DROP TABLE tbautores;

29) Seguem os comandos: a) Página 70


BANCO DE DADOS ATIVIDADES COMPLEMENTARES _______________________________________________________________________

INSERT INTO tbfotos VALUES (data, hora, local);

INSERT INTO tbfotos(data,hora, local) VALUES (data,hora, local);

b) 

INSERT

INTO

tbfotos

VALUES

("2013-10-10",

"12:30:25",

"Roma"); 

INSERT INTO tbfotos(data,hora, local) VALUES ("2013-10-10", "12:30:25", "Roma");

c) 

INSERT INTO tbfotos (local) VALUES ("Paris");

d) 

SELECT * FROM tbfotos WHERE local = 'Paris';

30) Altera todos os registros da tabela SELECT * FROM tblocais

tblocais atribuindo Brasil ao campo nome

Página 71


BANCO DE DADOS ATIVIDADES COMPLEMENTARES _______________________________________________________________________

SELECT (nome, data) FROM tblocais

Update tblocais set nome='Brasil'

Comando DML que altera/modifica qualquer conteúdo de uma tupla.

Comando DQL que seleciona todos os

registros

da

tabela

tblocais

exibindo todos os campos

Palavra reservada que é usada para UPDATE

alterar um atributo da tabela. É usado com o Update.

Comando DQL que seleciona todas SET

as tuplas da tabela tblocais exibindo apenas dois campos

MICROSOFT ACCESS

Palavra reservada que é usada junto com o comando DML Insert.

Pode VALUES

ser

palavras

completado reservadas

com

as

table

e

database a fim de remover.

DROP

Um SGBD relacional que permite criar BDs

Página 72


BANCO DE DADOS

2.4 GABARITO DAS ATIVIDADES COMPLEMENTARES | AULA 04 31) Seguem as configurações: 

Nome da conexão. Pode ser qualquer coisa.

O nome do servidor que se for local é localhost ou 127.0.0.1 (endereço de loopback).

A porta de acesso padrão é 3306.

O nome de usuário do banco de dados.

A senha do usuário do banco de dados.

O nome do banco de dados (SCHEMA).

32) A ordem é C, C, C, C, C, E, E, E, E, C. 33) A ordem correta é 2, 4, 5, 1, 6, 3. 34)

A criação de um índice (index) em qualquer campo de uma tabela significa que haverá um melhoramento nas buscas que utilizarem esse campo como referência de consulta. O index cria uma espécie de vetor (array) ordenado que evitar desperdiçar tempo em consultas ao banco de dados. Veja abaixo o exemplo: 

CREATE TABLE moveis ( id_movel INT NOT NULL AUTO_INCREMENT, tipo VARCHAR(100), modelo VARCHAR(80), ambiente VARCHAR(80), PRIMARY KEY (id_movel ), INDEX (ambiente));

Página 73


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

35)  CREATE TABLE tbesportes( id INT UNSIGNED NOT NULL AUTO_INCREMENT, nome varchar(100) NOT NULL default 'auto', local varchar(80) null, historia text, INDEX (nome), PRIMARY KEY (id));  INSERT INTO tbesportes VALUES (null, "futebol", "campo", "surgiu a muito tempo");  INSERT INTO tbesportes VALUES (null, "Nado", "Piscina", "surgiu a muito, muito tempo");  INSERT INTO tbesportes VALUES (null, "MMA", "Arena", "surgiu a muito, muito tempo mesmo");  SELECT nome FROM tbesportes WHERE nome ='Nado'; 36) Para os itens 1 e 2. 

CREATE TABLE tbesportes( id INT UNSIGNED NOT NULL AUTO_INCREMENT, nome varchar(100) NOT NULL default 'auto', local varchar(80) null, historia text, INDEX (nome), PRIMARY KEY (id));

Página 74


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

INSERT INTO tbesportes VALUES (null, "futebol", "campo", "surgiu a muito tempo");

INSERT INTO tbesportes VALUES (null, "Nado", "Piscina", "surgiu a muito, muito tempo");

INSERT INTO tbesportes VALUES (null, "MMA", "Arena", "surgiu a muito, muito tempo mesmo");

SELECT nome FROM tbesportes WHERE nome ='Nado';

3.

DESCRIBE tbesportes;

4.

Cria um procedure chamado de insere_dados que irá inserir 10 mil registros automaticamente na tabela tbesportes:

5.

Comando que executa de fato o procedimento. Após isso os registros serão inseridos.

6.

Para testar basta dar um SELECT count(*) FROM tbesportes; Agora a tabela tem mais de 10 mil registros cadastrados;

7.

Retorna apenas os nomes onde o nome for maior que 5000;

37) A seguir os comandos para criar as VIEWs.  CREATE VIEW consulta_fotos_galeria AS SELECT data, url_foto, legenda, local FROM tbgaleria;  CREATE VIEW consulta_estoque_reposicao AS SELECT nome, preco, estoque, reposicao, fornecedor, telefone FROM tbprodutos;

38) Segue o passo a passo. 1. Criando a tabela tbgaleria com os mesmos campos da questão 7; 

CREATE table tbgaleria(

data date,

Página 75


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

url_foto varchar(80), legenda varchar(80), local varchar(80)); 2. Criando a VIEW chamada de consulta_fotos_galeria com os mesmos campos, porém ordenada por data decrescente; 

CREATE VIEW consulta_fotos_galeria

AS SELECT data, url_foto, legenda, local FROM tbgaleria ORDER BY data DESC; 3. Insira dois registros distintos; 

INSERT INTO tbgaleria VALUES ("2010-02-01", "/fotos/f01","praia 1","Santos");

INSERT

INTO

tbgaleria

VALUES

(now(),

"/fotos/f02","praia

2","Salvador"); 4. Faça a consulta usando a VIEW recém-criada 

SELECT * FROM consulta_fotos_galeria;

5. Remova a VIEW: 

DROP view consulta_fotos_galeria;

6. Faça os devidos testes para ver o que aconteceu. Tente selecionar os dados usando a VIEW novamente; 

SELECT * FROM consulta_fotos_galeria; -- Vai dar erro

Página 76


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

7. Criando a tabela tbprodutos com os mesmos campos da questão 7;  CREATE table tbprodutos( nome varchar(80), preco double(8,2), estoque int, reposicao int, fornecedor varchar(80), telefone varchar(80)); 8. Criando a VIEW chamada de consulta_estoque_reposicao com os mesmos campos, porém ordenada por estoque crescente; 

CREATE VIEW consulta_estoque_reposicao

AS SELECT nome, preco, estoque, reposicao, fornecedor, telefone FROM tbprodutos ORDER BY estoque ASC; 9. Insira quatro registros distintos; 

INSERT INTO tbprodutos VALUES ("P1", 10, 50, 25, "Aguia", "456");

INSERT INTO tbprodutos VALUES ("P2", 20, 10, 90, "Rio Branco", "965");

INSERT INTO tbprodutos VALUES ("P3", 15.25, 100, 15, "Nestlê", "741");

INSERT INTO tbprodutos VALUES ("P4", 18.76, 19, 81, "Pilão", "3142");

10. Faça a consulta usando a VIEW recém-criada

Página 77


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

SELECT * FROM consulta_estoque_reposicao;

11. Remova a VIEW: 

DROP view consulta_estoque_reposicao;

12. Faça os devidos testes para ver o que aconteceu. Tente selecionar os dados usando a VIEW novamente; 

SELECT * FROM consulta_estoque_reposicao; -- Vai dar erro

39) a) O que é possível fazer com um trigger? A trigger permite que o banco de dados realize atividades automaticamente a partir de um evento associado. É possível inserir, atualizar e remover registros em uma tabela. É possível fazer varreduras em tabelas e executar uma operação específica. É possível chamar um procedimento externo. Enfim, tudo depende da necessidade do sistema. b) Quando uma trigger pode ser acionada? A trigger pode ser acionada em uma tabela durante todos os eventos da mesma, a saber, antes ou depois de inserir, atualizar ou apagar um registro de uma tabela. c) O que significa o OLD e o NEW? As duas se referem a palavras reservadas. O OLD se refere a um atributo antes de sofrer uma alteração ou remoção. O NEW se refere a um atributo que foi inserido ou atualizado. Por exemplo, se eu removo um funcionário da tabela de funcionários, o nome removido será obtido com a palavra OLD. Entretanto se fizer uma mudança no

Página 78


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

salário de qualquer funcionário, o valor do novo salário será obtido com o uso do NEW. Implicitamente fica entendido que o salário velho será obtido com o OLD. 40) a) O que é e quais as possibilidades no uso de Stored Procedures? Um stored procedure, ou procedimento armazenado, é similar a uma função criada e executada dentro do SGBD. Um sistema pode necessitar que num determinado momento o SGBD execute uma função de atualização, limpeza de dados, ou outro tipo de operação. Um procedure é capaz de receber parâmetros, tratá-los e retornar um resultado formatado para o usuário ou mesmo para o sistema. b) Para que serve as palavras reservadas IN e OUT? O In é de input e indica que uma variável estará entrando como um parâmetro dentro da stored procedure. Você pode enviar vários parâmetros ao mesmo tempo na mesma procedure. O OUT indica a saída de um parâmetro. Existe também no caso do MYSQL a palavra INOUT que indica ambos, entrada e saída. c) Forneça exemplos de uso de um procedure em um sistema? Em um sistema de vendas, por exemplo, o usuário pode requisitar um cálculo de juros ou desconto a partir de dados passados para o procedure como prazo, vencimento e valor. Você pode fazer o procedure executar várias consultas em várias tabelas, realizar um cálculo, fazer um teste e por fim retornar o resultado desejado. Todo este código fica armazenado no servidor e poderá ser usado várias vezes e em diversos lugares da aplicação.

Página 79


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

Pรกgina 80


BANCO DE DADOS

2.5 GABARITO DAS ATIVIDADES COMPLEMENTARES | AULA 05 41)

A ordem correta é (E) - (E) - (C) – (C) – (E) – (C) - (C) - (C) - (C) – (C) – (E) - (C) - (C).

42) A ordem correta é: 5, 4, 1, 6, 3, 2. 43) Segue a criação das duas tabelas; a) Tabela 1  CREATE TABLE tbseguros ( id_seguro int(10) unsigned NOT NULL AUTO_INCREMENT, apolice text NOT NULL, placa_veiculo varchar(20) UNIQUE , montadoras INT UNSIGNED NOT NULL, tipo_seguro varchar(80) NOT NULL, preco double(8,2) DEFAULT NULL, PRIMARY KEY (id_seguro ), INDEX (montadoras ), INDEX (placa_veiculo), CONSTRAINT FK_MONTADORA FOREIGN KEY (montadoras) REFERENCES tbmontadoras (cod_montadora) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 a) Tabela 2  CREATE TABLE tbmontadoras ( cod_montadora

int(10)

unsigned

NOT

NULL

AUTO_INCREMENT, nome varchar(20) UNIQUE , PRIMARY

KEY

(cod_montadora

)

Página 81


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

) ENGINE=InnoDB DEFAULT CHARSET=utf8; 44) Segue abaixo a solução: 1. Elaborar tabela. 2. Insira dados na primeira tabela (Montadoras Ford, Fiat e etc); INSERT

INTO

`meubanco`.`tbmontadoras`

(`nome`)

VALUES

INTO

`meubanco`.`tbmontadoras`

(`nome`)

VALUES

('FORD'); INSERT ('FIAT'); 3. Insira dados (ao menos 6) na segunda tabela (cuidado com a FK); INSERT INTO `meubanco`.`tbseguros` (`modelo`, `placa_veiculo`, `montadoras`, `tipo_seguro`, `preco`) VALUES ('UNO', 'HFD-4578', '2', 'Normal', '1200'); INSERT INTO `meubanco`.`tbseguros` (`modelo`, `placa_veiculo`, `montadoras`, `tipo_seguro`, `preco`) VALUES ('Siena', 'DUI-7474', '2', 'Premium', '2500'); INSERT INTO `meubanco`.`tbseguros` (`modelo`, `placa_veiculo`, `montadoras`, `tipo_seguro`, `preco`) VALUES ('Palio', 'PAL-7898', '2', 'Total PLUS', '3000'); INSERT INTO `meubanco`.`tbseguros` (`modelo`, `placa_veiculo`, `montadoras`, `tipo_seguro`, `preco`) VALUES ('Styllo', 'STY-4130', '2', 'MEGA', '5000'); INSERT INTO `meubanco`.`tbseguros` (`modelo`, `placa_veiculo`, `montadoras`, `tipo_seguro`, `preco`) VALUES ('Courier', 'TRT8463', '1', 'Normal', '1350'); Página 82


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

INSERT INTO `meubanco`.`tbseguros` (`modelo`, `placa_veiculo`, `montadoras`, `tipo_seguro`, `preco`) VALUES ('Fusion', 'FUS3517', '1', 'Mega', '4985'); INSERT INTO `meubanco`.`tbseguros` (`modelo`, `placa_veiculo`, `montadoras`, `tipo_seguro`, `preco`) VALUES ('F250', 'FGZ-6510', '1', 'Mega', '6580'); INSERT INTO `meubanco`.`tbseguros` (`modelo`, `placa_veiculo`, `montadoras`, `tipo_seguro`, `preco`) VALUES ('Fiesta', 'FIE-6433', '1', 'Premium', '3250'); 4. Faça duas instruções de UPDATE alterando dois campos onde o id_seguro seja 1 e 2; Altere o valor e o tipo de seguro; UPDATE

`meubanco`.`tbseguros`

SET

`tipo_seguro`='Premium',

`preco`='2000' WHERE `id_seguro`='1'; UPDATE

`meubanco`.`tbseguros`

SET

`tipo_seguro`='Normal',

`preco`='1500' WHERE `id_seguro`='2'; 5. Descubra e remova os 3 últimos registros da tabela de seguros: SELECT * FROM tbseguros ORDER BY id_seguro DESC limit 3; -descobrir DELETE FROM `meubanco`.`tbseguros` WHERE `id_seguro`='6'; DELETE FROM `meubanco`.`tbseguros` WHERE `id_seguro`='7'; DELETE FROM `meubanco`.`tbseguros` WHERE `id_seguro`='8'; 6. Faça os devidos testes para ver o que aconteceu. Use o Select. Não devem mais aparecer os mesmos registros; SELECT * FROM tbseguros ORDER BY id_seguro DESC limit 3;

Página 83


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

7. Criar a VIEW. 8. Faça a consulta usando a VIEW recém-criada, porém ordenando por preco; select * from view_consulta_seguros ORDER BY preco;

9. Explique o que aconteceu nessa consulta pela VIEW; Foi feita a união de duas tabelas através do INNER JOIN para na mesma consulta aparecer o nome da montadora ao invés do seu código; 10. Remover a VIEW. 45)

1.  DELIMITER $$ CREATE TRIGGER tg_ad_fotos AFTER delete ON tbfotos FOR each row BEGIN END; $$ DELIMITER ; 2. 

DELIMITER $$

CREATE TRIGGER tg_ad_fotos AFTER UPDATE ON tbpecasautomotivas FOR each row BEGIN END; $$ DELIMITER ;

Página 84


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

3. 

DELIMITER $$

CREATE TRIGGER tg_ad_fotos AFTER UPDATE ON tbpecasautomotivas FOR each row BEGIN DELETE FROM tbpecas_velha WHERE id = NEW.id_peca; END; $$ DELIMITER ; 4. 

DROP TRIGGER tg_ad_fotos;

46) a)  SELECT DISTINCT foto FROM tbfotos ; b)  SELECT ALL local FROM tbfotos ; c)  SELECT * FROM tbfotos WHERE data = "2014-02-10" ORDER BY id_foto; d)  SELECT count(*) FROM tbfotos; e)  SELECT * FROM tbfotos WHERE local LIKE '%as%'; f)  SELECT * FROM tbfotos HAVING id_foto BETWEEN 20 AND 50;

Página 85


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

47) 1. Criar tabela. 2. Insira dados para fazer os testes (ao menos 2 de cada); INSERT INTO `meubanco`.`tbmontadoras` (`nome`) VALUES ('FORD'); INSERT INTO `meubanco`.`tbmontadoras` (`nome`) VALUES ('FIAT'); INSERT

INTO

`meubanco`.`tbseguros`

(`modelo`,

`placa_veiculo`,

`montadoras`, `tipo_seguro`, `preco`) VALUES ('UNO', 'HFD-4578', '2', 'Normal', '1200'); INSERT

INTO

`meubanco`.`tbseguros`

(`modelo`,

`placa_veiculo`,

`montadoras`, `tipo_seguro`, `preco`) VALUES ('Siena', 'DUI-7474', '1', 'Premium', '2500'); 3. Crie as seguintes consultas; a) Seleciona a soma de todos os preços dos seguros;  SELECT SUM(preco) FROM tbseguros; b) Seleciona a media de todos os preços dos seguros;  SELECT AVG(preco) FROM tbseguros; c) Seleciona o maior preço dos seguros;  SELECT MAX(preco) FROM tbseguros; d) Seleciona o menor preço dos seguros;  SELECT MIN(preco) FROM tbseguros; e) Como fazer para selecionar os preços dos seguros que são menores que 2000 e maiores que 4000; 

SELECT * FROM tbseguros WHERE preco < 2000 AND preco >

4000; f) Selecione apenas os preços dos seguros usando um Alias de tabela chamado de "a";  SELECT a.preco FROM tbseguros a; Página 86


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

g) Selecione apenas os preços e tipos de seguros da tabela tbseguros usando um Alias de tabela chamado de "aseg" e um alias para os atributos chamado VALOR e TIPO;  SELECT aseg.preco AS VALOR, aseg.tipo_seguro AS TIPO FROM tbseguros aseg; 48)

Esta não é a única forma de resolver esta questão. Para criar as tabelas: 

drop table if exists tbfuncionarios;

CREATE table if not exists tbfuncionarios( codigo INT UNSIGNED NOT NULL AUTO_INCREMENT, nome varchar(80), email VARCHAR(180), experiencia double, cargo tinyint, telefone varchar(80), PRIMARY KEY (codigo));

drop table if exists tbcargos;

CREATE table if not exists tbcargos( id_cargo INT UNSIGNED NOT NULL AUTO_INCREMENT, nome varchar(50) default 'estagiario', salario double(8,2), nivel tinyint default '0', PRIMARY KEY (id_cargo));

Para inserir os dados do primeiro funcionário:  INSERT INTO tbfuncionarios VALUES (null,"Marcel","mar@marcel.com",0, 10,"1541256");  INSERT INTO tbcargos VALUES (10,"estagiario", 720.00, 0); Página 87


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

Para inserir os dados do segundo funcionário:  INSERT INTO tbfuncionarios VALUES (null,"Ana","anar@gmail.com", 0, 20, "85413265");  INSERT INTO tbcargos VALUES (20,"estagiario", 720.00, 0); Para inserir os dados do segundo funcionário:  INSERT INTO tbfuncionarios VALUES (null,"Raul","raul@r7.com", 0, 30, "465137");  INSERT INTO tbcargos VALUES (30,"estagiario", 720.00, 0); Para verificar que as tabelas estão com os registros: 

SELECT * FROM tbfuncionarios;

SELECT * FROM tbcargos;

Para criar a trigger: 

DROP TRIGGER tg_atualiza_nivel_funcionario;

DELIMITER $$

CREATE TRIGGER tg_atualiza_nivel_funcionario AFTER UPDATE ON tbfuncionarios FOR each row BEGIN if NEW.experiencia between 500 and 1000 THEN UPDATE

tbcargos

SET

nivel=1,

nome='júnior',salario=salario+500 WHERE id_cargo = NEW.cargo; END IF; if new.experiencia between 1001 and 2000 THEN UPDATE

tbcargos

nome='pleno',salario=salario+2000

SET WHERE

nivel=2, id_cargo

=

NEW.cargo; END IF; if new.experiencia > 2001 THEN UPDATE

tbcargos

nome='sênior',salario=salario+5000

SET WHERE

nivel=3, id_cargo

=

Página 88


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

NEW.cargo; END IF; END; $$ DELIMITER ; Para fazer as mudanças na experiência e ativar a trigger:  UPDATE tbfuncionarios SET experiencia = 0;  UPDATE tbfuncionarios SET experiencia = 300 WHERE nome = 'Marcel'; -- não muda nada  UPDATE tbfuncionarios SET experiencia = 500 WHERE nome = 'Marcel'; -- muda para júnior  UPDATE tbfuncionarios SET experiencia = 1300 WHERE nome = 'Ana'; -- muda para pleno  UPDATE tbfuncionarios SET experiencia = 2300 WHERE nome = 'Raul'; -- muda para sênior Para fazer os últimos testes:  select * from tbfuncionarios;  SELECT * FROM tbcargos; 49)

Segue a solução dos itens: Inserindo dados em todas as tabelas de acordo com as FKs;  INSERT INTO `meubanco`.`tbautor` (`autor`, `email`) VALUES ('Vagner', '1@gmail.com');  INSERT INTO `meubanco`.`tbautor` (`autor`, `email`) VALUES ('Durval', '2@gmail.com');  INSERT INTO `meubanco`.`tbautor` (`autor`, `email`) VALUES ('Catarina', '3@gmail.com');  INSERT INTO `meubanco`.`tbautor` (`autor`, `email`) VALUES ('João', '4@gmail.com'); Página 89


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

 INSERT

INTO

`meubanco`.`tbeditora`

(`editora`)

VALUES

('Uniselver');  INSERT INTO `meubanco`.`tbeditora` (`editora`) VALUES ('Abril');  INSERT INTO `meubanco`.`tbeditora` (`editora`) VALUES ('ETB');  INSERT

INTO

`meubanco`.`tbeditora`

(`editora`)

VALUES

('Seara');  INSERT

INTO

`meubanco`.`tblivros`

(`livro`,

`tombo`,

`cod_autor`, `id_editora`) VALUES ('PHP', 'XCV8754', '1', '1');  INSERT

INTO

`meubanco`.`tblivros`

(`livro`,

`tombo`,

`cod_autor`, `id_editora`) VALUES ('MongoDB', 'UHU741131', '2', '2');  INSERT

INTO

`meubanco`.`tblivros`

(`livro`,

`tombo`,

`cod_autor`, `id_editora`) VALUES ('MYSQL', 'GDAHS7812', '3', '3');  INSERT

INTO

`meubanco`.`tblivros`

(`livro`,

`tombo`,

`cod_autor`, `id_editora`) VALUES ('JAVA', 'POA87421', '2', '2');  INSERT

INTO

`meubanco`.`tblivros`

(`livro`,

`tombo`,

`cod_autor`, `id_editora`) VALUES ('LINUX', 'PAOX411', '3', '3');  INSERT

INTO

`meubanco`.`tblivros`

(`livro`,

`tombo`,

`cod_autor`, `id_editora`) VALUES ('ANDROID', 'APSOA8779', '4', '4');  INSERT

INTO

`meubanco`.`tblivros`

(`livro`,

`tombo`,

`cod_autor`, `id_editora`) VALUES ('WINDOWS', 'POPA 74131', '4', '4');  INSERT

INTO

`meubanco`.`tblivros`

(`livro`,

`tombo`,

`cod_autor`, `id_editora`) VALUES ('MAC', 'POAP 33141', '1', '1');  INSERT

INTO

`meubanco`.`tblivros`

(`livro`,

`tombo`,

`cod_autor`, `id_editora`) VALUES ('PYTHON', 'PAOS7461', '1', Página 90


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

'1'); a)  SELECT l.livro, a.autor FROM tblivros l INNER JOIN tbautor a ON a.cod_autor = l.cod_autor ; b)  SELECT l.livro, a.autor, e.editora FROM tblivros l INNER JOIN tbautor a ON a.cod_autor = l.cod_autor INNER JOIN tbeditora e ON e.id_editora = l.id_editora; c)  CREATE USER 'Augusto'@'%' identified by 'root';  CREATE USER 'Marcelo'@'%' identified by 'root'; d)  GRANT ALL ON meubanco.* TO 'Augusto'@'%'; e)  GRANT

SELECT,

INSERT,

UPDATE

ON

meubanco.*

TO

'Marcelo'@'%'; f)  RENAME USER 'Marcelo'@'%' TO 'Jonas'@'%'; g)  REVOKE ALL ON meubanco.* FROM 'Augusto'@'%';  REVOKE SELECT, INSERT, UPDATE ON meubanco.* FROM 'Marcelo'@'%'; h)  DROP USER 'Augusto'@'%'; Página 91


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

 DROP USER 'Jonas'@'%'; 50)

a) Crie um procedimento que receba um valor de um tombo de um determinado livro, faça a consulta na tabela e retorne se existe ou não (Pode retornar um valor na tela como 0 ou 1, ou sim e não); Dica: passe o parâmetro; 

DELIMITER //

CREATE PROCEDURE sp_verifica_tombo(IN tombo_param varchar(80)) BEGIN DECLARE var1 varchar(80); DECLARE retorno boolean; SET retorno = false; select tombo into var1 FROM tblivros WHERE tombo = tombo_param; if var1 = tombo_param THEN SET retorno = true; END IF; select retorno; END; // DELIMITER ; 

call sp_verifica_tombo('XCV8754');

b) Crie uma transação que seleciona e remove o último registro da tabela de livros; Dica: use o SELECT id... into @var... para colocar o id selecionado na vari´vel @var e usá-lo na instrução DELETE depois. 

START TRANSACTION;

SELECT id_livro into @var FROM tblivros ORDER BY id_livro DESC limit 1; Página 92


BANCO DE DADOS

ATIVIDADES COMPLEMENTARES _______________________________________________________________________

DELETE FROM tblivros WHERE id_livro = @var;

SELECT * FROM meubanco.tblivros;

COMMIT; -- ou ROLLBACK se algo falhar

Área de Manipulação de importação e exportação: c) Exporte os dados da tabela tbautor para um arquivo autor.txt; 

SELECT * INTO OUTFILE 'C:/autor.txt' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM tbautor;

d) Crie uma tabela idêntica a tbautor com o nome de tbcopia; 

CREATE TABLE tbcopia SELECT * FROM tbautor;

truncate tbcopia; -- para limpar os dados, pois copia com tudo

e) Importe os dados do arquivo exportado para a tabela tbcopia; 

LOAD DATA INFILE 'C:/autor.txt' INTO TABLE meubanco.tbcopia FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

Página 93



Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.