• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MySQL基础教程12 — 函数之其他函数

MySQL基础教程12 — 函数之其他函数

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了MySQL, 函数,其他函数等相关知识,希望本文的分享对您有所帮助


1. 位函数

对于比特运算,MySQL 使用 BIGINT (64比特) 算法,因此这些操作符的最大范围是 64 比特。

  • |

Bitwise OR:

mysql> SELECT 29 | 15;
-> 31

其结果为一个64比特无符号整数。

  • &

Bitwise AND:

mysql> SELECT 29 & 15;
-> 13

其结果为一个64比特无符号整数。

  • ^

Bitwise XOR:

mysql> SELECT 1 ^ 1;
-> 0
mysql> SELECT 1 ^ 0;
-> 1
mysql> SELECT 11 ^ 3;
-> 8

结果为一个64比特无符号整数。

  • <<

把一个longlong (BIGINT)数左移两位。

mysql> SELECT 1 << 2;
-> 4

其结果为一个64比特无符号整数。

  • >>

把一个longlong (BIGINT)数右移两位。

mysql> SELECT 4 >> 2;
-> 1

其结果为一个64比特无符号整数。

  • ~

反转所有比特。

mysql> SELECT 5 & ~1;
-> 4

其结果为一个64比特无符号整数。

  • BIT_COUNT(N)

返回参数N 中所设置的比特数

mysql> SELECT BIT_COUNT(29);
-> 4

2. 加密函数

本节介绍了加密和加密值。若你想要储存一些由可能包含任意字节值的加密函数返回的结果,使用BLOB列而不是 CHAR或VARCHAR 列,从而避免由于结尾空格的删除而改变一些数据值的潜在问题。

  • AES_ENCRYPT(str,key_str) , AES_DECRYPT(crypt_str,key_str)

这些函数允许使用官方AES进行加密和数据加密 (高级加密标准 ) 算法, 即以前人们所熟知的 “Rijndael”。 保密关键字的长度为128比特,不过你可以通过改变源而将其延长到 256 比特。我们选择了 128比特的原因是它的速度要快得多,且对于大多数用途而言这个保密程度已经够用。

输入参数可以为任何长度。若任何一个参数为NULL,则函数的结果也是NULL。

因为 AES 是块级算法,使用填充将不均衡长度字符串编码,这样结果字符串的长度的算法为 16 * (trunc(string_length / 16) + 1)。

若 AES_DECRYPT()检测到无效数据或不正确填充,它会返回 NULL。然而,若输入的资料或密码无效时,AES_DECRYPT()有可能返回一个非 NULL 值 (可能为无用信息 )。

你可以通过修改你的问询,从而使用AES函数以加密形式来存储数据:

INSERT INTO t VALUES (1,AES_ENCRYPT('text','password'));

AES_ENCRYPT()和AES_DECRYPT() 可以被看作MySQL中普遍通用的密码最安全的加密函数。

  • DECODE(crypt_str,pass_str)

使用 pass_str 作为密码,解密加密字符串 crypt_str, crypt_str 应该是由ENCODE()返回的字符串。

  • ENCODE(str,pass_str)

使用pass_str 作为密码,解密 str 。 使用DECODE()解密结果。

结果是一个和str长度相同的二进制字符串。若你想要将其保留在一个列中,可使用 BLOB 列类型。

  • DES_DECRYPT(crypt_str[,key_str])

使用DES_ENCRYPT()加密一个字符串。若出现错误,这个函数会返回 NULL。

注意,这个函数只有当MySQL在SSL 的支持下配置完毕时才会运作。

假如没有给定 key_str 参数, DES_DECRYPT() 会首先检查加密字符串的第一个字节, 从而确定用来加密原始字符串的DES密码关键字数字,之后从DES关键字文件中读取关键字从而解密信息。为使其运行,用户必须享有 SUPER 特权。可以选择--des-key-file服务器指定关键字文件。

假如你向这个函数传递一个key_str 参数,该字符串被用作解密信息的关键字。

若 crypt_str 参数看起来不是一个加密字符串, MySQL 会返回给定的 crypt_str。

  • DES_ENCRYPT(str[,(key_num|key_str)])

用Triple-DES 算法给出的关键字加密字符串。若出现错误,这个函数会返回NULL。

注意,这个函数只有当MySQL 在SSL的支持下配置完毕后才会运行。

使用的加密关键字的选择基于第二个到 DES_ENCRYPT()的参数,假如给定:

参数说明
无参数使用来自DES关键字文件的第一个关键字。
key_num使用DES 关键字文件给出的关键字数字(0-9)。
key_str使用给出的关键字字符串为 str 加密。

选择--des-key-file服务器指定关键字文件。

返回字符串是一个二进制字符串,其中第一个字符为 CHAR(128 | key_num)。

加上 128使得识别加密关键字更加容易。若你使用一个字符串关键字,则 key_num 为127。

结果的字符串长度为 new_len = orig_len + (8-(orig_len % 8))+1。

DES关键字文件中的每一行都具有如下格式:

key_num des_key_str

每个key_num 必须是一个从0到0范围内的数字。文件中行的排列顺序是任意的。 des_key_str 是用来加密信息的字符串。在数字和关键字之间应该至少有一个空格。若你未指定任何到DES_ENCRYPT()的关键字参数,则第一个关键字为默认的使用关键字。

使用FLUSH DES_KEY_FILE语句,你可以让 MySQL从关键字文件读取新的关键字值。这要求你享有 RELOAD特权。

拥有一套默认关键字的一个好处就是它向应用程序提供了一个检验加密列值的方式,而无须向最终用户提供解密这些值的权力。

mysql> SELECT customer_address FROM customer_table
> WHERE crypted_credit_card = DES_ENCRYPT('credit_card_number');
  • ENCRYPT(str[,salt])

使用Unix crypt() 系统调用加密 str。 salt 参数应为一个至少包含2个字符的字符串。若没有给出 salt 参数,则使用任意值。

mysql> SELECT ENCRYPT('hello');
-> 'VxuFAJXVARROc'

至少在一些系统中,ENCRYPT()除了str的前八位字符之外会忽略所有内容。这个行为由下划线的crypt() 系统调用的执行所决定。

假如crypt()在你的系统中不可用(正如在 Windows系统), ENCRYPT() 则会始终返回NULL。鉴于这个原因,我们向你推荐使用 MD5() 或SHA1() 来代替,因为这两个函数适合所有的平台。

  • MD5(str)

为字符串算出一个 MD5 128比特检查和。该值以32位十六进制数字的二进制字符串的形式返回, 若参数为 NULL 则会返回NULL。例如,返回值可被用作散列关键字。

mysql> SELECT MD5('testing');
-> 'ae2b1fca515949e5d54fb22b8ed95575'

这是"RSA Data Security, Inc. MD5 Message-Digest Algorithm."

假如你想要将这个值转化为大写字母,参见“Cast函数和操作符”中BINARY操作符项中给出的二进制字符串转换。

  • OLD_PASSWORD(str)

当PASSWORD()的执行变为改善安全性时,OLD_PASSWORD()会被添加到 MySQL。OLD_PASSWORD()返回从前的PASSWORD()执行值( 4.1之前),同时允许你为任何4.1 之前的需要连接到你的5.1 版本MySQL服务器前客户端设置密码,从而不至于将它们切断。

  • PASSWORD(str)

从原文密码str 计算并返回密码字符串,当参数为 NULL 时返回 NULL。这个函数用于用户授权表的Password列中的加密MySQL密码存储

mysql> SELECT PASSWORD('badpwd');
-> '7f84554057dd964b'

PASSWORD() 加密是单向的 (不可逆 )。

PASSWORD() 执行密码加密与Unix 密码被加密的方式不同。请参见ENCRYPT()。

注释: PASSWORD()函数在MySQL服务器中的鉴定系统使用;你不应将它用在你个人的应用程序中。为达到同样目的,可使用 MD5()或SHA1() 代替。 更多关于在您的应用程序中处理密码及安全鉴定的信息见RFC 2195

  • SHA1(str) SHA(

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 分享下mysql各个主要版本之间的差异
  • MySQL essential版本和普通版本有什么区别?
  • redhat 5.4下安装MYSQL全过程
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • 解析远程连接管理其他机器上的MYSQL数据库
  • mysql 精简过程(删除一些文件)

相关文章

  • 2018-12-05php中的implements 使用详解
  • 2018-12-05SQL2008中SQL应用之-锁定(locking) 应用分析
  • 2018-12-05mysql 列类型
  • 2018-12-05MySQL之-使用Hibernate连接MySQL数据库时连接超时断开的问题解决方法
  • 2018-12-05用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备
  • 2018-12-05mysql 基本操作
  • 2018-12-05MySQL与Oracle 差异比较之一数据类型
  • 2018-12-05生产库自动化MySQL5.6安装部署详细教程_MySQL
  • 2018-12-05MYSQL中获取得最后一条记录的语句
  • 2018-12-05关于存储过程的编写的一些体会

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • oracle 日期函数
    • php连接mysql数据库详细步骤(图文)
    • SQL SERVER 日期格式转换详解
    • 完美解决MSSQL"以前的某个程序安装已在安装计算机上创建挂
    • MAC上Mysql忘记Root密码或权限错误的快速解决方案_MySQL
    • 关于MySQL数据库设计总结
    • Mysql5.7.11在windows10上的安装与配置(解压版)_MySQL
    • 101个MySQL的配置和优化的提示
    • MySQL 数据库优化的具体方法说明
    • MySQL中的常用函数详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有