二 实验目的:掌握事务的定义、提交、回滚等命令,通过这些命令的使用进一步理解事务的概念和性质。
三 实验内容及要求:(从下面10个题目中选一个)
题目一:
学生(学号,年龄,性别,系名)番茄加速
课程(课号,课名,学分,学时)
机器人焊接系统选课(学号,课号,成绩)
定义一个事务,完成下列步骤:
1按学号取某学生平均成绩,若平均成绩小于60,给该生每门课增加5分直至其平均成绩及格(每增一次显示一次)。
2显示该生各科成绩。
3 若该生有成绩超过95分,取消上述操作。
4提交后显示该生各科成绩。
题目二:
图书(书号,书名,价格,出版社)
读者(卡号,姓名,年龄,所属单位)
借阅(书号,卡号,借阅日期)
定义一个事务,完成下列步骤:
1计算图书平均价格,若平均价格小于20,给每本书增加一元,直至其平均价格超过20(每增一次显示一次)。 3 若有书超过50元,取消上述操作。
4提交后显示图书价格。
题目三:
顾客(卡号,姓名,电话,积分)
厂商(编号,厂址,名称、电话)
销售(顾客卡号,商品编号,数量,日期)
定义一个事务,完成下列步骤:
1按编号取某厂商出产的商品平均价格,若平均价格小于20,给每种商品增加一元,直至其平均价格超过20(每增一次显示一次)。
2显示所有商品名称 、价格。
sysloader
3 若有超过100元的,取消上述操作。
4提交后显示该厂商的各种商品和价格。
题目四:
图书(书号,书名,作者编号,价格,出版社编号)
作者(编号,姓名,电话)
出版社(编号,出版社名称,地址)
定义一个事务,完成下列步骤:
1按出版社编号取其出版的图书平均价格,若平均价格小于20,给每本书增加一元,直至其平均价格超过20(每增一次显示一次)。
2显示该出版社所有图书名称 、价格。
3 若有书超过50元,取消上述操作。
4提交后显示该出版社的图书价格。
题目五:
零件(编号,名称,颜)
车间(编号,名称,人数,主任)
产品(编号,名称,类型)
生产(产品编号,生产车间编号)
使用(产品编号,使用零件编号,个数)
定义一个事务,完成下列步骤:
1统计车间平均人数,若平均人数小于30,给每个车间增加2人,直至其平均人数超过uuu1630(每增一次显示一次)。
2显示所有车间信息。
3 若有超过80人的车间,取消上述操作。
4提交后显示车间信息。
题目六:
药品(编号,名称,价格,厂商)
处方(药品编号,数量,医生编号)
医生 (编号,姓名,科室,职称)
定义一个事务,完成下列步骤:
1统计药品平均价格,若平均价格小于20,给每种药增加一元,直至其平均价格超过20(每增一次显示一次)。
2显示所有药品名称 、价格。
3 若有药品超过50元,取消上述操作。
4提交后显示药品价格。
题目七:
学生(学号,年龄,性别,系名)
教材(编号,书名,出版社编号,价格)
订购(学号,书号,数量)
出版社(编号,名称,地址)
定义一个事务,完成下列步骤:
1按学号查其订购所有教材平均价格,若平均价格小于20,给每本书增加一元,直至其平均价格超过20(每增一次显示一次)。
2显示该生订购得教材名称 、价格。
3 若有书超过50元,取消上述操作。
4提交后显示该生订购的教材价格。
题目八:
员工(编号,姓名,性别,年龄,部门编号,年薪)
部门(编号,名称,人数,负责人)
项目(编号,名称,负责部门编号)
定义一个事务,完成下列步骤:
1统计各部门平均人数,若平均人数小于30,给每位职工年薪增加1000元
2显示所有员工信息。
3 若有年薪超过2万的,取消上述操作。
4提交后显示员工信息。
题目九:
帐户(编号,姓名,余额,建立日期,储蓄所编号)
储蓄所(编号,名称,地址,人数,所属城市)
借贷(帐户,借贷类型,金额,日期)
1统计储蓄所平均人数,若平均人数小于30,给每个所增加2人,直至其平均人数超过30(每增一次显示一次)。
2显示所有储蓄所信息。
3 若有超过80人的车间,取消上述操作。
4提交后显示储蓄所信息。
题目十:
仓库(编号,保管员编号,面积)
保管员(编号,姓名,年龄,电话、月薪)
商品(编号,品名,仓库编号、数量,单价)
1按仓库编号取其保管员平均年薪,若小于3000,增加500,直至平均3000以上
2显示所有保管员信息。
3 若有超过10000元的,取消上述操作。
4提交后显示保管员信息。
四 实验指导
1 有关事务处理的语句:
BEGIN TRANSACTION 建立一个事务
COMMIT TRANSACTION 向系统提交事务
ROLLBACK TRANSACTION 在事务提交之前回滚
SAVE TRANSACTION 在事务内部建一个存储点
例1 :
BEGIN TRANSCATION DEMO
SELECT * FROM DISCOUNT
SAVE TRANSCATION SAVE_DEMO
INSERT DISCOUNT VALUES (‘DEMO’ ,NULL , NULL ,20 ,0)
SELECT * FROM DISCOUNT
ROLLBACK TRANSACTION SAVE_DEMO
COMMIT TRANSACYION
SELECT * FROM DISCOUNT
例2
DECLARE @TranName VARCHAR(20)
SELECT @TranName = 'MyTransaction'
BEGIN TRANSACTION @TranName
GO
USE pubs
GO
UPDATE roysched
SET royalty = royalty * 1.10
WHERE title_id LIKE 'Pc%'
GO
COMMIT TRANSACTION MyTransaction
GO
2 循环控制
WHILE Boolean_expression
{sql_statement | statement_block}
[BREAK]
{sql_statement | statement_block}
[CONTINUE]
例1 :
USE pubs
GO
WHILE (SELECT AVG(price) FROM titles) < $30
BEGIN
UPDATE titles
SET price = price * 2
SELECT MAX(price) FROM titles
IF (SELECT MAX(price) FROM titles) > $50
BREAK
ELSE
CONTINUE
END
PRINT 'Too much for the market to bear'
五 实验报告要求:透射电镜样品制备
1 按要求写出事务定义的步骤。
2给出 测试数据、执行结果
3 遇到的问题和解决方法
六 注意事项:
多种测试结果