目录
引言
一、条件查询
(一)比较运算符查询
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(公共表表达式)等更强大的功能。