Sem resumo de edição
 
Linha 149: Linha 149:
<br>
<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) ==
== Toda as vendas de um dia (Cliente, Total, Parcelas) ==
<br>
<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) ==
== Todo as mercadorias (Nome, Nome da Marca, Dimensões, Descrição Categoria, Cor, Preço Sugerido) ==
<br>
<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 ==
== Todas as vendas feitas com Nome do Cliente, Vendedor, Total ordenados por Data ==
<br>
<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 ==
== As mercadorias vendidas com a diferença entre os Preço sugerido x Preço da Mercadoria ==
<br>
<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 ==
== Todos os fornecedores ordenados por Razão Social ==
<br>
<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. ==
== Todas as compras realizadas com Preço de custo acima de R$ 1000,00. ==
<br>
<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);