数据库表更新、视图和索引——沐雨先生

一、实验目的及原理

1. 掌握SQL中与表更新有关的命令

  • 熟悉Insert命令
  • 熟悉Update命令
  • 熟悉Delete命令

2.掌握SQL中与视图有关命令

3.掌握创建索引命令

二、 实验用品及设备

1. PC机

2. 操作系统Windows xp, Windows 7, Windows 10等

3. 要求有一DBMS软件,例如SQL Sever2008,MySQL等

i.实验内容及步骤

Retail Database Table Structure
零售数据库表结构

  • Customer( CustNO, FName, LName, Street, Suburb, Postcode, Balance)
  • 顾客 (顾客号,名,姓,街道,城市,邮政编码,余额)
  • Department( DepartNO, DepartName)
  • 部门(部门号,部门名)
  • SalesRep( SalesRepNO, SalesRepLastName, SalesRepFName, DepartNOfk)
  • 销售代表 (销售代表号,姓,名,部门号)
  • Order( OrderNO, CustNOfk, OrdDate, SalesRepNOfk, OrdStatus)
  • 订单(订单号,顾客号,订单日期,销售代表号,订单状态)
  • OrderLine( OrderNO fk, ProductNOfk, QtyPurchased, PurchasePrice)
  • 订单明细(订单号,商品号,购买数量,销售价格)
  • Product( ProductNO, ProdDescription,QtyOnHand, UnitPrice)
  • 商品(商品号,商品名,库存量,单价)
  • numofOrders(CustNO, Fname, Lname, numberofOrders)
  • 顾客订单数(顾客号,名字,姓,订单数)
  • totalSale(SalesRepNO, Fname, Lname, total)
  • 销售总量(销售代表编号,名字,姓,销售总额)
    题目:
  1. 新增一个部门, 部门信息为部门编号07,部门名称为TECH
    insert into department values('07','TECH');
  2. 新来一名顾客,顾客号为2001,名字为Robert(名) Bill(姓),余额为1000
    insert into customer(custno,fname,lname,balance) values ('2001','Robert','Bill',1000);
  3. 将每个顾客的订单数,保存到numofOrders表里。
    insert into numoforders select c.custno,fname,lname,COUNT(*) from orders o,Customer c group by c.custno,fname,lname;
  4. 将每个销售代表的总销售金额保存到totalSale表里。
    insert into totalSale select s.SalesRepNo ,SalesRepFName ,SalesRepLastName ,COUNT(QtyPurchased *PurchasePrice ) from SalesRep s,Orders o,Orderline od where s.SalesRepNo =o.SalesRepNo and o.OrderNO =od.OrderNo group by s.SalesRepNo ,SalesRepFName ,SalesRepLastName;
  5. 将每个商品单价上调5%。
    update Product set UnitPrice =1.05*UnitPrice ;
  6. 把购买laser Printer的顾客的余额加100元
    update Customer set Balance =Balance +100 where CustNo in (select c.CustNo from Customer c,Orders o,Orderline od,Product p where c.CustNo =o.CustNO and o.OrderNO =od.OrderNo and od.ProductNo =p.ProductNo and p.ProdDescription ='laser Printer');
  7. 订单数超过2的商品的单价上调5%
    update Product set UnitPrice =UnitPrice *1.05 where ProductNo in (select p.ProductNo from Customer c,Orders o,Orderline od,Product p,numofOrders n where c.CustNo =o.CustNO and o.OrderNO =od.OrderNo and od.ProductNo =p.ProductNo and n.CustNo =c.CustNo and n.numberofOrders >2);
  8. 根据下图,对相关表进行相应处理.
    insert into Orders (OrderNO ,CustNO ,OrdDate) values('12900','2567','8/9/2015');
    insert into Orderline (OrderNo ,ProductNo ,QtyPurchased ,PurchasePrice) values('12900','AX12','5','20');
    insert into Orderline (OrderNo ,ProductNo ,QtyPurchased ,PurchasePrice) values('12900','BT04','9','129');
    update numofOrders set numberofOrders =numberofOrders +1 where CustNo ='2567';
  9. 创建视图V1,显示顾客和他们购买商品的信息。(要求有个顾客姓名,购买商品日期,商品名,数量,单价,小计(数量*单价)
    create view V1 as select fname,lname,orddate,proddescription,QtyPurchased ,PurchasePrice ,QtyPurchased *PurchasePrice xiaoji from Customer c,Orders o,Orderline od,Product p where c.CustNo =o.CustNO and o.OrderNO =od.OrderNo and od.ProductNo =p.ProductNo;
  10. 创建视图V2,显示销售代表(名)及其所在的部门名
    create view V2 as select SalesRepLastName ,DepartName from SalesRep s,Department d where s.DepartNo =d.DepartNo ;
  11. 创建视图V3, 显示销售代表(姓名), 部门名和他们的业绩(有多少订单)
    create view V3 as select SalesRepFName ,SalesRepLastName ,DepartName,COUNT(*) yeji from SalesRep s,Department d,Orders o where s.DepartNo =d.DepartNo and s.SalesRepNo =o.SalesRepNo group by SalesRepFName ,SalesRepLastName ,DepartName;
  12. 在V1视图上, 查询每名顾客一共消费的了多少钱, 显示顾客名,总消费金额
    select fname,lname,SUM(xiaoji) sum from V1 group by fname,lname;
  13. 在V3视图上,查询订单数超过3个的销售代表姓名,部门,订单数量
    select SalesRepFName ,SalesRepLastName ,DepartName ,yeji from V3 where yeji>3;
  14. 删除Tech部门
    delete from Department where DepartName ='Tech';
  15. 把订单数为零的销售代表消息全部删除
    delete from SalesRep where SalesRepNo in (select SalesRepNo from totalSale where total =0);
  16. 在商品表上按商品名升序建立索引
    create index prode on product(proddescription);
  17. 在销售代表表上按部门号升序建立索引, 如果部门号相同, 按姓名降序建立索引。
    create index sales on salesrep(departno asc,salesreplastname desc,salesrepfname desc);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐雨先生

如果真的帮助到你了再打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值