一、实验目的
 
  了解触发器和存储过程的概念和作用,掌握创建和使用触发器、存储过程的方法,为后继学习和开发程序作准备。
 
 二、实验属性
 
     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表),如下图所示:
 
          
  
 
               
  
         II 、执行SQL语句,在数据库列表中刷新,即可查找到Worker和Depts表,如下图所示:
 
          
 
         III 、分别在 Worker和Depts表中插入数据,如下图所示:
 
   (1)、Worker表
 
            
 
   (2)、 Depts表
 
            
 
      IV 、创建一个触发器,当在此表中删除数据后,弹出“请注意你删除了数据”,其SQL语句如下图所示:
 
       (1)、创建Worker表中的触发器tri_worker
 
                    
 
  (2)、创建Depts表中的触发器tri_depts    
 
        
 
 1.2、接着在创建一个触发器,当删除数据后,弹出“请注意你删除了某个人的数据”。
 
       I 、在创建查询框中输入SQL语句,如下图所示:
 
              
       
 
         II 、执行SQL语句,其结果如下图所示:
 
         
 
    1.3、在Worker表上创建一个触发器,当插入数据时,工资不小于1200元。     
 
 
 
            
  
    1.4、请创建一个触发器,当在Worker表中某一个部门插入一名工人,Depts表中,该部门的人数自动加1。
 
      I 、在创建查询框中输入SQL语句,如下图所示:
 
         
 
         II 、执行SQL语句,其结果如下图所示:
 
              
      
 
   2、 存储过程的建立与使用
 
     例1 添加学生记录的存储过程Stuadd
 
       I 、在创建查询框中输入SQL语句,如下图所示:
 
         
 
         II 、执行SQL语句,其结果如下图所示:
 
              
  
 
    例2 修改学生记录的存储过程STUDENTUpdate
 
      I 、在创建查询框中输入SQL语句,如下图所示:
 
        
 
       II 、执行SQL语句,其结果如下图所示:
 
        
      
 
   例3 删除学生记录的存储过程STUDENTDelete
 
      I 、在创建查询框中输入SQL语句,如下图所示:
 
         
 
      II 、执行SQL语句,其结果如下图所示:
 
          
 
   例4 在学生表中查询学生学号和姓名,并按年龄排序
 
     I 、在创建查询框中输入SQL语句,如下图所示:
 
       
 
       II 、执行SQL语句,其结果如下图所示:
 
          
 
   例5 根据姓名查询学生所选课程的成绩
 
     I 、在创建查询框中输入SQL语句,如下图所示:
 
       
 
      II 、执行SQL语句,其结果如下图所示:
 
          
 
   2.1、利用存储过程,给Student表添加一条学生信息。
 
     I 、在创建查询框中输入SQL语句,如下所示:
 
       exec stuadd '201400834207','李丽','女','19','数学';
 
 
 
      II 、执行SQL语句,查看Student表的结果如下图所示:    
 
       
 
   2.2、利用存储过程Student、Course、SC表的连接中返回学生的学号、姓名、所选课程和成绩。
 
      I 、在创建存储过程中输入SQL语句,如下图所示:
 
        
 
      II 、执行查询SQL语句,如下图所示:
 
        
 
      III、执行后的结果如下图所示:
 
        
 
   2.3、利用存储过程查找‘李勇’的学号、所选课程、成绩。
 
     I 、执行查询SQL语句,如下图所示:
 
       
 
    II 、执行后的结果如下图所示:
 
          
 
   2.4、利用存储过程查找姓’李’并且性别为‘男‘的学生的学号、所选课程、成绩
 
    I 、分别执行以下两个SQL语句,如下图所示:
 
      
 
          
    
 
    II 、执行后的结果如下图所示:  
 
      
 
 八、实验总结
 
    通过此次上机实验,使我更加熟悉了对SQL语句及其应用,虽然是第一次上机调试但并不感到陌生。在SQL语句调试的过程中虽错误总是千奇百怪,但根据老师教授的知识很快的得以纠正,完成了本次实验,通过本次实验,深刻的意识到自身的不足,也明白了理论与实践的差距,同时自己学过的知识也得以加深理解与巩固,感谢老师给予我们机会,使我们的知识更加牢固!
 
 附录
 
 Student表:
 
       
 
 
 SC表:
 
       
 
 Course表: 
 
        