mysql存储过程

存储过程简介
存储过程是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数的值

MySQL 5.0 版本开始支持存储过程。

存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。

存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。

存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。

 存储过程的优缺点
优点:

1) 封装性

存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的 SQL 语句,并且数据库专业人员可以随时对存储过程进行修改,而不会影响到调用它的应用程序源代码。

2) 可增强 SQL 语句的功能和灵活性

存储过程可以用流程控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。

3) 可减少网络流量

由于存储过程是在服务器端运行的,且执行速度快,因此当客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而可降低网络负载。

4) 高性能

存储过程执行一次后,产生的二进制代码就驻留在缓冲区,在以后的调用中,只需要从缓冲区中执行二进制代码即可,从而提高了系统的效率和性能。

5) 提高数据库的安全性和数据的完整性

使用存储过程可以完成所有数据库操作,并且可以通过编程的方式控制数据库信息访问的权限。

此数据来自知乎大佬 —— Mysql存储过程的详细讲解 - 知乎 (zhihu.com)

缺点:

存储过程,往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的存储过程。
存储过程的性能调校与撰写,受限于各种数据库系统。

创建存储过程

  1. CREATE PROCEDURE 过程名(过程参数)

  2.  [特性]

  3.  存储过程体

常用特性有:

LANGUAGE SQL:存储过程语言,默认值为 SQL
CONTAINS SQL:表示子程序不包含读或写数据的语句
NOT SQL:表示子程序不包含 SQL 语句
READDS SQL DATA:表示子程序包含读数据的语句,但不包含写的语句
MODIFIES SQL DATA:表示子程序包含写数据的语句
如果 2~5 这些特征没有明确指定,默认值为:CONTAINS SQL

SQL SECURITY { DEFINER | INVOKER }:用来指定存储过程的执行权限,默认值为 DEFINER

DEFINER:使用创建者的权限执行
INVOKER:使用执行者的权限执行
 

  1.  DELIMITER //    声明语句分隔符

  2.  CREATE PROCEDURE student(过程参数)   

  3.  BEGIN   过程提的标识

  4.     SELECT * FROM student;

  5.  END

  6.  DELIMITER ;

调用存储过程

CALL 存储过程名(参数列表);

存储过程中的变量

 DECLARE 变量名 数据类型 [DEFAULT 值]

查看存储过程的状态

SHOW PROCEDURE STATUS;

查看存储过程的创建代码

SHOW CREATE PROCEDURE 存储过程名;

修改存储过程

ALTER PROCEDURE 存储过程名 [特性 ……]

删除存储过程

DROP PROCEDURE 存储过程名;


本文为CSDN博主「小简(JanYork)」的原创文章,
原文链接:https://blog.csdn.net/qq_60750453/article/details/124716666

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

璀璨的夜晚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值