MySQL学习-函数(十)

191 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情

前言

上篇我们又学习了一部分MySQL中的函数。有兴趣的小伙伴可以阅读(# MySQL学习-函数(九))。
下面继续学习MySQL中的函数。

加密与解密函数

加密与解密函数主要用于对数据库中的数据进行加密和解密处理,以防止数据被他人窃取。这些函数在保证数据库安全时非常有用。

函数用法
PASSQORD(str)返回字符串str的加密版本,41位长的字符串,加密结果不可逆,常用于用户的密码加密
MD5(str)返回字符串str的md5加密后的值,也是一种加密方式。若参数为NULL,则会返回NULL
SHA(str)从原明文密码str计算并返回加密后的密码字符串,当参数为NULL时,返回NULL。SHA加密算法比MD5更加安全
ENCODE(value,password_seed)返回使用password_seed作为加密密码加密value
DECODE(value,password_seed)返回使用password_seed作为加密密码解密value

示例一

SELECT PASSWORD('mysql')
FROM DUAL
PASSWORD('mysql')
*E74858DB86EBA20BC33D0AECAE8A8108C56B17FA

运行可以得到加密后的结果。这里使用的MySQL5.7。如果在MySQL8.0中运行该语句,会发现报错,因为PASSWORD函数在MySQL8.0已经弃用了。所以后面开发中注意不使用此函数。

示例二

SELECT MD5('mysql'), SHA('mysql')
FROM DUAL
MD5('mysql')SHA('mysql')
81c3b080dad537de7e10e0987a4bf52ef460c882a18c1304d88854e902e11b85d71e7e1b

运行后可以得到加密后的结果。
这3个函数都是不可逆的,我们在保存数据的时候,直接保存加密后的字符串,并且每次加密计算都是一样的。以后如果做密码校验的功能,可以将密码经过对应的加密算法加密后再与数据库中保存的字段进行比较。

示例三

SELECT ENCODE('bingdundun', 'mysql'), DECODE(ENCODE('bingdundun', 'mysql'), 'mysql')
FROM DUAL
ENCODE('bingdundun', 'mysql')DECODE(ENCODE('bingdundun', 'mysql'), 'mysql')
$/g��F��bingdundun

运行之后,可以看到加解密的运行结果,都是对应的上的。同样的,这两个函数在MySQL8.0中也报错了,同样被弃用,以后不使用这两个函数进行开发。

MySQL信息函数

MySQL中内置了一些可以查询MySQL信息的函数,这些函数主要用于帮助数据库开发或运维人员更好地对数据库进行维护工作。

函数用法
VERSION()返回当前MySQL的版本号
CONNECTION_ID()返回当前MySQL服务器的连接数
DATABASE(), SCHEMA()返回MySQL命令行当前所在的数据库
USER(), CURRENT_USER(), SYSTEM_USER(), SESSION_USER()返回当前连接MySQL的用户名,返回结果格式为“主机名@用户名”
CHARSET(value)返回字符串value自变量的字符集
COLLATION(value)返回字符串value的比较规则

示例四

SELECT VERSION(), CONNECTION_ID(), DATABASE(), SCHEMA(), USER(), CURRENT_USER(),
CHARSET('bingdundun'), COLLATION('bingdundun')
FROM DUAL
VERSION()CONNECTION_ID()DATABASE()SCHEMA()USER()CURRENT_USER()CHARSET('bingdundun')COLLATION('bingdundun')
5.7.31-0ubuntu0.18.04.1 48testdbtestdbroot@localhostroot@localhostutf8utf8_general_ci

运行得出MySQL中的一些信息结果。

今天先学习到这里,明天继续。