常见的函数分类
- 字符串函数
- 日期时间函数
- 聚合统计函数
- 数学函数
- 其他函数
1、字符串函数
SELECT LENGTH('张');
SELECT LENGTH(1);
SELECT LENGTH('a');
SELECT CONCAT('AB', '-CD', 'EF');
SELECT CONCAT('AB', '-CD', 'EF', NULL);
SELECT LOWER('Abc');
SELECT TRIM(' Abc ');
2、日期时间函数
SELECT CURRENT_DATE(), CURDATE();
SELECT DATE_FORMAT(CURRENT_TIMESTAMP, '%y年%m月');
SELECT DATE_FORMAT(created_at, '%y年%m月') FROM school_student_grade;
日期时间计算函数
-- 增加1个小时
SELECT CURRENT_TIMESTAMP, DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 1 HOUR);
-- 增加2小时5分钟
SELECT CURRENT_TIME, ADDTIME(CURRENT_TIME, "02:05:00");
加减单位选项:
-- 将考试时间增加1年
SELECT *, ADDDATE(created_at,INTERVAL 1 YEAR) FROM school_student_grade;
3、聚合统计函数
- 统计总行数:COUNT()
- 指定列的最大/最小值:MAX()/MIN()
- 指定列的总和:SUM()
- 指定列的平均数:AVG()
-- 统计本班的学生人数
SELECT COUNT(*) FROM school_student_info;
SELECT COUNT(*) FROM school_student_info WHERE class_name = '三年级一班';
SELECT COUNT(stu_no) FROM school_student_info WHERE class_name = '三年级一班';
SELECT COUNT(1) FROM school_student_info WHERE class_name = '三年级一班';
-- 统计本班语文成绩的最高分/最低分
SELECT * FROM school_student_grade WHERE course_id = 1;
SELECT MAX(score), MIN(score) FROM school_student_grade WHERE course_id = 1;
-- 统计本班语文成绩的平均分
SELECT AVG(score) FROM school_student_grade WHERE course_id=1;
-- 统计学生张某的各科总分
SELECT * FROM school_student_info WHERE stu_name = '张三';
SELECT * FROM school_student_grade WHERE student_id = 5;
SELECT SUM(score) FROM school_student_grade WHERE student_id = 5;
4、其他函数
- 求绝对值:ABS(X)
- 求平方根:SQRT(X)
- 求一个0~1之间的随机数:RAND()
- 向下取整:FLOOR(), 向上取整:CEIL(x)
- 三角函数:SIN(X)、COS(x)、TAN(x)等
- 对数函数:LOG(x)
- IF条件判断:IF(expr1, expr2, expr3) 满足条件expr1返回 expr2,否则返回 expr3
- 获取数据库版本号:VERSION()
- 加密函数:MD5(s)、SHA(s)、SHA2(s,l)
SELECT ABS(-10);
SELECT ABS(age) FROM school_student_info;
SELECT SQRT(4);
SELECT RAND(), RAND() * 100;
SELECT FLOOR(1.5), CEIL(1.5);
SELECT sex, IF(sex = '男', 'boy', 'girl') FROM school_student_info;
SELECT VERSION();
SELECT MD5('122222');
SELECT stu_no, MD5(stu_no) FROM school_student_info;