《数据库原理与应用》实验报告三及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
@screditas'所选学分'
结果:
警告:聚合或其他SET操作消除了Null值。
学生号选课门数平均分所选学分
--------- ----------- ---------------------- -----------
081220101 669 22
(1行受影响)
4、思考题
1)存储过程和触发器的异同点?
二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)
1、计算机操作系统要求在windows XP以上。
2、并要求SQL Server软件2000以后版本。
三、实验内容及要求
利用实验指导书中的关系数据库完成下面题目:
1、说明下面代码段的功能
LE (SELECT____avg________(NormalMark) FROMstudent_course)<80
BEGIN
if (SELECT MAX(NormalMark) FROMstudent_course)>____95_____
BREAK
ELSE
___UPDATE student_course
case trank
when‘教授’then‘高级职称’
when‘讲师’then‘中级职称’
else
‘初级职称’
end
from teacher
答:在教师表中选取姓名和性别两列,并给每个教师分等级;
2、完成下面代码的书写
计算student_course表的平时分数列的平均值。如果小于80,则分数增加其值的5%;如果分数的最高值超过95,则终止该操作。在以下代码划线处填入适当的内容以完成上述功能。
SET NormalMark = NormalMark *1.05
END
注意:实验前要先给所有同学的NormalMark赋一个初值,比如50。
3、根据要求完成下列题目
1)编写一个触发器:在添加期末成绩信息时,利用平时成绩、其中成绩和期末成绩来计算成绩总评。如果没有期中成绩,则平时和期末成绩比重为2:8,如果有期中成绩,则平时、期中、期末三者比重为2:2:6。
As
begin
select@cnocount=count(*),@avgmark=avg(mark),@sumcredit=sum(credit)
Fromstudent_coursesc,course_classcc,students
wheresc.sno=no=nogroupbys.sNO,sname
end
3)调用2小题中的存储过程,并分别获得输出相关信息。
答:Declare@ccountint
Declare@smarkfloat
Declare@screditint
Execc'081220101',@ccountoutput,@smarkoutput,@screditoutput
Select'081220101'as'学生号',@ccountas'选课门数',@smarkas'平均分',
广东金融学院实验报告
课程名称:数据库原理与应用
实验编号
及实验名称
实验三数据库高级应用实验
系 别
计科系
姓 名
学 号
班 级
实验地点
新电1101
实验日期
2014年05月14日
实验时数
8
指导教师
同组其他成员

成 绩
一、实验目的及要求
1、掌握SQL Server存储过程的定义和使用。
2、掌握SQL Server触发器的定义和使用。
5、未能很好地完成规定的实验内容,且实验步骤和结果基本不正确。
6、其它:
评定等级:优秀良好中等及格 不及格
教师签名:
触发器与存储过程的相同:
触发器与存储过程非常相似,都是SQL语句集
五、实验总结(包括心得体会、问题回答及实验改进意见)
六、教师评语
1、完成所有的实验内容,实验步骤和实验结果基本正确。
2、至少完成主要的实验内容,实验步骤和实验结果基本正确。
3、仅完成部分的实验内容,实验步骤和结果基本正确。
4、虽然完成了主要实验内容,但是实验步骤和结果存在多处重大错误。
答:触发器与存储过程的区别:
触发器与存储过程的主要区别在于触发器的运行方式。存储过程必须有用户、应用程序或者触发器来显示的调用并执行,而触发器是当特定时间出现的时候,自动执行或者激活的,与连接用数据库中的用户、或者应用程序无关。当一行被插入、更新或者删除时触发器才执行,同时还取决于触发器是怎样创建的,当UPDATE发生时使用一个更新触发器,当INSERT发生时使用一个插入触发器,当DELETE发生时使用一个删除触发器。
Declare@nmarkint
Declare@emarkint
Declare@fmarkint
Select@nmark=NormalMark,@emark=exammark,@fmark=mark,@sno=sno,@ccno=ccno
fromstudent_course
ifnotexists(selectexammarkfromstudent_coursewhere@sno=sNOand@ccno=ccNO)
begin
updatestudent_course
setsumMark=convert(int,(@nmark*0.2)+(@fmark*0.8))
end
else
begin
updatestudent_course
setsumMark=convert(int,(@nmark*0.2)+(@eMark*0.2)+(@fmark*0.6))
end
2)创建一个带输入参数和输出参数的存储过程,要求实现如下功能:输入学生学号,然后输出学生的选课门数、平均分以及所选学分。
答:createprocedurec
(
@snochar(10),
@cnocountintoutput,
@avgmarkfloatoutput,
@sumcreditintoutput)
答:在student_course表中添加一列summark期末成绩,而exammark作为期中成绩,mark作为期末成绩;
createtriggerget_summark2onstudent_course
forinsert
as
Declare@snovarchar(10),@ccnochar(10)
相关文档
最新文档