数据库应用实验二 (数据库实验5数据查询)

前言

数据库课程是需要做些相关知识点的数据库实验报告的,三桥君根据自己所学所做的数据库实验,特地重新整理成教程。这些教程一共有6份,收录到《数据库实验》系列了。

一、实验目的

掌握数据库PL/SQL编程语言,以及数据库存储过程的设计和使用方法。

二、实验内容

存储过程定义,存储过程运行,存储过程的参数传递。掌握PL/SQL编程语言和编程规范,规范设计存储过程。

三、实验数据

已知学生管理系统数据库xsgl,有5个数据表xsgl_user,xsgl_major,xsgl_student,xsgl_course和xsgl_score,分别存储用户、专业、学生、课程和成绩数据,如下图所示。

数据库实验详细操作,数据库实验小结

用SQL语言实现以下:

1、定义存储过程proCourseAvg,该存储过程的功能是根据输入的课程名称,统计该课程的选课人数和平均分,并返回统计结果。

2、定义存储过程proStudentAvg,该存储过程的功能是根据输入的同学学号,统计该同学的平均分,并返回该同学的姓名和平均分。

以上每个存储过程定义后,给出执行结果。

四、实验结果

一、xsgl数据库关系图

数据库实验详细操作,数据库实验小结

二、SQL语言定义存储过程

1、定义存储过程proCourseAvg

--定义存储过程proCourseAvg
CREATEPROCproCourseAvg
@CouName VARCHAR(20),
@CouNum INTOUTPUT,
@AVG INTOUTPUT
AS--SQL语句
SELECT@CouNum=COUNT(xsgl_course.course_no),@AVG=AVG(score_score)
FROMxsgl_course,xsgl_score
WHERExsgl_course.course_no=xsgl_score.course_no
ANDxsgl_course.course_name=@CouName
GROUPBYxsgl_course.course_no

数据库实验详细操作,数据库实验小结

--输出结果1
DECLARE@CouNum INT,@AVG INT
EXECproCourseAvg'C语言',@CouNum OUTPUT,@AVG OUTPUT
PRINT@CouNum
PRINT@AVG

数据库实验详细操作,数据库实验小结

--输出结果2
DECLARE@CouNum INT,@AVG INT
EXECproCourseAvg'Java',@CouNum OUTPUT,@AVG OUTPUT
PRINT@CouNum
PRINT@AVG

数据库实验详细操作,数据库实验小结

--输出结果3
DECLARE@CouNum INT,@AVG INT
EXECproCourseAvg'ASP',@CouNum OUTPUT,@AVG OUTPUT
PRINT@CouNum
PRINT@AVG

数据库实验详细操作,数据库实验小结

2、定义存储过程proStudentAvg

--定义存储过程proStudentAvg
CREATEPROCproStudentAvg
@StuNo VARCHAR(20),
@StuName VARCHAR(20)OUTPUT,
@AVG INTOUTPUT
AS
SELECT@StuName=xsgl_student.stud_name,@AVG=AVG(score_score)
FROMxsgl_student,xsgl_score
WHERExsgl_student.stud_no=xsgl_score.stud_no
ANDxsgl_student.stud_no=@StuNo
--AND @StuName=xsgl_student.stud_name
GROUPBYxsgl_student.stud_name

数据库实验详细操作,数据库实验小结

--输出结果1
DECLARE@StuName VARCHAR(20),@AVG INT
EXECproStudentAvg'101',@StuName OUTPUT,@AVG OUTPUT
PRINT@StuName
PRINT@AVG

数据库实验详细操作,数据库实验小结

--输出结果2
DECLARE@StuName VARCHAR(20),@AVG INT
EXECproStudentAvg'102',@StuName OUTPUT,@AVG OUTPUT
PRINT@StuName
PRINT@AVG

数据库实验详细操作,数据库实验小结

--输出结果3
DECLARE@StuName VARCHAR(20),@AVG INT
EXECproStudentAvg'201',@StuName OUTPUT,@AVG OUTPUT
PRINT@StuName
PRINT@AVG

数据库实验详细操作,数据库实验小结

--输出结果4
DECLARE@StuName VARCHAR(20),@AVG INT
EXECproStudentAvg'202',@StuName OUTPUT,@AVG OUTPUT
PRINT@StuName
PRINT@AVG

数据库实验详细操作,数据库实验小结

--输出结果5
DECLARE@StuName VARCHAR(20),@AVG INT
EXECproStudentAvg'203',@StuName OUTPUT,@AVG OUTPUT
PRINT@StuName
PRINT@AVG

数据库实验详细操作,数据库实验小结

xsgl的数据库源码可以到公众号【三桥君】回复【数据库实验五】领取。