数据库-存储过程触发器和函数实验报告.docx_第1页
数据库-存储过程触发器和函数实验报告.docx_第2页
数据库-存储过程触发器和函数实验报告.docx_第3页
数据库-存储过程触发器和函数实验报告.docx_第4页
数据库-存储过程触发器和函数实验报告.docx_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

存储过程、触发器和用户自定义函数实验 兰州大学数据库实验报告实验内容一练习教材中存储过程、触发器和用户自定义函数的例子。教材中的BookSales数据库,在群共享中,文件名为BookSales.bak。实验内容二针对附件1中的教学活动数据库,完成下面的实验内容。1、存储过程 (1)创建一个存储过程,该存储过程统计“高等数学”的成绩分布情况,即按照各分数段统计人数。 CREATE Proc MATH_NUM MATH CHAR(20)=高等数学ASSELECT MATH as canme,count(case when score=90 then 1 end)as90以上, count(case when score=80 and score=70 and score=60 and score70 then 1 end)as60-70, count(case when score=90 and score=80 and score=70 and score=60 and score70 thenDwhen score=score1) update study set score=score2where o=cno2 and study.sno=sno2go运行结果:按要求sno=98604 cno=C604 score=85 改成89 不能改成85了(2)为study表创建一个DELETE触发器,要求一次只能从study表中删除一条记录。CREATE TRIGGER DEL_STUDY ON studyinstead of DELETEASbegindeclare num int,sno char(5),cno char(4)select num=COUNT(*)from deletedif num=1beginselect sno=sno,cno=cno from deleteddelete from study where sno=study.sno and cno=oendelse print 一次不能删除多条记录end运行结果:(3)为course表创建一个INSERT触发器,要求插入的课程记录中任课教师不能为空。CREATE TRIGGER INSERT_COR ON courseinstead of insertASdeclare cno char(4),cname char(20),teacher char(8)select cno=cno,cname=cname,teacher=teacher from insertedif(teacher is null)print 注意:任课教师不能为空!elseinsert course values(cno,cname,teacher)运行结果:3、用户自定义函数 (1)创建一个返回标量值的用户定义函数 RectangleArea:输入矩形的长和宽就能计算矩形的面积。 CREATE function RectangleArea(a int,b int) returns intASbegin return a*bend运行结果:(2)创建一个用户自定义函数,功能为产生一张有关学生成绩统计的报表。该报表显示每一门课程的课程号、课程名、选修人数、本门最高分、最低分和平均分。调用这个函数,生成相应的报表并给用户浏览。 CREATE function STUDENT_TABLE() returns tableASreturn(select student_o 课程号,ame 课程名,COUNT(student_course.sno) 选修人数,max(student_course.score) 最高分,min(student_course.score) 最低分,AVG(student_course.score) 平均分from student_course,coursewhere student_o=ogroup by student_o,ame)运行结果:实验数据库说明教学活动数据库包括student、course和study三个基本表,三个基本表的结构说明和数据如下:(1)学生表(student)学生表的结构列名数据类型长度是否允许为空值字段说明snochar5NO学号snamechar8NO姓名agesmallint年龄sexnchar1性别说明:sno为主键,age的范围为1535之间,sex只能为“男”或“女”。学生表的记录snosnameagesex98601李强20男98602刘丽21女98603张兵20男98604陈志坚22男98605王颖21女(2)课程表(course)课程表的结构列名数据类型长度是否允许为空值说明cnochar4NO课程号cnamechar20NO课程名teacherchar8任课教师说明:cno为主键。课程表的记录cnocnameteacherC601高等数学周振兴C602数据结构刘建平C603操作系统刘建平C604编译原理王志伟(3)选课表(study)选课表的结构列名数据类型长度是否允许为空值说明snochar5NO学号cnochar4NO课程号scoresmallint成绩说明:sno和cno为主键,sno为外键(参照student表的sno),cno为外键(参照course表的cno),score的范围为0100之间。选课表的记录snocnoscore98601C601

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论