MYSQL存储过程和存储函数-数据库实验五
1. 掌握通过 SQL 语句 CREATE PROCEDURE 创建存储过程的方法。2. 掌握使用 SQL 语句 CALL 调用存储过程的方法。3. 掌握使用 SQL 语句 ALTER PROCEDURE 修改存储过程的方法。4. 掌握使用 SQL 语句 DROP PROCEDURE 删除存储过程的方法。5. 掌握使用 CREATE FUNCTION 创建存储函数的方法。6. 掌握使用 SQL 语
-
Mysql数据库实验及练习题相关
一、实验目的
1. 掌握通过SQL语句CREATE PROCEDURE创建存储过程的方法。
2. 掌握使用SQL语句CALL调用存储过程的方法。
3. 掌握使用SQL语句ALTER PROCEDURE修改存储过程的方法。
4. 掌握使用SQL语句DROP PROCEDURE删除存储过程的方法。
5. 掌握使用CREATE FUNCTION创建存储函数的方法。
6. 掌握使用SQL语句ALTER FUNCTION修改存储函数的方法。
7. 掌握使用SQL语句DROP FUNCTION删除存储函数的方法。
二、实验内容
1. 输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名的学生的各科成绩。
DELIMITER @@
CREATE PROCEDURE stu_info(IN name CHAR(8))
BEGIN
SELECT s.学号,姓名,课程编号,分数 FROM student_info s,grade g
WHERE s.学号=g.学号 and 姓名=name;
END @@
使用CALL命令执行存储过程stu_info,其参数值为'张青平'。
DELIMITER ;
CALL stu_info('张青平');
2. 使用studentsdb数据库中的student_info表、curriculum表、grade表。
(1)创建一个存储过程stu_grade,查询学号为0001的学生的姓名、课程名称、分数。
- 调用存储过程stu_grade。
3. 使用studentsdb数据库中的student_info表、curriculum表、grade表。
(1)创建存储过程stu_name,当任意输入一个学生的姓名时,查看其课程的最高分、最低分、平均分。
(2)调用存储过程stu_name。
- 删除存储过程stu_name。
4. 使用studentsdb数据库中的grade表。
(1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生选修课程的门数。
(2)执行存储过程stu_g_r,输入学号0002。
(3)显示0002号学生的选课门数。
5. 使用studentsdb数据库中的curriculum表、grade表。
(1)创建一个存储函数num_func,统计指定课程名称的选课人数。
(2)执行存储函数num_func,查看“C语言程序设计”选课人数。
6. 使用studentsdb数据库中的curriculum表、grade表。
(1)创建一个存储函数avg_func,通过游标统计指定课程的平均分。
- 执行存储函数avg_func,查看“C语言程序设计”课程平均分。
- 删除存储函数avg_func。
三、实验思考
1. 存储函数和存储过程如何将运算结果返回给外界?
存储函数通过RETURN将RETURNS声明的数据类型返回,只能返回值或者对象;
存储过程则可以返回传入的OUT或者INOUT类型的参数。
2.存储函数有OUT参数、INOUT参数吗?
没有。
3. 使用游标的步骤。
声明游标、打开游标、提取数据、关闭游标。
DECLARE 游标名字 CURSOR FOR SELECT 语句;
OPEN 游标名;
FETCH 游标名 INTO 变量名1[, 变量名2……];
CLOSE 游标名;
四、实验数据
1. 输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名的学生的各科成绩。
DELIMITER @@
CREATE PROCEDURE stu_info(IN name CHAR(8))
BEGIN
SELECT s.学号,姓名,课程编号,分数 FROM student_info s,grade g
WHERE s.学号=g.学号 and 姓名=name;
END @@
使用CALL命令执行存储过程stu_info,其参数值为'张青平'。
DELIMITER ;
CALL stu_info('张青平');

2. 使用studentsdb数据库中的student_info表、curriculum表、grade表。
(1)创建一个存储过程stu_grade,查询学号为0001的学生的姓名、课程名称、分数。

- 2调用存储过程stu_grade。


3. 使用studentsdb数据库中的student_info表、curriculum表、grade表。
(1)创建存储过程stu_name,当任意输入一个学生的姓名时,查看其课程的最高分、最低分、平均分。

(2)调用存储过程stu_name。
![]()

- 删除存储过程stu_name。
![]()
4. 使用studentsdb数据库中的grade表。
(1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生选修课程的门数。

(2)执行存储过程stu_g_r,输入学号0002。

(3)显示0002号学生的选课门数。
![]()
5. 使用studentsdb数据库中的curriculum表、grade表。
(1)创建一个存储函数num_func,统计指定课程名称的选课人数。

(2)执行存储函数num_func,查看“C语言程序设计”选课人数。
![]()
6. 使用studentsdb数据库中的curriculum表、grade表。
(1)创建一个存储函数avg_func,通过游标统计指定课程的平均分。

- 2执行存储函数avg_func,查看“C语言程序设计”课程平均分。
![]()
- 3删除存储函数avg_func。
![]()
五、理解及感悟
通过本次实验,让我对于存储过程和存储函数的创建、调用和删除有了进一步的了解。同时对与结合游标的运用也有了更加深刻的认识。
更多推荐


所有评论(0)