《存储过程,触发器和函数实验.docx》由会员分享,可在线阅读,更多相关《存储过程,触发器和函数实验.docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、.存储过程、触发器和用户自定义函数实验实验内容一练习教材中存储过程、触发器和用户自定义函数的例子。教材中的 BookSales 数据库, 在群共享中,文件名为 BookSales.bak。实验内容二针对附件 1 中的教学活动数据库,完成下面的实验内容。1、存储过程(1) 创建一个存储过程,该存储过程统计“高等数学”的成绩分布情况,即按照各分数段统计人数。(2) 创建一个存储过程,该存储过程有一个参数用来接收课程号,该存储过程统计给定课程的平均成绩。(3) 创建一个存储过程,该存储过程将学生选课成绩从百分制改为等级制(即 A、B、C、D、E)。(4) 创建一个存储过程,该存储过程有一个参数用来接
2、收学生姓名,该存储过程查询该学生的学号以及选修课程的门数。(5) 创建一个存储过程,该存储过程有两个输入参数用来接收学号和课程号,一个输出参数用于获取相应学号和课程号对应的成绩。2、触发器(1) 为 study 表创建一个 UPDATE 触发器,当更新成绩时,要求更新后的成绩不能低于原来的成绩。(2) 为 study 表创建一个 DELETE 触发器,要求一次只能从 study 表中删除一条记录。(3) 为 course 表创建一个 INSERT 触发器,要求插入的课程记录中任课教师不能为空。3、用户自定义函数(1) 创建一个返回标量值的用户定义函数 RectangleArea:输入矩形的长和
3、宽就能计算矩形的面积。create function RectangleArea(a int,b int) returns intas beginreturn a*b end(2) 创建一个用户自定义函数,功能为产生一张有关学生成绩统计的报表。该报表显示每一门课程的课程号、课程名、选修人数、本门最高分、最低分和平均分。调用这个函数,生成相应的报表并给用户浏览。create function student_table() returns table asreturn(select student_course.tcid 课程号,ame 课程名,COUNT(student_course.sno)
4、 选修人数,max(student_course.score) 最高分,min(student_course.score) 最低分,avg(student_course.score) 平均分from student_course,coursewhere student_course.tcid=o group by student_course.tcid,ame)实验数据库说明教学活动数据库包括 student、course 和 study 三个基本表,三个基本表的结构说明和数据如下:(1) 学生表(student)列名数据类型长度是否允许为空值字段说明学生表的结构snochar5NO学号sna
5、mechar8NO姓名agesmallint年龄sexnchar1性别说明:sno 为主键,age 的范围为 1535 之间,sex 只能为“男”或“女”。snosname学生表的记录agesex98601李强20男98602刘丽21女98603张兵20男98604陈志坚22男98605王颖21女(2) 课程表(course)课程表的结构列名数据类型长度是否允许为空值说明cnochar4NO课程号cnamechar20NO课程名teacherchar8任课教师说明:cno 为主键。课程表的记录cnocnameteacherC601高等数学周振兴C602数据结构刘建平C603操作系统刘建平C60
6、4编译原理王志伟(3)选课表(study)选课表的结构列名数据类型长度是否允许为空值说明snochar5NO学号cnochar4NO课程号scoresmallint成绩说明:sno 和 cno 为主键,sno 为外键(参照 student 表的 sno),cno 为外键(参照 course表的 cno),score 的范围为 0100 之间。snocno选课表的记录score98601C6019098601C6029098601C6038598601C6048798602C6019098603C6017598603C6027098603C6045698604C6019098604C6048598605C6019598605C60380