MySQL高级语句(三)

一、正则表达式(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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MHA高可用与故障切换

一、MHA的概述 1、 MHA的概念 MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故…

前端需要注意和了解的SEO

SEO的基本了解 1.什么是SEO? SEO&#xff08;Search Engine Optimization又叫做搜索引擎优化。是一种方式&#xff1a;利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。 2. 前端怎么理解SEO? 对于SEO引擎&#xff0c;在前端需要的是做出来的网站&#xff0c;页面…

揭秘物联网平台设备管理核心!Java代码示例对比,一篇文章全知道!

《高并发系统实战派》-- 值得拥有 一、 设备管理模块的意义 设备管理模块是物联网平台的核心模块之一&#xff0c;主要负责设备的接入、注册、管理、监控等工作&#xff0c;是构建物联网平台的基础。通过设备管理模块&#xff0c;可以实现对设备的资源动态管理、设备状态实时…

服务(第二十一篇)mysql高级查询语句(二)

①视图表&#xff1a; 视图表是虚拟表&#xff0c;用来存储SQL语句的定义 如果视图表和原表的字段相同&#xff0c;是可以进行数据修改的&#xff1b; 如果两者的字段不通&#xff0c;不可以修改数据。 语法&#xff1a; 创建&#xff1a;create view 试图表名 as ... 查…

vue3项目搭建超详解

vue3安装与目录讲解 文章目录 vue3安装与目录讲解安装node.jsnpm绑定淘宝镜像安装vue脚手架创建vue项目目录解释推荐使用vscode 安装node.js http://nodejs.cn/download/ 根据自己电脑的位数自行下载。可安装到任意盘哈&#xff0c;因为我C盘比较大&#xff0c;我就直接在C盘了…

springboot项目如何优雅停机

文章目录 前言kill -9 pid的危害如何优雅的停机理论步骤优雅方式1、kill -15 pid 命令停机2、ApplicationContext close停机3、actuator shutdown 停机4、ApplicationListener 监听延时停机 前言 相信很多同学都会用Kill -9 PID来杀死进程&#xff0c;如果用在我们微服务项目里…

快速入门matlab——变量练习

学习目标&#xff1a;1.掌握matlab编程中最常用的几种变量类型 2.对变量类型的属性有所熟悉&#xff0c;不要求记忆&#xff0c;知道了解即可 3.要求熟练运用这几种变量类型创建自己的变量 clear all; % 清除Workspace中的所有…

FreeRTOS_移植和配置

目录 1. 什么是FreeRTOS&#xff1f; 2. FreeRTOS 特点 3. FreeRTOS 移植 3.1 验证程序 1. 什么是FreeRTOS&#xff1f; 我们先看 FreeRTOS 的名字&#xff0c;可以分成两部分&#xff1a;Free 和 RTOS&#xff0c;Free 就是免费的、自由的、不受约束的意思&#xff0c;RTO…

ERP、SCM与CRM系统的关系和区别是什么?

在当今数字化时代&#xff0c;企业管理系统扮演着至关重要的角色&#xff0c;而ERP、SCM和CRM系统是其中三个核心组成部分。 虽然它们都在企业管理中发挥着关键作用&#xff0c;但它们各自的功能和应用领域存在一些区别。 我们先来看看&#xff0c;ERP、SCM与CRM系统分别是啥…

DevExpress:报表控件绑定数据库数据源的三种方式(Winform)

1.写在前面 如果你是和我一样&#xff0c;第一次接触DevExpress&#xff0c;并且因为网上资源眼花缭乱无从下手&#xff0c;然后脑子一转直接到DevExpress官网寻找官方使用文档的&#xff0c;那我们的了解顺序应该差不多是一致的。 DevExpress官网&#xff1a;https://www.de…

(十六)数据编辑——图形编辑②

数据编辑——图形编辑② 目录 数据编辑——图形编辑②1.5线要素的延长和裁剪1.5.1线要素延长1.5.2线要素裁剪 1.6要素的变形与缩放1.6.1要素变形操作1.6.2要素缩放操作 1.7要素结点的编辑1.7.1添加结点1.7.2删除结点1.7.3移动结点 1.5线要素的延长和裁剪 单击编辑器下拉菜单&a…

ChatGPT 联网和插件功能,下周起可直接使用,无需排队!

夕小瑶科技说 分享 来源 | 新智元 OpenAI和谷歌&#xff0c;已经打得急红了眼&#xff0c;ChatGPT Plus用户&#xff0c;下周就可以体验联网和插件功能&#xff0c;无需再排队。鲨疯了&#xff0c;真的鲨疯了&#xff01; ChatGPT&#xff0c;下周开始联网&#xff0c;并开放插…

字典翻译EasyTrans简单使用分享

前言 最近太忙了&#xff0c;一直按在项目上摩擦&#xff0c;都没有时间写分享了。今天终于市把所有负责的模块都写完了&#xff0c;本次迭代引入了字典翻译&#xff0c;借这个机会顺便分享下。 一、什么是字典翻译 所谓的字典翻译其实简单理解就是一些不常更新的有键值对属性的…

如何利用python调用API接口获取数据进行测试

一、Python 可以使用 requests 库来调用 API 接口获取数据。以下是基本的步骤&#xff1a; 1.安装 requests 库 pip install requests 2.导入 requests 库 import requests 3.构建 API 请求的 URL 根据 API 文档&#xff0c;构建请求的URL。 例如&#xff0c; https://a…

从BinDiff到0day 在IE中利用CVE-2019-1208

前言 如上所述&#xff0c;CVE-2019-1208是UAF漏洞&#xff0c;这类安全漏洞可以破坏有效数据、引发进程crash、并且可以精心利用最终导致任意代码执行。而对于本文介绍的CVE-2019-1208而言&#xff0c;成功利用此漏洞的攻击者可以获得系统当前用户权限。如果当前用户具有admi…

C++: 计时器类的设计和实现

文章目录 1. 目的2. 功能列表3. 基础功能&#xff1a;获取耗时4. API 设计: Timer 类5. 单元测试6. API 实现 1. 目的 使用 C Class 的形式&#xff0c;封装原本 C语言的获取时间的函数&#xff0c;提供更容易使用的计时器调用。 使用 C03&#xff0c;原因是和先前的线程安全队…

python+vue流浪动物公益科普宠物在线领养网站

使用动物在线领养网站的用户分管理员和用户两个角色的权限子模块。 开发语言&#xff1a;Python 框架&#xff1a;django/flask Python版本&#xff1a;python3.7.7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;PyCharm 系统所要实现的功…

AI 时代,知识工作者的生存指南

最近&#xff0c;大家可能已经见识过 AI 的威力了吧&#xff0c;以 ChatGPT 为代表的 人工智能&#xff08;AI&#xff09;展现出接近人一样的回答水准。 来自 Craft AI Assitant AI 就在那里&#xff0c;是房间里的大象&#xff0c;大家不能总装做对自己没有影响。要知道&…

[架构之路-199] - 可靠性需求与可靠性分析:鱼骨图、故障树分析法FTA、失效模式与影响DFMEA,找到影响故障的主要因素

目录 引言&#xff1a; 第1章 故障树分析法与鱼骨图的比较 1.1 相同点 1.2 区别点 第2章 鱼骨图 第3章 故障树 3.1 示意图 3.2 故障树解读 3.3 故障树常见符号 第4章 产品失效(Failure)模式分析DFMEA 引言&#xff1a; 目标系统/产品的可靠性和性能在客户需求阶段就…

脂溶性荧光染料Cy7标记羧酸Cy7-COOH/Carboxylic acids星戈瑞

CY7-COOH是一种含有羧基的化合物&#xff0c;它的分子式为C37H45ClN2O2&#xff0c;分子量519.12。其化学结构中包含有一个吲哚菁骨架&#xff0c;以及一个羧基&#xff08;COOH&#xff09;官能团。它的分子式为C37H45ClN2O2&#xff0c;分子量519.12。CY7-COOH是一种近红外荧…