既然这么险恶的环境等着我,那我只好变得更强了。|

理暗

园龄:2年9个月粉丝:1关注:0

MySQL函数

5、MySQL函数

官网:https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html

5.1、常用函数

菜鸟教程:https://www.runoob.com/mysql/mysql-functions.html

 

5.2、聚合函数(常用)

函数名称描述
COUNT() 计数
SUM() 求和
AVG() 平均值
MAX() 最大值
MIN() 最小值
...... ......
复制代码
-- 查询一个表中有多少个记录,就使用count()
SELECT COUNT(`BornDate`) FROM student; -- count(`字段`)会忽略所有的null值
SELECT COUNT(*) FROM student; -- count(*)不会忽略null值,它的本质是计算行数
SELECT COUNT(1) FROM student; -- count(1)不会忽略null值,它的本质也是计算行数
-- COUNT(*)和COUNT(1)区别:
-- COUNT(*)会把所有的列都走一遍,而COUNT(1)只走一个列。
-- 从执行的效率来说:
-- (1)如果列名为主键,count(列名)效率优于count(1)
-- (2)如果列名不为主键,count(1)效率优于count(列名)
-- (3)如果表中存在主键,count(主键列名)效率最优
-- (4)如果表中只有一列,则count(*)效率最优
-- (5)如果表有多列,且不存在主键,则count(1)效率优于count(*)

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破解网站的原理就是有一本字典,它有加密前和加密后的值,输入加密后的值可以查询返回加密前的值。

复制代码
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'),(3,'wangwu','123456')

-- 加密
UPDATE testmd5 SET pwd=MD5(pwd) WHERE id=1

UPDATE testmd5 SET pwd=MD5(pwd)  -- 加密全部的密码

-- 插入的时候加密
INSERT INTO testmd5 VALUES(7,'xiaoxiao',MD5('123456'))

-- 如何校检:将用户传递进来的密码,进行MD5加密,然后比对加密后的值
SELECT * FROM testmd5 WHERE name='xiaoxiao' AND pwd=MD5('123456')
复制代码

 

本文作者:Li-An

本文链接:https://www.cnblogs.com/Li-An/p/16440584.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   理暗  阅读(19)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起