mysql查询统计语句_MySQL查询语句
eclipse 程序运行不了排序查询
通过 ORDER BY⼦句,可以将查询出的结果进⾏排序(排序只是显⽰⽅式,不会影响数据库中数据的顺序)
ASC: 升序,默认值DESC: 降序
单列排序
只按某⼀个字段进⾏排序,单列排序。toast
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 [ASC|DESC];
如:
--查询所有数据,使⽤年龄降序排序
select * from student order by age desc;
组合排序
同时对多个字段进⾏排序,如果第 1 个字段相等,则按第 2 个字段排序,依次类推。
SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名1 [ASC|DESC], 字段名2 [ASC|DESC];
如:
--查询所有数据,在年龄降序排序的基础上,如果年龄相同再以数学成绩升序排序
select * from student order by age desc, math asc;
聚合函数
平常我们做的查询都是横向查询,它们都是根据条件⼀⾏⼀⾏的进⾏判断,⽽使⽤聚合函数查询是纵向查询, 它是对⼀列的值进⾏计算,然后返回⼀个结果值。聚合函数会忽略空值NULL。
五个聚合函数
SQL中的聚合函数
作⽤
max(列名)
求这⼀列的最⼤值
min(列名)
求这⼀列的最⼩值
avg(列名)
iframe设置宽高
求这⼀列的平均值
count(列名)
统计这⼀列有多少条记录
sum(列名)
对这⼀列求总和
语法
css代码放在哪里
SELECT 聚合函数(列名) FROM 表名;
如:
--查询学⽣总数
select count(id) as 总⼈数 fromstudent;
或select count(*) as 总⼈数 from student;
由于聚合函数会忽略空值NULL,建议如果统计个数则不要使⽤有可能为 null 的列,但如果需要把 NULL 也统计进去,那么可以使⽤IFNULL()。
--如果列名不为空,返回这列的值。如果为 NULL,则返回默认值。
IFNULL(列名,默认值)
如:
select count(ifnull(id,0)) from student;
分组查询
分组查询是指使⽤ GROUP BY语句对查询信息进⾏分组,相同数据作为⼀组。
SELECT 字段1, 字段2, ... FROM 表名 GROUP BY 分组字段 [HAVING 条件];
GROUP BY 将分组字段结果中相同内容作为⼀组,并且返回每组的第⼀条数据,所以单独分组没什么⽤处。 分组的⽬的就是为了统计,⼀般分组会跟聚合函数⼀起使⽤。
例1:⼀个学⽣成绩表,该表中有 "性别" 字段和 "数学成绩" 字段。
--按性别进⾏分组,求男⽣和⼥⽣数学的平均分
select sex, avg(math) from student3 group by sex;
实际上是将每组的 math 求了平均,返回每组统计的结果
mysql语句顺序例2:
--对分组查询的结果再进⾏过滤
SELECT sex, COUNT(*) FROM student WHERE age > 25 GROUP BY sex having COUNT(*) >2;
查询student表中的不同性别的⼈的个数,要求年龄⼤于25岁,按性别分组并计算好不同性别的⼈的个数时,返回性别⼈数⼤于2的数据。
having 与 where 的区别
⼦名
作⽤
where⼦句
1、对查询结果进⾏分组前,将不符合where条件的⾏去掉,即在分组之前过滤数据,即先过滤 再分组。
2、where 后⾯不可以使⽤聚合函数
having⼦句
1、having ⼦句的作⽤是筛选满⾜条件的组,即在分组之后过滤数据,即先分组再过滤。
2、having 后⾯可以使⽤聚合函数
如:
SELECT 字段1, 字段2, ... FROM 表名称 WHERE 筛选条件1 GROUP BY 字段3 having 筛选条件2;
where要在分组之前,having要在分组之后。
筛选条件1不能是聚合函数,筛选条件2可以是聚合函数。
LIMIT语句
LIMIT 是限制的意思,LIMIT 的作⽤就是限制查询记录的条数。
SELECT 字段1 [AS 别名1], 字段2 [AS 别名2], ...
FROM 表名 [WHERE⼦句] [GROUP BY⼦句] [HAVING ⼦句] [ORDER BY⼦句] [LIMIT⼦句]; LIMIT 语法格式
LIMIT offset,length;
如:
电脑eclipse使用教程--查询学⽣表中数据,从第 3 条开始显⽰,显⽰ 6 条。
select * from student limit 2,6;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。