Você está na página 1de 3

Curso: Sistemas de Informao Disciplina: Programao em Banco de Dados Professor: Professor: Hlio de Sousa Lima Filho Turma Modelo

de Prova: Data: Belo Horizonte, 26 de Maro de 2013 Aluno (a): Valor: 2,0

Nota:

Tipo de Avaliao: Atividade Avaliativa

Observaes
1. 2. 3. 4. A prova individual, sem consulta e deve ser escrita a caneta preta ou azul A interpretao faz parte da prova Qualquer tipo de consulta no autorizada ser repreendido com a nota mnima As questes referem-se ao modelo abaixo

Questo 01 (1,0 ponto) a) Faa um comando DDL que crie a Tabela Cliente create table cliente ( id int not null auto_increment, nome varchar(45) not null, cpf_cnpj varchar(15) not null, sexo char(1), constraint pkCliente primary key (id) ) b) Faa um comando que inclua um Cliente com os dados a seguir: nome = Alonso Asdrubal Pinho, cpf_cnpj = 02583657678, sexo = F insert into cliente (nome, cpf_cnpj, sexo) values ('Alonso Asdrubal Pinho', '02583657678', 'F') c) Faa um comando que altere o sexo do cliente Alonso Asdrubal Pinho para M update cliente set sexo = 'M' where nome = 'Alonso Asdrubal Pinho' d) Faa uma consulta SQL que exiba o nome e a quantidade de Pedidos realizados pelo Cliente Alonso Asdrubal Pinho select c.nome, count(*) qtdPedidos from cliente c inner join pedido p on (c.id = p.idcliente) where c.nome = 'Alonso Asdrubal Pinho' group by c.nome

e) Faa uma consulta SQL que exiba o nome de todos os clientes que j realizaram pedido, ordenado por nome do cliente select c.nome from cliente c where c.id in (select idcliente from pedido) order by c.nome f) Faa uma consulta que exiba o nome do cliente, a quantidade de pedidos desse cliente e a descrio do status do pedido select c.nome, count(*) qtdPedidos, s.descricao from cliente c inner join pedido p on (c.id = p.idcliente) inner join statuspedido s on (p.idStatus = s.id) group by c.nome, s.descricao g) Faa uma consulta que exiba o nome do cliente, a quantidade de pedidos desse cliente e a transportadora que realizar ou realizou a entrega, para todos os clientes, tendo ou no pedido select c.nome, count(*) qtdPedidos, t.nome from cliente c left join pedido p on (c.id = p.idcliente) left join transportadora t on (p.idtransportadora = t.id) group by c.nome, t.nome Questo 02 (1,0 ponto) a) Faa um comando que crie a tabela Transportadora create table transportadora( id int not null auto_increment, nome varchar(45) not null, constraint pkTransportadora primary key (id) ); b) Faa um comando que altere o nome do atributo Nome da tabela Transportadora para NomeFantasia alter table transportadora change nome nomefantasia varchar(45) not null c) Faa um comando que insira um novo atributo para a tabela Transportadora com nome RazaoSocial do tipo varchar(45) alter table transportadora add razaosocial varchar(45) d) Insira uma transportadora na tabela Transportadora, levando em considerao a nova tabela aps as alteraes realizadas insert into transportadora (nomeFantasia, razaosocial) values ('RAPIDAO COMETA', 'VIACAO COMETA LTDA') e) Faa uma consulta em SQL que exiba o nome do cliente, o nmero do pedido, a descrio do status e a data do pedido de todos os pedidos que ainda no foram entregues, deve-se ordenar pela data do pedido select c.nome, p.numPedido, s.descricao, p.dataPedido from cliente c inner join pedido p on (c.id = p.idcliente) inner join statuspedido s on (p.idstatus = s.id) inner join transportadora t on (p.idtransportadora = t.id)

where s.descricao != 'ENTREGUE' order by p.dataPedido


f)

Faa uma consulta que exiba o nome da transportadora, a quantidade de pedidos para essa transportadora e a descrio do status do pedido, ordenado pelo nome da Transportadora

select t.nomefantasia, count(*) qtdPedidos, s.descricao from transportadora t inner join pedido p on (t.id = p.idtransportadora) inner join statuspedido s on (p.idstatus = s.id) group by t.nomefantasia, s.descricao order by t.nomefantasia
g)

Faa um comando para remover a(s) Transportadora(s) que nunca teve Pedido associado

delete from transportadora where id not in (select idtransportadora from pedido)