MySQL的系统信息函数和加密解密函数(十四)上

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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 charset(‘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();


20191203153720979.png


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


二.二 查询连接id connection_id()


select connection_id();


20191203153739266.png


  • 查询出来的是连接的 id.


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


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


show processlist;


20191203153744592.png


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


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


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


show full processlist;


20191203153746433.png


  • 各个列的含义如下:


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


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


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


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


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


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


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


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


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


use yuejl(); 
数据库。
  select database(); 
或者:
 select schema();

20191203153757354.png


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


可以用以下四个函数


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


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


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


20191203153836450.png


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


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


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


  • 老蝴蝶默认的是gbk


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


201912031538492.png


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


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


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


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


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


20191203153858630.png


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


二.七 获取最后一个生成的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)
     );


20191203153906666.png


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


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


  • 插入成功, 查询id


select last_insert_id();


20191203153921585.png


  • 查询出id 值为1.


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


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


  • 再次查询


select last_insert_id();


20191203153929862.png


4 . 批量插入时的增长


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


  • 再次查询


select last_insert_id();


20191203153937426.png


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


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


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


5 . 修改时 不变。


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


  • 再查询


select last_insert_id();


20191203153950535.png


6 . last_insert_id() 的值只与最近查询的那个表有关。


如果此时再有一个自动增长的 user 表,

往teacher表再添加一条记录,那么 last_insert_id() 变成了4.

这时,再往 user() 表插入一条数据,

那么这个时候,last_insert_id() 就与 user 表相关了,变成了1.


相关文章
|
11天前
|
关系型数据库 MySQL Serverless
MySQL函数
最常用的MySQL函数,包括聚合函数,字符串函数,日期时间函数,控制流函数等
|
15天前
|
SQL NoSQL 关系型数据库
|
26天前
|
关系型数据库 MySQL 数据库
mysql中tonumber函数使用要注意什么
在处理这类转换操作时,考虑周全,利用提供的高性能云服务器资源,可以进一步提升数据库处理效率,确保数据操作的稳定性和安全性,尤其是在处理大量数据转换和运算密集型应用时。
79 0
|
29天前
|
关系型数据库 MySQL 数据处理
企业级应用 mysql 日期函数变量,干货已整理
本文详细介绍了如何在MySQL8.0中使用DATE_FORMAT函数进行日期格式的转换,包括当日、昨日及不同时间段的数据获取,并提供了实际的ETL应用场景和注意事项,有助于提升数据处理的灵活性和一致性。
39 0
|
7天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
20 4
|
5天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
14 1
|
30天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
61 3
Mysql(4)—数据库索引
|
14天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
71 1
|
16天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
59 2
|
19天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
74 4