官网:https://dev.mysql.com/doc/refman/5.7/en/sql-function-reference.html
5.1 常用函数
-- =============================常用函数===========================
-- 数学函数
select ABS(-8); -- 绝对值 8
select CEILING(9.4); -- 向上取整 10
select FLOOR(9,4); -- 向下取整 9
select RAND(); -- 0-1的一个随机数
select SIGN(10); -- 判断一个数的符号, 0-0, 负数- -1, 正数 - 1
-- 字符串函数
select CHAR_LENGTH('今天是七夕节') -- 查看字符长度 6
select CONCAT('我','爱','cl'); -- 拼接字符串 我爱cl
select INSERT('我爱曹某人',1,2,'超级热爱'); -- 插入,替换 在起始位置 1,替换字符长度2 超级热爱曹某人
select LOWER('Yuan') -- 转小写 yuan
select UPPER('Yuan') -- 转大写 YUAN
select INSTR('Yuan','a') -- 返回第一次出现的字串的索引 3
select REPLACE('坚持就能成功','坚持','努力') -- 替换出出现的指定字符串 努力就会成功
select SUBSTR('坚持就能成功',4,6) -- 截取第四个字符开始的6个长度 成功
select REVERSE('坚持就能成功') -- 反转 功成能就持坚
-- 查询行张的同学改为姓王
select REPLACE(studentName,'张','王') from student where studentName like '张%';
-- 时间和日期函数
select CURRENT_DATE(); -- 获取当前日期
select CURDATE(); -- 获取当前日期
select NOW(); -- 获取当前时间
select LOCALTIME(); -- 获取本地时间
select SYSDATE(); -- 获取系统时间
select YEAR(NOW());
select MONTH(NOW());
select DAY(NOW());
select HUOR(NOW());
select MINUTE(NOW());
select SECOND(NOW());
-- 系统
select SYSTEM_USER(); -- 当前用户
select USER(); -- 当前用户
select VERSION(); -- 系统版本
5.2 聚合函数
函数名称 | 描述 |
---|---|
COUNT() | 记数 |
SUM() | 求和 |
MAX() | 最大值 |
MIN() | 最小值 |
AVG() | 平均值 |
... | ... |
-- ==========================聚合函数=========================
-- 都能够统计,表中的数据
select COUNT(`studentName`) from student; -- count(字段) 会忽略所有null 值
select COUNT(*) from student; -- count(*) 不会忽略null值 本质=计算函数
select COUNT(1) from student; -- count(1) 不会忽略null值 本质=计算函数
select SUM(`studentResult`) AS 总和 from student;
select AVG(`studentResult`) AS 平均分 from student;
select MAX(`studentResult`) AS 最高分 from student;
select MIN(`studentResult`) AS 最低分 from student;
5.3 数据库级别的MD5加密(拓展)
什么是MD5?
主要增强算法复杂度和不可逆。
MD5不可逆,具体的值的md5是一样的
MD5破解网站的原理,背后有一个字典,md5加密后的值,加密前的值
-- =====================测试MD5 加密====================
create table `testmd5`(
`id` int(11) not null auto_increment commit '学号',
`name` varchar(255) not null commit '名字',
`pwd` varchar(255) not null commit '密码',
primary key (`id`)
)ENGING=INNODB DEFAULT CHARSET=utf8;
-- 明文密码
insert into testmd5 values (1,'zhang','123'),(2,'wang','456');
-- 加密
update testmd5 set pwd = MD5(pwd) where id = 1;
update testmd5 set pwd = MD5(pwd); -- 加密所有
-- 插入的时候加密
insert into testmd5 values (3,'zhang',MD5('123'));
-- 如何校验 将用户传递进来的密码,进行MD5 加密,然后对比加密后的值
select * from testmd5 where name = 'zhang' and pwd = MD5('123');