5.MySQL函数
# 5.MySQL函数
参考手册地址:https://dev.mysql.com/doc/refman/5.7/en/built-in-function-reference.html
5.1常用函数
没啥好讲的,不记得时候去看手册就好了
-- 常用函数
-- 数学运算
SELECT ABS(-11) -- 绝对值
SELECT CEILING(9.3) -- 向上取整
SELECT FLOOR(9.4) -- 向下取整
SELECT RAND() -- 返回一个随机数
SELECT SIGN(-10) -- 判断一个数的符号 0返回0 负数返回-1 正数返回1
-- 字符串
SELECT CHAR_LENGTH('123456789') -- 字符串长度
SELECT CONCAT('No','Mad','15234') -- 拼接字符串
SELECT LOWER('NOMAD') -- 转小写
SELECT UPPER('nomad') -- 转大写
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()
5.2聚合函数(常用)

-- ============ 聚合函数 =========
-- 统计表中的数据,(想查询一个表中有多少个记录,就是用这个count())
SELECT COUNT(studentname) FROM student -- count(字段),会忽略所有null值
SELECT COUNT(*) FROM student -- COUNT(*),不会忽略null值
SELECT COUNT(1) FROM result -- COUNT(1)
SELECT SUM(`studentresult`) 总和 FROM result
SELECT AVG(`studentresult`) 平均分 FROM result
SELECT MAX(`studentresult`) 最高分 FROM result
SELECT MIN(`studentresult`) 最低分 FROM result
-- 查询不同课程的平均分,最高分,最低分
SELECT SUM(`studentresult`),AVG(`studentresult`), MAX(`studentresult`),MIN(`studentresult`) ,`subjectname`
FROM `result` r
INNER JOIN `subject` sub
ON r.`subjectno` = sub.`subjectno`
-- WHERE AVG(`studentresult`) > 80
/*
这里不许用where,where后的条件表达式不允许聚合函数(AVG(`studentresult`))
所以我们可以用having来判断
*/
GROUP BY `subjectname` -- 通过什么字段分组
HAVING AVG(`studentresult`) > 80
5.3数据库级别的MD5加密(扩展)
MD5:信息摘要算法
主要增强算法复杂度和不可逆性
MD5不可逆,破解网站只是记录了明文对应的密文的字典
-- =======测试md5加密==========
CREATE TABLE `testmd5`(
`id` INT(4) NOT NULL,
`name` VARCHAR(20) NOT NULL,
`pwd` VARCHAR(50) NOT NULL,
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
-- 明文密码
INSERT INTO testmd5 VALUES(1, 'xiaohong', '123456'),(2, 'xiaoming', '123456'),(3, 'xiaozhang', '123456')
-- 加密
UPDATE testmd5 SET pwd = MD5(pwd) -- 加密全部密码,如果想有判断就加where条件子句
-- 插入的时候加密
INSERT INTO testmd5 VALUES(4, 'zhangshan', MD5('123456'))
-- 如何校验:插入的时候加密,然后比对加密的值
SELECT * FROM testmd5 WHERE `name` = 'zhangshan' AND pwd = MD5('123456')

浙公网安备 33010602011771号