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

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

DQL-条件查询

1.语法

SELECT 字段列表  FROM 表名  WHERE 条件列表 ;

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

2.条件

常用的比较运算符如下:

比较运算符

功能

>

大于

>=

大于等于

<

小于

<=

小于等于

=

等于

<> 或 !=

不等于

BETWEEN ..(最小值).. AND ..(最大值)..

在某个范围之内(含最小、最大值)

IN(...)

in之后的列表中的值,多选一,列表中的值满足其一即可,然后用逗号分隔各项值

LIKE 占位符

模糊匹配(_匹配单个字符, %匹配任意个字符)

IS NULL

NULL

   IS NOT NULL     不是空值NULL

常用的逻辑运算符如下:

逻辑运算符

功能

AND 或 &&

并且 (多个条件同时成立)

OR 或 ||

或者 (多个条件任意一个成立)

NOT 或 !

非 不 是

案例:

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

select * from emp where age = 53 ;

执行如下 :


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

select * from emp where age < 20 ;

执行如下:

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

select * from emp where age <= 20;

执行如下:


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

select * from emp where idcard is null;

执行如下:

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

select * from emp where idcard is not null;

执行如下:

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

 select * from emp where age != 88;
 select * from emp where age <> 88;

执行如下:

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

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岁的员工信息

select * from emp where gender = '女' and age < 25;

执行如下:

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

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

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

执行如下:


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

需要使用like,在SQL语句中模糊匹配有两个占位符,一个是下划线_,代表单个字符,一个是百分号%,匹配任意字符

本题中需要两个字符怎么思考?一个下划线代表一个字符,那么三个下划线就代表三个字符,也就是三个字的名字

select * from emp where name like '__';

执行如下:


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

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

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

select * from emp where idcard like '%X';
select * from emp where idcard like '_________________X';

执行如下:


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

聚合函数

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

1.常见的聚合函数

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

函数

功能

count

统计数量  (可以统计某一列,或者整张表的记录数)

max

最大值

min

最小值

avg

平均值

sum

求和

2.聚合函数的语法

SELECT 聚合函数(字段列表) FROM 表名 ;

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

案例:

1.统计该企业员工数量

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

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

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

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

执行效果如图:


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

select count(1) from emp;


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

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

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

select min(age) from emp;

执行如下:

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

select max(age) from emp;

执行如下:

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

select avg(age) from emp;

执行如下:


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

select sum(age) from emp where workaddress = '北京';

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

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

执行如下:

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



相关文章
|
2月前
|
SQL 监控 关系型数据库
一键开启百倍加速!RDS DuckDB 黑科技让SQL查询速度最高提升200倍
RDS MySQL DuckDB分析实例结合事务处理与实时分析能力,显著提升SQL查询性能,最高可达200倍,兼容MySQL语法,无需额外学习成本。
|
2月前
|
SQL 存储 关系型数据库
MySQL体系结构详解:一条SQL查询的旅程
本文深入解析MySQL内部架构,从SQL查询的执行流程到性能优化技巧,涵盖连接建立、查询处理、执行阶段及存储引擎工作机制,帮助开发者理解MySQL运行原理并提升数据库性能。
|
2月前
|
SQL 监控 关系型数据库
SQL优化技巧:让MySQL查询快人一步
本文深入解析了MySQL查询优化的核心技巧,涵盖索引设计、查询重写、分页优化、批量操作、数据类型优化及性能监控等方面,帮助开发者显著提升数据库性能,解决慢查询问题,适用于高并发与大数据场景。
|
6月前
|
SQL 数据挖掘 数据库
第三篇:高级 SQL 查询与多表操作
本文深入讲解高级SQL查询技巧,涵盖多表JOIN操作、聚合函数、分组查询、子查询及视图索引等内容。适合已掌握基础SQL的学习者,通过实例解析INNER/LEFT/RIGHT/FULL JOIN用法,以及COUNT/SUM/AVG等聚合函数的应用。同时探讨复杂WHERE条件、子查询嵌套,并介绍视图简化查询与索引优化性能的方法。最后提供实践建议与学习资源,助你提升SQL技能以应对实际数据处理需求。
410 1
|
30天前
|
SQL 关系型数据库 MySQL
(SQL)SQL语言中的查询语句整理
查询语句在sql中占了挺大一部分篇幅,因为在数据库中使用查询语句的次数远多于更新与删除命令。而查询语句比起其他语句要更加的复杂,可因为sql是数据库不可或缺的一部分,所以即使不懂,也必须得弄懂,以上。
155 0
|
3月前
|
SQL XML Java
通过MyBatis的XML配置实现灵活的动态SQL查询
总结而言,通过MyBatis的XML配置实现灵活的动态SQL查询,可以让开发者以声明式的方式构建SQL语句,既保证了SQL操作的灵活性,又简化了代码的复杂度。这种方式可以显著提高数据库操作的效率和代码的可维护性。
230 18
|
3月前
|
SQL 人工智能 数据挖掘
如何在`score`表中正确使用`COUNT`和`AVG`函数?SQL聚合函数COUNT与AVG使用指南
本文三桥君通过score表实例解析SQL聚合函数COUNT和AVG的常见用法。详解COUNT(studentNo)、COUNT(score)、COUNT()的区别,以及AVG函数对数值/字符型字段的不同处理,特别指出AVG()是无效语法。实战部分提供6个典型查询案例及结果,包含创建表、插入数据的完整SQL代码。产品专家三桥君强调正确理解函数特性(如空值处理、字段类型限制)对数据分析的重要性,帮助开发者避免常见误区,提升查询效率。
223 0
|
3月前
|
SQL 人工智能 数据库
【三桥君】如何正确使用SQL查询语句:避免常见错误?
三桥君解析了SQL查询中的常见错误和正确用法。AI产品专家三桥君通过三个典型案例:1)属性重复比较错误,应使用IN而非AND;2)WHERE子句中非法使用聚合函数的错误,应改用HAVING;3)正确的分组查询示例。三桥君还介绍了学生、课程和选课三个关系模式,并分析了SQL查询中的属性比较、聚合函数使用和分组查询等关键概念。最后通过实战练习帮助读者巩固知识,强调掌握这些技巧对提升数据库查询效率的重要性。
117 0
|
4月前
|
SQL
SQL中如何删除指定查询出来的数据
SQL中如何删除指定查询出来的数据
|
6月前
|
SQL 关系型数据库 MySQL
凌晨2点报警群炸了:一条sql 执行200秒!搞定之后,我总结了一个慢SQL查询、定位分析解决的完整套路
凌晨2点报警群炸了:一条sql 执行200秒!搞定之后,我总结了一个慢SQL查询、定位分析解决的完整套路
凌晨2点报警群炸了:一条sql 执行200秒!搞定之后,我总结了一个慢SQL查询、定位分析解决的完整套路