MySQL函数——(六)
7.1常用函数
分类: 数学函数 , 字符串函数 , 日期和时间函数 , 系统信息函数
-- 数学函数 (这里只列出一些常用的)
SELECT ABS(-8); /*绝对值*/
SELECT CEILING(9.4); /*向上取整*/
SELECT FLOOR(9.4); /*向下取整*/
SELECT RAND(); /*随机数,返回一个0-1之间的随机数*/
SELECT SIGN(0); /*符号函数: 负数返回-1,正数返回1,0返回0*/
-- 字符串函数
SELECT CHAR_LENGTH('狂神说坚持就能成功'); /*返回字符串包含的字符数*/
SELECT CONCAT('我','爱','程序'); /*合并字符串,参数可以有多个*/
SELECT INSERT('我爱编程helloworld',1,2,'超级热爱'); /*替换字符串,从某个位置开始替换某个长度*/
SELECT LOWER('KuangShen'); /*小写*/
SELECT UPPER('KuangShen'); /*大写*/
SELECT LEFT('hello,world',5); /*从左边截取*/
SELECT RIGHT('hello,world',5); /*从右边截取*/
SELECT REPLACE('狂神说坚持就能成功','坚持','努力'); /*替换字符串*/
SELECT SUBSTR('狂神说坚持就能成功',4,6); /*截取字符串,开始和长度*/
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 VERSION(); /*版本*/
SELECT USER(); /*用户*/
-- 查询姓李的同学,改成立
SELECT REPLACE(studentname,'李','历') AS 新名字
FROM student WHERE studentname LIKE '李%';
7.2聚合函数
-- 聚合函数
/*COUNT:统计表中的数据*/
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 result;
SELECT AVG(StudentResult) AS 平均分 FROM result;
SELECT MAX(StudentResult) AS 最高分 FROM result;
SELECT MIN(StudentResult) AS 最低分 FROM result;
7.3数据库级别的MD5加密(扩展)
i.什么是MD5?
主要增强算法复杂度和不可逆性
MD5不可逆,具体的值的MD5是一样的
MD5破解网站的原理,背后都是一个字典,匹配到MD5加密后的值,就返回加密前的值
-- 测试MD5加密--
-- 建立一张表
CREATE TABLE `md5test`(
`id` INT(4) NOT NULL,
`name` VARCHAR(30) NOT NULL,
`pwd` VARCHAR(50) NOT NULL,
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
-- 插入数据--
-- 明文密码
INSERT INTO `md5test` VALUES (1,'qzp','123456'),(2,'qzy','123456'),(3,'wjw','123456')
-- 加密密码
UPDATE md5test SET pwd=MD5(pwd) WHERE id=1;
UPDATE md5test SET pwd=MD5(pwd) WHERE id!=1 AND id !=4
DROP TABLE md5test;
INSERT INTO md5test VALUES(4,'wo',MD5('123456'))
TRUNCATE md5test
-- 插入的时候就加密
INSERT INTO md5test VALUES(5,'wo',MD5('123456'))
UPDATE md5test SET pwd=MD5(pwd) WHERE id=5;
-- 如何校验:将用户传递进来的密码,进行MD5加密,然后比对加密后的值
SELECT * FROM md5test WHERE `name`='wo' AND `pwd`=MD5('123456')