-
Mysql数据库实验及练习题相关
MySQL 数据库和表的管理-数据库实验一
MySQL连接查询、索引、视图-数据库实验二、实验三
MySQL约束、触发器-数据库实验四
MYSQL存储过程和存储函数-数据库实验五
MySQL批量随机生成name、TEL、idNumber
MYSQL数据库的安全管理-数据库实验六
MYSQL数据库安全性练习题
MYSQL数据库的备份与恢复-数据库实验七
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。
五、理解及感悟
通过本次实验,让我对于存储过程和存储函数的创建、调用和删除有了进一步的了解。同时对与结合游标的运用也有了更加深刻的认识。