学习笔记|MySQL-DQL-条件查询/聚合函数/分组查询/排序查询/分页查询

条件查询

select 字段列表 from 表名 where 条件列表;

条件:
比较运算符 功能
> 大于
>= 大于等于
< 小于
<= 小于等于
= 等于
<>或!= 不等于
Between…And… 在某个范围之内(含量小,最大值)
in(…) 在in之后的列表中的值,多选一
like 占位符 模糊匹配(_匹配单个字符,%匹配任意个字符)
is null 是null
逻辑运算符 功能
and或&& 并且(多个条件同时成立)
or 或者(多个条件任意一个成立)
not 或! 非,不是
聚合函数
将一列数据作为一个整体,进行纵向计算
常见聚合函数:
函数 功能
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和
语法:
select 聚合函数(字段列表) from 表名;

注意: null值不参与所有聚合函数运算
分组查询
语法:
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件]

where与having的区别:
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组; having是分组之后对结果进行过滤.
判断条件不同:where不能对聚合函数进行判断,而having可以.
需求:
  1. 根据员工性别分组,统计男性员工和女性员工的数量
  2. 根据性别分组,统计男性员工和女性员工的平均年龄
  3. 查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
1. select gender, count(*) from emp group by gender; 2. select gender, avg(age) from emp group by gender; 3. select workaddress, count(*) from emp where age<45 group by workaddress having count(*)>=3;

执行顺序: where > 聚合函数 > having;
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义.
排序查询
select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2;

排序方式:
ASC: 升序(默认值)
DESC: 降序
如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序.
需求: 根据年龄对公司员工进行升序/降序排序
select * from emp order by age asc/desc;

分页查询
select 字段列表 from 表名 limit 起始索引, 查询记录数;

起始索引从0开始, 起始索引=(查询页码-1)*每页显示记录数.
分页查询是数据库的方言,不同数据库有不同实现,MySQL中是Limit
如果查询的是第一页数据,起始索引可以省略,直接简写为limit10.
【学习笔记|MySQL-DQL-条件查询/聚合函数/分组查询/排序查询/分页查询】需求:
  1. 查询第一页员工数据,每页展示10条记录
  2. 查询第二条员工数据,每页展示10条记录
1. select * from emp limit 0,10; 2. select * from emp limit 10, 10;

    推荐阅读