MySQL 提供了丰富的内置函数,用于处理数据、执行计算和转换格式等操作。本文介绍 MySQL 中常用的一些函数。
一、聚合函数
函数名
作用
示例
结果
SUM(col)
求和
SUM(amount)
所有 amount 的总和
AVG(col)
平均值
AVG(age)
平均年龄
COUNT(col)
计数(忽略 NULL)
COUNT(id)
行数
COUNT(*)
计数(包含 NULL)
COUNT(*)
总行数
MAX(col)
最大值
MAX(score)
最高分数
MIN(col)
最小值
MIN(price)
最低价格
测试表结构
CREATE TABLE students (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
sn INTNOT NULLUNIQUE COMMENT '学号',
name VARCHAR(20) NOT NULL,
qq VARCHAR(20)
);
CREATE TABLE exam_result (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL COMMENT '同学姓名',
chinese FLOATDEFAULT0.0 COMMENT '语文成绩',
math FLOATDEFAULT0.0 COMMENT '数学成绩',
english FLOATDEFAULT COMMENT
);
0.0
'英语成绩'
1、统计班级共有多少同学
SELECTCOUNT(*) FROM students;
2、统计班级有多少 qq 号
SELECTCOUNT(qq) FROM students;
对比上表可以看到 COUNT 函数,对于 NULL 值,不做统计。
3、统计本次考试的数学成绩分数个数
SELECTCOUNT(math) FROM exam_result;
对比上表可以看到 COUNT 函数,对于重复值,不做统计。
4、统计数学成绩不及格人数
SELECTCOUNT(math) FROM exam_result WHERE math <60;
COUNT 函数可以配合其他语句使用。
5、统计平均总分
SELECTAVG(chinese + math + english) AS 平均总分 FROM exam_result;
6、返回英语最高分
SELECTMAX(english) FROM exam_result;
7、返回 > 70 分以上的数学最低分
SELECTMIN(math) FROM exam_result WHERE math >70;
二、日期函数
1、获取当前年月日
SELECTCURRENT_DATE();
2、获取当前时分秒
SELECT CURTIME();
3、获取时间戳
SELECT NOW();
4、在时间中提取日期部分
SELECTDATE(NOW());
5、在日期的基础上加上日期
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL10DAY);
INTERVAL 后可以根据需要使用不同单位(年、月、日、分、秒)
6、在日期的基础上减去日期
SELECT DATE_SUB(CURRENT_DATE(), INTERVAL10DAY);
7、计算两个日期之间相差多少天
SELECT DATEDIFF(CURRENT_DATE(), '1949-10-01');
8、创建留言表并查询
CREATE TABLE msg (
id INTPRIMARY KEY AUTO_INCREMENT,
content VARCHAR(30) NOT NULL,
sendtime DATETIME
);
INSERT INTO msg(content, sendtime) VALUES ('hello1', NOW());
INSERT INTO msg(content, sendtime) VALUES ('hello2', NOW());
SELECT*FROM msg;
显示所有留言信息,发布日期只显示日期,不用显示时间:
SELECT content, DATE(sendtime) FROM msg;
查询在 1 分钟内发布的帖子:
SELECT*FROM msg WHERE TIMESTAMPDIFF(MINUTE, sendtime, NOW()) <=1;