常用函数
数学运算
-- 绝对值
SELECT ABS(-8)
-- 向上取整
SELECT CEILING(9.8)
-- 向下取整
SELECT FLOOR(9.8)
-- 随机数字(0-1)
SELECT RAND()
-- 判断一个数的符号 (正数1,负数-1)
SELECT SIGN(10)
SELECT SIGN(-10)
字符串函数
-- 字符串长度
SELECT CHAR_LENGTH('飞流直下三千尺,疑是银河落九天')
-- 拼接字符串
SELECT CONCAT('我','爱','中国')
-- 查询,从某个位置开始替换某个长度(第一个数字是第几个位置前,第二个数字是替换几个字符)
SELECT INSERT('我爱编程',2,1,'超级热爱')
-- 小写字母
SELECT LOWER('XiaoXie')
-- 大写字母
SELECT UPPER('DaXie')
-- 返回第一次出现的子串的索引
SELECT INSTR('XIAOMING,XIAOHONG','A')
-- 替换出现的指定字符串
SELECT REPLACE('坚持就能成功','坚持','努力')
-- 返回指定的子字符串(源字符串,截取的位置,截取的长度)
SELECT SUBSTR('坚持就能成功', 5, 2);
-- 反转
SELECT REVERSE('好真气天天今');
时间日期函数
SELECT CURRENT_DATE(); -- 获取当前日期
SELECT CURDATE(); -- 获取当前日期
SELECT NOW(); -- 获取当前的时间
SELECT LOCALTIME(); -- 获取本地时间
SELECT SYSDATE(); -- 获取系统时间
SELECT YEAR(NOW()); -- 年
SELECT MONTH(NOW()); -- 月
SELECT DAY(NOW()); -- 日
SELECT HOUR(NOW()); -- 时
SELECT MINUTE(NOW()); -- 分
SELECT SECOND(NOW()); -- 秒
系统
SELECT SYSTEM_USER(); -- 用户名
SELECT USER(); -- 用户名
SELECT VERSION(); -- MySQL版本
聚合函数及分组过滤
函数名称 | 描述 |
count() | 计数 |
SUM() | 求和 |
AVG() | 平均值 |
MAX() | 最大值 |
MIN() | 最小值 |
.......... | ............ |
例:
-- 聚合函数
-- 都能统计 表中数据
-- count(字段) 会忽略所有的null值(想查询一个表中有多少个记录,就使用这个count())
SELECT COUNT(student_name) FROM student;
-- COUNT(*) 不会忽略所有的null值 本质计算行数
SELECT COUNT(*) FROM student;
-- COUNT(1) 不会忽略所有的null值 本质计算行数
SELECT COUNT(1) FROM student;
SELECT SUM(student_result) AS '总和' FROM result;
SELECT AVG(student_result) AS '平均分' FROM result;
SELECT MAX(student_result) AS '最高分' FROM result;
SELECT MIN(student_result) AS '最低分' FROM result;
-- 查询不同课程的平均分,最高分,最低分
SELECT sub.subject_name AS '课程',
AVG(res.student_result) AS '平均分',
MAX(res.student_result) AS '最高分',
MIN(res.student_result) AS '最低分'
FROM result res
INNER JOIN `subject` sub
ON res.`subject_no`=sub.`subject_no`
GROUP BY res.`subject_no`
HAVING AVG(res.student_result) >80;