- 119
- 0
- 约 4页
- 2017-06-07 发布于重庆
- 举报
《数据库原理与应用》实验报告三及答案
广东金融学院实验报告
课程名称:数据库原理与应用
实验编号
及实验名称 实验三 数据库高级应用实验 系 别 计科系 姓 名 学 号 班 级 实验地点 新电1101 实验日期 2014 年05 月14 日 实验时数 8 指导教师 同组其他成员 无 成 绩 一、实验目的及要求
掌握SQL Server存储过程的定义和使用。
掌握SQL Server触发器的定义和使用。
二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)
1、计算机操作系统要求在windows XP以上。
2、并要求SQL Server 软件2000以后版本。
三、实验内容及要求 利用实验指导书中的关系数据库完成下面题目:
1、说明下面代码段的功能 SELECT tname as ‘姓名’,tSex as ‘性别’,
case trank
when ‘教授’ then ‘高级职称’
when ‘讲师’ then ‘中级职称’
else
‘初级职称’
end
from teacher
答:在教师表中选取姓名和性别两列,并给每个教师分等级;
2、完成下面代码的书写
计算student_course表的平时分数列的平均值。如果小于80,则分数增加其值的5%;如果分数的最高值超过95,则终止该操作。在以下代码划线处填入适当的内容以完成上述功能。
WHILE SELECT____avg________ NormalMark FROM student_course 80
BEGIN
if SELECT MAX NormalMark FROM student_course ____95_____ BREAK
ELSE
___ UPDATE student_course
SET NormalMark NormalMark *1.05
END
注意:实验前要先给所有同学的NormalMark赋一个初值,比如50。
3、根据要求完成下列题目
编写一个触发器:在添加期末成绩信息时,利用平时成绩、其中成绩和期末成绩来计算成绩总评。如果没有期中成绩,则平时和期末成绩比重为2:8,如果有期中成绩,则平时、期中、期末三者比重为2:2:6。
答:在student_course表中添加一列summark期末成绩,而exammark作为期中成绩,mark作为期末成绩;
create trigger get_summark2 on student_course
for insert
as
Declare @sno varchar 10 ,@ccno char 10
Declare @nmark int
Declare @emark int
Declare @fmark int
Select @nmark NormalMark,@emark exammark,@fmark mark,@sno sno,@ccno ccno
from student_course
if 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
end
else
begin update student_course
set sumMark convert int, @nmark * 0.2 + @eMark * 0.2 + @fmark * 0.6
end
2)创建一个带输入参数和输出参数的存储过程,要求实现如下功能:输入学生学号,然后输出学生的选课门数、平均分以及所选学分。
答: create procedure c @sno char 10 ,
@cnocount int output,
@avgmark float output,
@sumcredit int output
As
begin
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,sname
end
3)调用2小题中的存储过程,并分别获得输出相关信息。
答: Declare @ccount int
Declare @smark float
Declare @scredit
原创力文档

文档评论(0)