目录
引言
一、条件查询
(一)比较运算符查询
1.使用匹配符号查询
2.范围查找
(二)逻辑运算符
二、关键字排序
三、分组与聚合函数
四、限制查询
五、别名
(一)设置列别名
(二)设置表别名
(三)as连接语句
总结
引言
在数据库管理和数据分析的世界里,熟练掌握MySQL的高级查询技巧是一项至关重要的技能。本文将带领您深入挖掘MySQL中一些复杂的查询语句,以提升您的数据检索效率和灵活性。
在之前的MySQL基本操作中,介绍了MySQL的基本查询方法,本文主要对查询的一些复杂语句,以及条件的组合用法进行介绍。
一、条件查询
可以根据不同的where条件对数据进行查询
(一)比较运算符查询
常用的比较运算符有一下几种
| 比较运算符 | 功能 | 
| > 或!= | 大于 | 
| >= | 大于等于 | 
| < | 小于 | 
| <= | 小于等于 | 
| = | 等于 | 
| <>或!= | 不等于 | 
| BETWEEN ... AND ... | 在某个范围之内(含最小、最大值) | 
| IN(..) | 在in之后的列表中的值 | 
| LIKE 占位符 | 模糊匹配( _ :匹配单个字符,%:匹配任意个字符) | 
| IS NULL | 是NULL | 
1.使用匹配符号查询
首先看一下表中的原始数据

分别找出age值等于30、age值大于40、age值小于40的数据

分别找出age值大于等于45、age值小于等于45、age值不等于45的数据


2.范围查找
使用BETWEEN ... AND ...指定查询的值的范围,比如找出age值为30到50之间的数据,包含30与50

使用in进行多个值的匹配,比如想查看age值为30,和值为45的数据

使用like进行模糊匹配
%:表示后面有任意单个、多个、或者空字符
_:表示后面有任意一个字符

找到字段值为空的数据

(二)逻辑运算符
| 逻辑运算符 | 功能 | 
| AND 或 && | 并且(多个条件同时成立) | 
| OR 或 || | 或者(多个条件任意一个成立) | 
| NOT 或 ! | 非,不是 | 
1.AND,组合条件查询
使用:select 字段 from 表名 where 条件1 and 条件2;

2.多条件查询
使用:select 字段 from 表名 where 条件1 or 条件2;

3.反选查询
使用:select 字段 from 表名 where !条件 ;

二、关键字排序
可以对字段值进行排序,可以是数字,也可以是字母
基本语法为:select 字段1, 字段2, ... from 表名 [where 条件]order by 排序字段1,排序字段2, ... [asc|desc]
| 关键字 | 排序方式 | 
| asc | 升序排序,默认排序方式asc 可以省略 | 
| desc | 降序排序, | 
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
1.按数字排序

2.按字母排序
按字段值的首字母进行排序

3.数据压缩
数据压缩,查看不重复的记录
使用distinct指令过滤重复的信息

三、分组与聚合函数
当我们需要基于某一列或多列数据进行统计时,分组查询和聚合函数就派上了用场,分组的关键字为group by,而group by通常与聚合函数一同使用。常见的聚合函数有以下几种
| 函数值 | 功能 | 
| count | 统计数量 | 
| max | 最大值 | 
| min | 最小值 | 
| avg | 平均值 | 
| sum | 求和 | 
基本语法为:
select 字段名, 聚合函数(字段名) from 表名 [where 条件] GROUP BY 字段名;
全表数据为

首先了解一下聚合函数的用法
select 聚合函数(字段) from 表名
count函数是统计值的总数,只统计表中有值的数量,null不纳入统计范围


使用分组查询数据

第一个示例表示:查询将返回每个(grender)员工的性别。每个性别构成了一个组,函数统计每个组内的员工性别数量。
第二个示例表示:查询将返回每个员工的性别(grender),以及工作地址(workid)。每个工作地址构成了一个组,函数统计每个组内的员工性别数量。
四、限制查询
在MySQL中,LIMIT 关键字用于限制SELECT语句返回的记录数量。
基本用法有两种
select 字段... from 表名 limit 行数;
#查询从第一行开始到指定行数结束的数据select 字段... from 表名 limit 行数1,行个数2;
#查询从行数1的下一行开始查询,到指定行的个数结束的数据
#例如:select 字段... from 表名 limit 3,5;
#从第3行开始,向下查询5行,也就是4、5、6、7、8行的数据

limit一般与order by组合使用,以便在限制记录数量的同时保证排序的准确性
比如查询age(年龄)最大的5位员工

五、别名
在MySQL中,查询别名(Alias)是为表名或列赋予临时名称的一种方式,可以使SQL查询更加简洁易读,尤其是在处理复杂的查询或联接多个表的时候。别名通常在查询中通过AS关键字定义,但AS关键字在大多数情况下是可以省略的。
select 字段名 [as] 别名 from 表名;
#对列设置别名select 表别名.字段名 from 表名 [as] 表别名;
#对表设置别名(一)设置列别名
通过设置列的别名使数据看起来更有可读性
(二)设置表别名
将表设置别名,用于区分不同表之间的同字段,主要在进行多表联查的时候使用

(三)as连接语句
as可以作为连接语句,将表的数据插入到新的表当中

此方法与之前介绍的克隆表基本一致,对于表的约束无法进行保存

总结
本章主要讲解一些高阶语句中的一些特殊条件的查询方法
比如在生产环境中,进行多表联查时,使用as设置表的别名,对表进行区分,这对数据的查询非常重要,根据不同的环境,使用不同的方法进行数据的查询、分析
通过深入学习并熟练运用MySQL的这些高阶查询语句,您可以更高效、更灵活地管理和查询数据库,从而提升整体的数据管理水平和工作效率。
本文只介绍了一些高阶语句的简单用法,还有MySQL还有诸如窗口函数、CTE(公共表表达式)等更强大的功能。
