mysql数据库之存储过程

news2025/6/28 9:19:19

一、存储过程简介。

存储过程是事先经过编译并存储在数据库中的一段sql语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是也有好处的。

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

二、存储过程的特点

1、封装、重用。

2、可以接受参数,也可以返回数据。

3、减少网络交互 ,效率提升。

三、存储过程的语法。

1、创建存储过程语法。

create procedure 存储过程名称([参数列表])
begin
  --sql语句
end;

示例:创建名字为p1的存储过程

create procedure p1()
begin
  --sql语句
select count(*) from student;
end;

 2、调用。

call 名称([参数]);

示例: 调用

call p1();

3、查看。

#查询指定数据库的存储过程及状态信息
select * from information_schema.routine where routine_schema='xxx';
#查询某个存储过程的定义
show create procedure 存储过程名称;

示例:

#查询黑马数据库的存储过程信息
select * from information_schema.routines where routine_schema = 'itcast';
#查询p1的定义
show create procedure p1;

4、删除。

#如果存在p1就删除(exists设置一个条件,如果存在就删除的条件)
drop procedure exists p1;

5、注意:命令行当中,如果执行创建存储过程的sql时,需要通过关键字delimiter指定sql语句的结束符。

#以$$符结束
delimiter $$;
#设置;为结束
delimiter ;

 四、变量。

1、系统变量。

系统变量是MySQL服务器提供,不是用户自定义的,属于服务器层面,分为全局变量(global)、会话变量(session)。

a.查看系统变量

#查看所有系统变量
show [session | global] variables;
#可以通过like模糊匹配方式查找变量
show [session | global] variables like '......';
示例:查看当前会话auto开头的变量
show [session | global] variables like 'auto%';
#查看指定变量的值
select @@[session | global] 系统变量名;
#示例:查看autocommit变量值。
select @@session或global autocommit;

b.设置系统变量 

#autocommit=0关闭,autocommit=1开启,重启后自动回复默认值
set [session | global] 系统变量名=值;
#示例:将当前系统变量自动提交关闭
set session autocommit=0;
#示例:将全局系统变量自动提交关闭
set global autocommit=0;
#系统变量名=值
select @@[session | global] 系统变量名=值;

注意:

1、如果没有指定session/global,默认是session,会话变量。

2、mysql服务重新启动之后,所设置的全局参数会失效,要想不失效,可以在/etc/my.cnf中配置。

2、用户自定义变量。

用户自定义变量是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用“@变量名”使用就可以,其作用域为当前连接。

a.赋值语法。

#推荐使用:=
set @var_name=expr [,@var_name=expr] ...;
set @var_name:=expr [,@var_name:=expr] ...;

#示例
set @myname = 'itcast';
set @myage := '10';
set @mygender := '男',@myhobby := 'java';


select @var_name:expr [,var_name:expr] ...;
select 字段名 INTO @var_name from 表名;
#示例
select @mycolor := 'red';
select count(*) into @mycount from tb_user;

b.使用。

select @var_name;
#示例
select @myname,@mysge,@mygender,@myhobby;

注意:用户自定义的变量不需要赋值,无需对其进行声明或初始化,只不过获取到的值为null。

3、局部变量。

局部变量是根据需要定义的在局部生效的变量,访问之前,需要declare声明。可用作存储过程内的局部变量和输入参数,局部变量的范围是在其内声明的begin...end块。

#声明局部变量
declare 变量名 变量类型 [default...];

变量类型就是数据库字段类型:int、bigint、char、varchar、date、time等。

赋值

set 变量名 = 值;
set 变量名 := 值;
select 字段名 into 变量名 from 表名...;

示例

create procedure p1()
begin
  #声明局部变量
  declare stu_count int default 0;
  #为局部变量赋值
  select count(*) into stu_count from student;
  #展示赋值之后的结果
  select stu_count;
end;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/386413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql常见面试题总结

1、什么是存储引擎 存储引擎指定了表的类型,即如何存储和索引数据,是否支持事务,同时存储引擎也决定了表在计算机中的存储方式。 2、查看数据库支持哪些存储引擎使用什么命令? -- 查看数据库支持的存储引擎 show engines; 或者 …

百趣代谢组学分享,关于儿童Graves病相关的新环境物质的鉴定

代谢组学文章标题:Identification of Novel Environmental Substances Relevant to Pediatric Graves’ Disease 发表期刊:Frontiers in endocrinology 影响因子:6.055 作者单位:苏州大学附属儿童医院 百趣提供服务&#xf…

外贸建站多少钱才能达到预期效果?

外贸建站多少钱才能达到预期效果?这是每个外贸企业都会问的问题。作为一个做外贸建站多年的人,我有一些个人的操盘感想。 首先,我认为外贸建站的投资是非常必要的。 因为在现代社会,网站已经成为外贸企业开展业务的必要工具之一…

3种方法删除7-Zip压缩包的密码

7-Zip压缩软件是一款完全免费且开源的软件,不仅能压缩和解压7-Zip压缩包,还能给压缩包设置打开密码。 有些小伙伴可能会遇到这样的问题,7-Zip压缩包设置密码后,过了一段时间不需要密码保护了,或者一不小心忘记了密码&…

后端快速上手前端三剑客 HtmlCSSJavaScript

文章目录前言HTML1.基础标签2.多媒体标签:3.表格&列表&布局4.表单CSS1.简介2.导入方式3.选择器JavaScript1.简介2.引入方式3.基本语法4.对象(1) 基本对象(2) BOM对象(3) DOM对象5.事件前言 结构:HTML 表现:CSS 行为:Java…

D. Linguistics(思维 + 贪心)

Problem - D - Codeforces Alina发现了一种奇怪的语言,它只有4个单词:a, B, AB, BA。事实也证明,在这种语言中没有空格:一个句子是通过将单词连接成一个字符串来写的。Alina发现了一个这样的句子,她很好奇:有没有可能它恰好由a个单词a, b个单…

EasyExcel You can try specifying the ‘excelType‘ yourself 异常排查与处理

目录 问题发现 报错信息 问题排查 1、确定异常 2、查询easyexcel源码读取文件源码 3、查看业务代码 优化方案 1、将路径获取文件流的方式换为httpclient获取 2、dug测试修改代码 总结 问题发现 在测试环境测试导入订单,发现订单导入提示数据导入异常。 …

Python dict字典全部操作方法

文章目录一. 介绍二. 字典的创建1. 手动创建2. 使用内置函数dict()创建3. 使用dict.fromkeys()方法创建三. 字典元素的读取1. 下标方式读取Value2. dict.get()读取Value3. keys()方法返回“键”4. values()方法返回“值”5. items()方法返回“键-值”对四. 字典元素的添加与修改…

【20230227】回溯算法小结

回溯法又叫回溯搜索法,是搜索的一种方式。回溯法本质是穷举所有可能。如果想让回溯法高效一些,可以加一些剪枝操作。回溯算法解决的经典问题:组合问题切割问题子集问题排列问题棋盘问题如何去理解回溯法?回溯法解决的问题都可以抽…

hadoop调优

hadoop调优 1 HDFS核心参数 1.1 NameNode内存生产配置 1.1.1 NameNode内存计算 每个文件块大概占用150byte,如果一台服务器128G,能存储的文件块如下 128 (G)* 1024(MB) * 1024(KB) * 1024(Byte) / 150 Byte 9.1 亿 1.1.2 Hadoop2.x 在Hadoop2.x中…

Linux--多线程(3)

目录1. POSIX信号量1.1 概念2. 基于环形队列的生产消费者模型2.1 环形队列的基本原理2.2 基本实现思想3. 多生产多消费1. POSIX信号量 1.1 概念 信号量本质是一个计数器,申请了信号量以后,可以达到预定临界资源的效果。 POSIX信号量和SystemV信号量相同…

【自动包装线标签打印翻转问题沟通】

最近纺丝自动包装线的标签打印机自动打印标签,是翻转状态。) 但是这个打印机它不是平放的,它是通过悬臂安装在半空的中的,是翻转的, 它的标签一个打在侧面,一个打在正前方,打印出来的样子是这样的。 是反…

全国媒体邀约怎么做?邀请媒体有哪些注意事项呢?

传媒如春雨,润物细无声,大家好好多企业或者机构都在参加外地的展览展会,活动会议,或者由于多种方面的考虑,会在公司总部以外的地方去做活动和发布会,在一个相对陌生的地方,不论是活动准备&#…

WebRTC → 多人通讯架构浅析

1、一对一通信模型一对一通信中,WebRTC会先尝试两个终端之间是否可以通过P2P直接进行通信,无法通信时会通过STUN/TURN服务器进行中转;其中STUN/TURN服务器的作用在不能直连时是中继服务器,通过该服务器进行端到端之间的数据中转&a…

数据挖掘多模块接口(二分类)python旗舰版

数据挖掘任务一般分为四大步骤:1、数据预处理2、特征选择3、模型训练与测试4、模型评估本文为四大步骤提供接口,使得能够快速进行一个数据挖掘多种任务中,常见的二分类任务。0. 导包0.1 忽略警告信息:import warnings warnings.fi…

【Java学习笔记】2.Java 开发环境配置

Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境。 window系统安装java 下载JDK 首先我们需要下载 java 开发工具包 JDK,下载地址:https://www.oracle.com/java/technologies/downloads/,在下载页面中根据自己的系统选…

企业寄件现代化管理教程

现代化企业为了跟上时代发展的步伐,在不断完善着管理制度,其中公司寄件管理,也是重要的一个模块。为了提高公司快递的寄件效率,以及节约寄件成本,实现快递寄件的规范化,越来越多的现代化企业,开…

ES linux 环境下安装问题集锦

1: 所有的环境配置安装完成后验证: curl -u elastic http://127.0.0.1:9400 输入密码;2:错误1:解决方法:配置连接的用户名与密码; 重启ES 错误2:[1]: max number of threads [2048] …

前端性能优化:浏览器的2种缓存方式,你了解吗?

在前端性能优化中,最重要的就是缓存,使用缓存可以极大的提升浏览器的响应速率。什么是缓存呢?当我们第一次访问某个网站时,浏览器会把网站中的图片等资源存储在电脑中,以备后续使用,第二次访问该网站时&…

c++继承机制

4-4继承(带参构造)_哔哩哔哩_bilibili 继承机制 4.1继承与派生的概念 继承 是指在已有类或称为基类的基础上创建新类,这个新类就是派生类。 单继承:由一个基类派生的类 多继承:由两个或多个基类派生的类 派生类的…