4_MySQL_聚合函数和条件查询
Posted Jack·Kwok
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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_聚合函数和条件查询的主要内容,如果未能解决你的问题,请参考以下文章