|
数据源

一、分组查询 grop by 分组字段列表 having 分组后条件列表;
1.语法
select 字段列表 from 表名[where 条件] group by 分组字段名 [having分组后的过滤条件];
a.执行时机不同:where 是对分组之前得条件进行过滤得 不满足where条件 不参与分组 而having是分组条件之后进行过滤得
b.判断条件不同:where 不能对聚合函数进行判断 ,而having可以
分组之后查询得字段,一般为聚合函数,查询其他字段是没有意义得
- -- 分组查询需求
- -- 根据员工性别进行分组 ,统计男性盐工和女性员工得数量
- select gender,count(*) from emp group by gender ;
- -- 根据性别进行分组 ,统计男性员工和女性员工得平均年龄
- select gender,avg(age) from emp group by gender ;
- -- 查询年龄小于32得员工,并且根据职业分组,获取员工数量大于等于1得名字
- select working,count(*) from emp where age<32 group by working having count(*)>1 ;
复制代码
二、排序查询 order by
1.语法
select 字段列表 from 表名 order by 字段1 排序方式, 字段2 排序方式;
2.排序方式
asc 升序 (默认值)
desc 降序
多字段得时候,当第一个字段值相同时候,才会根据第二个字段进行排序
- -- 排序查询
- -- 根据年龄对公司员工升序排序
- select * from emp order by age asc;
- select * from emp order by age desc ;
- -- 根据入职时间进行员工排序
- select * from emp order by entrydate ;
- -- 根据年龄对对公司员工升序排序年龄相同则按张入职时间排序
- select * from emp order by age asc, entrydate desc ;
复制代码
三、分页查询
1、语法
select 字段列表 from 表名 limit 其实索引,查询记录
- 起始索引,从0开始计算(查询页码-1)*每页显示记录数
- 分页查询是数据库得方言 不同得数据有不同得实现
- 如果查询得第一页数据,其实索引可以省略,直接简写成limit 10.
例子
- -- 分页查询
- -- 查询第一页员工数据 每页展示5条记录
- select * from emp limit 0,5;
- -- 查询第二页员工数据每页展示4条记录
- select * from emp limit 1,3;
复制代码
四、小练习
- -- 案例制作
- -- 1.查询年龄为28,25,26 女员工
- select * from emp where age in (28,25,26) or gender='女';
- -- 2查询年龄难 年龄20~30 并且名字是两个字员工
- select * from emp where gender='男' and age>=20 and age<=30 and name like '__';
- -- 3统计员工表中小于30 男得和女得人数
- select gender,count(*) from emp where age<=30 group by gender;
- -- 4.查询所有年龄小于30岁盐工姓名和年龄,并且对查询年龄进行升序排序,如果年龄相同按照入职时间进行降序排序
- select * from emp where age<=30 order by age asc ,entrydate desc ;
- -- 5查询性别为男 并且年龄再20~35岁 以内得5个员工信息,对查询结果按张升序排序,如果年龄相同按照入职时间进行降序排序
- select * from emp where (age between 20 and 31 ) and gender='男' order by age asc , entrydate limit 0,5 ;
复制代码
|
|