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聚合函数(常用)

image-20211019180250427

-- ============ 聚合函数 =========
-- 统计表中的数据,(想查询一个表中有多少个记录,就是用这个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')
posted @ 2021-10-20 10:37  NoMad15234  阅读(30)  评论(0)    收藏  举报