-
目录
-
介绍
- 存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合
-
好处:
- 提高代码的复用性
- 减少数据在数据库和应用服务器之间的传输,提高效率
- (对于数据库来说,后期要定义在一台或多台服务器上,后面再传输的话肯定会影响效率)
- 减少代码层面的业务处理
-
存储过程和函数的区别(几乎没有区别)
- 存储函数必须有返回值
- 存储过程可以没有返回值
-
创建和调用存储过程
-
创建存储过程
- -- 修改结束分隔符
- delimiter $
- -- 创建存储过程
- create procedure 存储过程名称(参数列表)
- begin
- SQL语句列表
- end$
- -- 修改结束分隔符
- delimiter ;
-
调用存储过程
- call 存储过程名称(实际参数)
-
实例演示
-
数据准备
-
-- 创建学生表 CREATE TABLE student( id INT PRIMARY KEY auto_increment, -- 学生id name VARCHAR(20), -- 学生姓名 age INT, -- 学生年龄 gender VARCHAR(5), -- 学生性别 score INT -- 学生成绩 ); -- 添加数据 INSERT INTO student VALUES (NULL,'张三',23,'男',95),(NULL,'李四',24,'男',98),(NULL,'王五',25,'女',100),(NULL,'赵六',26,'女',90);
-
创建和调用存储过程
-
-- 创建stu_group()存储过程,封装 分组查询总成绩,并按照总成绩升序排序的功能 delimiter $ CREATE PROCEDURE stu_group() BEGIN SELECT gender,SUM(score) getsum FROM student GROUP BY gender ORDER BY getsum ASC; END$ delimiter ;
-
-- 调用stu_group()存储过程 CALL stu_group;
-
存储过程的查看和删除
-
查看数据库中所有的存储过程
- select * from mysql.proc where db='数据库名称'
-
删除存储过程
- drop procedure [if exists] 存储过程名称
-
实例操作
-
-- 查看dp1数据库中所有的存储过程 SELECT * FROM mysql.proc WHERE db='dp1';
-
-- 删除存储过程 DROP PROCEDURE IF EXISTS stu_group;