7.sql -DQL学习笔记记录 2

[复制链接]
查看: 131   回复: 0

164

主题

164

帖子

939

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
939
2023-9-9 23:37:11   显示全部楼层   阅读模式  
1.jpg


数据源



一、分组查询 grop by 分组字段列表 having 分组后条件列表;

1.语法
select 字段列表 from 表名[where 条件] group by 分组字段名 [having分组后的过滤条件];

a.执行时机不同:where 是对分组之前得条件进行过滤得 不满足where条件 不参与分组 而having是分组条件之后进行过滤得

b.判断条件不同:where 不能对聚合函数进行判断 ,而having可以

分组之后查询得字段,一般为聚合函数,查询其他字段是没有意义得

  1. -- 分组查询需求

  2. --  根据员工性别进行分组 ,统计男性盐工和女性员工得数量

  3. select gender,count(*)  from emp group by  gender ;

  4. -- 根据性别进行分组 ,统计男性员工和女性员工得平均年龄

  5. select gender,avg(age)  from emp group by  gender ;

  6. -- 查询年龄小于32得员工,并且根据职业分组,获取员工数量大于等于1得名字

  7. 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 降序

多字段得时候,当第一个字段值相同时候,才会根据第二个字段进行排序

  1. -- 排序查询

  2. -- 根据年龄对公司员工升序排序

  3. select  * from  emp order by  age asc;
  4. select  * from  emp order by  age desc ;

  5. -- 根据入职时间进行员工排序

  6. select  * from  emp order by  entrydate  ;

  7. -- 根据年龄对对公司员工升序排序年龄相同则按张入职时间排序
  8. select  * from  emp order by  age asc, entrydate desc ;
复制代码

三、分页查询

1、语法
select 字段列表 from 表名 limit 其实索引,查询记录

  • 起始索引,从0开始计算(查询页码-1)*每页显示记录数
  • 分页查询是数据库得方言 不同得数据有不同得实现
  • 如果查询得第一页数据,其实索引可以省略,直接简写成limit 10.

例子
  1. -- 分页查询
  2. -- 查询第一页员工数据 每页展示5条记录
  3. select  * from emp limit  0,5;

  4. -- 查询第二页员工数据每页展示4条记录
  5. select  * from emp limit  1,3;
复制代码

四、小练习

  1. -- 案例制作
  2. -- 1.查询年龄为28,25,26 女员工

  3. select  * from emp where  age in (28,25,26) or gender='女';

  4. -- 2查询年龄难 年龄20~30 并且名字是两个字员工

  5. select  * from emp where  gender='男' and  age>=20 and age<=30 and name like '__';

  6. -- 3统计员工表中小于30 男得和女得人数

  7. select  gender,count(*) from emp where age<=30 group by gender;

  8. -- 4.查询所有年龄小于30岁盐工姓名和年龄,并且对查询年龄进行升序排序,如果年龄相同按照入职时间进行降序排序

  9. select  * from emp where age<=30 order by  age asc ,entrydate desc ;

  10. -- 5查询性别为男 并且年龄再20~35岁 以内得5个员工信息,对查询结果按张升序排序,如果年龄相同按照入职时间进行降序排序

  11. select  * from emp  where (age between 20 and  31 ) and  gender='男' order by age asc , entrydate limit 0,5 ;
复制代码


回复

使用道具 举报

您需要登录后才可以回帖   登录 立即注册

高级模式

南通谢凡软件科技有限公司