您现在的位置是:首页 >技术教程 >第57讲:MySQL存储过程的概念以及基本使用网站首页技术教程
第57讲:MySQL存储过程的概念以及基本使用
简介第57讲:MySQL存储过程的概念以及基本使用
文章目录
1.存储过程的概念
存储过程指的是能够完成特定功能的SQL语句集合,当程序需要完成特定的功能时,就可以直接调用相关的存储过程来完成业务逻辑的实现。在存储过程中可以写入很多的SQL语句以及一些编程逻辑,例如if、while、case、变量等等,将这些SQL语句编译存储在数据库中形成存储空间。
使用数据库时,每一条SQL语句执行时都需要请求数据库,会占用一定的网络资源,当应用程序实现某一个业务功能时,关联了很多条SQL语句,如果还是一条条SQL语句去执行,网络交互就会很频繁,从而影响SQL的效率。
基于这些场景我们可以通过SQL存储过程,将一组含有业务逻辑的多条SQL语句封装在一个集合中,这个集合就是存储过程,当程序要实现某一项功能时,只需要去调用功能所对应的存储过程即可。
存储空间的特点:
- 复用性高且方便维护
- 业务功能的SQL逻辑都封装在一个存储过程中,便于开发同事通过存储过程快速找到某个功能的SQL语句,也便于二次修改维护。
- 执行效率高
- 使用存储过程比执行单条SQL的效率更高,因为一个业务逻辑不可能只有一条SQL,如果有大量的SQL,存储过程只需要执行一次就可以拿到结果,而多条SQL则需要执行很多次。
- 减少网络交互
- 存储过程只需要与数据库建立一次连接、进行一次网络传输就可以实现业务的功能,而多条SQL需要进行多次才能实现。
2.存储过程的基本使用
2.1.存储过程的语法格式
1)创建存储过程
CREATE PROCEDURE 存储过程名称([参数列表])
BEGIN
SQL语句
END;
2)调用存储过程
CALL 存储过程名称([参数列表])
3)查看存储过程
查询指定数据库下所有的存储过程。
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = '数据库名';
查看定义存储过程的语句。
SHOW CREATE PROCEDURE 存储过程名称;
5)删除存储过程
DROP PROCEDURE [ IF EXISTS ] 存储过程名称;
2.2.创建一个存储过程
create procedure proc_1()
begin
select count(*) from ryxxb;
end;
注意在MySQL命令行创建存储过程时,要通过关键字delimiter来修改SQL语句的结束符,否则无法创建存储过程,因为begin和end之间的SQL语句包含了;号,MySQL看见;这个就人为一条语句结束了。
mysql> delimiter $$
mysql> create procedure proc_2()
-> begin
-> select count(*) from ryxxb;
-> end$$
Query OK, 0 rows affected (0.04 sec)
2.3.调用存储过程
存储过程已经创建完毕了,下面来调用存储过程执行其中的SQL语句。
mysql> call proc_1();
+----------+
| count(*) |
+----------+
| 22 |
+----------+
1 row in set (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
proc_1存储过程中只定义了一个统计表中行的SQL。
2.4.查看db_1数据库中有哪些存储过程
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = 'db_1';
2.5.查询存储过程的定义语句
show create procedure proc_1G;
2.6.删除存储过程
mysql> drop procedure proc_2;
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。