MySQL函数
官网:https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html
1.常用函数
-- 数学运算
SELECT ABS(-1) -- 返回绝对值
SELECT CEILING(10.6) -- 向上取整
SELECT FLOOR(10.6) -- 向下取整
SELECT RAND() -- 返回一个0~1之间的随机数
SELECT SIGN(98) -- 返回参数的符合 正数返回1,负数返回-1,0返回0
-- 字符串函数
SELECT CHAR_LENGTH('我爱中国') -- 返回字符串长度
SELECT CONCAT('我','爱','中国') -- 拼接字符串
SELECT INSERT('我爱中国',1,2,'十分热爱中国') -- 从某个位置开始替换某个长度 结果为:十分热爱中国中国
SELECT LOWER('BeiJing') -- 转化为小写字母
SELECT UPPER('BeiJing') -- 转化为大写字母
SELECT INSTR('xiaoming','m') -- 返回子串第一次出现的位置
SELECT REPLACE('xiaoming','ming','hong') -- 将字符串中的xx替换成xx
SELECT SUBSTR('我爱中国',3,2) -- 从第m个开始截取n个字符,结果为中国
SELECT REVERSE('我是小明') -- 反转字符串
-- 查询姓 张 的同学,改为姓 杨
SELECT REPLACE(studentname,'张','杨') FROM `student`
WHERE `studentname` LIKE '张%'
-- 时间和日期函数(记住)
SELECT CURRENT_DATE() -- 返回当前的日期
SELECT CURRENT_TIME() -- 返回当前的时间
SELECT NOW() -- 返回当前的日期时间
SELECT LOCALTIME() -- 返回本地时间
SELECT SYSDATE() -- 返回系统时间
SELECT YEAR(NOW()) -- 返回当前年份
-- 系统
SELECT SYSTEM_USER() -- 当前用户
SELECT VERSION() -- 版本
2.聚合函数
函数名称 | 描述 |
---|---|
COUNT() | 计数 |
SUM() | 求和 |
AVG() | 平均值 |
MAX() | 最大值 |
MIN() | 最小值 |
… |
-- ================聚合函数====================
SELECT COUNT(studentname) FROM `student` -- COUNT(指定列),会忽略所有的null值
SELECT COUNT(*) FROM `student` -- COUNT(*),不会忽略null值,本质 计算行数
SELECT COUNT(1) FROM `student` -- COUNT(1),不会忽略null值,本质 计算行数
/*
无主键:count(1)比count(x)快
有主键:count(主键)最快
count(*)与count(1)都包括null统计,而count(字段)不包括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加密后的值,加密的前值
-- ============测试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,'张三','123456'),(2,'李四','123456'),(3,'王五','123456')
-- 加密
UPDATE `testmd5` SET `pwd`=MD5(pwd) -- 全部加密
-- 插入时加密
INSERT INTO `testmd5` VALUES(4,'小明',MD5('123456'))
-- 如何校验:将用户传递进来的密码,进行md5加密,然后对比加密后的值
SELECT * FROM `testmd5` WHERE `name`='小明' AND `pwd`=MD5('123456')