资源描述
广东金融学院实验报告课程名称:数据库原理与应用实验编号及实验名称实验三数据库高级应用实验系 别计科系姓 名学 号班 级实验地点新电1101实验日期2014 年05 月14 日 实验时数8指导教师同组其他成员无成 绩一、实验目的及要求1、 掌握SQL Server存储过程的定义和使用。2、 掌握SQL Server触发器的定义和使用。二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)1、计算机操作系统要求在windows XP以上。2、并要求SQL Server 软件2000以后版本。三、实验内容及要求 利用实验指导书中的关系数据库完成下面题目:1、说明下面代码段的功能 SELECT tname as 姓名,tSex as 性别,case trankwhen 教授 then 高级职称when 讲师 then 中级职称else初级职称endfrom teacher答:在教师表中选取姓名和性别两列,并给每个教师分等级;2、完成下面代码的书写计算student_course表的平时分数列的平均值。如果小于80,则分数增加其值的5%;如果分数的最高值超过95,则终止该操作。在以下代码划线处填入适当的内容以完成上述功能。WHILE (SELECT_avg_(NormalMark) FROM student_course)_95_ BREAKELSE_ UPDATE student_courseSET NormalMark = NormalMark *1.05 END注意:实验前要先给所有同学的NormalMark赋一个初值,比如50。3、根据要求完成下列题目1) 编写一个触发器:在添加期末成绩信息时,利用平时成绩、其中成绩和期末成绩来计算成绩总评。如果没有期中成绩,则平时和期末成绩比重为2:8,如果有期中成绩,则平时、期中、期末三者比重为2:2:6。答:在student_course表中添加一列summark期末成绩,而exammark作为期中成绩,mark作为期末成绩;create trigger get_summark2 on student_coursefor insertasDeclare sno varchar(10),ccno char(10)Declare nmark intDeclare emark intDeclare fmark intSelect nmark=NormalMark,emark=exammark,fmark=mark,sno=sno,ccno=ccno from student_courseif not exists(select exammark from student_course where sno=sNO and ccno=ccNO )begin update student_course set sumMark = convert(int,(nmark * 0.2) + (fmark * 0.8)endelsebegin update student_course set sumMark = convert(int,(nmark * 0.2) + (eMark * 0.2)+ (fmark * 0.6)end2)创建一个带输入参数和输出参数的存储过程,要求实现如下功能:输入学生学号,然后输出学生的选课门数、平均分以及所选学分。答: create procedure c( sno char(10),cnocount int output,avgmark float output,sumcredit int output)Asbegin select cnocount=count(*),avgmark=avg(mark),sumcredit=sum(credit) From student_course sc,course_class cc ,student s where sc.sno=s.sno and cc.ccno=sc.ccno group by s.sNO,snameend3)调用2小题中的存储过程,并分别获得输出相关信息。答: Declare ccount intDeclare smark floatDeclare scredit intExec c 081220101 , ccount output, smark output, scredit outputSelect 081220101 as 学生号, ccount as 选课门数, smark as 平均分,scredit as 所选学分结果:警告: 聚合或其他SET 操作消除了Null 值。学生号 选课门数 平均分 所选学分- - - -081220101 6 69 22(1 行受影响) 4、思考题 1)存储过程和触发器的异同点?答: 触发器与存储过程的区别: 触发器与存储过程的主要区别在于触发器的运行方式。存储过程必须有用户、应用程序或者触发器来显示的调用并执行,而触发器是当特定时间出现的时候,自动执行或者激活的,与连接用数据库中的用户、或者应用程序无关。当一行被插入、更新或者删除时触发器才执行,同时还取决于触发器是怎样创建的,当UPDATE发生时使用一个更新触发器,当INSERT发生时使用一个插入触发器,当DELETE发生时使用一个删除触发器。触发器与存储过程的相同: 触发器与存储过程非常相似,都是SQL语句集五、实验总结(包括心得体会、问题回答及实验改进意见)通过本次试验,基本掌握SQL Server存储过程的定义和使用,也掌握SQL Server触发器的定义和使用。六、教师评语1、完成所有的实验内容,实验步骤和实验结果基本正确。2、至少完成主要的实验内容,实验步骤和实验结果基本正确。3、仅完成部分的实验内容,实验步骤和结果基本正确。4、虽然完成了主要实验内容,但是实验步骤和结果存在多处重大错误。5、未能很好地完成规定的实验内容,且实验步骤和结果基本不正确。6、其它: 评定等级:优秀 良好 中等 及格 不及格教师签名: 年 月 日 第 3 页 共2 页
展开阅读全文