欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL学习第五篇:常用函数、聚合函数、数据库级别的MD5加密

程序员文章站 2022-06-01 08:50:29
...

mysql函数

1. 常用函数

  • 数字
    -- 绝对值
    select abs(-9.2)
    -- 向上取整
    select ceiling(10/2.6)
    -- 向下取整
    select floor(10/2.6)
    -- 返回随机数,0-1之间
    select rand()
    -- 判断一个数据的符号, 结果有0,-1,1
    -- 就是除了0之外符号是0,其余的数根据正负返回 1或 -1
    select sign(0)	-- 0
    
  • 字符串
    -- 字符串函数
    -- 字符串长度,不论是字符还是中文字,计数方式一样
    select char_length('ssdsdsd')	-- 7
    select char_length('打道回府鬼画符嗷嗷')	-- 9
    -- 拼接字符串
    select concat('dds','ds','各个')	-- ddsds各个
    -- 替换,从某个位置开始替换某个长度
    select insert('大中国', 1, 2, 'womende')	-- womende国
    -- 转大小写字母,若是中文,则没有效果,还是原来的中文
    select upper('sd')	-- SD
    SELECT lower('DSDdd') -- dsddd
    -- 查询第一次字符出现的位置
    select instr('sddsds', 'd')	-- 2
    -- 替换字符串		(字符串,待被替换字符串,替换字符串)
    select replace('动释放锁大师傅似的', '大师傅', 'sa')	-- 动释放锁sa似的
    -- 截取字符串,从第几个位置,截取几个字符串(可选,不写,则截取到尾)
    select substr('动释放锁大师傅似的', 4, 2)	-- 锁大
    -- 字符串反转
    SELECT reverse('dsdsda')	-- adsdsd
    
    -- 查询姓赵的同学,姓:赵改为早
    SELECT replace(studentname, '赵', '早') as 姓名, studentno
    from student 
    where studentname like '赵%'
    
  • 日期时间
    -- 时间和日期函数(重要,记住)
    -- 获取当前日期
    select CURRENT_DATE()	-- 2021-02-19
    SELECT CURDATE()	-- 2021-02-19
    -- 获取当前 日期 和 时间
    SELECT NOW()	-- 2021-02-19 10:55:19
    -- 获取本地 日期 和 时间
    select LOCALTIME()	-- 2021-02-19 10:56:50
    -- 获取系统 日期 和 时间
    SELECT SYSDATE()	-- 2021-02-19 10:56:50
    -- 获取年月日时分秒
    SELECT YEAR(NOW())
    SELECT month(NOW())
    SELECT day(NOW())
    SELECT hour(NOW())
    SELECT minute(NOW())
    SELECT second(NOW())
    
  • 用户和版本
    -- 获取用户
    SELECT USER()	-- [email protected]
    select system_user()
    -- 获取版本
    select version()	-- 5.0.96-community-nt
    

2. 聚合函数

-- 聚合函数
-- 统计表中数据,记录数
select count(studentname) from student;	-- count(字段),会忽略该字段数据的null值

select count(*) from student;	-- 不会忽略null值,本质计算行数,所有的列走一遍

select count(1) from student;	-- 不会忽略null值,本质计算行数,用1代表

-- 综合sum,平均值avg,最高分max,最低分min
select sum(studentresult) from result
select avg(studentresult) from result
select max(studentresult) from result
select min(studentresult) from result

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

  • MD5由MD4、MD3、MD2改进而来,主要增强算法复杂度和不可逆性。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
    SELECT * from testmd5
    -- 插入数据, 明文密码
    insert into testmd5(id,`name`,pwd)
    values(1, 'zhangsan','123456'),
    			(2, 'lisi','123456'),
    			(3, 'wangwu','123456')
    			
    -- 使用md5函数进行加密,id为1的
    update testmd5 set pwd = md5(pwd) where id=1
    -- 加密全部的数据
    update testmd5 set pwd = md5(pwd)
    
    -- 插入数据的时候加密
    insert into testmd5 values(4,'liliu',md5('123456'))
    
    -- 如何校验:将用户传进来的密码,进行加密,然后对比加密后的值
    select * from testmd5
    where `name`='liliu' and pwd=md5('123456')
    
相关标签: 数据库