MySQL函数
1. MySQL常用函数(但并不常用)
1.1 数学运算
SELECT ABS(-8) -- 绝对值
SELECT CEILING(9.4) -- 向上取整
SELECT FLOOR(9.7) -- 向下取整
SELECT RAND() -- 返回一个0~1之间的随机数
SELECT SIGN(-8) -- 返回一个数的正负 0 => 0 负数 => -1 正数 => 1
1.2 字符串函数
SELECT CHAR_LENGTH("李旭,永远的神")-- 返回字符串的长度
SELECT CONCAT("李旭","永远的神","!")-- 拼接字符串
SELECT INSERT("我爱编程",1,2,"超级热爱")-- 查询,从某个位置开始替换某个长度
SELECT LOWER("WWWWWW") -- 转小写
SELECT UPPER("wwwwww") -- 转大写
SELECT INSTR("luxuyongyuandeshen","xu") -- 返回第一次出现字串的索引(从1开始)
SELECT REPLACE("要相信光","要","一定会")-- 替换字符串
SELECT SUBSTR("李旭,永远的神",1,2) -- 截取指定的字符串(源字符串,截取位置,截取长度)
SELECT SUBSTR("李旭,永远的神",4,3) -- 截取指定的字符串(源字符串,截取位置,截取长度)
SELECT REVERSE("李旭,永远的神") -- 反转字符串
1.3 时间和日期函数(记住)
SELECT CURRENT_DATE() -- 获取当前日期
SELECT CURDATE() -- 获取当前日期(CURRENT_DATE(),CURDATE()获取结果相同)
SELECT NOW() -- 获取当前时间
SELECT LOCALTIME() -- 获取本地时间
SELECT SYSDATE() -- 获取系统时间(NOW(),LOCALTIME(),SYSDATE()获取的结果是相同的)
SELECT YEAR(NOW()) -- 获取当前年
SELECT MONTH(NOW()) -- 获取当前月
SELECT DAY(NOW()) -- 获取当前日
SELECT HOUR(NOW()) -- 获取当前时
SELECT MINUTE(NOW()) -- 获取当前分
SELECT SECOND(NOW()) -- 获取当前秒
1.4 系统
SELECT SYSTEM_USER() -- 查看当前用户
SELECT USER()-- 查看当前用户(SYSTEM_USER(),USER()的结果相同)
SELECT VERSION() -- 查看MySQL的版本
1.5 应用
-- 查找姓周的同学
SELECT `studentname` FROM `student`
WHERE `studentname` LIKE "周%"
-- 查找姓周的同学 把周改为 洲 (select语句不会改变表 这只是查询的结果)
SELECT REPLACE(`studentname`,"周","洲") FROM `student`
WHERE `studentname` LIKE "周%"
2. 聚合函数(常用)与分组过滤
2.1 统计表中有多少条记录(count())
SELECT COUNT(`studentno`) FROM `student`; -- count(字段) ,会忽略查询的null值
SELECT COUNT(*) FROM `student` -- 不会忽略null值,本质,计算行数
SELECT COUNT(1) FROM `student` -- 不会忽略null值,本质,计算行数
SELECT SUM(`studentresult`) AS "总分" FROM `result`
SELECT AVG(`studentresult`) AS "平均分" FROM `result`
SELECT MAX(`studentresult`) AS "最高分" FROM `result`
SELECT MIN(`studentresult`) AS "最低分" FROM `result`
2.2 分组过滤
-- 查询不同课程的平均分,最高分,最低分,且平局分大于60
SELECT `subjectname`,AVG(`studentresult`) AS "平均分",MAX(`studentresult`) AS "最高分",MIN(`studentresult`) AS "最低分"
FROM `result` AS r
INNER JOIN `subject` AS sub
WHERE r.`subjectno` = sub.`subjectno`
GROUP BY r.`subjectno` -- 通过什么字段来分组
HAVING 平均分 > 60 -- 分组后的条件