实验4 触发器和存储过程实验
4.1 触发器实验
一、实验目的
? 掌握触发器的创建、修改和删除操作。 ? 掌握触发器的触发执行。 ? 掌握触发器与约束的不同。
二、实验要求
1.创建触发器。
2.触发器执行触发器。
3.验证约束与触发器的不同作用期。 4.删除新创建的触发器。
三、实验内容
(一)示例
1.创建触发器
①启动SQL Server 查询编辑器,选择要操作数据库,如“sc(学生选课)”数据库。 ②在查询命令窗口中输入以下CREATE TRIGGER语句,创建触发器。
为sc(学生选课)表创建一个基于UPDATE操作和DELETE操作的复合型触发器,当修改了该表中的成绩信息或者删除了成绩记录时,触发器被激活生效,显示相关的操作信息。
--创建触发器
CREATE TRIGGER tri_UPDATE_DELETE_sc ON sc
FOR UPDATE,DELETE AS
--检测成绩列表是否被更新 IF UPDATE(成绩) BEGIN
--显示学号、课程号、原成绩和新成绩信息 SELECT INSERTED.课程号,DELETED.成绩AS原成绩, INSERTED.成绩AS新成绩 FROM DELETED ,INSERTED
WHERE DELETED.学号=INSERTED.学号 END
--检测是更新还是删除操作 ELSE IF COLUMNS_UPDATED( )=0 BEGIN
--显示被删除的学号、课程号和成绩信号
SELECT 被删除的学号=DELETED.学号,DELETED.课程号, DELETED.成绩AS原成绩 FROM DELETED END ELSE
--返回提示信息 PRINT ‘ 更新了非成绩列!’
③点击快捷工具栏上的快捷按钮,完成触发器的创建。 2.触发触发器
①在查询命令窗口中输入以下UPDATE sc语句,修改成绩列,激发触发器。
UPDATE sc
SET成绩=成绩+5
WHERE 课程号=’101’
②在查询命令窗口中输入以下UPDATE sc语句修改非成绩列,激发触发器。
UPDATE sc
SET 课程号=’113’ WHERE 课程号=’103’
③在查询命令窗口中输入以下DELETE sc 语句,删除成绩记录,激发触发器。
DELETE sc
WHERE 课程号=’102’
3. 比较约束与触发器的不同作用期
①在查询命令窗口中输入并执行以下ALTER TABLE 语句,为sc表添加一个约束,使得成绩只能大于等于0且小于等于100。
ALTER TABLE sc
ADD CONSTRAINT CK_成绩
CHECK(成绩>=0 AND成绩<=100)
②在查询命令窗口中输入并执行以下UPDATE sc语句,查看执行结果。
UPDATE sc SET成绩=120
WHERE 课程号=’108’
③在查询命令窗口中输入执行以下UPDATE sc语句,查看执行结果。
UPDATE sc SET成绩=90
WHERE 课程号=’108’
从这部分实验中,我们可以看到,约束优先于触发器起作用,它在更新前就生效,以对要更新的值进行规则检查。当检查到与现有规则冲突时,系统给出错误消息,并取消更新操作。如果检查没有问题,更新被执行,当执行完毕后,再激活触发器。
4. 删除新创建的触发器
①在查询命令窗口中输入DROP TRIGGER 语句,删除新创建的触发器。
DROP TRIGGER tri_UPDATE_DELETE_sc
②点击快捷工具栏上的快捷按钮,删除触发器。 (二)练习
1.在Student表中编写insert的触发器,假如每个班的学生不能超过30个,如果低于
此数,添加可以完成;如果超过此数,则插入将不能实现。
2.在SC表上编写update触发器,当修改SC表中的grade字段时将其修改前后的信息保存在SC_log表中。
四、实验报告要求
1、写出与上述任务相对应的SQL语句
2、并记录在实验过程中遇到的问题、解决办法及心得体会。
4.2存储过程实验
一、实验目的
? 掌握用户存储过程的创建操作。 ? 掌握用户存储过程的执行操作。 ? 掌握用户存储过程的删除操作。
二、实验内容
1、创建带输入参数的存储过程的存储过程。 2、执行所创建的存储过程。 3、删除所有新创建的存储过程。
三、实验步骤
对应于student数据库
(1) 创建一个无参存储过程StuScoreInfo,查询以下信息:学号,姓名,性别,课程名称,考试成绩. (2) 创建一个带参数的存储过程stu_info,该存储过程根据传入的学生编号在student表中查询此学生的信息.
(3) 创建一个带参数的存储过程StuScoreInfo2,该存储过程根据传入的学生编号和课程名称查询以下信息:姓名,课程名称,考试成绩.
(4) 编写带参数的存储过程,根据传入的课程名称统计该课程的平均成绩.
(5) 编写存储过程,根据传入的课程名统计这门课的成绩分布情况,即按照各分数段统计人数.
四、实验报告要求
1、写出与上述任务相对应的SQL语句
2、并记录在实验过程中遇到的问题、解决办法及心得体会。
实验5 数据库备份与恢复
一、实验目的
? 熟悉数据库备份及恢复机制;
? 了解SQL Server的数据备份和恢复机制;
? 掌握SQL-Server中数据库备份和恢复的方法。
二、实验内容
以管理员帐号登录SQL Server Management Studio,以原有数据库student为基础,请使用Management Studio界面方式或T-SQL 语句实现以下操作: 1. 针对数据库stu创建完全数据库备份集stu.bak,目标磁盘为D:\\ user \\ stu.bak; 2. 在数据库stu中新建数据表ceshi,内容自定,然后针对数据库stu创建差异备份; 3. 向数据库stu的数据表ceshi插入部分记录,然后针对数据库stu创建事务日志备
份;
4. 根据需要,将数据库恢复到数据库stu的最初状态; 5. 根据需要,将数据库恢复到创建数据表ceshi后的状态; 6. 根据需要,将数据库恢复到在ceshi表插入记录后的状态; 7. 针对现有数据库stu创建完全文件和文件组备份集stu_file,目标磁盘为D:\\ user
\\ stu_file.bak;
8. 在当前数据库中新建数据表ceshi2,然后针对数据库stu创建差异文件和文件组
备份;
9. 向数据库stu的数据表ceshi2插入部分记录,然后针对数据库stu创建事务日志
文件和文件组备份;
10. 根据需要,将数据库以文件和文件组方式恢复到创建数据表ceshi2后的状态; 11. 根据需要,将数据库以文件和文件组方式恢复到数据表ceshi2插入记录后的状态;
三、思考
? 说明数据库的备份和恢复的基本步骤;
? SQL Server中的完全备份、事务日志备份和增量备份形式的功能特点;
四、实验报告要求
1、写出与上述任务相对应的SQL语句
2、并记录在实验过程中遇到的问题、解决办法及心得体会。