5、MySQL函数
官网:
MySQL :: MySQL 5.7 Reference Manual :: 12.1 Built-In Function and Operator Reference
5.1、常用函数
-- 数学运算
SELECT ABS(-1) -- 绝对值
SELECT CEILING(9.4) -- 向上取整
SELECT FLOOR(9.4) -- 向下取整
SELECT RAND() -- 返回一个 0~1 之间的随机数
SELECT SIGN(10) -- 判断一个数的符号 0-0 负数返回-1,整数返回1
-- 字符串函数
SELECT CHAR_LENGTH('即使再小的帆也能远航') -- 字符串长度
SELECT CONCAT('我','爱','你们') -- 拼接字符串
SELECT INSERT('我爱编程hellworld',1,2,'超级热爱') -- 查询,从某个位置开始替换某个长度——超级热爱编程hellworld
SELECT LOWER('Soledad-X') -- 小写字母
SELECT UPPER('Soledad-X') -- 大写字母
SELECT INSTR('Soledad-X','l') -- 返回第一此出现的子串的索引
SELECT REPLACE('憨憨说坚持就能成功','坚持','努力') -- 替换出现的指定字符串
SELECT SUBSTR('憨憨说坚持就能成功',4,6) -- 返回指定的子字符串(源字符串,截取的位置,截取的长度)
SELECT REVERSE('清晨我上马') -- 反转
-- 查询 姓周的同学,显示为姓邹
SELECT REPLACE(`name`,'周','邹')
FROM `student`
WHERE `name` LIKE '周%';
-- 时间和日期函数(记住)
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() | 计数 |
SUM() | 求和 |
AVG() | 平均值 |
MAX() | 最大值 |
MIN() | 最小值 |
。。。 | 。。。 |
SELECT COUNT(`BornDate`) 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;
5.3、数据库级别的MD5加密(扩展)
什么是MD5?
主要增强算法复杂度和不可逆性
MD5不可逆,具体的值的md5是一样的
MD5破解网站的原理,背后有一个字典,MD5加密后的值,加密的前值
CREATE TABLE `testmd5` (
`id` int 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,'张三','123456'),(2,'李四','123456'),(3,'王五','123456');
-- 加密
UPDATE testmd5 SET pwd=MD5(pwd) WHERE id = 1
UPDATE testmd5 SET pwd=MD5(pwd) -- 加密全部密码
-- 插入的时候加密
INSERT INTO testmd5 VALUES(4,'小明',MD5('123456'))
-- 如何校验:将用户传递进来的密码,进行md5加密,然后对比加密后的值
SELECT * FROM testmd5 WHERE `name` = '小明' AND pwd = MD5('123456')