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. 【数据库】第二章 基础函数、聚合函数、条件查询、子查询和多表查询

    [数据库]第二章 基础函数.条件查询.聚合函数.多表查询和子查询 文章目录 [数据库]第二章 基础函数.条件查询.聚合函数.多表查询和子查询 一.基础函数 二.聚合函数 1.COUNT 2.MAX/M ...

  2. SqlService基础一篇搞定(建库建表、插入数据、修改和删除数据、基础查询、条件查询、模糊查询、聚合函数、分组查询、多表查询)

    SqlService基础知识总汇 前言 一.SQLSERVER建库建表 1.检查数据库名是否存在 2.创建数据库 3.建表 4.修改表结构 5.删除添加约束 二.SQLSERVER插入数据 1.向部门 ...

  3. Mysql数据库的条件查询(聚合函数、分组查询)

    Mysql数据库的条件查询 一.聚合函数 1.聚合函数的介绍 聚合函数又叫组函数,通常是对表中的数据进行统计和计算,一般结合分组(group by)来使用,用于统计和计算分组数据. 常用的聚合函数: ...

  4. mysql 聚合函数 怎么用在条件里_MySql 中聚合函数增加条件表达式的方法

    Mysql 与聚合函数在一起时候where条件和having条件的过滤时机 where 在聚合之前过滤 当一个查询包含了聚合函数及where条件,像这样的情况 select max(cid) from ...

  5. MySQL 聚合函数 和 分组查询(初级)

    聚合函数用于对一组值进行计算并返回一个汇总值,使用聚合函数可以统计记录行数.计算某个字段值的总和以及这些值的最大值.最小值和平均值等. 函数名称 功能 sum 返回选取的某列值的总和 max 返回选取 ...

  6. 数据库MySQL基础---约束、表关系、聚合函数、连接查询、分组查询和子查询

    约束 1.主键约束亦成为主码,关键字:primary key,设置了主键约束的列的数据要求:不能为空,不允许重复. 2.自增长策略针对主键,不需要手动给值,自动的值是当前表中该列最大值+1关键字:au ...

  7. MySQLi学习笔记 :二(  排序查询,聚合函数,分组查询,分页查询) 约束     多表之间的关系   范式     数据库的备份和还原

    # DQL:查询语句     1. 排序查询         * 语法:order by 子句             * order by 排序字段1 排序方式1 ,  排序字段2 排序方式2... ...

  8. mysql 连边聚合_MySQL分组,聚合函数,连表查询,子查询

    >>>分组: group by + group_concat 分组:类似于将一个班级的学生,按照性别或其他条件,分成若干个组,最终以小组为单位显示,如上图中,以post字段对表进行分 ...

  9. MySql基础篇---002 SQL之SELECT使用篇: 基本的SELECT语句,运算符,排序与分页,多表查询,单行函数,聚合函数,子查询

    第03章_基本的SELECT语句 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. SQL概述 1.1 SQL背景知识 1946 年,世界上第一台电脑 ...

最新文章

  1. c/c++获取文件大小的方法
  2. python读取excel-蜗牛笔记-文章-Python读取Excel文件
  3. HTTPSession对象知识总结
  4. 马化腾看上了TA:读懂互联网医疗的进化与颠覆
  5. 填表2018-11-11
  6. mysql 过滤相同数据库_MySQL数据库查询中的重复记录过滤
  7. java. 三个人比赛怎么写_蓝桥杯——分组比赛(2017JavaB组第3题)
  8. 空间滤波_空间频率 、 光波方向 与 空间滤波 4f系统
  9. 关于对H264码流的PS的封装的相关代码实现
  10. 破解TexturePacker加密资源
  11. python3使用matplotlib绘制风速风向玫瑰图
  12. 浅谈Struts2拦截器的原理与实现
  13. 华为linux连蓝牙鼠标,huawei蓝牙鼠标怎么样? 华为蓝牙鼠标连接使用教程
  14. 3种重新启动或强制关闭任何Mac死机的方法
  15. 一位工作七年的Java工程师给毕业生的经验分享
  16. python的pyaudio教程入门_Python PyAudio 安装使用
  17. python培训学费多少钱-python培训学费多少钱
  18. 服务IP(VIP)的作用
  19. Ubunu安装一个更新版本的gda(2.3.2到 3.0.4)
  20. 翻译:理解特征工程(1)-连续数值数据

热门文章

  1. Arduino制作俄罗斯方块小游戏(三)程序源码
  2. 集米社浅谈下那些令网兼者疯狂的时代。
  3. 在IDEA中给项目同时配置git和svn
  4. wifi网络信息查看
  5. json-lib使用详解——json小工具
  6. Cocos2d-JS开发中的一些小技巧(持续更新)
  7. VSCode将Java文件编译生成的class文件存在哪的?
  8. LSM-Tree 的写放大写放大、读放大、空间放大RockDB、leveldb 写放大简单分析参考文档
  9. 学习matlab(四)——概率与数理统计
  10. 2020秋季C语言综合练习题(节选)