《数据库系统 》 实验报告
实验名称 存储过程实验 实验地点 实验楼423 实验日期
一、实验目的及要求
- 掌握用户存储过程的创建操作。
- 掌握用户存储过程的执行操作。
- 掌握用户存储过程的删除操作。
二、实验环境
Windows10,
SQL server2008
三、实验内容
对应于“S+学号”数据库
(1)创建一个无参存储过程StuScoreInfo,查询以下信息:班级,学号,姓名,性别,课程名称,考试成绩。
create procedure StuScoreInfo
as
select SC., Student.,Course.*
from SC,Student,Course
where SC.Sno=Student.Sno and SC.Con=Course.Cno
(2)创建一个带参数的存储过程stu_info,该存储过程根据传入的学生编号在Student表中查询此学生的信息。
create procedure stu_info @SNO INT
as
select *
from Student
Where Sno=@SNO
(3)创建一个带参数的存储过程StuScoreInfo2,该存储过程根据传入的学生编号和课程名称查询以下信息:班级,学号,姓名,性别,课程名称,考试成绩。
create procedure StuScorelnfo2
@Sno as char(9),@Cname as char(40)
as
select [SC].Sno
,[SC].Con
,[Sname]
,[Cname]
,[Grade]
from SC,Student,Course
Where SC.Sno=Student.Sno
and SC.Con=Course.Cno
and Student.Sno=@Sno
and Course.Cname=@Cname
(4)编写存储过程,统计离散数学的成绩分布情况,即按照各分数段统计人数。
create procedure mathgrade
@Cname varchar(20)=‘离散数学’
as
select Grade as ‘离散数学’,
count (case when Grade > 90 then 1 end ) as ‘90分以上’,
count (case when Grade > 80 and Grade <=90 then 1 end ) as ‘80~90分以上’,
count (case when Grade > 70 and Grade <=80 then 1 end ) as ‘70~80分以上’,
count (case when Grade > 60 and Grade <=70 then 1 end ) as ‘60~70分以上’,
count (case when Grade <= 60 then 1 end ) as ‘60分以下’
from SC,Course
Where SC.Con=Course.Cno and Course.Cname = @Cname
(5) 编写带参数的存储过程,根据传入的课程名称统计该课程的平均成绩。
create procedure AVGMARK
@Cname varchar(40)
as
SELECT @Cname as ‘科目’,AVG(Grade) as ‘平均成绩’
from SC,Course
Where SC.Con=Course.Cno
and Course.Cname = @Cname
四、实验总结
通过本次实验使我更加熟悉了数据库,还掌握了用户存储过程的创建操作、用户存储过程的执行操作、用户存储过程的删除操作的作用和使用方法,使我对数据库的使用更加熟练了。也大大增加了我对数据库的兴趣。