Linha 2: Linha 2:
<br>
<br>


* Incluir:
= Índices =
** 01) Tabela de Marcas relacionada com Produto
** 02) Tabela de Cep relacionada com Fornecedor e REgistroCaixa
** 03) E popular novos campos em Caixa: Data, Hora e Valor em Dinheiro
<br>
<br>


* 04) Relacionar Tabela de Cep com eEgistroCaixa
<br>


* Inserir:
Incluir:
** 05) Um produto para dois fornecedores diferentes. Ex: Bombril para Forn A e Forn B
01) Tabela de Marcas relacionada com Produto
** 06) Na Tabela Produtos Comprados, duas compras para o mesmo produto
 
** 07) Um novo produto em Estoque e manter dado anterior
  create table marca (
** 08) Um novo campo: LimitiMinimo na Tabela Produtos
  codmarca int primary key,
<br>
  marca varchar2(30) not null
  );
  alter table Produto add codmarca int null;
  ALTER TABLE PRODUTO ADD CONSTRAINT FK_marca FOREIGN KEY (codmarca) REFERENCES  marca (codmarca)
 
02 e 04) Tabela de Cep relacionada com Fornecedor e REgistroCaixa
 
  create table CEP (
  codCEP int primary key,
  CEP int not null
  );
 
  alter table Fornecedores add codCEP int null;
  alter table RegistroCaixa add codCEP int null;
  ALTER TABLE Fornecedores ADD CONSTRAINT FK_cep FOREIGN KEY (codcep) REFERENCES cep (codcep)
  ALTER TABLE RegistroCaixa ADD FOREIGN KEY  (codcep) REFERENCES  cep (codcep) ;
 
 
03) E popular novos campos em Caixa: Data, Hora e Valor em Dinheiro
 
    Alter table Caixa add data datetime null;
    Alter table Caixa add hora datetime null;
    Alter table Caixa add valor number null;
 
  INSERT INTO Caixa (numerocaixa, cpfcaixa, data, hora, valor)
  VALUES (12, 2345678, 22/12/2012 , 1414 , 455);
 
Inserir:
 
 
05) Um produto para dois fornecedores diferentes. Ex: Bombril para Forn A e Forn B
 
  Antes de tudo , precisei desativar o Constraint Produtos_pk para usar 2 fornecedores para 1 produto.
  [[Arquivo:2forn.jpg]]
 
06) Na Tabela Produtos Comprados, duas compras para o mesmo produto
 
  [[Arquivo:2compras.jpg]]
 
 
07) Um novo produto em Estoque e manter dado anterior
 
  [[Arquivo:estoquee.jpg]]
 
08) Um novo campo: LimitiMinimo na Tabela Produtos
 
  Alter table Produto add LimiteMinimo number null;
 
Excluir:
 
09) Um fornecedor qualquer da Tabela Fornecedores
 
  DELETE FROM fornecedores WHERE ID_fornecedor=1;
 
10) Uma venda qualquer da Tabela VendaProduto
 
  DELETE FROM vendaproduto WHERE ID_venda=123;
 
 
 
11) Porque Local em Estoque e LocalMercadoria em Local?
 
  Nao tem necessidade portanto sera deletado :
  Alter table Estoque drop column Local;
 
12) Explicar para que serve a Tabela VendaProduto.
 
    Coloquei a tabela Venda produto pois acho que em um sistema de banco de dados que tem como foco as vendas dos produtos
  feitas pelos caixas , terá muitos dados a serem guardados em uma só tabela , por isso dei exclusividade para
  as vendas dos produtos em uma só tabela.
 
  Gerar relatório que mostre:
13) Todas as Movimentações do Estoque (IdProduto, IdLocal, Quantidade e Horário :
 
  select ESTOQUE.ID_PRODUTO as ID_PRODUTO,
  eSTOQUE.ID_LOCAL as ID_LOCAL,
  eSTOQUE.QUANTIDADECOMPRADA as QUANTIDADECOMPRADA,
  eSTOQUE.HORARIOCOMPRA as HORARIOCOMPRA
  from ESTOQUE ESTOQUE
 
14) Todos os produtos com suas Quantidades e Preços
 
  select PRODUTO.NOMEPRODUTO as NOMEPRODUTO,
  PRODUTO.PRECOPRODUTO as PRECOPRODUTO,
  PRODUTO.MARCA as MARCA,
  PRODUTO.ID_FORNECEDOR as ID_FORNECEDOR,
  PRODUTO.ID_PRODUTO as ID_PRODUTO,
  PRODUTO.PESO as PESO,
  PRODUTO.COR as COR
  from PRODUTO PRODUTO
15) Toda a movimentação de um dia do Caixa (Id. Venda, Produto, Quantidade, Valor)
 
  select VENDAS.ID_VENDA as ID_VENDA,
  VENDAS.DATA as DATA,
  VENDAS.HORARIO as HORARIO,
  VENDAS.STATUS as STATUS,
  VENDAS.ID_PARCELAS as ID_PARCELAS,
  VENDAS.NUMEROCAIXA as NUMEROCAIXA,
  VENDAS.CPFCAIXA as CPFCAIXA,
  VENDAPRODUTOS.ID_VENDA as ID_VENDA,
  VENDAPRODUTOS.QUANTIDADE as QUANTIDADE,
  VENDAPRODUTOS.ID_PRODUTO as ID_PRODUTO
  from VENDAPRODUTOS VENDAPRODUTOS,
  VENDAS VENDAS
16) Todo os produtos com saldo de estoque abaixo do mínimo
 
  select ESTOQUE.ID_LOCAL as ID_LOCAL,
  ESTOQUE.ID_PRODUTO as ID_PRODUTO,
  ESTOQUE.QUANTIDADECOMPRADA as QUANTIDADECOMPRADA,
  ESTOQUE.HORARIOCOMPRA as HORARIOCOMPRA,
  ESTOQUE.QUANTIDADEESTOCADA as QUANTIDADEESTOCADA
  from ESTOQUE ESTOQUE
  where ESTOQUE.QUANTIDADEESTOCADA <=100
  order by ESTOQUE.QUANTIDADEESTOCADA
 
17) Todas as Vendas ordenadas por Status
  select   VENDAS.STATUS  as  STATUS ,
  VENDAS.DATA  as  DATA ,
  VENDAS.ID_VENDA  as  ID_VENDA ,
  VENDAS.HORARIO  as  HORARIO ,
  VENDAS.ID_PARCELAS  as  ID_PARCELAS ,
  VENDAS.CPFCAIXA  as  CPFCAIXA ,
  VENDAS.NUMEROCAIXA  as  NUMEROCAIXA 
  from   VENDAS  VENDAS
  order by VENDAS.STATUS
 
18) Dados do produtos (Nome, Preço, Nome da Marca, Quantidade) ordenados por Nome do Produto
 
  select   PRODUTO.ID_FORNECEDOR  as  ID_FORNECEDOR ,
  PRODUTO.ID_PRODUTO  as  ID_PRODUTO ,
  PRODUTO.NOMEPRODUTO  as  NOMEPRODUTO ,
  PRODUTO.PRECOPRODUTO  as  PRECOPRODUTO ,
  PRODUTO.MARCA  as  MARCA ,
  PRODUTO.PESO  as  PESO ,
  PRODUTO.COR  as  COR ,
  PRODUTO.CODMARCA  as  CODMARCA 
  from   PRODUTO  PRODUTO
  order by PRODUTO.NOMEPRODUTO


* Excluir:
19) Todas as vendas em Aberto (Com parcelas a Vencer)
** 09) Um fornecedor qualquer da Tabela Fornecedores
** 10) Uma venda qualquer da Tabela VendaProduto
<br>


  select VENDAS.ID_VENDA as ID_VENDA,
  VENDAS.DATA as DATA,
  VENDAS.STATUS as STATUS,
  VENDAS.NUMEROCAIXA as NUMEROCAIXA,
  VENDAS.CPFCAIXA as CPFCAIXA,
  VENDAS.ID_PARCELAS as ID_PARCELAS,
  VENDAS.HORARIO as HORARIO
  from VENDAS VENDAS
  WHERE status = 'pendente'


* 11) Porque Local em Estoque e LocalMercadoria em Local?
20) Todos os produtos (Nome, Id, Marca) com seus fornecedores (Nome, email, Fone1) ordenados por Nome do Produto
* 12) Explicar para que serve a Tabela VendaProduto.
<br>


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

Edição atual tal como às 22h09min de 19 de agosto de 2013

Exercícios


Índices



Incluir:

01) Tabela de Marcas relacionada com Produto

 create table marca (
 codmarca int primary key,
 marca varchar2(30) not null
 );
 alter table Produto add codmarca int null;
 ALTER TABLE PRODUTO ADD CONSTRAINT FK_marca FOREIGN KEY (codmarca) REFERENCES  marca (codmarca) 


02 e 04) Tabela de Cep relacionada com Fornecedor e REgistroCaixa

 create table CEP (
 codCEP int primary key,
 CEP int not null
 );
 alter table Fornecedores add codCEP int null;
 alter table RegistroCaixa add codCEP int null;
 ALTER TABLE Fornecedores ADD CONSTRAINT FK_cep FOREIGN KEY (codcep) REFERENCES cep (codcep) 
 ALTER TABLE RegistroCaixa ADD FOREIGN KEY  (codcep) REFERENCES  cep (codcep) ; 


03) E popular novos campos em Caixa: Data, Hora e Valor em Dinheiro

   Alter table Caixa add data datetime null;
   Alter table Caixa add hora datetime null;
   Alter table Caixa add valor number null;
  INSERT INTO Caixa (numerocaixa, cpfcaixa, data, hora, valor)
  VALUES (12, 2345678, 22/12/2012 , 1414 , 455);
  
Inserir:


05) Um produto para dois fornecedores diferentes. Ex: Bombril para Forn A e Forn B

 Antes de tudo , precisei desativar o Constraint Produtos_pk para usar 2 fornecedores para 1 produto.
 

06) Na Tabela Produtos Comprados, duas compras para o mesmo produto

  


07) Um novo produto em Estoque e manter dado anterior

  

08) Um novo campo: LimitiMinimo na Tabela Produtos

 Alter table Produto add LimiteMinimo number null;

Excluir:

09) Um fornecedor qualquer da Tabela Fornecedores

 DELETE FROM fornecedores WHERE ID_fornecedor=1;

10) Uma venda qualquer da Tabela VendaProduto

 DELETE FROM vendaproduto WHERE ID_venda=123;


11) Porque Local em Estoque e LocalMercadoria em Local?

 Nao tem necessidade portanto sera deletado :
 Alter table Estoque drop column Local;

12) Explicar para que serve a Tabela VendaProduto.

   Coloquei a tabela Venda produto pois acho que em um sistema de banco de dados que tem como foco as vendas dos produtos 
 feitas pelos caixas , terá muitos dados a serem guardados em uma só tabela , por isso dei exclusividade para 
 as vendas dos produtos em uma só tabela.
 Gerar relatório que mostre:

13) Todas as Movimentações do Estoque (IdProduto, IdLocal, Quantidade e Horário :

 select ESTOQUE.ID_PRODUTO as ID_PRODUTO,
 eSTOQUE.ID_LOCAL as ID_LOCAL,
 eSTOQUE.QUANTIDADECOMPRADA as QUANTIDADECOMPRADA,
 eSTOQUE.HORARIOCOMPRA as HORARIOCOMPRA
 from ESTOQUE ESTOQUE

14) Todos os produtos com suas Quantidades e Preços

 select	 PRODUTO.NOMEPRODUTO as NOMEPRODUTO,
 PRODUTO.PRECOPRODUTO as PRECOPRODUTO,
 PRODUTO.MARCA as MARCA,
 PRODUTO.ID_FORNECEDOR as ID_FORNECEDOR,
 PRODUTO.ID_PRODUTO as ID_PRODUTO,
 PRODUTO.PESO as PESO,
 PRODUTO.COR as COR 
 from	 PRODUTO PRODUTO

15) Toda a movimentação de um dia do Caixa (Id. Venda, Produto, Quantidade, Valor)

 select	 VENDAS.ID_VENDA as ID_VENDA,
 VENDAS.DATA as DATA,
 VENDAS.HORARIO as HORARIO,
 VENDAS.STATUS as STATUS,
 VENDAS.ID_PARCELAS as ID_PARCELAS,
 VENDAS.NUMEROCAIXA as NUMEROCAIXA,
 VENDAS.CPFCAIXA as CPFCAIXA,
 VENDAPRODUTOS.ID_VENDA as ID_VENDA,
 VENDAPRODUTOS.QUANTIDADE as QUANTIDADE,
 VENDAPRODUTOS.ID_PRODUTO as ID_PRODUTO 
 from	 VENDAPRODUTOS VENDAPRODUTOS,
 VENDAS VENDAS

16) Todo os produtos com saldo de estoque abaixo do mínimo

 select	 ESTOQUE.ID_LOCAL as ID_LOCAL,
 ESTOQUE.ID_PRODUTO as ID_PRODUTO,
 ESTOQUE.QUANTIDADECOMPRADA as QUANTIDADECOMPRADA,
 ESTOQUE.HORARIOCOMPRA as HORARIOCOMPRA,
 ESTOQUE.QUANTIDADEESTOCADA as QUANTIDADEESTOCADA 
 from	 ESTOQUE ESTOQUE 
 where ESTOQUE.QUANTIDADEESTOCADA <=100
 order by ESTOQUE.QUANTIDADEESTOCADA 
 

17) Todas as Vendas ordenadas por Status

 select	  VENDAS.STATUS  as  STATUS ,
 VENDAS.DATA  as  DATA ,
 VENDAS.ID_VENDA  as  ID_VENDA ,
 VENDAS.HORARIO  as  HORARIO ,
 VENDAS.ID_PARCELAS  as  ID_PARCELAS ,
 VENDAS.CPFCAIXA  as  CPFCAIXA ,
 VENDAS.NUMEROCAIXA  as  NUMEROCAIXA  
 from	  VENDAS   VENDAS 
 order by VENDAS.STATUS 

18) Dados do produtos (Nome, Preço, Nome da Marca, Quantidade) ordenados por Nome do Produto

 select	  PRODUTO.ID_FORNECEDOR  as  ID_FORNECEDOR ,
 PRODUTO.ID_PRODUTO  as  ID_PRODUTO ,
 PRODUTO.NOMEPRODUTO  as  NOMEPRODUTO ,
 PRODUTO.PRECOPRODUTO  as  PRECOPRODUTO ,
 PRODUTO.MARCA  as  MARCA ,
 PRODUTO.PESO  as  PESO ,
 PRODUTO.COR  as  COR ,
 PRODUTO.CODMARCA  as  CODMARCA  
 from	  PRODUTO   PRODUTO 
 order by PRODUTO.NOMEPRODUTO 

19) Todas as vendas em Aberto (Com parcelas a Vencer)

 select	 VENDAS.ID_VENDA as ID_VENDA,
 VENDAS.DATA as DATA,
 VENDAS.STATUS as STATUS,
 VENDAS.NUMEROCAIXA as NUMEROCAIXA,
 VENDAS.CPFCAIXA as CPFCAIXA,
 VENDAS.ID_PARCELAS as ID_PARCELAS,
 VENDAS.HORARIO as HORARIO 
 from	 VENDAS VENDAS
 WHERE status = 'pendente'

20) Todos os produtos (Nome, Id, Marca) com seus fornecedores (Nome, email, Fone1) ordenados por Nome do Produto

 select	 PRODUTO.MARCA as MARCA,
 PRODUTO.NOMEPRODUTO as NOMEPRODUTO,
 PRODUTO.ID_PRODUTO as ID_PRODUTO,
 FORNECEDORES.NOME as NOME,
 FORNECEDORES.EMAIL as EMAIL,
 FORNECEDORES.FONE1 as FONE1 
 from	 FORNECEDORES FORNECEDORES,
 PRODUTO PRODUTO
 order by PRODUTO.NOMEPRODUTO