MYSQL--存储过程操作
一:概念:
存储过程实际上对标了JAVA当中的方法,两者是相似的,同时需要注意的一点是,MYSQL仅仅在5.0版本之后才出现这种存储操作的过程;
优点:
1.存储过程能够让运行的速度变得更加迅速,仅仅只有首次进行实用的时候需要进行相应的编译,之后再次调用的时候可以直接进行实用
2.存储过程的特点:模块化,代码复用,封装。
二:分类
1.存储过程关键语句
2.变量
3.参数传递
4.分支语句
5.循环语句
6.游标
7.异常处理handler
1.存储过程关键语句:
delimiter (设置启动的标识符);
create procedure (存储过程的名称) (参数传递关键词 参数名称 参数类型);
begin(检索代码)
end (开始设置的标识符);
delimiter ;
2.变量:
1>变量类型:
①:局部变量
②:用户变量
③:参数变量
2>变量介绍:
①:局部变量
范围:顾名思义,局部变量的作用范围比较的小,仅仅只能够作用在存储过程当中的begin--end之间进行实用,一旦超出范围进行调用,检索的时候就无法进行搜索:
关键语句:
delimiter ..;
create procedure ...()begindeclare (局部变量名称) 局部变量的类型 [default ....(初始化)];
-- 开始对于局部变量进行赋值set (局部变量名称) = ...;(其他检索)
end ...;
delimiter ;select (局部变量名称); -- 不成功,因为在存储过程begin-end之外运行
②用户变量:
范围:用户变量的作用范围有所增大,可以作用于当前的会话,也就是作用在当前互联网跟mysql的连接ing
关键语句:
TIPS:
-- 1.需要注意的一点是,对于所有的用户变量,都不需要进行声明,赋值即声明
-- 2.对于所有的用户变量,都能够在存储过程的外面进行调用delimiter ...;
create procedure ...()
begin set (用户变量名称) = ;
end ...;
delimiter ;select (用户变量名称); -- 可以搜索到相应的结果
③参数变量:
参数变量又可以分为两个部分,一个是全局变量,一个是会话变量
1.全局变量:
1>范围:
对于全局变量的修改会影响到一整个的服务器,并且对于全局变量来说,在MYSQL启动的时候由服务器自动对他们进行默认初始化,这些默认值可以通过my.in这个文件进行修改
2>关键语句:
关键使用语句:global
1.查看全局变量:
select global variables(全局变量名称);
2.查看具体的全局变量
show global@@.(相应的全局变量名称);
3.修改全局变量的值
set global (全局变量名称) = new_value;
2.会话变量:
1>作用范围:
对于会话变量,会在每一次建立新的连接的时候,MYSQL会对其进行初始化,将全局变量的值赋值一份用来当作当前新建会话的会话变量
2>关键语句:
1.查看局部变量
select session variables;2.查看具体的局部变量
select @session.(局部变量名称);3.修改局部变量的值
set session (局部变量名称) =new_value;
TIPS: 其实两个变量大体上是一样的,仅仅只有在作用范围上不同,其他的都是一样。因此,如果两个变量都没有修改,那么全局变量跟用户变量的值是一样的,两者并没有区别;
三.参数传递:
1.类型:参数传递主要分为三个,包括有三个部分分别是in,out,inout
2.介绍:
操作:
in:让数据能够进入到存储过程当中进行查询
delimiter \\;
create procedure emp_1(in name varchar(20))
begin select * from emp e where e.name=name; -- 第二个name代表的是传入的参数的名称
end \\;
delimiter ;out:能够让参数进行返回使用
delimiter \\;
create procedure emp_2(in name varchar(20),out id int)
begin select e.id into id from emp e where e.name=name; -- 第二个name代表的是传入的参数的名称
end \\;
delimiter ;call emp_2(‘刘一’,@id);
select @id;inout:能够对于输入的值进行修改,之后再进行返回
delimiter \\;
create procedure emp_3(inout name varchar(20))
begin select * from emp e where e.name=name; -- 第二个name代表的是传入的参数的名称
end \\;
delimiter ;
set name='王老师';
call emp_3(name);
四:分支语句
1.分类:
分支语句主要包括有几个部分,if分支,case分支
2.
①:if分支
关键语句:
if (条件) then 查询;
elseif (条件...) then查询:
else default(设置除了这些之外的其他操作会有什么结果)
endif;delimiter \\;
create procedure pro-1(in single int)
begin
if single=1
-- 如果输入数字为1那么就显示所有的员工信息;then select * from emp;
eles select '错误选项';
endif;
end \\;
delimiter ;有关if的其他小知识:
leava 表示直接离开当前的条件判断 -- 相当于JAVA当中的break;
iterate 表示的是跳过当前的判断 -- 类似于在java当中的continue;
②case分支:
类似于JAVA当中的switch语句
语法一:
case case_value(变量名称)when when_value then select语句when when_value then select语句[else default]
end case;语法二:
casewhen search_condition then select...when search_condition then select...[else default]
end case;
五:循环语句:
循环语句主要可以分为三大类:while , loop ,repeat
循环是一种虽然只会程序当中出现一次,但是能够运行多次的代码
1.while
while循环类似于JAVA当中的while的循环,都是先判断条件,判断正确之后,可以再执行之后的语句,否则结束循环语句:
while(condition_value) do
循环体
end while;加入到存储过程当中:一:在表格当中插入数据,并且为自己控制插入多少条,设置use1存储过程
create table emp1(
id int primary key,
name varchar(20),
user varchar(20)
);delimiter \\;
create procedure use1(in single int)
begin declare i int default 1;
while(i<=single) doinsert into emp1 values(i,concat('user',i),'123456');set i = i+1;
end while;二:在表格当中插入single_0条数据,但是跳过第single_1条数据,设置use2存储过程
delimiter \\;
create procedure use2(in single_0 int,in single_1 int)
begindecalre i int default 1;
w while(i<=single_0) doa if(i = single_1) thenset i = i+1; iterate a;else insert into emp values(i,concat('user',i),'123456');set i = i+1;end if;
end while;
end \\;
delimiter ;
2.repeat循环语句
repeat循环相当于之前在java当中所学习的do-while循环,需要先执行查找语句,之后再进行判断条件语句:
[标签] repeat
循环体;
utile when_value;
end repeat[标签];
3.loop循环
loop循环不需要条件的判断,能够一直进行执行,所以,如果需要跳过循环,那么就需要使用相应的if条件判断,从而跳出这个死循环 -- 对应了java当中的while(true)循环语法:
[循环标签] loop
循环体:
if when_value then....
elseif when_value then...
...leave [循环标签];...
end if;
end loop;
六.游标
1.介绍
游标是一种能够存储查询结果集的数据类型,在存储过程当中可以使用光标对结果进行一定的循环处理
2.使用
光标的使用包括:光标的声明,光标的打开,数值的获取,光标的关闭
-- 声明:
declare 游标名称 cursor for select_statement
-- 打开语法
open 游标名称
-- 取值语法
fetch 游标名称 into decl_name.....
-- 关闭语法
close 游标名称;
七.handler异常处理
1.介绍:
在MYSQL当中,针对一些错误机制进行处理的方法,通过HANDLER的使用,能够在MYSQL查询的过程当中避免一些错误类型的出现;
2.语法:
handler 异常处理声明:declare (handler_action handler)for (condition_value) statement;handler_action:主要包括有三大部分
1.contitue 在错误出现之后继续之后的查询
2.exit 在错误出现之后不再进行之后的查询,直接结束所有的查询
3.UNDO不建议condition_value主要包括以下的几个部分
mysql_error_code
condition_name
SQLWARNING
NOT FOUND 未查询到相应的数据
SQLEXCEPTION SQL查询错误同时的,如果需要使用handler句柄进行异常处理,首先需要考虑:
1.如果发现错误了,之后需要进行什么操作(condition_value)
2.这种错误是什么样的错误类型condition_valueTIPS:需要注意的一点,对于各种声明,顺序是,变量声明,游标声明,handler声明的顺序
相关文章:
MYSQL--存储过程操作
一:概念: 存储过程实际上对标了JAVA当中的方法,两者是相似的,同时需要注意的一点是,MYSQL仅仅在5.0版本之后才出现这种存储操作的过程; 优点: 1.存储过程能够让运行的速度变得更加迅速ÿ…...
C#上位机与三菱PLC的通信09---开发自己的通讯库(A-3E版)
1、A-3E报文回顾 具体细节请看: C#上位机与三菱PLC的通信05--MC协议之QnA-3E报文解析 C#上位机与三菱PLC的通信06--MC协议之QnA-3E报文测试 2、为何要开发自己的通讯库 前面开发了自己的A-1E协议的通讯库,实现了数据的读写,对于封装的通…...
【LeetCode】70. 爬楼梯(简单)——代码随想录算法训练营Day38
题目链接:70. 爬楼梯 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到…...
图数据库 之 Neo4j - Cypher语法基础(5)
节点(Nodes) Cypher使用()来表示一个节点。 () # 最简单的节点形式,表示一个任意无特征的节点,其实就是一个空节点(movie) # 如果想指向一个节点在其他地方,我们可以给节点添加一个变量名(如movie),表示一个变量名为 movie的节点。(:Movie) # 表示一个标签为 Movie 的匿名…...
打造智能物品租赁平台:Java与SpringBoot的实践
✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…...
盘点那些世界名校计算机专业采用的教材
清华、北大、MIT、CMU、斯坦福的学霸们在新学期里要学什么?今天我们来盘点一下那些世界名校计算机专业采用的教材。 书单目录 1.《深入理解计算机系统》(原书第3版)2. 《算法导论》(原书第3版)3. 《计算机程序的构造和…...
编程笔记 Golang基础 013 格式化输入输出
编程笔记 Golang基础 013 格式化输入输出 一、格式化输出1. fmt.Print系列函数2. Printf格式说明3. 格式化布尔类型 二、格式化输入1. fmt.Scan系列函数注意事项 三、练习小结 Go语言中的格式化输入和输出主要通过标准库 fmt 包来实现。主要是输出需要格式化。 一、格式化输出 …...
身份证实名认证接口-简单的身份认证API调用方法
还在为复杂的API调用头疼不已?今天为大家带来一种超简单的身份认证API调用方法,让你的工作效率瞬间起飞! Java调用代码如下: import java.io.*; import okhttp3.*; public class main { public static void main(String []ar…...
数据结构·顺序表
1数据结构简介 学习数据结构与算法之前,一般是先学数据结构,方便之后学习算法,那么数据结构拆开介绍,就是数据 和 结构,数据,生活中到处都是,结构,就是数据存储的方式,即…...
玩转网络抓包利器:Wireshark常用协议分析讲解
Wireshark是一个开源的网络协议分析工具,它能够捕获和分析网络数据包,并以用户友好的方式呈现这些数据包的内容。Wireshark 被广泛应用于网络故障排查、安全审计、教育及软件开发等领域。关于该工具的安装请参考之前的文章:地址 ,…...
静态时序分析:SDC约束命令set_drive详解
相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html 本章将讨论使用set_drive命令,它用于对输入端口的驱动能力建模。首先需要说明的是,默认情况下,DC在STA时默认输入端口的转换时间是0,这对于…...
C#算法(12)—对图像像素做X/Y方向的偏移
我们在上位机开发领域有时候需要对获取的图像的像素做整体的偏移,比如所有像素在X方向上偏移几个像素,或者所有像素在Y方向上偏移几个像素,本文就是开发了像素整体偏移算法来解决这个问题。 比如有一个图像大小为3*3,像素值如下图1,如果我想实现将这个幅图像的像素整体往右…...
说一说Eclipse的项目类型和常用项目的区别
Eclipse在新建项目的时候有很多类型,包括Java project、Web project等等,如下: 那么这些项目类型有什么区别呢?我们在创建项目的时候应该如何选择,了解清楚这一点还是非常重要的,但记住一个出发点ÿ…...
[opencv][windows]cmake opencv opencv_contrib所需的缓存文件下载
这个是windows上源码编译opencvopencv-contrib时候cmake时候缓存文件,只需要将压缩文件夹解压到源码目录下面,cmake-gui上configure时候就不会报错,注意解压后文件夹名字是.cache,文件夹名字不能改变,比如opencv/.cache,有的人解压…...
五步解决 Ubuntu 18.04 出现GLIBC_2.28 not found的解决方法
Ubuntu 18.04 出现GLIBC_2.28 not found的解决方法 参考debian网址https://packages.debian.org/buster/并搜索想要的软件或者工具等,如libc6,有结果如下: 具体就不介绍了,请浏览官网了解。 第一步:添加软件源,在/et…...
【Java EE初阶二十一】http的简单理解(二)
2. 深入学习http 2.5 关于referer Referer 描述了当前页面是从哪个页面跳转来的,如果是直接在地址栏输入 url(或者点击收藏夹中的按钮) 都是没有 Referer。如下图所示: HTTP 最大的问题在于"明文传输”,明文传输就容易被第三方获取并篡改. …...
STM32 与 ARM 谁比较强大?
STM32 和 ARM 是两个不同的概念,STM32 是一种微控制器产品,而 ARM 是一家处理器架构设计和许可的公司。因此,无法简单地比较它们的强大程度。 STM32 是基于 ARM Cortex-M 核的微控制器产品,具有高性能、低功耗、低成本和易于开发等…...
四、分类算法 - 朴素贝叶斯算法
目录 1、朴素贝叶斯算法 1.1 案例 1.2 联合概率、条件概率、相互独立 1.3 贝叶斯公式 1.4 朴素贝叶斯算法原理 1.5 应用场景 2、朴素贝叶斯算法对文本进行分类 2.1 案例 2.2 拉普拉斯平滑系数 3、API 4、案例:20类新闻分类 4.1 步骤分析 4.2 代码分析 …...
Javascript中var和let之间的区别
文章目录 一.变量提升(声)二.let和var的区别 区别: 1、var有变量提升,而let没有; 2、let不允许在相同的作用域下重复声明,而var允许; 3、let没有暂时性死区问题; 4、let创建的全局变量没有给window设置对应…...
不要抱怨,不如抱 Java 运算符吧 (1)
本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
