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

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

211

主题

211

帖子

1166

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1166
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可以

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

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

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 ;

回复

使用道具 举报

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

高级模式

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