MySQL之MySQL函数

五、MySQL函数

MySQL 5.7官方参考手册:https://dev.mysql.com/doc/refman/5.7/en/
SQL函数和运算符操作:https://dev.mysql.com/doc/refman/5.7/en/sql-function-reference.html

1.常用函数(不常用)

1)数学运算

SELECT ABS() --绝对值
SELECT CEILING() --向上取整
SELECT FLOOR() --向下取整
SELECT RAND() --返回一个0-1之间的随机数
SELECT SIGN() --判断一个数的符号:0返回0,负数返回-1,正数返回1

2)字符串函数

SELECT CHAR_LENGTH(str) --字符串长度
SELECT CONCAT(str,str,) --拼接字符串
SELECT INSERT(str,初始位置,替换长度,替代的str) --从某个位置开始替换某个长度
SELECT LOWER(str) --转化成小写字母
SELECT UPPER(str) --转化成大写字母
SELECT INSTR(str,子str) --返回第一次出现的子字符串的索引
SELECT REPLACE(str,出现的str,替换的str) --替换出现的指定字符串
SELECT SUBSTR(str,截取位置,截取长度) --返回指定的子字符串
SELECT REVERSE(str) --反转字符串

例:查询姓周的同学,并将姓改成邹。

SELECT REPLACE(StudentName,'周','邹') FROM student
WHERE StudentName LIKE '周%'

3)时间和日期函数

--获取当前日期的三种方式
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())

4)系统

--获取用户的两种方式
SELECT SYSTEM_USER() 
SELECT USER()
SELECT VERSION() --获取版本号

2.聚合函数(常用)

函数名称描述
COUNT()计数
SUM()求和
AVG()平均值
MAX()最大值
MIN()最小值
…………

1)count():使用其可查询一个表中有多少记录
例:查询student表中的所有记录

SELECT COUNT(`BornDate`) FROM student; --Count(字段),会忽略此字段中所有的null值的
SELECT COUNT(*) FROM student;
SELECT COUNT(1) FROM student;
-- Count(*)和Count(1),不会忽略含有null值的,本质上都是计算行数

2)总和、平均、最大、最小四种函数
例:分别求学生成绩的总和、平均分、最高分和最低分。

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.分组和过滤

例:查询不同课程的平均分、最高分、最低分,平均分要大于80分。

SELECT SubjectName,AVG(StudentResult) AS 平均分,MAX(StudentResult) AS 最高分,
MIN(StudentResult) AS 最低分
FORM result r
INNER JOIN `subject` sub
ON r.`SubjectNo` = sub.`SubjectNo`
GROUP BY r.SubjectNo --指定结果通过什么字段来分组
HAVING 平均分>=80 --使用分组需指定结果满足的条件,用HAVING而不是WHERE

3.数据库级别的MD5加密(扩展)

什么是MD5?
MD5信息摘要算法,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值,用于确保信息传输完整一致。
MD5由MD4、MD3、MD2改进而来,主要增强算法复杂度和不可逆性。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,'zhangsan','123456'),(2,'lisi','123456'),(1,'wangwu','123456')
--加密全部的密码(可以用WHERE只加密一部分)
UPDATE testmd5 SET pwd=MD5(pwd)
--在插入的时候就加密
INSERT INTO testmd5 VALUES(4,'xiaoming',MD5('123456'))
--如何校验:将用户传递进来的密码,进行md5加密,然后比对加密后的值
SELECT * FROM testmd5 WHERE `name`='xiaoming' AND pwd=MD5('123456')

补充:四、8.Select小结

注:顺序很重要!
①select 去重 要查询的字段 from 表
注意:表和字段可以取别名。
②XXX join 要连接的表 on 等值判断
③where(具体的值,子查询语句)
④Group By(通过哪个字段来分组)
⑤Having(过滤分组后的信息,条件和where是一样的,位置不同)
⑥Order By…(通过哪个字段排序:升序\降序)
⑦Limit startindex,pagesize
业务层面:查询:跨表、跨数据库…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值