Sem resumo de edição
Sem resumo de edição
 
(7 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 2: Linha 2:
<br>
<br>


* Incluir:
== Incluir tabela de Bairros e relacionar com Endereços ==
** 01) Tabela de Bairros e relacionar com Endereços
** 02) Tabela de Cidades e Relacionar com Endereços
<br>
<br>
create table bairro (
codbairro int primary key,
bairro varchar(20) not null
);


* 03) Relacionar Tabela de Estados com Cidades
alter table enderecos add column codbairro int null;
* 04)
 
Após popular os campos que inicialmente eram nulos, passar para não nulo, pois não daria certo criar o campo não nulo alegando que ele seria vazio para os itens já criados.
 
alter table enderecos alter column codbairro set not null;
 
Apagar a coluna bairro na tabela endereços.
 
alter table enderecos drop column bairro cascade;
 
Relacionar a tabela bairro com endereços.
 
ALTER TABLE enderecos ADD CONSTRAINT enderecos_codbairro_fkey FOREIGN KEY (codbairro) REFERENCES bairro (codbairro) MATCH FULL;
 
<br>
== Incluir tabela de Cidades e Relacionar com Endereços ==
<br>
<br>
create table cidades (
codcidade int primary key,
cidade varchar(30) not null
);
alter table enderecos add column codcidade int null;
Após popular os campos que inicialmente eram nulos, passar para não nulo, pois não daria certo criar o campo não nulo alegando que ele seria vazio para os itens já criados.


* Inserir:
alter table enderecos alter column codcidade set not null;
** 05) Uma mercadoria para dois fornecedores diferentes. Ex: Sapato Democrata para Fornec1 e Fornec2
 
** 06) Na Tabela Mercadorias Compradas, duas compras para a mesma mercadoria
Apagar a coluna cidade na tabela endereços.
** 07) Uma nova mercadoria em Estoque e manter dado anterior
 
** 08) Um novo atributo: ValorMinimo na Tabela Mercadorias
alter table enderecos drop column cidade cascade;
 
Relacionar a tabela cidade com endereços.
 
ALTER TABLE enderecos ADD CONSTRAINT enderecos_codcidade_fkey FOREIGN KEY (codcidade) REFERENCES cidades (codcidade) MATCH FULL;
 
<br>
== Incluir tabela de Parcelas a Receber ==
<br>
create table parcelasareceber (
idvenda int not null references venda (idvenda),
numerodaparcela int not null,
valor money not null,
dataprevista date not null,
primary key(idvenda,numerodaparcela)
);
<br>
== Relacionar Tabela de Estados com Cidades ==
<br>
<br>


* Excluir:
create table cidadesdoestado (
** 09) Um fornecedor qualquer da Tabela Fornecedores
codcidade int not null references cidades (codcidade),
** 10) Uma venda qualquer da Tabela Venda
uf char(2) not null references estado (uf),
primary key (codcidade, uf)
);


<br>
<br>
== Inserir uma mercadoria para dois fornecedores diferentes. Ex: Sapato Democrata para Fornec1 e Fornec2 ==
<br>
A mercadoria foi inserida, e não houve problema pois para cada compra há apenas um fornecedor.


[[Arquivo:BDEEq05.jpg]]
<br>
== Inserir na Tabela Mercadorias Compradas, duas compras para a mesma mercadoria ==
<br>
A mercadoria para duas compras diferentes.


* 11)
[[Arquivo:BDEEq06.jpg]]
* 12)
<br>
== Inserir uma nova mercadoria em Estoque e manter dado anterior ==
<br>
<br>


[[Arquivo:BDEEq07.jpg]]
<br>
== Inserir um novo atributo: QuantMinima na Tabela Mercadorias ==
<br>
Inserir a coluna como nula.
alter table mercadorias add column quantminima int null;
Alterar a coluna para todos os valores existentes.
update mercadorias set quantminima = 0;
Alterar o campo para não nulo.
alter table mercadorias alter column quantminima set not null;
<br>
== Inserir IdParcela em Mercadorias Compradas ==
<br>
Os passos são os mesmos que no exercício anterior.
alter table compras add column idparcela int references parcelamento (idparcela);
update compras set idparcela = 5;
alter table compras alter column idparcela set not null;
<br>
== Excluir um fornecedor qualquer da Tabela Fornecedores ==
<br>
[[Arquivo:BDEEq10.jpg]]
<br>
== Excluir uma venda qualquer da Tabela Venda ==
<br>
[[Arquivo:BDEEq11.jpg]]
<br>
== Alterar um Código de Mercadoria da Tabela Mercadorias ==
<br>
[[Arquivo:BDEEq12.jpg]]
<br>
<br>
* Gerar relatório que mostre:
* Gerar relatório que mostre:
** 13) Todas as
<br>
** 14) Todos os
== Todas as mercadorias adquiridas ordenadas por data ==
** 15) Toda a movimentação de um dia do
<br>
** 16) Todo os produtos com
** 17) Todas as  
** 18) Dados do ( ) ordenados por  
** 19) Todas as
** 20) Todos os  ordenados por


create view questao13 as (
select mercadoriascompradas.codmercadoria, nome, tamanho, nomedamarca, datadacompra from mercadoriascompradas
inner join mercadorias on (mercadoriascompradas.codmercadoria = mercadorias.codmercadoria)
inner join tamanho on (mercadoriascompradas.idtamanho = tamanho.idtamanho)
inner join marca on (mercadorias.idmarca = marca.idmarca)
inner join compras on (mercadoriascompradas.idcompras = compras.idcompras)
order by datadacompra);


<br>


-----
== Todos os saldos dos produtos ordenados por local ==
<br>


create view questao14 as (
SELECT nome, estoque.idtamanho, cor, quantidadedisponivel, localizacaodamercadoria FROM estoque
INNER JOIN mercadorias ON (estoque.codmercadoria = mercadorias.codmercadoria)
INNER JOIN localdamercadoria ON (estoque.idlocal = localdamercadoria.idlocal)
INNER JOIN tamanho ON (estoque.idtamanho = tamanho.idtamanho)
ORDER BY estoque.idlocal);


= Exercícios =
<br>
== Toda as vendas de um dia (Cliente, Total, Parcelas) ==
<br>
<br>


* Incluir:
create view questao15 as (
** 01) Tabela de Marcas relacionada com Produto
SELECT cli.nome AS cliente, total, numerodeparcelas, horadavenda FROM venda
** 02) Tabela de Cep relacionada com Fornecedor e REgistroCaixa
INNER JOIN clientes ON (venda.idcliente = clientes.idcliente)  
** 03) E popular novos campos em Caixa: Data, Hora e Valor em Dinheiro
INNER JOIN pessoafisica AS cli ON (clientes.cpf = cli.cpf)  
INNER JOIN parcelamento ON (venda.idparcela = parcelamento.idparcela)  
ORDER BY datadavenda);
 
<br>
== Todo as mercadorias (Nome, Nome da Marca, Dimensões, Descrição Categoria, Cor, Preço Sugerido) ==
<br>
<br>


* 04) Relacionar Tabela de Cep com eEgistroCaixa
create view questao16 as (
SELECT nome, nomedamarca, tamanho, dimensoes, observacoes, categoria, cor, genero, precosugerido FROM mercadorias
INNER JOIN marca ON (mercadorias.idmarca = marca.idmarca)  
INNER JOIN tamanhosmercadoria ON (mercadorias.codmercadoria = tamanhosmercadoria.codmercadoria)
INNER JOIN genero ON (mercadorias.idgenero = genero.idgenero)
INNER JOIN tamanho ON (tamanhosmercadoria.idtamanho = tamanho.idtamanho)
INNER JOIN categorias ON (mercadorias.idcategoria = categorias.idcategoria)
ORDER BY categoria);
 
<br>
== Todas as vendas feitas com Nome do Cliente, Vendedor, Total ordenados por Data ==
<br>
<br>


* Inserir:
create view questao17 as (
** 05) Um produto para dois fornecedores diferentes. Ex: Bombril para Forn A e Forn B
SELECT cli.nome AS cliente, fun.nome, total, numerodeparcelas FROM venda
** 06) Na Tabela Produtos Comprados, duas compras para o mesmo produto
INNER JOIN clientes ON (venda.idcliente = clientes.idcliente)  
** 07) Um novo produto em Estoque e manter dado anterior
INNER JOIN funcionario ON (venda.login = funcionario.login)
** 08) Um novo campo: LimitiMinimo na Tabela Produtos
INNER JOIN pessoafisica AS cli ON (clientes.cpf = cli.cpf)  
INNER JOIN pessoafisica AS fun ON (funcionario.cpf = fun.cpf)
INNER JOIN parcelamento ON (venda.idparcela = parcelamento.idparcela)  
ORDER BY datadavenda);
 
<br>
== As mercadorias vendidas com a diferença entre os Preço sugerido x Preço da Mercadoria ==
<br>
<br>


* Excluir:
create view questao18 as (
** 09) Um fornecedor qualquer da Tabela Fornecedores
select nome, precosugerido, preco, (preco - precosugerido) from mercadoriasvendidas
** 10) Uma venda qualquer da Tabela VendaProduto
inner join mercadorias on (mercadoriasvendidas.codmercadoria = mercadorias.codmercadoria)
inner join tamanhosmercadoria on (mercadoriasvendidas.idtamanho = tamanhosmercadoria.idtamanho)
inner join venda on (mercadoriasvendidas.idvenda = venda.idvenda)
order by datadavenda);
 
<br>
== Todos os fornecedores ordenados por Razão Social ==
<br>
<br>


create view questao19 as (
select razaosocial, cnpj, email, telefone1 from fornecedores order by razaosocial);


* 11) Porque Local em Estoque e LocalMercadoria em Local?
* 12) Explicar para que serve a Tabela VendaProduto.
<br>
<br>
== Todas as compras realizadas com Preço de custo acima de R$ 1000,00. ==
<br>
create view questao20 as (
SELECT nome, tamanho, categoria, precodecusto FROM mercadoriascompradas
INNER JOIN mercadorias ON (mercadoriascompradas.codmercadoria = mercadorias.codmercadoria)
INNER JOIN tamanho ON (mercadoriascompradas.idtamanho = tamanho.idtamanho)
INNER JOIN categorias ON (mercadorias.idcategoria = categorias.idcategoria)
WHERE (precodecusto > '1000') order by precodecusto);


* Gerar relatório que mostre:
<br>
** 13) Todas as Movimentações do Estoque (IdProduto, IdLocal, Quantidade, Data e Horário
** 14) Todos os produtos com suas Quantidades e Preços
** 15) Toda a movimentação de um dia do Caixa (Id. Venda, Produto, Quantidade, Valor)
** 16) Todo os produtos com saldo de estoque abaixo do mínimo
** 17) Todas as Vendas ordenadas por Status
** 18) Dados do produtos (Nome, Preço, Nome da Marca, Quantidade) ordenados por Nome do Produto
** 19) Todas as vendas em Aberto (Com parcelas a Vencer)
** 20) Todos os produtos (Nome, Id, Marca) com seus fornecedores (Nome, email, Fone1) ordenados por Nome do Produto

Edição atual tal como às 01h30min de 18 de agosto de 2013

Exercícios


Incluir tabela de Bairros e relacionar com Endereços


create table bairro (
codbairro int primary key,
bairro varchar(20) not null
);
alter table enderecos add column codbairro int null;

Após popular os campos que inicialmente eram nulos, passar para não nulo, pois não daria certo criar o campo não nulo alegando que ele seria vazio para os itens já criados.

alter table enderecos alter column codbairro set not null;

Apagar a coluna bairro na tabela endereços.

alter table enderecos drop column bairro cascade;

Relacionar a tabela bairro com endereços.

ALTER TABLE enderecos ADD CONSTRAINT enderecos_codbairro_fkey FOREIGN KEY (codbairro) REFERENCES bairro (codbairro) MATCH FULL;


Incluir tabela de Cidades e Relacionar com Endereços


create table cidades (
codcidade int primary key,
cidade varchar(30) not null
); 
alter table enderecos add column codcidade int null;

Após popular os campos que inicialmente eram nulos, passar para não nulo, pois não daria certo criar o campo não nulo alegando que ele seria vazio para os itens já criados.

alter table enderecos alter column codcidade set not null;

Apagar a coluna cidade na tabela endereços.

alter table enderecos drop column cidade cascade;

Relacionar a tabela cidade com endereços.

ALTER TABLE enderecos ADD CONSTRAINT enderecos_codcidade_fkey FOREIGN KEY (codcidade) REFERENCES cidades (codcidade) MATCH FULL;


Incluir tabela de Parcelas a Receber


create table parcelasareceber (
idvenda int not null references venda (idvenda),
numerodaparcela int not null,
valor money not null,
dataprevista date not null,
primary key(idvenda,numerodaparcela)
);


Relacionar Tabela de Estados com Cidades


create table cidadesdoestado (
codcidade int not null references cidades (codcidade),
uf char(2) not null references estado (uf),
primary key (codcidade, uf)
);


Inserir uma mercadoria para dois fornecedores diferentes. Ex: Sapato Democrata para Fornec1 e Fornec2


A mercadoria foi inserida, e não houve problema pois para cada compra há apenas um fornecedor.


Inserir na Tabela Mercadorias Compradas, duas compras para a mesma mercadoria


A mercadoria para duas compras diferentes.


Inserir uma nova mercadoria em Estoque e manter dado anterior



Inserir um novo atributo: QuantMinima na Tabela Mercadorias


Inserir a coluna como nula.

alter table mercadorias add column quantminima int null;

Alterar a coluna para todos os valores existentes.

update mercadorias set quantminima = 0;

Alterar o campo para não nulo.

alter table mercadorias alter column quantminima set not null;


Inserir IdParcela em Mercadorias Compradas


Os passos são os mesmos que no exercício anterior.

alter table compras add column idparcela int references parcelamento (idparcela);
update compras set idparcela = 5;
alter table compras alter column idparcela set not null;


Excluir um fornecedor qualquer da Tabela Fornecedores



Excluir uma venda qualquer da Tabela Venda



Alterar um Código de Mercadoria da Tabela Mercadorias




  • Gerar relatório que mostre:


Todas as mercadorias adquiridas ordenadas por data


create view questao13 as (
select mercadoriascompradas.codmercadoria, nome, tamanho, nomedamarca, datadacompra from mercadoriascompradas 
inner join mercadorias on (mercadoriascompradas.codmercadoria = mercadorias.codmercadoria) 
inner join tamanho on (mercadoriascompradas.idtamanho = tamanho.idtamanho) 
inner join marca on (mercadorias.idmarca = marca.idmarca) 
inner join compras on (mercadoriascompradas.idcompras = compras.idcompras)
order by datadacompra);


Todos os saldos dos produtos ordenados por local


create view questao14 as (
SELECT nome, estoque.idtamanho, cor, quantidadedisponivel, localizacaodamercadoria FROM estoque 
INNER JOIN mercadorias ON (estoque.codmercadoria = mercadorias.codmercadoria) 
INNER JOIN localdamercadoria ON (estoque.idlocal = localdamercadoria.idlocal) 
INNER JOIN tamanho ON (estoque.idtamanho = tamanho.idtamanho) 
ORDER BY estoque.idlocal);


Toda as vendas de um dia (Cliente, Total, Parcelas)


create view questao15 as (
SELECT cli.nome AS cliente, total, numerodeparcelas, horadavenda FROM venda 
INNER JOIN clientes ON (venda.idcliente = clientes.idcliente) 
INNER JOIN pessoafisica AS cli ON (clientes.cpf = cli.cpf) 
INNER JOIN parcelamento ON (venda.idparcela = parcelamento.idparcela) 
ORDER BY datadavenda);


Todo as mercadorias (Nome, Nome da Marca, Dimensões, Descrição Categoria, Cor, Preço Sugerido)


create view questao16 as (
SELECT nome, nomedamarca, tamanho, dimensoes, observacoes, categoria, cor, genero, precosugerido FROM mercadorias 
INNER JOIN marca ON (mercadorias.idmarca = marca.idmarca) 
INNER JOIN tamanhosmercadoria ON (mercadorias.codmercadoria = tamanhosmercadoria.codmercadoria)
INNER JOIN genero ON (mercadorias.idgenero = genero.idgenero) 
INNER JOIN tamanho ON (tamanhosmercadoria.idtamanho = tamanho.idtamanho) 
INNER JOIN categorias ON (mercadorias.idcategoria = categorias.idcategoria) 
ORDER BY categoria);


Todas as vendas feitas com Nome do Cliente, Vendedor, Total ordenados por Data


create view questao17 as (
SELECT cli.nome AS cliente, fun.nome, total, numerodeparcelas FROM venda 
INNER JOIN clientes ON (venda.idcliente = clientes.idcliente) 
INNER JOIN funcionario ON (venda.login = funcionario.login) 
INNER JOIN pessoafisica AS cli ON (clientes.cpf = cli.cpf) 
INNER JOIN pessoafisica AS fun ON (funcionario.cpf = fun.cpf)
INNER JOIN parcelamento ON (venda.idparcela = parcelamento.idparcela) 
ORDER BY datadavenda);


As mercadorias vendidas com a diferença entre os Preço sugerido x Preço da Mercadoria


create view questao18 as (
select nome, precosugerido, preco, (preco - precosugerido) from mercadoriasvendidas
inner join mercadorias on (mercadoriasvendidas.codmercadoria = mercadorias.codmercadoria)
inner join tamanhosmercadoria on (mercadoriasvendidas.idtamanho = tamanhosmercadoria.idtamanho)
inner join venda on (mercadoriasvendidas.idvenda = venda.idvenda)
order by datadavenda);


Todos os fornecedores ordenados por Razão Social


create view questao19 as (
select razaosocial, cnpj, email, telefone1 from fornecedores order by razaosocial);


Todas as compras realizadas com Preço de custo acima de R$ 1000,00.


create view questao20 as (
SELECT nome, tamanho, categoria, precodecusto FROM mercadoriascompradas 
INNER JOIN mercadorias ON (mercadoriascompradas.codmercadoria = mercadorias.codmercadoria)
INNER JOIN tamanho ON (mercadoriascompradas.idtamanho = tamanho.idtamanho) 
INNER JOIN categorias ON (mercadorias.idcategoria = categorias.idcategoria)
WHERE (precodecusto > '1000') order by precodecusto);