文章目录
- 前言
- 🍁一、 简介
- 🍁 二、使用
前言
本文结合本人工作10年经验,对MySQL存储过程做了详细的说明~
🍁一、 简介
🍃 1.1 原理
我们常用的操作数据库语言 SQL 语句在执行的时候需要要先编译,然后执行,
而存储过程(Stored Procedure)是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
🍃 1.2 优点
(1).存储过程增强了 SQL 语言的功能和灵活性。
(2).存储过程允许标准组件是编程。
(3).存储过程能实现较快的执行速度。
(4).存储过程能过减少网络流量。
(5).存储过程可被作为一种安全机制来充分利用。MySQL 5.0 终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,
同时也可以提高数据库编程的灵活性。
🍁 二、使用
🍃 2.1 常用命令
##删除
drop PROCEDURE pro_count_mysql
##创建
CREATE PROCEDURE pro_count_mysql(OUT P_o_cnt int)
BEGIN
SELECT COUNT(*) INTO P_o_cnt FROM mysql.user;
END;
##调用,给一个变量
call pro_count_mysql(@s);
##查询变量
mysql> select @s;
##数据字典
mysql> SHOW CREATE PROCEDURE proc6;
mysql> SHOW PROCEDURE STATUS --列出所有的存储过程
mysql> show procedure status where db=‘mes_db’;
注:部分版本mysql初始化不允许建存储过程,需要做如下设置
SET GLOBAL log_bin_trust_function_creators = 1;
🍃 2.2 变量定义
#外部变量
mysql> set @p1=‘IT邦德’;
mysql> select @p1;内部定义变量用declare,如下所示
🍃 2.3 参数
in 参数
inout 参数
🍁 三、实战案例
🍃 3.1 条件语句
mysql> create table t1(id int);
🍃 3.2 循环语句
mysql> create table t2(id int);
🍃 3.3 动态生成表
##学生表
select * from tb_student
##成绩表
select * from tb_score
选课表
select * from tb_course
编写一个存储过程,
要求对每门已选课程生成成绩表,表名为课程名,成绩表的字段包括学号、姓名、班级、成绩。
如果能独立完成,证明你的数据库应用能力已经跃上了一个台阶
大家点赞、收藏、关注、评论啦 👇🏻👇🏻👇🏻微信公众号👇🏻👇🏻👇🏻