




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、存储过程、触发器和用户自定义函数实验 兰州大学数据库实验报告实验内容一练习教材中存储过程、触发器和用户自定义函数的例子。教材中的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
2、以上, count(case when score>=80 and score<90 then 1 end)as80-90, count(case when score>=70 and score<80 then 1 end)as70-80, count(case when score>=60 and score<70 then 1 end)as60-70, count(case when score<60 then 1 end)as60以下FROM study,courseWHERE o=o and ame=MATH GROUP BY ame运行结果
3、:(2)创建一个存储过程,该存储过程有一个参数用来接收课程号,该存储过程统计给定课程的平均成绩。 CREATE Proc AVG_SCORE cno CHAR(5)ASSELECT cno as 课程号,ame as 课程名,STR(AVG(score),5,2) as 平均成绩FROM study,course WHERE o=o and o=cnoGROUP BY ame运行结果: (3)创建一个存储过程,该存储过程将学生选课成绩从百分制改为等级制(即 A、B、C、D、E)。 CREATE Proc SCORE_CHANGEASSELECT ame as 课程名,study.sno as
4、学号,o as 课程号,study.score as 成绩,casewhen score>=90 and score<=100 then'A'when score>=80 and score<90 then'B'when score>=70 and score<80 then'C'when score>=60 and score<70 then'D'when score<60 then'E'end as '等级'from study,course
5、where o=o运行结果:(4)创建一个存储过程,该存储过程有一个参数用来接收学生姓名,该存储过程查询该学生的学号以及选修课程的门数。CREATE Proc STUDENT_STUDY name char(8)ASselect name as 姓名,study.sno as 学号,count(cno) as 选修门数 from study,studentwhere study.sno=student.sno and sname=namegroup by study.sno运行结果: (5)创建一个存储过程,该存储过程有两个输入参数用来接收学号和课程号,一个输出参数用于获取相应学号和课程号对应
6、的成绩。CREATE Proc STU_COR_SCORE sno char(5),cno char(4),word smallint outputASselect word=scorefrom studywhere sno=sno and cno=cno 运行结果:2、触发器(1)为study表创建一个UPDATE触发器,当更新成绩时,要求更新后的成绩不能低于原来的成绩。CREATE TRIGGER UPDATE_SCORE ON studyinstead of updateasdeclare sno2 char(5),cno2 char(4),score1 smallint,score2
7、smallintselect sno2=sno,cno2=cno,score2=scorefrom insertedselect score1=scorefrom deletedif(score2>=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 studyi
8、nstead 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
9、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 f
10、unction 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.s
11、core) 最高分,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为主键,ag
12、e的范围为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为外键(参照c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于雇佣司机的合同协议
- 出租屋低价装修合同协议
- 三人行课件教学课件
- 农村建房木工支模协议合同范本
- 小儿推拿app课件
- 小儿手足口病的护理
- 期货从业资格之期货投资分析考前冲刺训练试卷参考答案详解
- 期货从业资格之《期货法律法规》综合提升练习试题带答案详解(黄金题型)
- 期货从业资格之《期货法律法规》自测题库及答案详解【必刷】
- 难点详解湖北省武穴市中考数学真题分类(数据分析)汇编达标测试试卷(含答案详解)
- 物流园区安全管理制度
- (2025)事业单位考试(面试)试题附答案
- 生物信息学基础知识与应用考试题及答案2025年
- 2025年国际档案日知识竞赛试题库300题(含答案)
- 遗体整形协议书
- 特斯拉MODEL X用户手册
- 江苏南通2025年公开招聘农村(村务)工作者笔试题带答案分析
- 2025-2030中国太阳能电池板清洁系统行业市场现状供需分析及投资评估规划分析研究报告
- 2025年初中语文教师招聘面试八年级下册逐字稿大自然的语言
- 2025-2030加工芒果产品行业市场现状供需分析及投资评估规划分析研究报告
- 章义伍流程管理
评论
0/150
提交评论