iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL之存储过程
  • 241
分享到

MySQL之存储过程

数据库mysqlsql 2023-09-02 17:09:34 241人浏览 八月长安
摘要

我的小站:我的博客 1.1 存储过程简介 存储过程是一组为了完成特定功能的sql语句集合,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数的值 Mysql 5.0 版本开始支持存储过程。 存储过程(Stored Procedur

我的小站:我的博客

1.1 存储过程简介

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

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

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

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

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

1.2 存储过程的优缺点

优点:

1) 封装性

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

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

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

3) 可减少网络流量

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

4) 高性能

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

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

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

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

缺点:

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

1.3 使用存储过程

1. 创建存储过程

使用 CREATE PROCEDURE 语句创建存储过程。语法格式如下

 CREATE PROCEDURE 过程名(过程参数) [特性] 存储过程体

说明

常用特性有:

  1. LANGUAGE SQL:存储过程语言,默认值为 SQL
  2. CONTaiNS SQL:表示子程序不包含读或写数据的语句
  3. NOT SQL:表示子程序不包含 SQL 语句
  4. READDS SQL DATA:表示子程序包含读数据的语句,但不包含写的语句
  5. MODIFIES SQL DATA:表示子程序包含写数据的语句

如果 2~5 这些特征没有明确指定,默认值为:CONTAINS SQL

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

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

下面结合具体实例讲解存储过程的创建过程:

 DELIMITER // CREATE PROCEDURE student(过程参数) BEGIN    SELECT * FROM student; END DELIMITER ;

说明

1)声明语句分隔符

 DELIMITER $$ 或者 DELIMITER //

需注意的是,如果没有声明语句分隔符的话,编译器就会把存储过程当成 SQL 语句处理,这样编译过程就会报错。

2)定义存储过程的参数

mysql 中,存储过程的参数包括 3 种类型

  • IN:输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
  • OUT: 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量);
  • INOUT:输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)。

3)过程提的标识

在定义存储过程的过程体时,需要标识开始和结束。语法格式如下:

 BEGIN …… END 分隔符

2. 调用存储过程

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

3.存储过程中的变量

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

1.4 查看存储过程

1.查看存储过程的状态

类似查看数据库中的数据表信息

 SHOW PROCEDURE STATUS;

2.查看存储过程的创建代码

 SHOW CREATE PROCEDURE 存储过程名;

1.5 修改存储过程

在MySQL中,使用 ALTER PROCEDURE语句可以修改已创建的存储过程,但是仅仅能够修改存储过程时定义的特性。语法格式如下:

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

1.6 删除存储过程

类似删除数据库中的数据表,MySQL用户可以使用 DROP PROCEDURE语句删除已创建的存储过程。语法格式如下:

DROP PROCEDURE 存储过程名;

2. 存储过程的控制语句

2.1 条件语句

1.IF-ELSEIF-ELSE条件语句

IF 条件 THEN 语句列表[ELSEIF 条件 THEN 语句列表][ELSE 语句列表]END IF;

2.CASE条件语句

在 MySQL 中的 CASE 条件语句有两种写法。

第一种语法格式如下:

CASEWHEN 条件 THEN 语句列表[WHEN 条件 THEN 语句列表][ELSE 语句列表]END CASE;

在 CASE 语句中,若条件为真,则相应的 SQL 语句列表来执行。

若没有条件匹配,则在 ELSE 子句里的语句列表被执行。

另外,CASE 语句只返回第一个符合条件的值,剩下的部分将会被自动忽略。

实例:

定义存储过程,输入一个整数,使用 case 语句判断是正数还是负数,代码如下所示:

-- 创建过程create procedure pro_demo(in num int)begincase -- 条件开始when num < 0 then select '负数';when num = 0 then select '不是正数也不是负数';else select '正数';end case; -- 条件结束end;-- 调用过程call pro_demo(1);

运行结果:

正数正数

第二种语法格式如下:

CASE 列名WHEN 条件 THEN 语句列表[WHEN 条件 THEN 语句列表][ELSE 语句列表]END CASE;

实例:

定义存储过程,输入一个整数,使用 case 语句判断是 1 还是 2,代码如下所示:

-- 创建过程create procedure pro_demo(in num int)begincase num -- 条件开始when 1 then select '数值是 1';when 2 then select '数值是 2';else select '不是 1 也不是 2';end case; -- 条件结束end;-- 调用过程call pro_demo(3);

运行结果:

不是 1 也不是 2不是 1 也不是 2

此处实例来自 (398条消息) MySQL---存储过程详解ʜғ的博客-CSDN博客mysql存储过程详解

2.2 循环语句

1)WHILE 循环语句

WHILE 循环语句时最普遍使用的循环语句,它首先判断条件是否成立,若成立,则执行循环体。语法如下:

while 条件 DO循环体end while;

实例:

delimiter //-- 创建过程 使用 while 循环输出 1 到 10 的累加和create procedure pro_demoWhile(in i int)begin    declare num int default 0;    declare sum int default 0;    while num < 10 do -- 循环开始        set num = num + i;        set sum = sum + num;        end while; -- 循环结束    select sum;end;-- 调用过程call pro_demoWhile(1);

运行结果:55

2)LOOP 循环语句

LOOP循环结构不需要判断初始条件,直接执行循环体,知道遇到 LEAVE 语句才退出循环。语法格式如下:

loop_name: LOOP        IF 条件 THEN -- 满足条件时离开循环                LEAVE loop_name;  -- 和 break 差不多都是结束循环        END IF;END LOOP;

实例:

delimiter //-- 创建过程 使用 loop 循环输出 1 到 10 的累加和create procedure pro_demoLoop(i int)begin    declare num int default 0;    declare sum int default 0;    #loop 循环语法:    loop_name:loop        set num = num + i;        set sum = sum + num;        if num >= 10 THEN -- 满足条件时离开循环            leave loop_name;  -- 和 break 差不多都是结束循环        end if;    end loop;    select sum;end;-- 调用过程call pro_demoLoop(1);

运行结果:55

3)REPEAT 循环语句

REPEAT 循环与 LOOP 循环类似,不需要初始条件就可以直接进入循环体。

但是LOOP 循环不同的是,它有退出条件。因此,REPEAT 是执行一次操作后检查条件是否成立。若成立,则结束循环;若不成立,则继续执行下一次循环操作。

这种先执行循环操作再判断循环条件的循环与 Java 中的 do-while 循环类似。语法格式如下:

repeat    循环体until 条件 end repeat;

实例:

delimiter //-- 创建过程 使用 while 循环输出 1 到 10 的累加和create procedure pro_demoRepeat(i int)begin    declare num int default 0;    declare sum int default 0;    # repeat 循环语法    repeat        set num = num + i;        set sum = sum + num;    until num >= 10 end repeat;    select sum;end;-- 调用过程call pro_demoRepeat(1);

运行结果:55

3. 总结

  1. 存储过程是一组为了完成特定功能的 SQL 语句集合,MySQL 从5.0版本之后开始支持存储过程。
  2. 存储过程具有安全性高、减少网络流量等优势,在实际项目开发过程中具有广泛的应用。
  3. 创建存储过程使用 CREATE PROCEDURE 结构,调用存储过程使用 CALL 关键字。
  4. MySQL 存储过程支持多种控制语句,包括条件语句( IF和 CASE )、循环语句(WHILE、LOOP、REPEAT)。

来源地址:https://blog.csdn.net/qq_60750453/article/details/124716666

您可能感兴趣的文档:

--结束END--

本文标题: MySQL之存储过程

本文链接: http://www.lsjlt.com/news/391162.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL之存储过程
    我的小站:我的博客 1.1 存储过程简介 存储过程是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数的值 MySQL 5.0 版本开始支持存储过程。 存储过程(Stored Procedur...
    99+
    2023-09-02
    数据库 mysql sql
  • MySQL存储过程详解 mysql 存储过程
    mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Proce...
    99+
    2024-04-02
  • SQL之存储过程
    文章目录 一、介绍二、基本语法三、变量系统变量自定义变量局部变量 四、条件、循环判断if语法:参数casewhilerepeatloop 五、游标条件处理程序 一、介绍 存储...
    99+
    2023-08-31
    sql 数据库 mysql
  • MySQL进阶篇之存储过程(procedure)
    04、视图/存储过程/触发器 4.1、视图(view) 4.2、存储过程(procedure) 4.2.1、介绍 介绍 存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据...
    99+
    2023-08-19
    mysql 数据库 sql
  • mysql存储过程golang
    随着互联网应用的不断发展,数据存储和处理成为了每一个应用的核心部分。而MySQL是一款开源的关系型数据库管理系统,它被广泛应用于许多企业和Web应用。在MySQL中,存储过程是一种可编程的SQL语句集合,它可以被多次调用和重复使用。本文主要...
    99+
    2023-05-15
  • mysql数据库存储过程之while循环
    一、语法。 while循环是有条件的循环控制语句,满足条件后,再执行循环体中的SQL语句,具体语法为: #先判定条件,如果条件为TRUE,则执行逻辑,否则不执行逻辑while 条件 do SQL逻辑 end while; 二、案例。 计...
    99+
    2023-09-21
    数据库 sql
  • mysql存储过程翻页
    mysql5.6.20版本 开发提了一个需要分页的存储过程需求,刚来时理解是,只要带入一个变量,根据变量计算下值,就直接分页实现了...可结果,创建存储过程的时候报错了...查了很多资料,后来才得知,li...
    99+
    2024-04-02
  • mysql有存储过程吗
    这篇文章主要介绍“mysql有存储过程吗”,在日常操作中,相信很多人在mysql有存储过程吗问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql有存储过程吗”的疑惑有所帮...
    99+
    2024-04-02
  • mysql 存储过程详解
    前言 在项目开发中,经常会遇到这样一种场景,当修改A表的一条数据时,需要关联修改B表、C表甚至其他更多表的数据,为什么会这样呢? 在真实的业务场景中,往往一张表的数据关联的业务是多样的,举例来说,用户在页面上完成一个订单,对服务端来说,与这...
    99+
    2023-08-17
    mysql 存储过程详解 mysql 存储过程使用 mysql 存储过程
  • MySQL系列之五 视图、存储函数、存储过程、触发器
    目录系列教程一、视图 1、视图的创建 2、查看视图定义 3、删除视图 二、存储函数 1、系统函数 2、自定义函数(user-defined function:UDF) 三、存储过程 ...
    99+
    2024-04-02
  • mysql存储过程保存在哪
    mysql 存储过程保存在 mysql.proc 表中,该表存储了存储过程的所有信息,包括名称、定义、创建者和修改时间。 MySQL 存储过程保存在哪里? MySQL 中的存储过程保存...
    99+
    2024-04-22
    mysql
  • 浅谈MYSQL存储过程和存储函数
    目录1. 什么是存储过程和存储函数?2. 创建存储过程3. 创建存储函数4. 存储过程和存储函数的使用5. 带有if语句的存储过程6. 带有循环语句的存储过程7. 带有事务的存储过程8. 带有游标的存储函数9. 存储过程...
    99+
    2023-05-05
    MYSQL存储过程 MYSQL 存储函数
  • MySQL数据库之存储过程怎么创建
    本篇内容介绍了“MySQL数据库之存储过程怎么创建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言:stored procedure 完成...
    99+
    2023-07-02
  • mysql存储过程的简介
    小编给大家分享一下mysql存储过程的简介,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql存储过程:首先操作数据库语言S...
    99+
    2024-04-02
  • mysql存储过程是什么
    这篇文章给大家分享的是有关mysql存储过程是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、定义存储过程(Stored Procedure)是在大型数据库系统中,一组为了...
    99+
    2024-04-02
  • Python 执行 mysql 存储过程
    mysql 创建简单的临时表 tmp create database test; use test; DROP TABLE IF EXISTS `tmp`; CREATE TABLE `tmp` ( `id` int(11...
    99+
    2023-01-30
    存储过程 Python mysql
  • mysql数据的存储过程
    MySQL存储过程是一组预定义的SQL语句集合,可以在数据库中进行预先编译和存储,并在需要时进行调用和执行。存储过程通常用于处理复杂...
    99+
    2023-08-22
    MySQL
  • mysql怎么用存储过程
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-30
  • 关于MySQL的存储过程与存储函数
    目录初识存储过程存储过程语法存储过程调用存储函数的使用语法函数的调用对比存储函数和存储过程初识存储过程 理解:含义: 存储过程(Stored Procedure)是在大型数据库系统中...
    99+
    2023-05-19
    MySQL存储过程 MySQL存储函数
  • 细谈Mysql的存储过程和存储函数
    1 存储过程 1.1 什么是存储过程 存储过程是一组为了完成某项特定功能的sql语句集,其实质上就是一段存储在数据库中的代码,他可以由声明式的sql语句(如CREATE,UPDATE,SELECT等语句...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作