SQL-条件查询与聚合函数的使用

🎉欢迎您来到我的MySQL基础复习专栏

☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹
✨博客主页:
小小恶斯法克的博客**
🎈该系列文章专栏:重拾MySQL
🍹文章作者技术和水平很有限,如果文中出现错误,希望大家能指正🙏
📜 感谢大家的关注! ❤️**

目录

DQL-条件查询

1.语法

2.条件

常用的比较运算符如下:

常用的逻辑运算符如下:

案例:

聚合函数

1.常见的聚合函数

2.聚合函数的语法

案例:


DQL-条件查询

1.语法

sql 复制代码
SELECT 字段列表  FROM	表名	WHERE	条件列表 ;

where之后跟的是条件列表,也就意味着where之后的条件可以是一个也可以是多个,后面的条件我们可以有哪些构建形式呢?

2.条件

常用的比较运算符如下:

|---------------------------------|--------------------------------------------|
| 比较运算符 | 功能 |
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| = | 等于 |
| <> 或 != | 不等于 |
| BETWEEN ..(最小值).. AND ..(最大值).. | 在某个范围之内**(含最小、最大值)** |
| IN(...) | 在in之后的列表中的值,多选一,列表中的值满足其一即可,然后用逗号分隔各项值 |
| LIKE 占位符 | 模糊匹配(_匹配单个字符, %匹配任意个字符) |
| IS NULL | 是NULL |
| IS NOT NULL | 不是空值NULL |

常用的逻辑运算符如下:

|----------------|-----------------|
| 逻辑运算符 | 功能 |
| AND 或 && | 并且 (多个条件同时成立) |
| OR 或 || | 或者 (多个条件任意一个成立) |
| NOT 或 ! | 非 , 不 是 |

案例:

1.查询年龄等于 53 的员工

sql 复制代码
select * from emp where age = 53 ;

执行如下 :

2.查询年龄小于 20 的员工信息

sql 复制代码
select * from emp where age < 20 ;

执行如下:

3.查询年龄小于等于 20 的员工信息

sql 复制代码
select * from emp where age <= 20;

执行如下:

4.查询没有身份证号的员工信息

sql 复制代码
select * from emp where idcard is null;

执行如下:

5.查询有身份证号的员工信息

sql 复制代码
select * from emp where idcard is not null;

执行如下:

6.查询年龄不等于 88 的员工信息

sql 复制代码
select * from emp where age != 88;

select * from emp where age <> 88;

执行如下:

7.查询年龄在15岁(包含) 到 20岁(包含)之间的员工信息

sql 复制代码
select * from emp where age >= 15 && age <= 20;

select * from emp where age >= 15 and age <= 20;

select * from emp where age between 15 and 20

执行如下:

8.查询性别为 女 且年龄小于 25岁的员工信息

sql 复制代码
select * from emp where gender = '女' and age < 25;

执行如下:

9.查询年龄等于18 或 20 或 40 的员工信息

in的语法还是跟大家多唠叨唠叨,它的意思是你给予的列表(18,20,40)满足了其中一个就把数据查询,也就是查询年龄等于18的人,查询年龄等于20的人,查询年龄等于40的人

sql 复制代码
select * from emp where age = 18 or age = 20 or age =40;

select * from emp where age in(18,20,40);

执行如下:

10.查询姓名为三个字的员工信息

需要使用like,在SQL语句中模糊匹配有两个占位符,一个是下划线_,代表单个字符,一个是百分号%,匹配任意字符
本题中需要两个字符怎么思考?一个下划线代表一个字符,那么三个下划线就代表三个字符,也就是三个字的名字

sql 复制代码
select * from emp where name like '__';

执行如下:

11.查询身份证号最后一位是X的员工信息

方法一:最后一位是x,也就意味前面的字符是什么无所谓,那么前面我可以使用任意字符匹配%,用%匹配17位,因为是任意多少位,所以我去限制最后一位必须是x,让它成为第18位必须是x,这样就可以解决了

方法二:既然一个下划线_代表一个字符,那么我用17个下划线占17个位置,最后一个位置我限制为x,就解决了

sql 复制代码
select * from emp where idcard like '%X';

select * from emp where idcard like '_________________X';

执行如下:

可以看出两者的查询结果相同


聚合函数

定义:将一列数据作为一个整体,进行纵向计算 。

1.常见的聚合函数

重点!!这些聚合函数都是作用于表中的某一列,纵向对数据进行的一个操作

|--------|------------------------------|
| 函数 | 功能 |
| count | 统计数量 (可以统计某一列,或者整张表的记录数) |
| max | 最大值 |
| min | 最小值 |
| avg | 平均值 |
| sum | 求和 |

2.聚合函数的语法

sql 复制代码
SELECT 聚合函数(字段列表) FROM 表名 ;

注意 : NULL值是不参与所有聚合函数运算的。

案例:

1.统计该企业员工数量

1.count()括号里面去填写字段,那么应该填什么字段,我需要求的是整张表的数据,此时可以去使用*,此时查询到的就是整张表的总数据量

2.如果不写*,也可以写具体的字段id,此时统计的就是这张表id字段的数量,每一条记录都有对应的id

3.假如我count()里面填写的字段是idcard,那么总数是几?你可以发现总数量是16条,而idcard有值的是15条,我们测试一下,发现确实是15条数据,所以一般我们去统计总数量,直接count(*)比较保险

sql 复制代码
select count(*) from emp; -- 统计的是总记录数

select count(id) from emp; 

select count(idcard) from emp; -- 统计的是idcard字段不为null的记录数

执行效果如图:

提前拓展:对于count聚合函数,统计符合条件的总记录数,还可以通过 count(数字/字符串)的形式进行统计查询,比如:

sql 复制代码
select count(1) from emp;

对于count(*) 、count(字段)、 count(1) 的具体原理,我们到时候复习进阶篇中SQL优化部分会详细学习,此处大家只需要知道如何使用即可。

2.统计该企业员工的最小年龄

这里大家需要注意!不要理解错误了,我们去查询age这一纵列然后去寻找最小的年龄是多少,数字是几,然后返回这个年龄数值,而并非返回年龄最小的这个人的所有字段的数据,这个有很多人会理解错误,希望大家注意!

sql 复制代码
select min(age) from emp;

执行如下:

3.统计该企业员工的最大年龄

sql 复制代码
select max(age) from emp;

执行如下:

4.统计该企业员工的平均年龄

sql 复制代码
select avg(age) from emp;

执行如下:

5.统计北京地区员工的年龄之和

sql 复制代码
select sum(age) from emp where workaddress = '北京';

此时我们先查询下北京地区的员工有哪些?

求年龄之和用到sum函数,此时我们直接把*改为 sum(age)即可,注意,这里最最重要的是条件,关注到我们有一个条件限制,北京地区的员工,所有我们肯定是需要增加where的,然后指定workaddress = '北京'

执行如下:

总结:聚合函数非常重要的一点,就是所有的null值是不参与聚合函数的运算的!


相关推荐
Ai 编码助手1 小时前
MySQL中distinct与group by之间的性能进行比较
数据库·mysql
陈燚_重生之又为程序员2 小时前
基于梧桐数据库的实时数据分析解决方案
数据库·数据挖掘·数据分析
caridle2 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
白云如幻2 小时前
MySQL排序查询
数据库·mysql
萧鼎2 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
^velpro^2 小时前
数据库连接池的创建
java·开发语言·数据库
苹果醋32 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
荒川之神2 小时前
ORACLE _11G_R2_ASM 常用命令
数据库·oracle
IT培训中心-竺老师2 小时前
Oracle 23AI创建示例库
数据库·oracle
小白学大数据2 小时前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫