您现在的位置是:首页 >技术教程 >第57讲:MySQL存储过程的概念以及基本使用网站首页技术教程

第57讲:MySQL存储过程的概念以及基本使用

Jiangxl~ 2023-05-17 12:00:04
简介第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';

image-20220610181956863

2.5.查询存储过程的定义语句

show create procedure proc_1G;

2.6.删除存储过程

mysql> drop procedure proc_2;
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。