4_MySQL_聚合函数和条件查询
1. 聚合函数
我们在实际开发中,经常需要这样子的需求:给出某个字段中数据的最大值,最小值,平均值,累加值、记录条数等等。如果没有用聚合函数,我们只能通过查询所有数据,然后再通过 Java 代码来做运算,从而得到上面的值。但是这样做本身就是在做冗余操作。那么我们能否在数据库层面就计算出这些值呢?答案是可以的。
我们发现这些值都有一个特征,就是把一个字段的所有数据“浓缩”成一个值,因此伴随着这些值被查询出来的字段也必须是一个值。也就是查询出来后只有一条记录。
查询某个字段有多少记录
select count(字段名或*) from 数据表名;
查询某个字段的最大值
select max(字段名) from 数据表名;
查询某个字段的最小值
select min(age) from 数据表名;
查询某个字段记录的和
select sum(字段名) from 数据表名
查询某个字段的平均值
select avg(字段名) from 数据表名;
注意:聚合函数只有在 select 语句或 having 子句或 order by 子句中使用。而且聚合函数最后的结果都是“输出一行”。
2. 条件查询
前面我们说到“增删改查”是学习数据库语言最重要的,但如果说还要在这里面挑出一个更重要的话,那么我觉得最重要的是“查询”。我们前面学到的只是“查询所有记录” 或者“配合简单的 where 语句查询某一个记录,都属于简单查询的范畴,今天我们来学习”条件查询“。
1、使用关系运算符查询
关系运算符 | 说明 |
---|---|
= | 等于 |
<> | 不等于 |
!= | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
这些语句一般配合 where 子句来实现条件查询,例如:
select 字段1,字段2 from 数据表名 where 字段2 <= 34;
2、使用关键字查询
in
关键字 用于 where 语句中表示找出指定字段在指定值中的记录,例如:以下 SQL 语句会找出字段 2 的值等于值 1 或者值 2 的记录。
select 字段1 from 数据表名 where 字段2 in(值1,值2);
between and
关键字 用于表示找出指定字段在指定区间值的记录,例如:以下 SQL 语句会找出在字段 2 的值在值 1 和值 2 这个区间的记录。
select 字段1,字段2 from 数据表名 where 字段2 between 值1 and 值2;
null 值
null 值一般配合其他(包括上面)的关键字来使用,语法上你可以把它当作一个特殊的值。例:
select 字段1 from 数据表名 where 字段2 is not null;
select 字段1 from 数据表名 where 字段2 is null;
and
关键字
连接两个条件,表示都符合的记录。
select 字段1,字段2 from 数据表名 where 字段名1 > and 字段名2 < 3;
or
关键字
连接两个条件,表示只要符合一个即可的记录。
select 字段1,字段2 from 数据表名 where 字段名1 > or 字段名2 < 3;
like
关键字
模糊查询,用于匹配不确定的字符串值。
①匹配普通字符串时(与正常=
效果一致,只会匹配一致的字符串)
select 字段1,字段2 from 数据表名 where 字段名1 like 'abc';
②带%
的匹配规则(%可以匹配任意长度的字符串,例如:%abc
可以匹配任何以abc结尾的字符串)
select 字段1,字段2 from 数据表名 where 字段名1 like '%abc';
③带_
的匹配规则(_可以匹配长度为 1 的字符串,例如:_abc
可以匹配类似aabc或者dabc的字符串)如果要匹配多个字符,就可以用多个_连接,例如d__f
。
select 字段1,字段2 from 数据表名 where 字段名1 like '_abc';
limit
关键字
用户控制显示的记录数。例如:如果一个查询语句本来可以查询出56条记录,但是你用了这个关键字限制其长度为4,那么就只会显示4条记录。(这种方法一般可用于排行版中,比如你的系统只需要显示排行版前十名即可,如果你查出全部然后再筛选的话性能就非常差,因此你可以考虑用这个关键字控制显示的记录数)
select 字段1,字段2 from 数据表名 limit 整数;
group by
对查询结果进行分组
①通过分组查询可以按照分组查询的条件将该表分成几个”小表“,一般可以配合聚合函数使用,每个小表对应一个记录,一个记录对应一个聚合函数的结果。例如:
select count(字段1),字段2 from 数据表名 group by 字段2;
②group up 也经常配合聚合函数和 Having 子句一起使用。
select count(字段1),字段2 from 数据表名 group by 字段2 having count(字段1) > 4;
以上 SQL 语句的意思是:先执行 group up,将这张表按照分组条件分成几个小表;再执行聚合函数 count ,计算出每个小表字段1有多少个,最后再执行 having 语句,having 语句的作用和 where 有点类似,即筛选出条件符合的值;最后显示。
关于 having 和 where 子句之间的区别,两者功能相同,都是按条件筛选出合适的数据,但前者是再分组后再对小表进行分别筛选的,而后者则是在分组前进行整体筛选的。
order by
对查询结果进行排序
先正常从表中查出数据后,根据指定的排序规则对记录进行排序,asc 或者默认
表示顺序排序;desc
表示逆序排序。且如果有多个排序,则是先按照前面的先排,前面的相同再按照后面的再排。例如:
SELECT 字段名1,字段名2,… FROM 表名 ORDER BY 字段名1 [ASC 丨 DESC],字段名2 [ASC | DESC];
4_MySQL_聚合函数和条件查询相关推荐
- 【数据库】第二章 基础函数、聚合函数、条件查询、子查询和多表查询
[数据库]第二章 基础函数.条件查询.聚合函数.多表查询和子查询 文章目录 [数据库]第二章 基础函数.条件查询.聚合函数.多表查询和子查询 一.基础函数 二.聚合函数 1.COUNT 2.MAX/M ...
- SqlService基础一篇搞定(建库建表、插入数据、修改和删除数据、基础查询、条件查询、模糊查询、聚合函数、分组查询、多表查询)
SqlService基础知识总汇 前言 一.SQLSERVER建库建表 1.检查数据库名是否存在 2.创建数据库 3.建表 4.修改表结构 5.删除添加约束 二.SQLSERVER插入数据 1.向部门 ...
- Mysql数据库的条件查询(聚合函数、分组查询)
Mysql数据库的条件查询 一.聚合函数 1.聚合函数的介绍 聚合函数又叫组函数,通常是对表中的数据进行统计和计算,一般结合分组(group by)来使用,用于统计和计算分组数据. 常用的聚合函数: ...
- mysql 聚合函数 怎么用在条件里_MySql 中聚合函数增加条件表达式的方法
Mysql 与聚合函数在一起时候where条件和having条件的过滤时机 where 在聚合之前过滤 当一个查询包含了聚合函数及where条件,像这样的情况 select max(cid) from ...
- MySQL 聚合函数 和 分组查询(初级)
聚合函数用于对一组值进行计算并返回一个汇总值,使用聚合函数可以统计记录行数.计算某个字段值的总和以及这些值的最大值.最小值和平均值等. 函数名称 功能 sum 返回选取的某列值的总和 max 返回选取 ...
- 数据库MySQL基础---约束、表关系、聚合函数、连接查询、分组查询和子查询
约束 1.主键约束亦成为主码,关键字:primary key,设置了主键约束的列的数据要求:不能为空,不允许重复. 2.自增长策略针对主键,不需要手动给值,自动的值是当前表中该列最大值+1关键字:au ...
- MySQLi学习笔记 :二( 排序查询,聚合函数,分组查询,分页查询) 约束 多表之间的关系 范式 数据库的备份和还原
# DQL:查询语句 1. 排序查询 * 语法:order by 子句 * order by 排序字段1 排序方式1 , 排序字段2 排序方式2... ...
- mysql 连边聚合_MySQL分组,聚合函数,连表查询,子查询
>>>分组: group by + group_concat 分组:类似于将一个班级的学生,按照性别或其他条件,分成若干个组,最终以小组为单位显示,如上图中,以post字段对表进行分 ...
- MySql基础篇---002 SQL之SELECT使用篇: 基本的SELECT语句,运算符,排序与分页,多表查询,单行函数,聚合函数,子查询
第03章_基本的SELECT语句 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. SQL概述 1.1 SQL背景知识 1946 年,世界上第一台电脑 ...
最新文章
- c/c++获取文件大小的方法
- python读取excel-蜗牛笔记-文章-Python读取Excel文件
- HTTPSession对象知识总结
- 马化腾看上了TA:读懂互联网医疗的进化与颠覆
- 填表2018-11-11
- mysql 过滤相同数据库_MySQL数据库查询中的重复记录过滤
- java. 三个人比赛怎么写_蓝桥杯——分组比赛(2017JavaB组第3题)
- 空间滤波_空间频率 、 光波方向 与 空间滤波 4f系统
- 关于对H264码流的PS的封装的相关代码实现
- 破解TexturePacker加密资源
- python3使用matplotlib绘制风速风向玫瑰图
- 浅谈Struts2拦截器的原理与实现
- 华为linux连蓝牙鼠标,huawei蓝牙鼠标怎么样? 华为蓝牙鼠标连接使用教程
- 3种重新启动或强制关闭任何Mac死机的方法
- 一位工作七年的Java工程师给毕业生的经验分享
- python的pyaudio教程入门_Python PyAudio 安装使用
- python培训学费多少钱-python培训学费多少钱
- 服务IP(VIP)的作用
- Ubunu安装一个更新版本的gda(2.3.2到 3.0.4)
- 翻译:理解特征工程(1)-连续数值数据