Mysql的函数很是多,它能够进行数学运算,字符串运算等等。因为数量较多,咱们今天调一部分出来与你们分享。
关于函数的完整官方文档能够参考:https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.htmlhtml
这个标题其实有点误导人,说它经常使用吗,其实使用频率并不高,更应该叫作基础函数。mysql
数学运算web
SELECT ABS(-8) -- 绝对值 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('我爱你',1,2,'超级喜欢') -- 从某个位置开始替换某个长度 SELECT LOWER('Stephen_Gs') -- 小写字母 SELECT UPPER('Stephen_Gs') -- 大写字母 SELECT INSTR('Stephen_Gs','p') -- 返回第一个出现的字符串索引 SELECT REPLACE('狂神说坚持就能成功','坚持','努力') -- 替换出现的字符串 SELECT SUBSTR('狂神说坚持就能成功',4,6) -- 返回指定的子字符串(源字符串,截取的位置,截取的长度) SELECT REVERSE('清晨我上马') -- 反转 -- 应用实例 -- 查询姓狂的同窗,并改为系 SELECT REPLACE(`name`,'狂','系') AS `name` FROM student WHERE `name` LIKE '狂%'
时间和日期函数(应用较多)sql
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 SYSTEM_USER() -- 获取系统用户 SELECT USER() -- 获取用户 SELECT VERSION() -- 获取版本
聚合函数是咱们平时开发中最常使用的mysql函数
咱们如今有一个学生表
咱们经过count()的三种形式来获取表中的记录数svg
SELECT COUNT(`gradeid`) FROM student -- Count(字段),会忽略null值 SELECT COUNT(*) FROM student -- count(*),不会忽略null值,计算行数 SELECT COUNT(1) FROM student -- count(1),不会忽略null值,计算行数
1的结果为4,2和3的结果为5(对于count(1) 和 count(*) 的区别百度上有不少的解释,这里就再也不强调)函数
咱们还能够经过聚合函数算出分数的相关结果网站
SELECT SUM(`score`) AS 总和 FROM student SELECT AVG(`score`) AS 平均分 FROM student SELECT MAX(`score`) AS 最高分 FROM student SELECT MIN(`score`) AS 最低分 FROM student
什么是MD5?
主要是加强算法的复杂性和不可逆性。MD5虽然不可逆,可是具体值的md5倒是同样的。
对于MD5破解网站的原理,实际上是背后有一个字典。咱们查的是MD5加密后的值,它返回的是加密前的值(不过只能破解一些简单的密码。如:123456这种)加密
下面咱们模拟生成一个MD5加密的表
-- 建立 testmd5的表 CREATE TABLE `testmd5`( `id` INT(4) NOT NULL AUTO_INCREMENT, `name` VARCHAR(20) NOT NULL, `pwd` VARCHAR(50), PRIMARY KEY(`id`) )ENGINE = INNODB DEFAULT CHARSET = utf八、 -- 插入明文的密码 -- 明文密码 INSERT INTO testmd5(`name`,`pwd`) VALUES ('zs','123456'), ('ls','abcdef'), ('ww','12309aa')
-- 加密 UPDATE testmd5 SET pwd=MD5(pwd) -- 加密所有的密码
1.咱们能够看到原来的明文密码变成了一串奇怪的数字+字母;
2.咱们还可直接在插入时就对密码进行加密
INSERT INTO testmd5(`name`,`pwd`) VALUES ('小明',MD5('123456'))
3.观察上表中小明和zs的密码能够发现,他们两个的密文实际上是相等的,由于他们的明文密码都是123456。
4. 那咱们平时开发中又如何校验相关的数据呢,通常是将用户传进来的密码进行md5加密后,而后比对加密后的值。
SELECT * FROM testmd5 WHERE `name`='小明' AND pwd=MD5('123456')
查询的结果为: