一、实验目的
了解触发器和存储过程的概念和作用,掌握创建和使用触发器、存储过程的方法,为后继学习和开发程序作准备。
二、实验属性
1、了解触发器、存储过程的作用。
2、了解并掌握触发器、存储过程的创建及使用。
三、实验仪器设备及器材
1、预习教材第五章,熟悉触发器、存储过程创建的语句。
2、熟悉SQL SERVER2008。
3、能够熟练掌握SQL SERVER2008环境下的触发器、存储过程的创建。
四、实验要求
1、预习教材第五章,熟悉触发器的创建语句。
2、熟悉SQL SERVER2008开发环境。
3、了解并掌握查看、修改和删除触发器的方法。
4、掌握验证触发器的效果。
五、 实验原理
触发器的了解和掌握。
六、实验内容
1、创建触发器
1.1、请自己创建两个表:Worker和Depts,Worker表中有三列,工号 char(15),姓名 char(20),部门号 char(10),工资
int,Depts表中有三列,部门号 char(10),部门名 char(20),部门人数 int。在此表中插入几条数据。请创建一个触发器, 当在此表中删除数据后,弹出“请注意你删除了数据”。
1.2、接着在创建一个触发器,当删除数据后,弹出“请注意你删除了某个人的数据”。
1.3、在Worker表上创建一个触发器,当插入数据时,工资不小于1200元。
1.4、请创建一个触发器,当在Worker表中某一个部门插入一名工人,Depts表中,该部门的人数自动加1。
2、存储过程的建立与使用
2.1、利用存储过程,给Student表添加一条学生信息。
2.2、利用存储过程Student、Course、SC表的连接中返回学生的学号、姓名、所选课程和成绩。
2.3、利用存储过程查找‘李勇’的学号、所选课程、成绩。
2.4、利用存储过程查找姓’李’并且性别为‘男‘的学生的学号、所选课程、成绩
七、 操作步骤
1、创建触发器
1.1、请自己创建两个表:Worker和Depts,Worker表中有三列,工号 char(15),姓名 char(20),部门号 char(10),工
资int,Depts表中有三列,部门号 char(10),部门名 char(20),部门人数 int。在此表中插入几条数据。请创建一个触发
器,当在此表中删除数据后,弹出“请注意你删除了数据”。
I 、在创建查询框中输入以下两个SQL语句(建立Worker和Depts表),如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/38ec39b5c9f1c37dc081f3d207f9d24f.jpeg)
II 、执行SQL语句,在数据库列表中刷新,即可查找到Worker和Depts表,如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/cb5175f5af7b6ee4f7237b88bf39e082.jpeg)
III 、分别在 Worker和Depts表中插入数据,如下图所示:
(1)、Worker表
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/bc3c4d94ad24ca33c442e7e2fec28b7d.jpeg)
(2)、 Depts表
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/a57f912e24c012888620b9573cfde60b.jpeg)
IV 、创建一个触发器,当在此表中删除数据后,弹出“请注意你删除了数据”,其SQL语句如下图所示:
(1)、创建Worker表中的触发器tri_worker
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/6e5a5fc37f6ed4968bb1dd0d27a7fd8b.jpeg)
(2)、创建Depts表中的触发器tri_depts
![](https://img-blog.csdn.net/20161220122521597?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGgxMjIxMTIyMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
1.2、接着在创建一个触发器,当删除数据后,弹出“请注意你删除了某个人的数据”。
I 、在创建查询框中输入SQL语句,如下图所示:
II 、执行SQL语句,其结果如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/3905df6d351cff0818d078f1b58b8f49.jpeg)
1.3、在Worker表上创建一个触发器,当插入数据时,工资不小于1200元。
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/81a37ddac448405cdfc2befcb493579e.jpeg)
1.4、请创建一个触发器,当在Worker表中某一个部门插入一名工人,Depts表中,该部门的人数自动加1。
I 、在创建查询框中输入SQL语句,如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/77b76627cead15e23645535ec97961b3.jpeg)
II 、执行SQL语句,其结果如下图所示:
2、 存储过程的建立与使用
例1 添加学生记录的存储过程Stuadd
I 、在创建查询框中输入SQL语句,如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/3792feab89cb703fcfd37d10f5c5b8b4.jpeg)
II 、执行SQL语句,其结果如下图所示:
例2 修改学生记录的存储过程STUDENTUpdate
I 、在创建查询框中输入SQL语句,如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/80ed1c97f5c21e87599906d5b966b537.jpeg)
II 、执行SQL语句,其结果如下图所示:
例3 删除学生记录的存储过程STUDENTDelete
I 、在创建查询框中输入SQL语句,如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/5e686d3e034981e81ac00a0899fc90ed.jpeg)
II 、执行SQL语句,其结果如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/062b13a28d3c791cf278711aa4a0e8de.jpeg)
例4 在学生表中查询学生学号和姓名,并按年龄排序
I 、在创建查询框中输入SQL语句,如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](http://s10.sinaimg.cn/small/006cu32Jzy6UM7RMpHXf9&690)
II 、执行SQL语句,其结果如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/1cd738b368113dcc16969b500cb8e940.jpeg)
例5 根据姓名查询学生所选课程的成绩
I 、在创建查询框中输入SQL语句,如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/9df40248fba20ab194bc17b27dc0faea.jpeg)
II 、执行SQL语句,其结果如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/84eb055c5ecbf6f1ba15a55035434b03.jpeg)
2.1、利用存储过程,给Student表添加一条学生信息。
I 、在创建查询框中输入SQL语句,如下所示:
exec stuadd '201400834207','李丽','女','19','数学';
II 、执行SQL语句,查看Student表的结果如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/cac577faa7e641cf6d6e879cd9666647.jpeg)
2.2、利用存储过程Student、Course、SC表的连接中返回学生的学号、姓名、所选课程和成绩。
I 、在创建存储过程中输入SQL语句,如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/2c0cd82779dbaa4d06dbeeba65a3885e.jpeg)
II 、执行查询SQL语句,如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/c56514c669713694507e68f307f4232e.jpeg)
III、执行后的结果如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/3e4855d211b93c73979869f431e77e2f.jpeg)
2.3、利用存储过程查找‘李勇’的学号、所选课程、成绩。
I 、执行查询SQL语句,如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/770090bf2917bbdbaea35119e0616709.jpeg)
II 、执行后的结果如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/ae492249f50b3dd54dc8eef915311993.jpeg)
2.4、利用存储过程查找姓’李’并且性别为‘男‘的学生的学号、所选课程、成绩
I 、分别执行以下两个SQL语句,如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/3d4a9a0aa37b2950b98b9cd9eb52526a.jpeg)
II 、执行后的结果如下图所示:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/da2675e1ae923bf3215d0c8769081970.jpeg)
八、实验总结
通过此次上机实验,使我更加熟悉了对SQL语句及其应用,虽然是第一次上机调试但并不感到陌生。在SQL语句调试的过程中虽错误总是千奇百怪,但根据老师教授的知识很快的得以纠正,完成了本次实验,通过本次实验,深刻的意识到自身的不足,也明白了理论与实践的差距,同时自己学过的知识也得以加深理解与巩固,感谢老师给予我们机会,使我们的知识更加牢固!
附录
Student表:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/3f86c0466ad092765e64470a229d9c73.jpeg)
SC表:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/e25223a2f7a9958a074d95bbe28fb2e6.jpeg)
Course表:
![触发器、存储过程的建立与使用—实验报告 触发器、存储过程的建立与使用—实验报告](https://i-blog.csdnimg.cn/blog_migrate/c2791518379985c0cfcc7b9d673b9ebb.jpeg)