对指定列进行排序
单列排序要素(order_by_list按该列排序)
select col_list form table_name order by order_by_list [ASC|DESC]
例如:查询分数表中编号为1的所有分数信息,并按照分数升序排序
select * form scores where gno=1 order by score asc
例如:查询分数表中编号为1的所有分数信息,并按照分数降序排序
select * form scores where gno=1 order by score desc
对多列进行排序
多列排序要点:(排序依据、排序方式、优先级)
(理解优先级:如果金牌数高先排金牌数、如果金牌数相同在比较银牌数、如果银牌数相同在比较铜牌数)
例如:查询分数表所有信息,并按照游戏编号的升序排序和分数的降序进行排序
select * form scores order by asc ,score desc
聚合函数
例如:查询玩家表中一共有多少玩家信息
select count(user_qq) from users
如果user_qq为空,则不会被统计
改写:select count(*) from users
例如:查询qq号是12301的玩家游戏总分数
select sum(score) as '总分数' from scores where user_qq='12301'
例如:查看qq号是12302的玩家的平均分
select avg(score) as '平均分' form scores where user_qq='12302'
例如:查看游戏编号是1的游戏的最高分数
select max(score) as '最高分' form scores where gno=1
例如:查看QQ号是12302的玩家的总分、平均分、最高分
select
sum(score) as '总分'
avg(score) as '平均分'
max(score) as '最高分'
form scores
where user_qq='12302'
在结果集中进行分组
例如:要求查询每个玩家的总分数、平均分、最高分
select
sum(score) as '总分'
avg(score) as '平均分'
max(score) as '最高分'
form scores
group by user_qq
筛选分组的结果(having一定要写在group by之后
select
sum(score) as '总分'
avg(score) as '平均分'
max(score) as '最高分'
form scores
group by user_qq
having avg(score)>4000
例如:查询所有用户的的平均分数,和总分数,并按平均分倒序排列
select user_qq,
avg(score) as '平均分',
sum(score) as '总分数'
from scores
group by user_qq
order by avg(score) desc
select语句的执行顺序
from子句指定数据源
where子句基于指定的条件对记录进行筛选
group by 子句将数据划分为多个组
用聚合函数进行计算
使用having子句筛选分组
使用order by子句对结果进行排序