1.什么是存储过程
- 是一组为了完成特定功能的sql语句集合
- 经编译后保存在数据库中
- 通过指定存储过程的名字并给出参数的值
- 可带参数,也可返回结果
- 可包含数据操纵语句、变量、逻辑控制语句等
- 使数据库引擎更加灵活和强大
2.使用存储过程的目的
- 提高性能:存储过程将一组sql语句封装在一个单元中,在执行过程中可以减少网络传输开销,提高查询效率。
- 代码复用:存储过程允许将常用的sql逻辑封装在一个过程中,以便在需要时重复使用。可以减少工作量和代码的维护性。
- 网络传输减少:存储过程可以减少数据库服务器之间的网络传输次数。
- 数据处理和业务逻辑分离:通过将业务逻辑封装在存储过程中,可以将数据处理和业务逻辑层分离开来,提高系统的可维护性和扩展性。
- 安全性控制:存储过程可以实现对数据库的权限控制,只允许特定的用户或角色执行某些操作,从而保护敏感数据。
3.创建存储过程
1.创建存储过程语法
CREATE PROCEDURE 存储过程名称 ([ 参数列表 ])
BEGIN
-- SQL语句
END ;
CREATE PROCEDURE p1()
BEGIN
SELECT count(*) FROM account;
END;
2.调用语法
CALL 名称 ([ 参数 ]);
CALL p1();
3.查看存储过程
show PROCEDURE STATUS; -- 查看数据库中已创建的存储过程
show procedure status where DB = '数据库名称'; --查看指定数据库存储过程
SHOW CREATE PROCEDURE 存储过程名称 ; -- 查询某个存储过程的定义
SHOW CREATE PROCEDURE p1;
4.删除存储过程
DROP PROCEDURE [ IF EXISTS ] 存储过程名称 ;
drop PROCEDURE IF EXISTS p1;
4.存储过程中的变量
在MySQL中变量可以分为三种类型:系统变量、用户定义变量、局部变量
一、系统变量
#查看系统变量
SHOW [ SESSION | GLOBAL ] VARIABLES ; -- 查看所有系统变量
SHOW [ SESSION | GLOBAL ] VARIABLES LIKE '......'; -- 可以通过LIKE模糊匹配方 式查找变量
SELECT @@[SESSION | GLOBAL] 系统变量名; -- 查看指定变量的值
#设置系统变量
SET [ SESSION | GLOBAL ] 系统变量名 = 值;
SET @@[SESSION | GLOBAL]系统变量名 = 值;
二、用户自定义变量
SET @var_name = expr ;
SET @var_name := expr ;
三、局部变量
DECLARE 变量名 变量类型 [DEFAULT ... ] ;
变量类型就是数据库字段类型(INT,BIGINT,CHAR,VARCHAR,DATE,TIME等)
5.存储过程的控制语句
一、IF条件语句
IF 条件1 THEN
.....
ELSEIF 条件2 THEN
.....
ELSE
.....
END IF;
二、case条件语句
CASE
WHEN 条件 THEN 语句列表
[WHEN 条件 THEN 语句列表]
[ELSE 语句列表]
END CASE;
三、while循环
#首先判断条件是否成立。如果成立,则执行循环体
WHILE 条件 DO
SQL逻辑...
END WHILE;
四、repeat循环
#先执行循环操作再判断循环条件
REPEAT
SQL逻辑...
UNTIL 条件
END REPEAT;
五、loop循环
#不需判断初始条件,直接执行循环体
[label:] LOOP
语句列表
END LOOP [label] ;
标签:语句,存储,变量,--,MySQL,过程,PROCEDURE
From: https://blog.51cto.com/u_16194379/7086751