中南大学数据库实验(二)
数据库原理与技术第二次试验
课程名称:数据库原理与技术
实验报告要求:
1. 列出所有的SQL语句和源代码; 2. 程序要求有适当的注释;
3. 对数据完整性约束实施要求给出相应的测试用例。 4. 实验报告提交电子档。
实验内容:存储过程与触发器
1. 编写一段程序,将每种玩具的价格提高¥0.5,直到玩具的平均价格接近$24.5为止。此
外,任何玩具的最大价格不应超过$53。
在执行语句前查询:select * from Toys 结果如下
执行代码如下:
create procedure inprove_pri /*创建存储过程*/
as
declare @average money /*定义变量 */ select @average=AVG(mToyRate) from Toys begin
while @average
update Toys
set mToyRate=mToyRate+0.5
where mToyRate
exec inprove_pri
select * from Toys 运行结果:
再查询avg(mToyRate) 代码:select AVG(mToyRate) aaa from
Toys
2. 创建一个称为prcCharges的存储过程,它返回某个定单号的装运费用和包装费用。 create procedure prcCharges /*创建存储过程 */
@cOrderNo char(6), /*定义变量 */ @mShippingCharges money output, @mGiftWrapCharges money output as begin
select @mShippingCharges=mShippingCharges, /* 从Orders表中赋值给变量*/ @mGiftWrapCharges=mGiftWrapCharges from Orders
where cOrderNo=@cOrderNo /* 赋值条件 */ end go
declare @mShippingCharges money, @mGiftWrapCharges money
exec prcCharges '000001',@mShippingCharges output, /* 执行该存储过程 */
@mGiftWrapCharges output
print '000001订单的装运费:'+convert(char(10),@mShippingCharges) /*打印输
出 */
print '000001订单的包装费:'+convert(char(10),@mGiftWrapCharges)
结果如下:
3. 创建一个称为prcHandlingCharges的过程,它接收定单号并显示经营费用。
PrchandlingCharges过程应使用prcCharges过程来得到装运费和礼品包装费。 提示:经营费用=装运费+礼品包装费 代码如下:
看Orders表的000001号订单
select * from Orders
create procedure prcHandlingCharges /* 定义存储过程 */
@cOrderNo char(6), /* 定义订变量 */ @RunningExpenses money output as begin declare
@mShippingCharges money, @mGiftWrapCharges money
exec prcCharges @cOrderNo, /* 引用prcCharges过程 */ @mShippingCharges output, @mGiftWrapCharges output
set @RunningExpenses=@mShippingCharges+@mGiftWrapCharges end go
declare @RunningExpenses money
exec prcHandlingCharges '000001',@RunningExpenses output /*执行存储过*/
print '订单号的经营费用:'+convert(char(10),@RunningExpenses) 查询结果如下:
4. 表PickofMonth中保存的是某年(iYear)某月(siMonth)某种玩具(cToyId)的销售总
量(iTotalSold)。创建一个存储过程prcGenPickofMonth,根据给定的年份和月份生成表PickofMonth中相应的数据。
CREATE PROCEDURE prcGenPickofMonth /*定义存储过程*/
@year int, /*定义变量 */ @month smallint as
declare /*声明 */
@sold INT, @ID CHAR(6)
SELECT @ID = cToyId, @sold = iTotalSold /*从PickOfMonth表中赋值给所
定义的变量 */
FROM PickOfMonth
where iYear=@year and siMonth=@month
print CONVERT(VARCHAR(5), @year)+'年'+CONVERT(VARCHAR(5), @month) +'月的'
print '玩具编号:' + CONVERT(VARCHAR(6), @ID) /*打印输出 */ print '销售额:' + CONVERT(VARCHAR(10), @sold) GO
EXECUTE prcGenPickofMonth 2001, 1 /*执行给定的日期 */
输出结果:
检验语句:select * from PickOfMonth
Where iYear=2001 and siMonth=1
5. 在OrderDetail上定义一个触发器,当向OrderDetail表中新增一条记录时,自动修改Toys
表中玩具的库存数量(siToyQoh)。
CREATE TRIGGER TrOrderDetail /*定义触发器 */ ON OrderDetail FOR INSERT
AS DECLARE
@ToyId CHAR(6), /* 定义变量*/ @ToyQoh SMALLINT, @Qty SMALLINT
SELECT @ToyId = cToyId, @Qty = siQty FROM INSERTED SELECT @ToyQoh = siToyQoh /*给变量赋值 */ FROM Toys WHERE cToyId = @ToyId /*赋值条件 */ BEGIN
UPDATE Toys /* 更新Toys表*/ SET siToyQoh = @ToyQoh-@Qty WHERE cToyId = @ToyId END
结果:
插入前查询:
执行插入语句检查:
insert into Orders
values('000012','05/12/2001','000002','000002','01',6,1.2500,'Y',62.2200,'05/23/2001')
insert into OrderDetail
values('000012','000007',2,'N',NULL,NULL,29.5000
)
然后再查询Toys表:
6. 在OrderDetail上定义一个触发器,如果购物者改变了定单的数量,玩具的成本也自动
地改变。(提示:Toy cost = Quantity * Toy Rate) 创建触发器代码如下:
create trigger CheckToyCost on OrderDetail for update /*创建触发器 */ as
if update(siQty) /* 触发条件*/ begin
update OrderDetail /*更新表 */ set mToyCost=siQty*mToyRate from OrderDetail,Toys
where OrderDetail.cToyId = Toys.cToyId end
检验:修改订单号为000001的订单数量并查询cOrderNo,cToyId,siQty,mToyCost
update OrderDetail /*更新表 */
set siQty=siQty+5
select cOrderNo,cToyId,siQty,mToyCost /*查询 */ from OrderDetail
where cOrderNo='000001'
相关文章
- 大学生计算机基础实验报告
- 小型超市销售管理系统
- 密立根油滴实验的几种数据处理方法的比较
- 大学物理实验(二)论文总结
- 计算机专业开题报告
- 密立根油滴实验数据处理的一种方法
- 三棱镜最小偏向角法测波长实验研究
- 用计算机软件处理牛顿环等厚干涉实验数据
- 20**年考研择校:计算机专业院校排名
- 二组分合金相图实验的改进研究
< 大学计算机基础>课程 实验报告手册 学院 年级 专业 姓名 学号 任课教师 上机地点 (以上由学生填写) 实验教师(签字) 西南大学计算机与信息科学学院 计算机基础教育系 年 月 日 一. 实验说明 本课程实验分为一般性实验 ...
小型超市销售管理系统 实 验 报 告 实验课程: 信息系统分析与设计 学生姓名:曹志明 冯建明 冯伟 胡华 赖玉峰 专业班级: 信息管理041班 组 长:曹志明(6104104002) 小组成员:冯建明(6104104027) 冯 伟(61 ...
墨理工科研 密立根油滴实验的几种数据处理方法的比较 芦明霞李斌王天会王 (吉林大学珠海学院公共基础与教学研究中心 丹 广东・珠海519041) 中图分类号:0423.9 文献标识码:A 摘要比较了目前常用的几种密立根油滴实验数据处理的方法, ...
大学物理实验数据处理及误差分析的研究 摘要:对在这一年的物理实验过程中用到的各种实验数据处理以及误差分析的方法进行总结. 关键词:数据处理,误差分析,不确定度 引言:1. 物理实验是解决有关物理问题的重要方法,解释物理实验过程中每个数据出现 ...
计算机专业开题报告 1课题介绍 随着计算机技术的飞速发展,计算机作为知识经济时代的产物,已被广泛应用于社会各个行业和领域,而素质教育在学校不断的深化,学校对学生的实践能力也越来越重视,所以学校的实验室和实验课课时也越来越多.如何编排实验室实 ...
万方数据 万方数据 万方数据 密立根油滴实验数据处理的一种方法 作者:作者单位:刊名:英文刊名:年,卷(期):被引用次数: 刘海力, 唐贤健, 谢常清 湖南人文科技学院,湖南娄底,417000大学物理实验 Physical Experime ...
第8卷第1期实验科学与技术 ・33・ 三棱镜最小偏向角法测波长实验研究 巫志玉,孙炳全,俸永格 (海南大学公共实验中心,海口570228) 摘要:根据三棱镜对光的色散原理,提出了用分光计观测原子光谱并用最小偏向角对各谱线进行标记,比较光谱的 ...
用计算机软件处理牛顿环等厚干涉实验数据 摘要 研究结果表明:通过计算机软件处理了实验数据得到了预期的结果. 本文主要研究了牛顿环实验的等厚干涉,其目的是:用牛顿环观察和分析等厚干涉现象:学会使用读数显微镜测距:学习用计算机软件处理实验数据得 ...
2017考研择校:计算机专业院校排名 2017考研择校:计算机专业院校排名 中国研究生教育计算机专业排名计算机系统结构前20名(总共47所高校) 1. 清华大学(招生办) ,2. 华中科技大学,3. 西安交通大学,4. 上海交通大学,5. ...
!!型!!!!二兰!堕 CNl2一1352/N 实验室科学第13卷第5期2010年10月 V01.13 No.5 OeL2010 LABORATORY SCIENCE 二组分合金相图实验的改进研究 吴梅芬,王晓岗,曹同成,许新华,胡慧康 ( ...