数据库原理及应用实验报告7.doc

上传人:jian****018 文档编号:9160397 上传时间:2020-04-03 格式:DOC 页数:6 大小:57KB
返回 下载 相关 举报
数据库原理及应用实验报告7.doc_第1页
第1页 / 共6页
数据库原理及应用实验报告7.doc_第2页
第2页 / 共6页
数据库原理及应用实验报告7.doc_第3页
第3页 / 共6页
点击查看更多>>
资源描述
实验成绩 数据库系统原理及应用实验报告七专业班级: 计算机科学与技术 学 号: 201116910233 姓 名: 范晓曈 指导教师: 苏小玲 2013年 11 月 28 日实验七名称: SQL Server触发器和游标 1、 实验内容及要求 (使用教材建立的student、course和sc表实现) 1、创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触发器执行情况。 任务1:限制学生所在系的取值范围为计算机系,信息管理系,数学系,通信工程系。 任务2:限制每个学期所开设的课程总学分在2030范围内。 任务3:限制每个学生每学期选课门数不能超过6门(设只针对单行插入操作) 任务4:限制不能删除有人选的课程2.创建满足下述要求的游标 任务1:查询java课程的考试情况,并按教材11-19所示样式显示结果数据。 任务2:统计每个系的男生人数和女生人数,并按教材11-20所示样式显示结果数据。 任务3:列出每个系的学生信息,要求首先列出一个系的系名,然后在该系名下列出本系学生的姓名和性别,以此类推,直至列出全部系。要求按教材11-21所示样式显示结果数据。二、实验目的 掌握触发器的概念;掌握触发器创建方法;掌握游标的概念;掌握游标的使用方法。3、 实验步骤创建满足下述要求的DML触发器(前触发器和后触发器均可),并验证触发器执行情况。任务1:限制学生所在系的取值范围为计算机系,信息管理系,数学系,通信工程系。create trigger tri_limitedepton student after insert,updateasIF EXISTS(SELECT * FROM INSERTED WHERE sdept!=计算机 and sdept!=信息管理系 and sdept!=数学系 and sdept!=通信)ROLLBACKinsert into studentvalues(001,一,女,通信工程系,1991-01-01,JAVA,5.0) 任务2:限制每个学期所开设的课程总学分在2030范围内。create trigger tri_limiton course after insert,updateasif exists(select sum(credit) from coursewhere semester in (select semester from inserted ) having sum(credit) not between 20 and 30 )print你所插入的课程所在学期的总学分不在30这个范围内Rollback insert into Course values(C007,0007,007,JAVA,3,2) 任务3:限制每个学生每学期选课门数不能超过6门(设只针对单行插入操作)create trigger tri_countON SC after INSERTasif(select count(*) from sc where sno=(select sno from inserted)4beginprint 选课超过限额rollbackEndinsert into scvalues(201116910231,C005,2013.09.01,85,75) 任务4:限制不能删除有人选的课程create trigger tri_DeletekcON course AFTER DELETEASIF EXISTS(SELECT * FROM sc join DELETED d on sc.cno=d.cno )BEGIN PRINT 不能删除有学生选的课程ROLLBACKENDdelete from course where cno=C0012.创建满足下述要求的游标 任务1:查询java课程的考试情况,并按教材11-19所示样式显示结果数据。declare name varchar(200),dept varchar(200),sscore varchar(10) -声明存放结果集的变量declare java_cursor cursor for -声明游标select s.sname,s.sdept,sc.sscore from student s join sc on s.sno=sc.sno join course c on sc.cno=c.cnowhere cname=javaopen java_cursor -打开游标fetch next from java_cursor into name,dept,sscore -首先提取第一行print 选了JAVA课程的学生的成绩:print 姓 名 所在系 成绩 while FETCH_STATUS=0beginprint name+ +dept+ +sscorefetch next from java_cursor into name,dept,sscoreendclose java_cursordeallocate java_cursor 任务2:统计每个系的男生人数和女生人数,并按教材11-20所示样式显示结果数据。declare dept char(20),sex char(20),number intdeclare cur_number cursor forselect sdept,ssex,count(*)from student s group by ssex ,sdeptopen cur_numberfetch next from cur_number into dept,sex,numberprint 系名 性别 人数print =while FETCH_STATUS=0beginprint dept +sex +cast(number as varchar)fetch next from cur_number into dept,sex,numberendclose cur_numberdeallocate cur_number 任务3:列出每个系的学生信息,要求首先列出一个系的系名,然后在该系名下列出本系学生的姓名和性别,以此类推,直至列出全部系。要求按教材11-21所示样式显示结果数据。declare dept varchar(20),name varchar(20),sex varchar(20)declare c1 cursor forselect distinct sdept from student open c1fetch next from c1 into deptwhile FETCH_STATUS=0begin print dept+系的学生:declare c2 cursor forselect sname,ssex from student where sdept=deptopen c2fetch next from c2 into name,sexwhile FETCH_STATUS=0beginprint name + sexfetch next from c2 into name,sexendclose c2deallocate c2print =print fetch next from c1 into deptendclose c1deallocate c14、 实验心得在实验开始之初,由于对之前所学的知识有所忘记,所以我选择首先复习之前的select语句的相关知识。在进行触发器的相关实验时,遇到一些令我迷惑的问题例如:限制每个学生每学期选课门数不能超过6门。由于有多重限制条件,后来在同学的讲解下利用declare解决了。感觉触发器太神奇了,操作者做了不符合条件的操作就可以自动警告。在做游标的相关实验时,相对简单。油表可以对查询的数据逐行逐列的操作,方便简洁。知识输出的结果至今无法整齐对照,令人费解。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!