Mysql数据库函数(五)加/解密及其它函数

#加/解密函数
1.加密函数
	格式:PASSWORD(str)
	作用:从原明文密码str计算并返回加密后的密码字符串,参数为NULL时,返回NULL,加密为单向不可逆
	eg.
		mysql> select password('newpwd');
		+-------------------------------------------+
		| password('newpwd')                        |
		+-------------------------------------------+
		| *1FA85AA204CC12B39B20E8F1E839D11B3F9E6AA4 |
		+-------------------------------------------+
	格式:md5(str)
	作用:为字符串算出一个md5 128bit校验和,返回32位16进制数字的二进制字符串形式返回,参数为NULL,返回NULL
	eg.
		mysql> select md5('mypwd');
		+----------------------------------+
		| md5('mypwd')                     |
		+----------------------------------+
		| 318bcb4be908d0da6448a0db76908d78 |
		+----------------------------------+
	格式:ENCODE(str,pswd_str)
	作用:使用pswd_str作为密码,加密str,是一个和str长度相同的二进制字符串,使用DECODE()解密结果
	eg.
		mysql> select encode('newpwd','cry'),length(encode('newpwd','cry'));
		+------------------------+--------------------------------+
		| encode('newpwd','cry') | length(encode('newpwd','cry')) |
		+------------------------+--------------------------------+
		|                    |                              6 |
		+------------------------+--------------------------------+
2.解密函数
	格式:DECODE(crypt_str,pswd_str)
	作用:使用pswd_str作为密码,解密加密字符串crypt_str,crypt_str为由ENCODE()返回的字符串
	eg.
		mysql> select decode(encode('newpwd','cry'),'cry');
		+--------------------------------------+
		| decode(encode('newpwd','cry'),'cry') |
		+--------------------------------------+
		| newpwd                               |
		+--------------------------------------+
3.格式化函数
	格式:format(x,n)
	作用:将数字x格式化,并以四舍五入的方式保留小数点后n位,结果以字符串形式返回,若n==0,则返回结果函数不含小数部分
	eg.
		mysql> select format(1.34356,4),format(1.34354,4),format(1.32,4),format(1.32,0);
		+-------------------+-------------------+----------------+----------------+
		| format(1.34356,4) | format(1.34354,4) | format(1.32,4) | format(1.32,0) |
		+-------------------+-------------------+----------------+----------------+
		| 1.3436            | 1.3435            | 1.3200         | 1              |
		+-------------------+-------------------+----------------+----------------+
4.进制转换函数
	格式:conv(N,from_base,to_base)
	作用:返回数值N的字符串表示,有from_base进制转化为to_base进制,任意一个参数为NULL,返回NULL。
	eg.
		mysql> select conv('a',16,2),conv(1,10,2),conv(10,10,8),conv(10,16,8);
		+----------------+--------------+---------------+---------------+
		| conv('a',16,2) | conv(1,10,2) | conv(10,10,8) | conv(10,16,8) |
		+----------------+--------------+---------------+---------------+
		| 1010           | 1            | 12            | 20            |
		+----------------+--------------+---------------+---------------+
5.IP地址与数字相互转换的函数
	格式:INET_ATON(expr)
	作用:给出一个作为字符串的网络地址的点地址表示,返回一个代表地址数值的整数,计算规则192*256^3+168*256^2+0*256+0
	eg.
		mysql> select inet_aton('192.168.0.0'); 
		+--------------------------+
		| inet_aton('192.168.0.0') |
		+--------------------------+
		|               3232235520 |
		+--------------------------+
	格式:INET_NTOA(expr)
	作用:给定一个数字网络地址,返回作为字符串的改地址的点地址表示
	eg.
		mysql> select inet_ntoa(3232235520);                      
		+-----------------------+
		| inet_ntoa(3232235520) |
		+-----------------------+
		| 192.168.0.0           |
		+-----------------------+
6.加锁和解锁函数
	格式:GET_LOCK(str,timeout)
	作用:使用str给定的名字得到一个锁,持续时间timeout秒。成功返回1,超时返回0,错误返回NULL
	格式:RELEASE_LOCK(str)
	作用:解开被get_lock()获取,用str命名的锁,若锁被解开返回1,线程尚未创建锁返回0(未解开),锁不存在,返回NULL
	格式:IS_FREE_LOCK(str)
	作用:检查名为str的锁是否可以使用,可以使用返回1,正在被使用,返回0,出现错误返回NULL
	格式:IS_USED_LOCK(str)
	作用:检查名为str的锁是否正在使用,正在使用返回使用该锁的客户端的连接表示符(connection ID),否则返回NULL。
	eg.
		mysql> mysql> select get_lock('lock',10),IS_USED_LOCK('lock'),is_free_lock('lock'),release_lock('lock'),is_free_lock('lock');
		+---------------------+----------------------+----------------------+----------------------+----------------------+
		| get_lock('lock',10) | IS_USED_LOCK('lock') | is_free_lock('lock') | release_lock('lock') | is_free_lock('lock') |
		+---------------------+----------------------+----------------------+----------------------+----------------------+
		|                   1 |                    3 |                    0 |                    1 |                    1 |
		+---------------------+----------------------+----------------------+----------------------+----------------------+
7.重复执行指定操作
	格式:BENCHMARK(count,expr)
	作用:重复count次执行表达式expr,用于计算mysql处理表达式速度或者可以在mysql客户端内部报告语句执行时间
	eg.执行一次和500000次时间对比
		mysql> select password('newpd');
		+-------------------------------------------+
		| password('newpd')                         |
		+-------------------------------------------+
		| *53EF09F01785E18B395ED7489D9A37A661B03196 |
		+-------------------------------------------+
		1 row in set, 1 warning (0.00 sec)

		mysql> select benchmark(500000,password('newwd'));
		+-------------------------------------+
		| benchmark(500000,password('newwd')) |
		+-------------------------------------+
		|                                   0 |
		+-------------------------------------+
		1 row in set, 1 warning (0.11 sec)
8.改变字符集函数
	格式:convert(... using ...)
	作用:带有using的convert()函数被用来在不同的字符集之间转化数据
	eg.
		mysql> select charset('string'),charset(convert('string' using latin1));
		+-------------------+-----------------------------------------+
		| charset('string') | charset(convert('string' using latin1)) |
		+-------------------+-----------------------------------------+
		| utf8              | latin1                                  |
		+-------------------+-----------------------------------------+
9.改变数据类型的函数
	格式:cast(x, as type)或者convert(x,type)
	作用:将一个类型的值转换为另一个类型的值,可转换的type有:BINARY、CHAR(n)、DATE、TIME、DATETIME、DECIMAL、SIGNED、UNSIGNED
	eg.
		mysql> select cast(100 as char(2)),convert('2010-10-01 12:12:12',time); 
		+----------------------+-------------------------------------+
		| cast(100 as char(2)) | convert('2010-10-01 12:12:12',time) |
		+----------------------+-------------------------------------+
		| 10                   | 12:12:12                            |
		+----------------------+-------------------------------------+

猜你喜欢

转载自blog.csdn.net/poetry_and_distance/article/details/79794647