MYSQL存储过程和存储函数

您所在的位置:网站首页 函数使用过程分几步 MYSQL存储过程和存储函数

MYSQL存储过程和存储函数

2024-07-14 09:47| 来源: 网络整理| 查看: 265

 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。

五、理解及感悟

通过本次实验,让我对于存储过程和存储函数的创建、调用和删除有了进一步的了解。同时对与结合游标的运用也有了更加深刻的认识。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3