MySQL正则表达式与存储过程

news2024/11/6 9:56:47

一、正则表达式(REGEXP)

1、正则表达式匹配符

字符解释举列
^匹配文本的开始字符’ ^aa ’ 匹配以 aa 开头的字符串
$匹配文本的结束字符’ aa$ ’ 匹配以aa结尾的字符串
.匹配任何单个字符’ a.b '匹配任何a和b之间有一个字符的字符串
*匹配零个或多个在它前面的字符’ ab*c ’ 匹配 c 前面有任意个 b
+匹配前面的字符1次或多次’ ab+ ’ 匹配以 a 开头,后面至少一个 b 的字符串
字符串匹配包含指定的字符串’ aa '匹配含有 aa 的字符串
a1 I a2匹配 a1 或 a2‘aa l bb’ 匹配 aa 或者 bb
[…]匹配字符集合中的任意一个字符‘[abc]’ 匹配 a 或者 b 或者 c
[^…]匹配不在括号中的任何字符’ [^ab] ’ 匹配不包含 a 或者 b 的字符串
匹配前面的字符串n次’ a{2} ’ 匹配含有2个a的字符串
匹配前面的字符串至少n次,至多m次’ f{1,3} ’ 匹配 f 最少1次,最多3次

2 语法

SELECT 选项 FROM 表名 WHERE 选项 REGEXP (模式)

select * from test1 where name regexp '三$';
select * from test1 where age regexp '18|22';
select * from test1 where name regexp '^小|^阿';

二、存储过程

1、概述

存储过程是一组为了完成特定功能的SQL语句集合

存储过程在使用过程中是将常用或者复杂的工作预先使用 SQL 语句写好并用一个指定的名称存储起来,这个过程经编译和优化后存储在数据库服务器中,当需要使用时,只需要调用即可

存储过程在执行上比传统SQL速度更快、执行效率更高。

2、优点

执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率

SQL语句加上控制语句的集合,灵活性高

在服务器端存储,客户端调用时,降低网络负载

可多次重复被调用,可随时修改,不影响客户端调用

可完成所有的数据库操作,也可控制数据库的信息访问权限

3、 创建、调用、查看和删除存储过程

3.1 创建存储过程

DELIMITER $$                                #将语句的结束符号从分号;临时改为两个$$ (可以是自定义)
CREATE PROCEDURE proc()                     #创建存储过程,过程名为Proc, 不带参数
-> BEGIN                                    #过程体以关键字BEGIN开始
-> SELECT * FROM test5;                     #过程体语句(自己根据需求进行编写)
-> END $$                                   #过程体以关键字END结束
DELIMITER ;                                 #将语句的结束符号恢复为分号

实例操作:

mysql> delimiter ##
mysql> create procedure proc()
    -> begin
    -> insert into test3 values (2,'lucy',23);
    -> insert into test3 values (2,'jack',21);
    -> insert into test3 values (4,'nancy',22);
    -> select * from test3;
    -> end ##

3.2 调用存储过程

CALL proc;

3.3 查看存储过程

SHOW CREATE PROCEDURE [数据库.] 存储过程名;      #查看某个存储过程的具体信息(如果在指定库中,库名可以省略)
SHOW CREATE PROCEDURE learn.proc;                 #未省略库名
SHOW CREATE PROCEDURE proc;                     #省略库名
 
SHOW PROCEDURE STATUS [LIKE '%proc%'] \G                #竖列查看

实例操作:

方法一:
show create procedure proc;
show create procedure proc\G;
方法二:
show procedure status like '%proc%';
show procedure status like '%proc%'\G;

 

3.4 存储过程的参数

IN输入参数

  • 表示调用者向过程传入值(传入值可以是字面量或变量)

OUT输出参数

  • 表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)

INOUT输入输出参数

  • 既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

实例操作:

IN 传入参数

mysql> delimiter ##
mysql> create procedure proc1(in iage int)
    -> begin
    -> select * from test5 where age > iage ;
    -> end ##
Query OK, 0 rows affected (0.00 sec)
 
mysql> delimiter ;
mysql> call proc1(21);

OUT输出参数

因为out是向调用者输出参数,不接收输入的参数,所以存储过程里的num为null

#调用了proc2存储过程,输出参数,改变了num变量的值

INOUT输入输出参数

 
调用了proc3存储过程,接受了输入的参数,也输出参数,改变了变量

3.5 删除存储过程

存储过程内容的修改方法是通过删除原有存储过程之后以相同名称创建新的存储过程

DROP PROCEDURE IF EXISTS proc1;

 

4、存储过程的控制语句

4.1 条件控制语句 if-then-else … end if

mysql> delimiter ##                                #修改默认结束符为##
mysql> create procedure proc1(in iage int)         #创建存储过程proc1,参数为iage,数据类型为int
    -> begin                                       #过程体以关键词begin开始
    -> declare var int;                            #定义变量var为int类型
    -> set var=iage*2;                             #设置变量var等于传入参数的2倍
    -> if var >=20 then                            #如果var大于等于20,则执行下面的过程体
    -> update test3 set age=age+1;                 #设置test5中的age+1
    -> else                                        #如果变量var不大于10,则执行下面过程体
    -> update test3 set age=age-1;                 #设置表test5中的age-1
    -> end if;                                     #结束if语句
    -> end ##                                      #结束创建存储过程
Query OK, 0 rows affected (0.00 sec)
 
mysql> delimiter ;                                 #重新修改默认结束符为原来的;
mysql> call proc1(10);                             #调用proc1的存储过程,并传入参数10
Query OK, 6 rows affected (0.00 sec)

4.2 循环语句while … end while

mysql> delimiter ##                       #修改默认结束符为##
mysql> create procedure proc4()           #创建存储过程为proc4
    -> begin                              #过程体以关键字begin开始
    -> declare var int;                   #定义变量var为int类型
    -> set var=0;                         #设置var=0
    -> while var <10 do                   #使用while循环,var要小于10
    -> insert into test5(id) values(var); #满足条件则进行添加数据,内容为变量var
    -> set var=var+1;                     #变量var每次循环后加1
    -> end while;                         #结束while循环
    -> end ##                             #结束创建存储过程
Query OK, 0 rows affected (0.00 sec)
 
mysql> delimiter ;                        #重新修改默认结束符为原来的;
mysql> call proc4;                        #调用proc4存储过程
Query OK, 1 row affected (0.01 sec)

C# 复制 全屏

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

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

相关文章

Webpack4 核心概念

文章目录 Webpack4 核心概念概述安装webpack简单使用配置webpack.config.js配置package.json打包 核心概念modeentry 和 outputentry配置说明output配置说明配置单入口配置多入口 loader安装babel、babel-loader、core-js配置.babelrc配置webpack.config.js配置package.json编写…

107.(cesium篇)cesium椎体上下跳动

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html lang="en"> <

等保2.0常见问题汇总

等保2.0发布后&#xff0c;整个网络安全行业积极学习并按照新规范进行网络系统的部署。然而许多人仍然对等保制度的来历、发展、演变以及贯彻重点存在疑问。等保2.0依然在整个实施流程上由五个标准环节构成&#xff1a;定级、备案、建设整改、等级测评、监督检查五个方面。本文…

Science文章复现(Python):图1 - Aircraft obs(机载的观测 CO2)

之前有写过science文章后处理的复现Science文章复现&#xff08;Python&#xff09;&#xff1a;在机载观测中明显的强烈南大洋碳吸收 在这里是针对图细节的理解&#xff1a; 首先需要下载这个项目 https://github.com/NCAR/so-co2-airborne-obs 这里的环境配置会比较麻烦 con…

Java设计模式 13-命令模式

命令模式 一、智能生活项目需求 看一个具体的需求 1)我们买了一套智能家电&#xff0c;有照明灯、风扇、冰箱、洗衣机&#xff0c;我们只要在手机上安装 app 就可以控制对这些家电工作。 2)这些智能家电来自不同的厂家&#xff0c;我们不想针对每一种家电都安装一个 App&…

怎样实现RPC框架

随着微服务架构的盛行&#xff0c;远程调用成了开发微服务必不可少的能力&#xff0c;RPC 框架作为微服务体系的底层支撑&#xff0c;也成了日常开发的必备工具。当下&#xff0c;RPC 框架已经不仅是进行远程调用的基础工具&#xff0c;还需要提供路由、服务发现、负载均衡、容…

两种QGraphicsItem方式实现橡皮擦功能(矩形选中框)

方法一&#xff1a;继承QGraphicsItem实现橡皮擦功能。&#xff08;gif中红色矩形框&#xff09; 方法二&#xff1a;继承QGraphicsRectItem实现的橡皮擦功能。&#xff08;gif中蓝色矩形框&#xff09; 通过以上GIF可以看出两款橡皮擦都具有位置拖动和大小拖动的功能&#xff…

Nacos必知必会:这些知识点你一定要掌握!

前言 Nacos 是一个开源的服务发现、配置管理和服务治理平台&#xff0c;是阿里巴巴开源的一款产品。 Nacos 可以帮助开发者更好地管理微服务架构中的服务注册、配置和发现等问题&#xff0c;提高系统的可靠性和可维护性。 本文将介绍 Nacos 的必知必会知识点&#xff0c;包括…

Zookeeper基础和简单使用

安装与配置 概念 基于观察者模式设计的分布式服务管理框架&#xff0c;负责存储和管理大家都关心数据&#xff0c;然后接受观察者的注册&#xff0c;一单这些数据的这状态发生了变化&#xff0c;Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应 特点…

当JS遇到加密:解密你的JS代码!

作为一名程序员&#xff0c;我们经常会遇到各种加密算法&#xff0c;比如常见的AES、RSA、MD5等等&#xff0c;但是今天我想和大家聊一聊一个日常生活中比较常见的加密方式——JavaScript加密。 在我们日常浏览网页时&#xff0c;经常会看到一些网站的JavaScript代码经过加密&…

【Redis】布隆过滤器原理与应用

文章目录 原理应用实战总结 布隆过滤器&#xff08;Bloom Filter&#xff09;是 1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。 它的优点是空间效率和查询时间都比一般的算法要好的多&#xff…

AJAX实现搜索联想 自动补全

分析: 1.想实现联想搜索需要数据库的数据支撑,需要进行模糊查询,搜索出所有包含用户输入的关键字信息,并将这些信息都反馈到前端,简化用户输入,从而提高用户的体验。 2.为了提高用户的使用体验&#xff0c;整个页面不能全部刷新&#xff0c;需要局部刷新&#xff0c;为此需要…

Python中的各种报错-一般错误

目录 ValueError: check_hostname requires server_hostname missing 1 required positional argument: self xxx is not a package libpng warning: iCCP: cHRM chunk does not match sRGB check_hostname requires server_hostname python 安装第三方库&#xff0c;超时…

MQTTC数据桥接上云

[小 迪 导 读]&#xff1a;在工业物联网蓬勃发展的背景下&#xff0c;私有化部署已经不能满足当前的发展趋势了&#xff0c;因此dgiot在原有基础上进行创新&#xff0c;将私有化部署的区域数控一体机上的数据通过mqtt桥接的方式上传到云服务器上&#xff0c;完成数据的实时同步…

Baumer工业相机堡盟工业相机软件CameraExplorer常见功能使用说明一

Baumer工业相机堡盟工业相机软件CameraExplorer常见功能使用说明一 Baumer工业相机Baumer工业相机图像采集功能Baumer工业相机图像基本参数设置 Baumer工业相机 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机&#xff0c;可用于各种应用场景&#xff0c;如物体检测、…

【前端提效】-- Chrome浏览器开发者工具使用技巧

介绍一下 DevTools 的一些好用的技巧&#xff0c;它能够很好地帮助你提高生产力和解决问题的能力。 1、打开命令行 或者使用&#xff1a;快捷键 Ctrl Shift P (Mac&#xff1a; ⌘ Shift P ) 命令行可以做很多事情&#xff0c;包括但不限于截图、更换主题等 2、控制 DevT…

暑假线上兼职:300-500元/小时,安利一个大学生也能月入8K的线上兼职

在后台经常收到这样的留言&#xff1a; 快接近暑假了&#xff0c;有没有线上兼职推荐&#xff1f; 如何提升自己的眼界和能力&#xff0c;为之后的职场铺路&#xff1f; 不知道有多少朋友是想提升自己获取资源信息的速度&#xff0c;发展自己的爱好&#xff0c;或者增加第二收入…

用友U8增加查询条件

1、检查要增加的条件是否在该表单中&#xff1b; 2、在查询条件中增加查询条件的管理方案 3、参照ID就是要参照的表 4、数据源&#xff0c;在要增加的表单数据库中查询该字段名&#xff0c;进行增加即可。 select * from purbillvouch where cpbvcode 0000000312 --PurBillV…

调用legend资源,生成地图图例

作者&#xff1a;lly 文章目录 前言一、接口详情二、具体实现三、结果展示 前言 最近很多小伙伴资源关于iServer图例的问题&#xff0c; 接下来我们就来介绍下如何使用iServer legend资源&#xff0c;生成地图图例 一、接口详情 请求示例 {"layerLegends": [{&quo…

达索的天线设计和仿真软件Antenna Magus 2023版本下载与安装配置教程

目录 前言一、Antenna Magus安装二、使用配置总结 前言 Antenna Magus软件是一款用于天线设计和仿真的软件&#xff0c;提供了一个全面的设计工具集&#xff0c;帮助工程师优化天线设计&#xff0c;同时减少设计周期。 Antenna Magus的主要特点&#xff1a; ——高级天线库&…