首页 > 数据库 >MySQL存储过程

MySQL存储过程

时间:2023-08-15 13:08:13浏览次数:32  
标签:语句 存储 变量 -- MySQL 过程 PROCEDURE

1.什么是存储过程

  • 是一组为了完成特定功能的sql语句集合
  • 经编译后保存在数据库中
  • 通过指定存储过程的名字并给出参数的值
  • 可带参数,也可返回结果
  • 可包含数据操纵语句、变量、逻辑控制语句等
  • 使数据库引擎更加灵活和强大

2.使用存储过程的目的

  1. 提高性能:存储过程将一组sql语句封装在一个单元中,在执行过程中可以减少网络传输开销,提高查询效率。
  2. 代码复用:存储过程允许将常用的sql逻辑封装在一个过程中,以便在需要时重复使用。可以减少工作量和代码的维护性。
  3. 网络传输减少:存储过程可以减少数据库服务器之间的网络传输次数。
  4. 数据处理和业务逻辑分离:通过将业务逻辑封装在存储过程中,可以将数据处理和业务逻辑层分离开来,提高系统的可维护性和扩展性。
  5. 安全性控制:存储过程可以实现对数据库的权限控制,只允许特定的用户或角色执行某些操作,从而保护敏感数据。

3.创建存储过程

1.创建存储过程语法

CREATE PROCEDURE 存储过程名称 ([ 参数列表 ])
BEGIN
-- SQL语句
END ;

CREATE PROCEDURE p1()
BEGIN
	SELECT count(*) FROM account;
END;

2.调用语法

CALL 名称 ([ 参数 ]);
CALL p1();

3.查看存储过程

show PROCEDURE STATUS; -- 查看数据库中已创建的存储过程

show procedure status where DB = '数据库名称'; --查看指定数据库存储过程
SHOW CREATE PROCEDURE 存储过程名称 ; -- 查询某个存储过程的定义
SHOW CREATE PROCEDURE p1;

MySQL存储过程_数据库

4.删除存储过程

DROP PROCEDURE [ IF EXISTS ] 存储过程名称 ;
drop PROCEDURE IF EXISTS  p1;

4.存储过程中的变量

在MySQL中变量可以分为三种类型:系统变量、用户定义变量、局部变量

一、系统变量

#查看系统变量

SHOW [ SESSION | GLOBAL ] VARIABLES ; -- 查看所有系统变量
SHOW [ SESSION | GLOBAL ] VARIABLES LIKE '......'; -- 可以通过LIKE模糊匹配方 式查找变量
SELECT @@[SESSION | GLOBAL] 系统变量名; -- 查看指定变量的值

#设置系统变量

SET [ SESSION | GLOBAL ] 系统变量名 = 值;
SET @@[SESSION | GLOBAL]系统变量名 = 值;

二、用户自定义变量

SET @var_name = expr ;
SET @var_name := expr ;

三、局部变量

DECLARE 变量名 变量类型 [DEFAULT ... ] ;

变量类型就是数据库字段类型(INT,BIGINT,CHAR,VARCHAR,DATE,TIME等)

5.存储过程的控制语句

一、IF条件语句

IF 条件1 THEN
	.....
ELSEIF 条件2 THEN 
	.....
ELSE 
	.....
END IF;

二、case条件语句

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

三、while循环

#首先判断条件是否成立。如果成立,则执行循环体

WHILE 条件 DO
SQL逻辑...
END WHILE;

四、repeat循环

#先执行循环操作再判断循环条件

REPEAT
SQL逻辑...
UNTIL 条件
END REPEAT;

五、loop循环

#不需判断初始条件,直接执行循环体

[label:] LOOP

   语句列表

END LOOP [label] ;

标签:语句,存储,变量,--,MySQL,过程,PROCEDURE
From: https://blog.51cto.com/u_16194379/7086751

相关文章

  • 使用Logstash同步Mysql到Easysearch
    从Mysql同步数据到ES有多种方案,这次我们使用ELK技术栈中的Logstash来将数据从Mysql同步到Easysearch。方案前提Mysql表记录必须有主键,比如id字段。通过该字段,可将Easysearch索引数据与Mysql表数据形成一对一映射关系,支持修改。Mysql表记录必须有时间字段,......
  • MySQL 执行计划详解
    1.EXPLAIN详解本文基于MySQL8.0编写,理论支持MySQL5.0及更高版本。2.EXPLAIN使用2.1explain分析SQL的执行计划{EXPLAIN|DESCRIBE|DESC}tbl_name[col_name|wild]{EXPLAIN|DESCRIBE|DESC}[explain_type]{explainable_stmt|FORCONNECTIONconne......
  • Nacos2 + Mysql8 作为数据源的建表语句
    在MySQL中创建nacos用户,MySQL创建名为Nacos的Schema,并授权nacos用户可以访问。语句如下:mysql>createuser'nacos'@'%'identifiedby'password';mysql>createschemanacos;mysql>grantALLonnacos.*to'nacos'@'%';或者直接新建一个n......
  • 使用Logstash同步Mysql到Easysearch
    从Mysql同步数据到ES有多种方案,这次我们使用ELK技术栈中的Logstash来将数据从Mysql同步到Easysearch。方案前提Mysql表记录必须有主键,比如id字段。通过该字段,可将Easysearch索引数据与Mysql表数据形成一对一映射关系,支持修改。Mysql表记录必须有时间字段,以支持......
  • 数据存储与持久化的重要性
    在后端开发中,数据存储与持久化是至关重要的,它涉及将应用程序的数据保存在持久层,以确保数据的安全性和可靠性。不同的数据存储选项适用于不同的场景和需求。关系型数据库关系型数据库(如MySQL、PostgreSQL、Oracle)使用表格来存储数据,并通过关系(键值)将表格连接起来。这种结构有助于处......
  • ActivityManagerService启动过程-1
    基于Android6.0的源码frameworks/base/core/java/android/app/-ActivityThread.java-LoadedApk.java-ContextImpl.javaframeworks/base/services/java/com/android/server/-SystemServer.javaframeworks/base/services/core/java/com/android/server/-......
  • SQL: 打印存储过程
    打印SAPbusinessone 9.2 存储过程代码  useSAPB1--SAPBUSINESSONE9.2GODECLAREC_SPCURSORFORSELECTOBJ.NAMEASSTORE_PROCEDURE,CASEWHENRS.DEFINITIONISNULLTHENN'加密'ELSEN'未加密'ENDAS[IS_ENCRYPT],......
  • mysql添加索引的方法(Navicat可视化加索引和sql语句加索引)
    mysql添加索引的方法(Navicat可视化加索引和sql语句加索引) 使用索引的场景:阿里云日志里出现了慢sql 然后发现publish_works_id字段会经常用于一些关联,所以决定把这个字段加上索引,优化sql可视化navicat操作字段加索引,选择字段所在的表,第一步:右键->设计表第二步......
  • Zabbix监控Mysql主从
    一、主机规划服务器IPzabbix-server192.168.131.12mysql-master,zabbix-agent192.168.131.13mysql-slave,zabbix-agent192.168.131.14二、部署&配置zabbix-server2.1部署zabbix#安装Zabbix仓库。这里部署zabbix6.4wgethttps://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabb......
  • Mysql配置文件设置与了解
    [client]port=3306[mysql]default-character-set=gbk[mysqld]port=3306socket=/tmp/mysql.sock#设置mysql的安装目录basedir=F:\\HzqSoft\\MySqlServer51GA#设置mysql数据库的数据的存放目录,必须是data,或者是\\xxx-datadatadir=F:\\HzqSoft\\MyS......