广州网站开发招聘,115做网站,全国网站设计公司,大连sem网站建设上一篇「22 B端产品经理与MySQL基本查询、排序#xff08;2#xff09;」了解了基本的常识和基本查询以及单列排序。下面介绍常见的基本函数、分组查询以及多列排序#xff1a;
基本函数
user表 (注#xff1a;以下SQL语句示例全部基于下面「user表」)
uidunamedepiduag… 上一篇「22 B端产品经理与MySQL基本查询、排序2」了解了基本的常识和基本查询以及单列排序。下面介绍常见的基本函数、分组查询以及多列排序
基本函数
user表 (注以下SQL语句示例全部基于下面「user表」)
uidunamedepiduageugendermsalhiredate1张三133男200002013/07/122李四225女150002018/11/233王锵137男250002012/10/154彭昶324女150002020/06/125王小二228女200002017/01/196宁笑笑121女Null2023/12/137陈晨433男250002022/04/16
常用函数作用举例解释COUNT()统计返回查询的记录总数。 SELECT count(uid) AS contuid FROM user; 返回user表中uid共多少条记录。AVG()平均值返回一个表达式的平均值。 SELECT AVG(uage) AS avgage FROM user; 返回user表中uage字段的平均值。SUM()求和返回指定字段的总和。 SELECT sum(uage) AS sumage FROM user; MAX()最大值返回字段中的最大值。 SELECT MAX(uage) AS largestmage FROM user; 返回user表中uage字段的最大值。MIN()最小值返回字段中的最小值。 SELECT MIN(uage) AS minage FROM user; 返回user表中uage字段的最小值。
注AS 后的字段为查询的结果起得名称。
日期函数作用举例结果NOW()返回当前日期和时间。 SELECT NOW(); 2019-10-07 16:27:44CURDATE()返回当前日期。 SELECT CURDATE(); 2019-10-07CURRENT_TIME()返回当前时间。 SELECT CURRENT_TIME(); 16:27:44DATE()提取日期。 SELECT DATE(2017-06-15); 2017-06-15DATEDIFF(d1,d2)计算俩日期之间相隔的天数。 SELECT DATEDIFF(2001-01-01,2001-02-02); 32
注更多函数使用可参考「MySQL函数教程」。
分组查询 GROUP BY根据一个或多个列对结果集进行分组。 在分组的列上我们可以使用上述提到的 COUNT, SUM, AVG,等函数。 GROUP BY是用于汇总和分析数据的重要工具。 SELECT depid,count(uid) FROM userGROUP BY depid--查询「user表」中每个部门的编号以及每个部门下的人数。
SELECT depid,COUNT(*)FROM userWHERE msal20000GROUP BY depid;--查询「user表」中每个部门的编号以及每个部门下月薪大于20000的人数。 WHERE 是对分组前记录的条件如果某行记录没有满足 WHERE 子句的条件那 么这行记录不会参加分组 HAVING 是对分组后数据的约束。 SELECT depid, SUM(msal)FROM userGROUP BY depidHAVING SUM(msal) 50000;--查询「user表」中月薪总和大于 50000 的部门编号以及月薪和。
多列排序 多列排序
SELECT * FROM userORDER BY uage ASC, hiredate DESC;--查询「user表」并将查询的数据先按用户年龄升序排,当年龄相同时再按入职日期降序排。 使用表达式排序
SELECT uname, msal * 12 AS ysalFROM userORDER BY ysal DESC;--查询「user表」中的用户姓名和 用户根据月薪计算的出的年薪并按年薪降序排序。 使用 NULLS FIRST 或 NULLS LAST 处理 NULL 值。 SELECT * FROM userORDER BY usal DESC NULLS LAST;--查询「user表」并将查询的数据按用户薪水降序排,将 NULL 值排在最后。