Sem resumo de edição
Sem resumo de edição
 
(3 revisões intermediárias pelo mesmo usuário 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
** 03) Tabela de Parcelas a Receber
<br>
<br>
create table bairro (
codbairro int primary key,
bairro varchar(20) not null
);


* 04) Relacionar Tabela de Estados com Cidades  
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;
 
<br>
== Incluir tabela de Cidades e Relacionar com Endereços ==
<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.
 
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;
 
<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>
 
create table cidadesdoestado (
codcidade int not null references cidades (codcidade),
uf char(2) not null references estado (uf),
primary key (codcidade, uf)
);
 
<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>
<br>
== Inserir na Tabela Mercadorias Compradas, duas compras para a mesma mercadoria ==
<br>
A mercadoria para duas compras diferentes.


* Inserir:
[[Arquivo:BDEEq06.jpg]]
** 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
** 07) Uma nova mercadoria em Estoque e manter dado anterior
** 08) Um novo atributo: QuantMinima na Tabela Mercadorias
** 09) IdParcela em Mercadorias Compradas
<br>
<br>
== Inserir uma nova mercadoria em Estoque e manter dado anterior ==
<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;


* Excluir:
<br>
** 10) Um fornecedor qualquer da Tabela Fornecedores
== Inserir IdParcela em Mercadorias Compradas ==
** 11) Uma venda qualquer da Tabela Venda
<br>
<br>


* Alterar:
Os passos são os mesmos que no exercício anterior.
** 12) Um Codigo de Mercadoria da Tabela Mercadorias
 
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>
<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 mercadorias adquiridas ordenadas por data
<br>
** 14) Todos os saldos dos produtos ordenados por local
== Todas as mercadorias adquiridas ordenadas por data ==
** 15) Toda as vendas de um dia (Cliente, Total, Parcelas)
<br>
** 16) Todo as mercadorias (Nome, Nome da Marca, Dimensões, Descrição Categoria, Cor, Preço Sugerido)
 
** 17) Todas as vendas feitas com Nome do Cliente, Vendedor, Total ordenados por Data
create view questao13 as (
** 18) As mercadorias vendidas com a diferença entre os Preço sugerido x Preço da Mercadoria
select mercadoriascompradas.codmercadoria, nome, tamanho, nomedamarca, datadacompra from mercadoriascompradas
** 19) Todos os fornecedores ordenados por Razão Social
inner join mercadorias on (mercadoriascompradas.codmercadoria = mercadorias.codmercadoria)
** 20) Todas as compras realizadas com PReço de custo acima de R$ .1000,00.
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);
 
<br>
== Toda as vendas de um dia (Cliente, Total, Parcelas) ==
<br>
 
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);
 
<br>
== Todo as mercadorias (Nome, Nome da Marca, Dimensões, Descrição Categoria, Cor, Preço Sugerido) ==
<br>
 
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>
 
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);
 
<br>
== As mercadorias vendidas com a diferença entre os Preço sugerido x Preço da Mercadoria ==
<br>
 
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);
 
<br>
== Todos os fornecedores ordenados por Razão Social ==
<br>
 
create view questao19 as (
select razaosocial, cnpj, email, telefone1 from fornecedores order by razaosocial);
 
<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);
 
<br>
<br>

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);