当前位置: 首页 > article >正文

(新手友好)MySQL学习笔记(6):分组查询,正则表达式

目录

分组查询

创建分组

过滤分组

分组查询练习

正则表达式

匹配单个实例

匹配多个实例

正则表达式练习

练习答案

分组查询练习答案

正则表达式练习答案


分组查询

创建分组

        group by 子句根据一个多个字段结果进行分组分组的字段上可以使用countsumavg等聚合函数但是聚合函数不能出现在group by的后边这点where一样。

select 字段1[,字段2,function(字段1),function(字段2),....]
from 表名
group by 字段;

 下面给两个例子区分wheregroup by适用场景

#统计部门ID为20的员工数
select count(*) from emp where deptno=20
#统计每个部门的人数
select deptno,count(*)
from emp
group by deptno;
注意:
  • 如果分组列中具有NULL值,则NULL值将作为一个分组返回,如果列中有多行NULL值,它们将作为一组。
  • group by 子句必须出现在where子句后边,order by子句之前,意思就是分组前过滤出符合where 条件的数据,再将这部分数据按照group by条件进行分组

过滤分组

having 子句having 非常类似where唯一差别where过滤having 过滤分组having 必须group by一起使用

havingwhere区别where分组过滤having分组过滤但是聚合函数count()可以在having使用

举两个例子

#统计部门中员工超过5人的部门的员工数
select deptno,count(*)
from emp 
group by deptno
having count(*) > 5;#统计部门中员工月薪超过1000的员工超过两人的部门的员工数
select deptno,count(*)
from emp
where sal > 1000
group by deptno
having count(*) > 2;

分组查询练习

练习答案仍在最后

1. 查询 公司 有哪 几种 岗位 以及 每个岗位 人数

2.计算每个岗位的最高薪水并且到高进行排序

3.计算每个部门平均薪水

4.计算不同部门不同岗位最高薪水

5.找出每个工作岗位最高薪水manager之外

6.找出每个工作岗位平均薪水显示平均薪水大于2000

正则表达式

        regexp操作符regexp操作符后边跟的就是正则表达式正则表达式作用匹配文本将一个模式正则表达式)一个文本串进行比较

like与regexp区别:

        like匹配整个如果匹配文本列值中出现(没有配合其他通配符)立刻将找不到regexp列值进行匹配如果匹配文本列值中出现regexp将会找到相应行将被返回

下面举个例子帮助理解

#不加通配符时like仅仅会找到名字为s的员工
select * from emp where ename like "s";
#加通配符后like会找到名字包含s的员工
select * from emp where ename like "%s%";
#regexp则会直接找到名字里包含s的员工
select * from emp where ename regexp "s";

匹配单个实例

  • |表示匹配其中之一使用 | 从功能类似or
  • [ ]匹配字段之一[ ]另一种形式or语句例如[123][1|2|3]缩写
  • [ - ]匹配范围使用 - 来定义一个范围例如[1-3],[a-z]
  • \\转义字符多数正则表达式使用单个反斜杠作为转义字符MySQL要求两个反斜杠(MySQL自己解释一个,正则表表达式库解释另一个)

下面有几个例子帮助理解

#查询字段中是否包含a或b
select "acddp" regexp "[ab]";
#查询字段中是否包含1-5的任意一个数字
select "89445687" regexp "[1-5]";
#查询字段中是否包含"[1-5]"字段
select "_ajegdbas" regexp "\\[1-5]";
  • 匹配字符类存在找出你自己经常使用数字所有字母字符或者所有数字字母字符匹配为了更方便工作可以使用预定义字符集称为字符类稍作了解工作上用得到印象找得到就好可以做笔记

说明

[[:alnum:]]

任意字母数字(同[a-zA-Z0-9])

[[:alpha:]]

任意字符(同[a-zA-Z])

[[:blank:]]

空格制表(同[\\t])

[[:cntrl:]]

ASCII控制字符(ASCII 0 到31 和127)

[[:digit:]]

任意数字(同 [0-9])

[[:graph:]]

[:print:] 相同不包括空格

[[:lower:]]

任意小写字母(同[a-z])

[[:print:]]

任意可打印字符

[[:punct:]]

既不在[[:alnum:]]也不[[:cntrl:]]任意字符

[[:space:]]

包括空格在内任意空白字符(同[\\f\\n\\r\\t\\v])

[[:upper:]]

任意大写字母(同[A-Z])

[[:xdigit:]]

任意十六进制数字(同[a-fA-F0-9])

匹配多个实例

  • 常用元字符

元字符

说明

.

匹配任意字符

^

匹配字符串的开始^在[]表示否定

$

匹配字符串结束

几个例子帮助大家理解

#查询字符串中是否包含任意字符+'a'的子字符串
select 'baan' regexp '.a';#'ba'就属于任意字符+'a'的子字符串
#查询字符串开头是否包括'bn'子字符串
select 'baan' regexp '^bn';
#查询字符串结尾是否包括'bn'子字符串
select 'baan' regexp 'bn$';
  • 重复元字符(修饰前一个字符)

元字符

说明

*

任意匹配

+

一个多个匹配(等于{1,})

?

01(等于{0,1})

{n}

指定匹配

{n,}

不少于只等数目匹配

{n,m}

匹配数目范围(m不超过255)

几个例子帮助理解

#查询字符串中是否出现'bn','ban','baan','baaan'等子字符串
select 'baaaaan' regexp 'ba*n';#'*'仅仅修饰'a'字符
#查询字符串中是否出现'ban','baan','baaan'等'a'不少于1个的子字符串
select 'baaaan' regexp 'ba{1,}n';#同样的'{1,}'仅修饰'a'字符

正则表达式练习

利用正则表达式进行查询结果写出来(字串存在为1或不存在为0),答案同样放在最后

select 'baan' regexp '^ba*n';
select 'bn' regexp '^ba*n';
select 'bn' regexp '^ba+n';
select 'bn' regexp '^ba?n';
select 'baan' regexp '^ba?n';select 'pin' regexp 'pi|apa';
select 'pin' regexp '^(pi|apa)$';
select 'apa' regexp '^(pi|apa)$';
select 'pin' regexp '^(p|qin)$';
select 'pin' regexp '^([pq]in)$';select 'fofo' regexp '^fo';
select 'fo\no' regexp '^fo\no$';
select 'fo\no' regexp '^fp\\no';
select 'fo\eo' regexp '^fo\\eo$';
select 'fo\|o' regexp '^fo\\|o$';
select 'fofo' regexp '^fo';

练习答案

分组查询练习答案

#查询该公司有哪几种岗位以及每个岗位的人数
select job,count(*)
from emp
group by job;
#计算每个岗位的最高薪水,并且由低到高进行排序
select job,max(sal)
from emp
group by job
order by max(sal) desc;
#计算每个部门平均薪水
select deptno,avg(sal)
from emp 
group by deptno;
#计算不同部门不同岗位的最高薪水
select deptno,job,max(sal)
from emp 
group by deptno,job;
#找出每个工作岗位的最高薪水,除manager之外
select job,max(sal)
from emp 
where job not like "manager"
group by job;
#找出每个工作岗位的平均薪水,显示平均薪水大于2000的
select job,avg(sal)
from emp 
group by job
having avg(sal) > 2000;

正则表达式练习答案

select 'baan' regexp '^ba*n';#1
select 'bn' regexp '^ba*n';#1
select 'bn' regexp '^ba+n';#0
select 'bn' regexp '^ba?n';#1
select 'baan' regexp '^ba?n';#0select 'pin' regexp 'pi|apa';#1
select 'pin' regexp '^(pi|apa)$';#0
select 'apa' regexp '^(pi|apa)$';#1
select 'pin' regexp '^(p|qin)$';#0
select 'pin' regexp '^([pq]in)$';#1select 'fofo' regexp '^fo';#1
select 'fo\no' regexp '^fo\no$';#1
select 'fo\no' regexp '^fp\\no';#0
select 'fo\eo' regexp '^fo\\eo$';#1
select 'fo\|o' regexp '^fo\\|o$';#1
select 'fofo' regexp '^fo';#1

相关文章:

(新手友好)MySQL学习笔记(6):分组查询,正则表达式

目录 分组查询 创建分组 过滤分组 分组查询练习 正则表达式 匹配单个实例 匹配多个实例 正则表达式练习 练习答案 分组查询练习答案 正则表达式练习答案 分组查询 创建分组 group by 子句:根据一个或多个字段对结果集进行分组,在分组的字段上…...

台式机电脑CPU天梯图2025年6月份更新:CPU选购指南及推荐

组装电脑选硬件的过程中,CPU的选择无疑是最关键的,因为它是最核心的硬件,关乎着一台电脑的性能好坏。对于小白来说,CPU天梯图方便直接判断两款CPU性能高低,准确的说,是多核性能。下面给大家分享一下台式机电脑CPU天梯图2025年6月版,来看看吧。 桌面CPU性能排行榜2025 台…...

【hadoop】Flink安装部署

一、单机模式 步骤: 1、使用XFTP将Flink安装包flink-1.13.5-bin-scala_2.11.tgz发送到master机器的主目录。 2、解压安装包: tar -zxvf ~/flink-1.13.5-bin-scala_2.11.tgz 3、修改文件夹的名字,将其改为flume,或者创建软连接…...

将单体架构项目拆分成微服务时的两种工程结构

一.独立Project 1.示意图 此时我们创建一个文件夹,在这个文件夹中,创建N个Project,每一个Project对应一个微服务,组成我们的最终的项目。 2.特点 适合那种超大型项目,比如淘宝,但管理负担比较重。 二.Mave…...

Unity3D 开发中的创新技术:解锁 3D 开发的新境界

在 3D 开发的广袤天地里,Unity3D 一直是众多开发者的得力伙伴。可如今,普通的开发方式似乎难以满足日益增长的创意与效率需求。你是否好奇,凭什么别家团队能用 Unity3D 打造出令人拍案叫绝的 3D 作品,自己却总感觉差了那么一点火候…...

UOS 20 Pro为国际版WPS设置中文菜单

UOS 20 Pro为国际版WPS设置中文菜单 查看UOS操作系统系统安装国际版wps并汉化方法1:下载zh_CN.tar.gz语言包方法2:手动从国内版wps12的包中提取中文菜单解压国内版wps的包 复制中文语言包到wps国际版目录下安装Windows字体 安装开源office 查看UOS操作系统系统 # 查…...

树莓派系统中设置固定 IP

在基于 Ubuntu 的树莓派系统中,设置固定 IP 地址主要有以下几种方法: 方法一:使用 Netplan 配置(Ubuntu 18.04 及以上版本默认使用 Netplan) 查看网络接口名称 在终端输入ip link或ip a命令,查看当前所使…...

单例模式与锁(死锁)

目录 线程安全的单例模式 什么是单例模式 单例模式的特点 饿汉实现方式和懒汉实现方式 饿汉⽅式实现单例模式 懒汉⽅式实现单例模式 懒汉⽅式实现单例模式(线程安全版本) 单例式线程池 ThreadPool.hpp threadpool.cc 运行结果 线程安全和重⼊问题 常⻅锁概念 死…...

LLM基础2_语言模型如何文本编码

基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 字节对编码(BPE) 上一篇博文说到 为什么GPT模型不需要[PAD]和[UNK]? GPT使用更先进的字节对编码(BPE),总能将词语拆分成已知子词 为什么需要BPE? 简…...

理解世界如淦泽,穿透黑幕需老谋

理解世界如淦泽,穿透黑幕需老谋 卡西莫多 2025年06月07日 安徽 极少主动跟别人提及恩师的名字,生怕自己比孙猴子不成器但又比它更能惹事的德行,使得老师跟着被拖累而脸上无光。不过老师没有象菩提祖师训诫孙猴子那样不能说出师傅的名字&a…...

如何确定微服务的粒度与边界

确定微服务的粒度与边界 在完成初步服务拆分之后,架构师往往会遇到另一个难题:该拆到多细?哪些功能可以归并为一个服务,哪些又必须单独部署?这就是“服务粒度与边界”的问题。本节将围绕实际架构经验,介绍…...

第三讲 Linux进程概念

1. 冯诺依曼体系结构 我们买了笔记本电脑, 里面是有很多硬件组成的, 比如硬盘, 显示器, 内存, 主板... 这些硬件不是随便放在一起就行的, 而是按照一定的结构进行组装起来的, 而具体的组装结构, 一般就是冯诺依曼体系结构 1.1. 计算机的一般工作逻辑 我们都知道, 计算机的逻…...

stm32-c8t6实现语音识别(LD3320)

目录 LD3320介绍: 功能引脚 主要特色功能 通信协议 端口信息 开发流程 stm32c8t6代码 LD3320驱动代码: LD3320介绍: 内置单声道mono 16-bit A/D 模数转换内置双声道stereo 16-bit D/A 数模转换内置 20mW 双声道耳机放大器输出内置 5…...

Vue作用域插槽

下面,我们来系统的梳理关于 **Vue 作用域插槽 ** 的基本知识点: 一、作用域插槽核心概念 1.1 什么是作用域插槽? 作用域插槽是 Vue 中一种反向数据流机制,允许子组件将数据传递给父组件中的插槽内容。这种模式解决了传统插槽中父组件无法访问子组件内部状态的限制。 1.2…...

「数据分析 - NumPy 函数与方法全集」【数据分析全栈攻略:爬虫+处理+可视化+报告】

- 第 104 篇 - Date: 2025 - 06 - 05 Author: 郑龙浩/仟墨 NumPy 函数与方法全集 文章目录 NumPy 函数与方法全集1. 数组创建与初始化基础创建序列生成特殊数组 2. 数组操作形状操作合并与分割 3. 数学运算基础运算统计运算 4. 随机数生成基础随机分布函数 5. 文件IO文件读写 …...

爬虫学习记录day1

什么是逆向? 数据加密 参数加密 表单加密扣js改写Python举例子 4.1 元素:被渲染的数据资源 动态数据 静态数据 如果数据是加密的情况则无法直接得到数据 4.2 控制台:输出界面 4.3 源代码页面 4.4 网络:抓包功能,获取浏…...

agent基础概念

agent是什么 我个人认为agent并没有一个所谓完美的定义,它是一个比较活的概念,就像是你眼中的一个机器人你希望它做什么事,和我眼中的机器人它解决事情的流程,其实是可以完全不同的,没有必要非得搞一个统一的概念或流程来概况它。但我们依然可以概况几个通用的词来描述它…...

MS8312A 车规 精密、低噪、CMOS、轨到轨输入输出运算放大器,用于传感器、条形扫描器

MS8312A 车规 精密、低噪、CMOS、轨到轨输入输出运算放大器,用于传感器、条形扫描器 简述 MS8312A 是双通道的轨到轨输入输出单电源供电运放。它们具有低的失调电压、低的输入电压电流噪声和宽的信号带宽。 低失调、低噪、低输入偏置电流和宽带宽的特性结合使得 …...

计算机二级Python考试的核心知识点总结

以下是计算机二级Python考试的核心知识点总结,结合高频考点和易错点分类整理: 1. **数据类型与运算** ▷ 不可变类型:int, float, str, tuple(重点区分list与tuple) ▷ 运算符优先级:** > * /…...

让音乐“看得见”:使用 HTML + JavaScript 实现酷炫的音频可视化播放器

在这个数字时代,音乐不仅是听觉的享受,更可以成为视觉的盛宴!本文用 HTML + JavaScript 实现了一个音频可视化播放器,它不仅能播放本地音乐、控制进度和音量,还能通过 Canvas 绘制炫酷的音频频谱图,让你“听见色彩,看见旋律”。 效果演示 核心功能 本项目主要包含以下…...

CAD实体对象智能识别

CAD实体对象智能识别 概述 实体对象智能识别能够在CAD图纸中智能识别和匹配相似的实体对象。该系统采用模式匹配算法,支持几何变换(缩放、旋转),并提供了丰富的配置选项和可视化界面。 系统提供两种主要的识别方式:…...

MySQL中的部分问题(2)

索引失效 运算或函数影响列的使用 当查询条件中对索引列用了函数或运算,索引会失效。 例:假设有索引:index idx_name (name) select * from users where upper(name) ALICE; -- 索引失效因为upper(name)会对列内容进行函数处理&#xf…...

【从前端到后端导入excel文件实现批量导入-笔记模仿芋道源码的《系统管理-用户管理-导入-批量导入》】

批量导入预约数据-笔记 前端场馆列表后端 前端 场馆列表 该列表进入出现的是这样的,这儿是列表操作 <el-table-column label"操作" align"center" width"220px"><template #default"scope"><el-buttonlinktype"…...

LabVIEW音频测试分析

LabVIEW通过读取指定WAV 文件&#xff0c;实现对音频信号的播放、多维度测量分析功能&#xff0c;为音频设备研发、声学研究及质量检测提供专业工具支持。 主要功能 文件读取与播放&#xff1a;支持持续读取示例数据文件夹内的 WAV 文件&#xff0c;可实时播放音频以监听被测信…...

MySQL 8.0 绿色版安装和配置过程

MySQL作为云计算时代&#xff0c;被广泛使用的一款数据库&#xff0c;他的安装方式有很多种&#xff0c;有yum安装、rpm安装、二进制文件安装&#xff0c;当然也有本文提到的绿色版安装&#xff0c;因绿色版与系统无关&#xff0c;且可快速复制生成&#xff0c;具有较强的优势。…...

RoseMirrorHA 双机热备全解析

在数字化时代&#xff0c;企业核心业务系统一旦瘫痪&#xff0c;每分钟可能造成数万甚至数十万的损失。想象一下&#xff0c;如果银行的交易系统突然中断&#xff0c;或者医院的挂号系统无法访问&#xff0c;会引发怎样的连锁反应&#xff1f;为了守护这些关键业务&#xff0c;…...

day 18进行聚类,进而推断出每个簇的实际含义

浙大疏锦行 对聚类的结果根据具体的特征进行解释&#xff0c;进而推断出每个簇的实际含义 两种思路&#xff1a; 你最开始聚类的时候&#xff0c;就选择了你想最后用来确定簇含义的特征&#xff0c; 最开始用全部特征来聚类&#xff0c;把其余特征作为 x&#xff0c;聚类得到…...

pandas 字符串存储技术演进:从 object 到 PyArrow 的十年历程

文章目录 1. 引言2. 阶段1&#xff1a;原始时代&#xff08;pandas 1.0前&#xff09;3. 阶段2&#xff1a;Python-backed StringDtype&#xff08;pandas 1.0 - 1.3&#xff09;4. 阶段3&#xff1a;PyArrow初次尝试&#xff08;pandas 1.3 - 2.1&#xff09;5. 阶段4&#xf…...

LLMs 系列科普文(6)

截止到目前&#xff0c;我们从模型预训练阶段的数据准备讲起&#xff0c;谈到了 Tokenizer、模型的结构、模型的训练&#xff0c;基础模型、预训练阶段、后训练阶段等&#xff0c;这里存在大量的术语或名词&#xff0c;也有一些奇奇怪怪或者说是看起来乱七八糟的内容。这期间跳…...

exp1_code

#include <iostream> using namespace std; // 链栈节点结构 struct StackNode { int data; StackNode* next; StackNode(int val) : data(val), next(nullptr) {} }; // 顺序栈实现 class SeqStack { private: int* data; int top; int capac…...