MySQL学习:Day06

一、聚合函数

1.定义

聚合函数:将一列数据作为一个整体

2.常见的聚合函数

3.用法

注:在使用聚合函数时,所有的null值是不参与计算

4.代码展示

# --------------------------聚合函数------------------------
# 1.统计该企业(即itheima数据库中的emp表)员工数量
select count(*) from emp;
# (*代表的是全部字段,也可以是name字段等等)

# 2.统计该企业员工的平均年龄
select avg(age) from emp;
# (所有的null值不参与计算)

# 3.统计该企业员工的最大年龄
select max(age) from emp;

# 4.统计该企业员工的最小年龄
select min(age) from emp;

# 5.西安地区所有员工的年龄和
# (如果想要添加限制条件,用where即可)
select sum(age) from emp where workaddress = '西安';

二、分组查询

 1.语法

where和having的区别:

(1)执行时机不同

        where是分组之前进行过滤,不满足where条件不参与having分组;

        having是分组之后对结果进行过滤。

(2)判断条件不同

        where不能对聚合函数进行判断;

        having对聚合函数进行判断。

  • 执行顺序:where > 复合函数 > having;
  • 分组之后,查询的字段一般为复合函数和分组字段,查询其他字段无任何意义。

2.代码展示

# --------------------------分组查询------------------------
# 1.根据性别分组,统计男性员工和女性员工的数量
select sex, count(*) from emp group by sex;

# 2.根据性别分组,统计男性员工和女性员工的平均年龄
select sex, avg(age) from emp group by sex;

# 3.查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
select workaddress, count(workaddress) from emp where age < 45 group by workaddress having count(*) >= 3;

三、排序查询

1.语法

        SQL语言支持多字段排序

2.排序方式

ASC:升序(默认值)

DESC:降序

        如果是多字段排序,当第一个字段值相同时,才会根据第二个字段排序。

3.代码演示

# # --------------------------排序查询------------------------
# 1.根据年龄对公司的员工进行升序排序
select * from emp order by age;
# 升序排列用ASC表示,可以省略不写

# 2.根据入职时间,对员工进行降序排序
select * from emp order by entrydate DESC;

# 3.根据年龄对公司员工进行升序排序,年龄相同,再按照入职时间进行降序排序
select * from emp order by age, entrydate DESC;

四、分页查询

1.语法

注:

2.代码展示

# --------------------------排序查询------------------------
# 1.查询第1页员工数据,每页展示10条记录
select * from emp LIMIT 0,10;
# (页数起始索引从0开始,所以第一页用0表示,也可以省略,第二个数是每页的信息条数

# 2.查询第2页员工数据,每页展示10条记录
select * from emp LIMIT 10,10;      # (2-1)*10=10,所以第一个数字是10
# (第2页往公式:(页码数-1)*每页展示的信息数)

五、练习题

# --------------------------案例------------------------
# 1.查询年龄为20,21,22,23岁的员工信息
select * from emp where age in (20,21,22,23);

# 2.查询性别为男,并且年龄在20~40岁(含)以内的姓名为三个字的员工
select * from emp where sex = '男' and age >=20 and age <=40 and name like '___';

# 3.统计员工表中,年龄小于60岁的,男性员工和女性员工的人数
select sex, count(*) from emp where age < 60 group by sex;

# 4.查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排列,如果年龄相同按入职时间降序排列
select name, age, entrydate from emp where age <= 35 order by age, entrydate DESC ;

# 5.查询性别为男,且年龄在20~40岁(含)以内的前5个员工信息,对查询结果按年龄升序排列,年龄相同按入职时间升序排列
select * from emp where sex = '男' and age between 20 and 40 order by age, entrydate limit 5 ;

六、执行顺序

1.顺序

2.代码演示

# --------------------------执行顺序------------------------
# 查询年龄大于15的员工的姓名,年龄,并根据年龄进行升序排列
select name, age from emp where age >15 order by age;
# 先执行from,在执行where,假设给emp起个别名e,则可以使用别名e
# e.age就代表的是emp里面的age
select name, age from emp e where e.age >15 order by age;

七、总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值