已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告姓名: 叶磊 学号: 1 任务概述(任务说明)1、 存储过程使用相应SQL语句,完成如下操作:1. 新建一存储过程proc1,显示指定用户ID的订单信息列表(订单号、成交时间、订单总金额、订单状态及所有订单的平均金额),并成交时间降序排列。2. 新建一存储过程proc2,通过输入订单号、书目ID及数量,实现给该订单增加商品、更新订单总金额,并返回当前订单包含的商品总数(商品类别数量)。3. 新建一存储过程proc3,通过修改指定订单、指定商品的价格,并返回该订单的新总金额及优惠金额。4. 新建一存储过程proc4,统计各订单总金额的分布情况。订单金额划分情况如下: 0-50元、51-100元、101-150元、151-200元和201元以上。5. 新建一存储过程 proc5,实现查询购买过指定书目ID的用户还同时购买过的购买次数最多的前3名书目名称及购买次数,并按照购买次数排序。6. 新建一存储过程proc6,实现查询与指定用户ID购买过相同商品的用户及购买过相同商品的数量,并按照相同商品数量降序排列。2、 触发器1. 创建一触发器tg1,当往orderbook表中增加记录时,实现商品库存相应减少;当修改orderbook表中相应商品数量时,实现商品数量相应变动。2. 创建一触发器tg2,当往orderbook中增加记录时,如果商品库存量少于10,则不允许购买该商品,并给出相应提示。新建图书订购情况统计表bookstas(包含图书编号、图书名称、图书类别、图书价格和订购册数,数据类型自定),并根据数据库的订单情况将社科类图书的订购情况插入表中。创建一触发器tg3,当往orderbook表中增加记录时,自动更新bookstas表相应图书的统计信息4源码,文档化-新建一存储过程proc1,显示指定用户ID的订单信息列表-(订单号、成交时间、订单总金额、订单状态及所有订单的平均金额),并成交时间降序排列。create procedure proc1user_id varchar(20)asselect oid,ordertime,payment,orderstate,avgpayment,sumpaymentfrom order,orderstate,(select avg(payment) avgpaymentfrom orderwhere user = user_id) a,(select sum(payment) sumpaymentfrom orderwhere user = user_id) bwhere order.state = orderstate.osidand user = user_idorder by ordertime descgoexec proc1 102-新建一存储过程proc2,通过输入订单号、书目ID及数量,-实现给该订单增加商品、更新订单总金额,并返回当前订单包含的商品总数(商品类别数量)。create procedure proc2(order_id varchar(20),book_d varchar(20),book_s varchar(20)asupdate orderset payment = payment + pricefrom book,orderwhere oid in(select orderidfrom orderbookwhere bookid = book_d) and bid = book_dupdate orderbookset quantity = quantity + book_swhere orderid = order_idselect bookidfrom orderbookwhere orderid = order_idgoexec proc2 2014001,1001,4-新建一存储过程proc3,通过修改指定订单、指定商品的价格,并返回该订单的新总金额及优惠金额。create procedure proc3order_id varchar(20),book_id varchar(20),s_price varchar(20)asupdate orderset payment = payment + (s_price - price) * quantity) from book,orderbookwhere bookid = book_id and( bid = book_id and orderid = order_id)select *from orderwhere oid = order_idgoexec proc3 2014001,1001,20-新建一存储过程proc4,统计各订单总金额的分布情况。订单金额划分情况如下:- 0-50元、-100元、-150元、-200元和元以上。create procedure proc4asbegindeclare zerotofifty int,fiftytofundred int,hundredtohunf int,hunftoTwoh int,moretwoh int;select zerotofifty = COUNT(casewhen payment = 0 AND payment = 51 AND payment = 101 AND payment = 151 AND payment = 201 then 5 end)from orderprint zerotofifty;print fiftytofundred;print hundredtohunf;print hunftoTwoh;print moretwohendexec proc4-新建一存储过程proc5,实现查询购买过指定书目ID的用户还同时-购买过的购买次数最多的前名书目名称及购买次数,并按照购买次数排序。create procedure proc5book_id varchar(20)asbegindeclare user_id int;select user_id = uidfrom orderbook,order,userwhere bookid = book_idand orderid = oidand order.user = uidselect uid,name,oid,quantity,a.bookid,a.titlefrom user,order,orderbook,(select top 3 sum(quantity) sumquantity,bookid,titlefrom orderbook,bookwhere bookid = bidgroup by bookid,titleorder by sumquantity desc) awhere uid = user_idand uid = userand oid = orderidand orderbook.bookid = a.bookidorder by a.sumquantity descendexec proc5 1003-新建一存储过程proc6,实现查询与指定用户ID购买过-相同商品的用户及购买过相同商品的数量,并按照相同商品数量降序排列。create procedure proc6user_id varchar(20)asbeginselect a.uid,,a.bookid,a.quantityfrom orderbook,order,user,(select uid,name,bookid,quantityfrom orderbook,order,userwhere orderid = oidand user = uid) awhere user.uid = user_idand order.user = user.uidand order.oid = orderbook.orderidand a.uid != user.uidand a.bookid = orderbook.bookidgroup by a.uid,,a.bookid,a.quantityorder by quantity descendexec proc6 102-创建一触发器tg1,当往orderbook表中增加记录时,-实现商品库存相应减少;当修改orderbook表中相应商品数量时,实现商品数量相应变动。create trigger tg1on orderbook for insert,updateasbegindeclare order_id int,book_id int, quantity int;select book_id = bookid,quantity = quantity from inserted;update bookset book.stock = book.stock - quantitywhere book_id = book.bid;print insert succeed;declare book_idf int, quantityf int,bookido int, quantityo int,lst int;select bookido = bookid,quantityo = quantity from deleted;select book_idf = bookid,quantityf = quantity from inserted;update bookset book.stock = book.stock - quantityf + quantityowhere book_idf = book.bid;print update succeed;enddrop trigger tg1-创建一触发器tg2,当往orderbook中增加记录时,-如果商品库存量少于,则不允许购买该商品,并给出相应提示。create trigger tg2on orderbook after insertas begin declare stock int,bookid int; select bookid = s.bookid from inserted s; select stock = b.stock from book b where b.bid = bookid; if(stock 10) raiserror(库存少于,不允许购买,16,1); rollback tran;enddrop trigger tg2-新建图书订购情况统计表bookstas(包含图书编号、图书名称、图书类别、图书价格和订购册数,数据类型自定),-并根据数据库的订单情况将社科类图书的订购情况插入表中。创建一触发器tg3,-当往orderbook表中增加记录时,自动更新bookstas表相应图书的统计信息create table bookstas(id int primary key,title varchar(20) not null,category varchar(20) not null,price float not null,quantity int);create trigger tg3on orderbook for insertas begindeclare bookid int,quantity int;select bookid = bookid,quantity = quantity from inserted; update bookstas set quantity = quantity + quantitywhere id = bookidenddrop trigger tg35 执行过程截屏6 总结 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁汽贸人事制度改模板
- 2026年剧本杀运营公司门店投诉处理流程管理制度
- 2025年智能交通行业数据报告
- 2026年影视娱乐流媒体内容创新报告及未来五至十年商业模式报告
- 长沙银行运营面试题目及答案
- 全音像记录制度
- 保护患者隐私权制度
- 二手车交易制度
- 业务招待制度
- 机关纪检委员培训课件
- 化工厂班组安全培训课件
- 2025四川成都农商银行招聘10人笔试备考题库及答案解析
- 营业执照借用协议合同
- 2025年秋苏教版(新教材)初中生物八年级上册期末知识点复习卷及答案(共三套)
- 2025年小升初学校家长面试题库及答案
- 2025年法考客观题真题回忆版(含答案)
- 2025年危化品泄漏应急培训教案
- 2025年江南大学招聘真题(行政管理岗)
- 2024-2025学年江苏省南通市海门区高二上学期期末调研地理试题(解析版)
- GB/T 13350-2008绝热用玻璃棉及其制品
- 《语言的演变》-完整版课件
评论
0/150
提交评论