排序
语法
select * from 表名 order by 列1 asc|desc,列2 asc|desc,...
将行数据按照列1进行排序,如果某些行列1的值相同时,则按照列2排序,以此类推
默认按照列值从小到大排列
asc从小到大排列,即升序
desc从大到小排序,即降序
例子:查询男生的信息,按年龄从大到小排序
select * from students where gender=1 order by age desc;
聚合函数
为了快速得到统计数据,经常会用到如下5个聚合函数
注意:聚合函数不能在 where 中使用
count(*)表示计算总行数,括号中写星与列名,结果是相同的
查询学生的总数:
select count(*) from students
max(列)表示求此列的最大值
查询男生最大的年龄
select max(age) from students where gender=1;
min(列)表示求此列的最小值
查询男生中年龄最小的
select min(age) from students where gender=1;
sum(列)表示求此列的和
查询所有男生年龄的综合
select sum(age) from students where gender=1;
avg(列)表示求此列的平均值
查询所有学生的平均年龄
select avg(age) from students;
分组
按照字段分组,表示此字段相同的数据会被放到一个组中
分组后,分组的依据列会显示在结果集中,其他列不会显示在结果集中
可以对分组后的数据进行统计,做聚合运算
语法:
select 列1,列2,聚合... from 表名 group by 列1,列2...
查询各个性别的人数
select gender as 性别,count(*) from students group by gender;
分组后的数据筛选:
- 语法:
select 列1,列2,聚合... from 表名 group by 列1,列2,列3... having 列1,...聚合...
- 查询男生的总人数
select gender as 性别,count(*) from students group by gender having gender=1;
where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
having是对group by的结果进行筛选
分页
在实际开发当中,往往数据都是很多的,要是在一页中显示数据是一件非常麻烦的事情,我们可以获取数据的部分行。
语法:
select * from 表名 limit start,count;
start: 从start开始,获取count条数据
start的索引是从0开始的。
例子:获取前四个男生的信息
select * from students where gender=1 limit 0,3;
实际开发中我们会经常要对数据进行分页展示
已知:每页显示m条数据,当前显示第n页
分页公式:
limit (n-1) * n,m