MySQL排序
使用ORDER BY 关键词 根据需要排序检索出的数据
单列排序(并指定方向)(默认升序排列)
升序排列
SELECT math,name FROM grade order by ASC;
降序排列
SELECT math,name FROM GRADE order by DESC;
多列排序(并指定方向)
指定列名,列名之间用逗号分开即可
SELECT name,math,chinese FROM grade ORDER BY math DESC,name ASC;
限制查询
使用LIMIT 关键词
指定返回的行数
SELECT * FROM GRADE LIMIT 5;
指定从第几行起,返回多少行
第一个数为开始 位置(不包括此数字),第二个数为要检索的行数
SELECT name FROM grade LIMIT 2,5;
最大值
SELECT math,chinese FROM grade ORDER BY math DESC LIMIT 1;
最小值
SELECT math,english FROM grade ORDER BY english ASC LIMIT 1;
聚合函数
AVG() 返回某列的平均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列值之和
聚合函数有两种写法:
1.SELECT AVG(math) FROM grade ;
2.起别名
SELECT AVG(math) as avgmath from grade;
聚集不同值(单个数值只取一次)
SELECT AVG(DISTINCT age) from grade;
group by 分组
group by + 聚合函数(统计分组的信息)
group_concat(字段名)可以作为一个输出字段来使用,
group by + with rollup(在最后新增一行,来记录当前列里所有记录的总和)
过滤分组
使用HAVIING 关键词
类似于WHERE 。
唯一的差别是WHERE过滤行,而HAVING过滤分组。
有另一种理解方法,WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤。
SELECT COUNT(*),math,chinese FROM grade GROUP BY math,chinese HAVIING math>80 and chinese>90;
在MySQL中查询语句的顺序:
查询语句的顺序:
SELECT > 列,列 > FROM > 表名 > WHERE > 条件 > GROUP BY > 列,列 > HAVING > 条件 > ORDER BY > 列 (ASC|DESC) > LIMIT start,count
网友评论