我看到了那天的夕阳,美得如此骄艳,我便决定,追寻夕阳,拼尽余生。

上一章简单介绍了 MySQL的条件判断函数(十三),如果没有看过,请观看上一章

一.一 MySQL的其他函数

MySQL除了常见的,数学函数,字符串函数,日期/时间函数,还有一些其他的函数,如 系统信息函数,加密解密函数等。 现将其他的函数,统一进行讲解。

讲解的函数主要有:

  • 系统信息函数
  • 加密/解密函数
  • 进制转换函数
  • ip与数字转换函数
  • 类型转换函数
  • 格式化函数

其中,系统信息函数有:

函数 作用 举例 举例结果
versison() 查询版本号 select version() 5.7.13
connection_id() 查询连接id select connection_id() 8
database() 查询目前所使用的数据库 select database() yuejl
schema() 查询数据库 select schema() yuejl
user() 查询登录的用户 select user() root
current_user() 查询登录的用户 select current_user() root
system_user() 查询登录的用户 select system_user() root
session_user() 查询登录的用户 select session_user() root
charset(str) 获取字符串的字符集 select charset(‘abc123’) gbk
collation(str) 获取字符串的排序方式 select collation(‘abc123’) gbk_chinese_ci
last_insert_id() 获取最后生成的id值 select last_insert_id() 1

加密解密函数有:

函数 作用 举例 举例结果
password(str) 加密字符串str select password(‘abc123’) *6691484EA6B50DDDE1926A220DA01FA9E575C18A
md5(str) md5方式加密 select md5(‘abc123’) e99a18c428cb38d5f260853678922e03
encode(str,ps_str) 固定字符串加密 select encode(‘abc123’,‘A’) <黟‹
decode(str,ps_str) 固定字符串解密 select decode(encode(‘abc123’,‘A’),‘A’) abc123

其他函数:

函数 作用 举例 举例结果
format(num,n) 格式化数字 select format(1234.234.2) 1,234.23
conv(num,from_base,to_base) select conv(‘F’,16,10) 15
bin(num) 将十进制转换二进制 bin(7) 111
oct(num) 将十进制转换成八进制 oct(10) 12
hex(num) 将十进制转换成十六进制 hex(15) F
inet_aton(ip字符串) 将ip地址转换成数字 select inet_aton(‘127.0.0.1’) 2130706433
inet_ntoa(数字) 将数字转换成ip地址 select inet_ntoa(2130706433) 127.0.0.1
convert(str using 新的编码) 转换字符串的编码 select charset(convert(‘abc’ using utf8)) utf8
cast(x as type) 改变数据类型 select cast(10 as char(4)) 10
convert(x ,type) 改变数据类型 select convert(10,char(4)) 10

二. 系统信息函数

二.一 查看MySQL的版本号 version()

 select version();


老蝴蝶所用的版本是 5.7.13版本。

二.二 查询连接id connection_id()

 select connection_id();

查询出来的是连接的 id.

每一个用户连接数据库时,都会有一个唯一id,进行相应的区分。 注意,这个id 并不是从1 按照从小到大排列的。 会根据登录的次数,而有不同。

可以通过 processlist 命令来详细的查询。

 show processlist;

processlist 命令不仅可以查询当前有哪些线程在运行, 当前的所有的连接数,还可以显示当前的连接的状态,帮助识别有问题的查询语句。

其中,如果是root 管理员用户的话,可以查询全部的用户的信息。 如果是普通的用户的话,只能显示该用户的信息。

如果用户过多的话, 可以使用 show full processlist ; 命令来查询全部。 show processlist 默认只列出前100条记录。

 show full processlist;

各个列的含义如下:

  1. id 列 用户登录Mysql时,系统自动分配的 connection id, 即 select connection_id() 函数的返回值。

  2. user 列。 显示当前登录的用户。 如果是root管理员,就显示root.
    如果不是root,就显示用户权限范围内的sql语句。

  3. host 列 显示这条语句是从哪个ip的哪个端口发出的。 按照 ip:端口 的格式展示。 端口,并不是mysql的端口3306.

  4. db 列 目前这个进程连接的是哪个数据库。 如果没有使用数据库,显示null

  5. Command 列 当前连接执行的命令,取值为 休眠 (Sleep), 查询(Query),连接(Connect)

  6. Time 列显示这个状态持续的时间,单位是秒

  7. State 列 显示当前连接的sql语句的状态。

  8. info 列 显示这个SQL语句,是判断问题语句的一个重要依据。

二.三 查询当前使用的数据库 database() 和 schema()

 use yuejl();

数据库。

 select database();

或者:

 select schema();

二.四 获取用户名 user();

可以用以下四个函数

  • user()
  • current_user()
  • system_user()
  • session_user()

一般情况下,这四个函数查询出来的值是相同的。

 select user(),current_user(),system_user(),session_user();

返回的是,连接服务器的用户名及当前的主机。 root为用户名,localhost为主机。

二.五 获取字符串的字符集 charset(str)

可以获取字符串的字符集, 常见的为 utf8, gbk, 默认的为 latin1。

老蝴蝶默认的是gbk

 select charset('岳泽霖'),charset(convert('岳泽霖' using gbk)),charset(convert('岳泽霖' using latin1));

其中, convert(str using 新编码方式) 是 改变字符串的编码方式。

常常在创建数据库时,指定数据库的字符集。

二.六 字符串的排序方式 collation(str)

获取字符串的排列方式。 一般返回 编码方式_general_ci

 select collation('两个蝴蝶飞'),collation(convert('两个蝴蝶飞' using utf8)),collation(convert('两个蝴蝶飞' using latin1));

常常在创建数据库时,指定数据库的排序方式。

二.七 获取最后一个生成的id 值 last_insert_id()

常常用于插入数据之前,获取最大的自动增长的id() 值。 如MyBatis的插入id值。

1 .为了演示,先创建一个数据表 teacher, 使用yuejl数据库。 是自动增长的。

 user yuejl;create table teacher(id int(11) primary key auto_increment,name varchar(20));

2 . 先插入第一条数据,再查询

 insert into teacher(name) values('两个蝴蝶飞');

插入成功, 查询id

 select last_insert_id();

查询出id 值为1.

3 . 再次插入一条数据,然后查询

 insert into teacher(name) values('岳泽霖');

再次查询

 select last_insert_id();

4 . 批量插入时的增长

 insert into teacher(name) values ('a'),('b'),('c');

再次查询

 select last_insert_id();


查询后,并不是5, 而是3.

在批量插入之前,下一个值是3, 获取的是插入 name=a 记录时的id.

即如果插入多行记录时,只返回插入第一行时所返回的值。

5 . 修改时 不变。

 update teacher set name='修改后的值' where id=1;

再查询

 select last_insert_id();

6 . last_insert_id() 的值只与最近查询的那个表有关。 如果此时再有一个自动增长的 user 表,
往teacher表再添加一条记录,那么 last_insert_id() 变成了4.
这时,再往 user() 表插入一条数据,
那么这个时候,last_insert_id() 就与 user 表相关了,变成了1.

三. 加解密函数

三.一 password(str) 加密

是单向加密,且不可逆的。 常常用于MySQL服务器加密。

如果加密的字符串为null,那么将返回 空字符串.

 select password('abc123'),password('两个蝴蝶飞'),password(null);

三.二 md5(str) MD5方式加密

采用Md5的方式进行加密

 select md5('abc123'),md5('123456');

三.三 encode(str,ps_str) 固定字符串加密

以 ps_str 字符串为密钥,进行加密 str字符串。 可以让用户自定义加密方式。

 select encode('abc123','A'),encode('abc123','ABC');

三.四 decode(str,ps_str) 固定字符串解密

以ps_str字符串为密钥,进行解密 str字符串。 与encode(str,ps_str)互为反函数

 select decode(encode('abc123','A'),'A'),decode(encode('abc123','ABC'),'ABC');

可以正好返回以前要加密的字符串。

四. 其他函数

四.一 格式化数字 format(num,n)

格式化数字 num, 返回 n位小数, 四舍五入的方式进行获取。

 select format(1234.234,2),format(1234.236,2),format(12.23423,1),format(123.22,0),format(123.23,-1);

发现, -1 值不起作用。 即 n>=0.

要想使 -1起作用,可以用 数学函数里面的 round(x,-1) 函数进行处理。

四.二 conv(num,from_base,to_base) 进制转换

其中,最小为二进制。

 select conv('F',16,10),conv(7,10,2),conv(9,10,8),conv(1010,2,10);

四.三 bin(num) 将十进制数字转换成二进制

 select bin(7),bin(4),bin(10);

四.四 oct(num) 将十进制数字转换成八进制

 select oct(7),oct(10),oct(15);

四.五 hex(num) 将十进制数字转换成十六进制

 select hex(9),hex(10),hex(15);

四.六 inet_aton(ip字符串) ip地址转换成数字

其中, inet 为internet 的简写。

aton 为 address to num.

 select inet_aton('127.0.0.1'),inet_aton('10.1.1.121');

值分别为 2130706433,和 167838073

为 数字结果=第一个值256^3 +第二个值256^2 + 第三个值*256^1+ 第四个值。

四.七 inet_ntoa(数字) 将数字转换成ip地址

与 inet_aton(ip字符串) 互为反函数。

ntoa 为 num to address.

 select inet_ntoa(2130706433),inet_ntoa(167838073);

四.八 convert(str using 新的编码) 转换字符串的编码

可以改变字符串的编码

要借助一下 charset(str) 函数进行验证。

 select charset('岳泽霖'),charset(convert('岳泽霖' using gbk)),charset(convert('岳泽霖' using latin1));

四.九 cast(x as type),convert(x,type) 改变数据类型

可以改变数据类型,但前堤是两个数据类型可以相互转换。

其中,转换成类型 type 可以的取值有:

type取值 表示意义
char(n) 字符串型
date 日期型
time 时间型
datetime 日期和时间型
decimal float浮点型
signed int类型
 select cast(10 as char(4)),cast('1234' as signed),convert(10,char(4)),convert('1234',signed);

谢谢!!!

MySQL的系统信息函数和加密解密函数(十四)相关推荐

  1. php中的base64,php中base64_decode与base64_encode加密解密函数

    php中base64_decode与base64_encode加密解密函数,实例分析了base64加密解密函数的具体用法,具有一定的实用价值,需要的朋友可以参考下 本文实例讲述了php中base64_ ...

  2. php动态密码和加密解密函数的使用(动态密码、Discuz核心函数AuthCode、任意输入密码验证)

    php加密解密的使用 一.项目说明 二.项目分析 1.js外部文件 2.HTML容器构建 3.layui前端验证 4.php后端验证 封装函数 密码验证规则 strpos内置函数 三.经典的核心加密函 ...

  3. 【C 语言】文件操作 ( 文件加密解密 | 使用第三方 DES 加密解密库 | 头文件导入 | 兼容 C++ 语言 | 加密解密函数说明 )

    文章目录 一.导入第三方库头文件 二.头文件说明 1.兼容 C++ 语言 2.头文件导入限制 3.加密解密函数说明 一.导入第三方库头文件 对文件进行加密 , 将文件中的数据分成若干块 , 一块一块的 ...

  4. 加密解密php,2个比较经典的PHP加密解密函数分享

    项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理. 最常见的应用在用户登录以及一些AP ...

  5. php可逆加密解密函数,php 好用可逆的 加密解密 函数。

    php 好用可逆的加密解密函数. function encode($content, $key = 'pass' ) { // 加密数据的函数 , 主要进行移位操作 $key = md5($key); ...

  6. 字符串加密解密函数 (C#) (转)

    字符串加密解密函数 (C#) (转) 字符串加密解密函数 (C#) using System; using System.Text; using System.Security.Cryptograph ...

  7. 自己实现的php加密解密函数结果纯字母和数字

    php自带的base64加密解密函数大部分人都知道,加密后很容易被解密,所以就自己实现的php加密解密函数,密文是字母和数字组合. <?php /* *加密 */ function encode ...

  8. 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)

    普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语言时这类可逆函数非常难搞定.所以这时尽量使用AES DES RC4 Rabb ...

  9. MySQL自带的AES加密解密比较常用的使用方法

    接手的老项目中,有些SQL使用了MySQL自带的AES加密解密,为了方便操作数据,研究了一下使用方法,在这里记录一下. 加密 update user_password set password = H ...

  10. JavaScript 自写加密解密函数

    JavaScript 自写加密解密函数 版权声明:本文为CSDN博主「zshsats」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 原文链接:https:// ...

最新文章

  1. 一种新的高级抖动分离解析方法
  2. Linux09-网络配置
  3. 如何将mysql卸载干净
  4. NoBrokersAvailableError
  5. STL源码剖析读书笔记--第6章第7章--算法与仿函数
  6. IDEA一直卡在Resolving Maven dependency的解决办法
  7. 城市地区级联二级下拉选择菜单js特效
  8. 64位 linux 32位连接器,32位汇编程序在64位Ubuntu上的汇编和连接
  9. 制作点击文字变颜色_手机照片、视频怎样添加文字?原来很简单,4种方法一分钟搞定...
  10. 转载 漫谈机器学习中的距离和相似性度量方法
  11. 学完java后学python_大火的python开发学好后能找到工作吗
  12. ios 销毁当前页面重新开启_利用Vue中keep-alive,快速实现页面缓存
  13. java计算机毕业设计商店管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  14. python画中国的轮廓_利用python绘制中国地图(含省界、河流等)
  15. 计算机控制系统直流电机闭环调速实验,直流电机闭环调速控制系统
  16. 微信小程之打卡小程序开发
  17. android开发者模式 device,Settings中开发者模式的影藏和显示
  18. 拼多多商家使用拼多多上传图片尺寸软件教程
  19. 2018年我国人均国民总收入达到9732美元,国民经济持续快速增长
  20. 函数——哥德巴赫猜想

热门文章

  1. 通知:大数据技术架构知识库公开
  2. 如何写数据分析岗位简历?看完瞬间秒懂
  3. 2019国人工资报告:月薪过万是个槛?大部分网友表示月薪不足5K!
  4. 电脑每次开机都出现check file system on:C 的解决办法
  5. iOS面试 swift篇
  6. P.W.N. CTF - MISC - Canadian FOI
  7. java后端社招面试经历
  8. RK3399外设驱动之I2C驱动
  9. php 图片裁剪后保存,php – 如何保存裁剪的图像
  10. 程序员数学(29)–投影与视图