资源描述:
《数据库原理及应用实验报告 7》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验成绩《数据库系统原理及应用》实验报告七专业班级:计算机科学与技术学号:201116910233姓名:范晓曈指导教师:苏小玲2013年11月28日实验七名称:SQLServer触发器和游标一、实验内容及要求(使用教材建立的student、course和sc表实现)1、创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触发器执行情况。任务1:限制学生所在系的取值范围为{计算机系,信息管理系,数学系,通信工程系}。任务2:限制每个学期所开设的课程总学分在20~30范围内。任务3:限制每个学生每学期选课门数不能超过6门(设只针对单行插入操作)任务4:限制不能删除有人选
2、的课程2.创建满足下述要求的游标任务1:查询java课程的考试情况,并按教材11-19所示样式显示结果数据。任务2:统计每个系的男生人数和女生人数,并按教材11-20所示样式显示结果数据。任务3:列出每个系的学生信息,要求首先列出一个系的系名,然后在该系名下列出本系学生的姓名和性别,以此类推,直至列出全部系。要求按教材11-21所示样式显示结果数据。二、实验目的掌握触发器的概念;掌握触发器创建方法;掌握游标的概念;掌握游标的使用方法。三、实验步骤创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触发器执行情况。任务1:限制学生所在系的取值范围为{计算机系,信息管理
3、系,数学系,通信工程系}。createtriggertri_limitedeptonstudentafterinsert,updateasIFEXISTS(SELECT*FROMINSERTEDWHEREsdept!='计算机'andsdept!='信息管理系'andsdept!='数学系'andsdept!='通信')ROLLBACKinsertintostudentvalues(001,'一','女','通信工程系','1991-01-01','JAVA','5.0')任务2:限制每个学期所开设的课程总学分在20~30范围内。createtriggertri_limiton
4、courseafterinsert,updateasifexists(selectsum(credit)fromcoursewheresemesterin(selectsemesterfrominserted)havingsum(credit)notbetween20and30)print'你所插入的课程所在学期的总学分不在~30这个范围内'RollbackinsertintoCoursevalues('C007','0007','007','JAVA',3,2)任务3:限制每个学生每学期选课门数不能超过6门(设只针对单行插入操作)createtriggertri_countO
5、NSCafterINSERTasif(selectcount(*)fromscwheresno=(selectsnofrominserted))>4beginprint'选课超过限额'rollbackEndinsertintoscvalues(201116910231,'C005','2013.09.01',85,75)任务4:限制不能删除有人选的课程createtriggertri_DeletekcONcourseAFTERDELETEASIFEXISTS(SELECT*FROMscjoinDELETEDdonsc.cno=d.cno)BEGINPRINT'不能删除有学生选的
6、课程'ROLLBACKENDdeletefromcoursewherecno='C001'2.创建满足下述要求的游标任务1:查询java课程的考试情况,并按教材11-19所示样式显示结果数据。declare@namevarchar(200),@deptvarchar(200),@sscorevarchar(10)--声明存放结果集的变量declarejava_cursorcursorfor--声明游标selects.sname,s.sdept,sc.sscorefromstudentsjoinscons.sno=sc.snojoincourseconsc.cno=c.cnowh
7、erecname='java'openjava_cursor--打开游标fetchnextfromjava_cursorinto@name,@dept,@sscore--首先提取第一行print'选了JAVA课程的学生的成绩:'print'姓名所在系成绩'while@@FETCH_STATUS=0beginprint@name+''+@dept+''+@sscorefetchnextfromjava_cursorinto@name,@dept,@sscoreendclosejava_curs