小编给大家分享一下MySQL中系统信息函数有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

系统信息函数

(1)获取MySQL版本号、连接数和数据库名的函数
(2)获取用户名的函数
(3)获取字符串的字符集和排序方式的函数
(4)获取最后一个自动生成的ID值的函数

(相关免费学习推荐:mysql视频教程)

(1)、获取MySQL版本号、连接数和数据库名的函数

1.version()

version()返回指示MySQL服务器版本的字符串,这个字符串使用utf8字符集。

【例】查看当前MySQL版本号,SQL语句如下:

mysql>selectversion();+-----------+|version()|+-----------+|8.0.16|+-----------+1rowinset(0.05sec)

2.connection_id()

connection_id()返回MySQL服务器当前连接的次数,每个连接都有各自唯一的ID。

【例】查看当前用户的连接数,SQL语句如下:

mysql>selectconnection_id();+-----------------+|connection_id()|+-----------------+|18|+-----------------+1rowinset(0.05sec)

3.show processlist 和 show full processlist

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

如果是root账号,就能看到所有用户的当前连接,如果是其他普通账号,则只能看到自己占用的连接。show processlist只列出 前100条,如果想全部列出可使用show full processlist命令。

【例】使用showprocesslist命令输出当前用户的连接信息,SQL语句如下:

mysql>showprocesslist;+----+-----------------+-----------------+---------+---------+--------+------------------------+------------------+|Id|User|Host|db|Command|Time|State|Info|+----+-----------------+-----------------+---------+---------+--------+------------------------+------------------+|4|event_scheduler|localhost|NULL|Daemon|381487|Waitingonemptyqueue|NULL||18|root|localhost:60272|company|Query|0|starting|showprocesslist|+----+-----------------+-----------------+---------+---------+--------+------------------------+------------------+2rowsinset(0.05sec)

各个列的含义:

列含义id列用户登录MySQL时,系统分配的"connection id"User显示当前用户,如果不是root,就显示用户权限范围内的MySQL语句Host显示这个语句是从哪个IP的哪个端口上发出的,可以用来追踪出现问题语句的用户db显示这个进程目前连接的是哪个数据库Command显示当前连接的执行命令,一般取值为休眠(sleep)、查询(Query)、连接(Connect)Time显示这个状态持续的时间,单位是秒State显示使用当前连接的SQL语句的状态,State只是语句执行中的某一个状态Info显示这个SQL语句,是判断问题语句的一个重要语句

4.database() 和 schema()
【例】查看当前使用的数据库,SQL语句如下:

mysql>selectdatabase(),schema();+------------+----------+|database()|schema()|+------------+----------+|company|company|+------------+----------+1rowinset(0.00sec)


(2)、获取用户名的函数

user()、current_user()、system_user()和session_user()这几个函数返回当前被MySQL服务器验证的用户名和主机名组合。这个值符合确定当前登录用户存取权限的MySQL账户。

【例】获取当前登录用户名称,SQL语句如下:

返回结果值显示了当前账户连接服务器时的用户名及所连接的客户主机,root为当前登录的用户名,localhost为登录的主机名。

mysql>selectuser(),current_user,system_user();+----------------+----------------+----------------+|user()|current_user|system_user()|+----------------+----------------+----------------+|root@localhost|root@localhost|root@localhost|+----------------+----------------+----------------+1rowinset(0.05sec)


(3)、获取字符串的字符集和排序方式的函数

1.charset(str)

【例】使用charset()函数返回字符串使用的字符集,SQL语句如下:

mysql>selectcharset('abc'),->charset(convert('abc'USINGlatin1)),->charset(version());+----------------+----------------------------------------+--------------------+|charset('abc')|charset(convert('abc'USINGlatin1))|charset(version())|+----------------+----------------------------------------+--------------------+|gbk|latin1|utf8|+----------------+----------------------------------------+--------------------+1rowinset(0.00sec)

2.collation(str)

【例】使用collation()函数返回字符串排列方式,SQL语句如下:

mysql>selectcollation('abc'),collation(convert('abc'USINGutf8));+------------------+---------------------------------------+|collation('abc')|collation(convert('abc'USINGutf8))|+------------------+---------------------------------------+|gbk_chinese_ci|utf8_general_ci|+------------------+---------------------------------------+1rowinset,1warning(0.05sec)


(4)、获取最后一个自动生成的ID值的函数

【例】使用select last_insetr_id查看最后一个自动生成的列值,执行过程如下:

①一次插入一条记录
首先创建表worker,其id字段带有auto_increment约束,SQL语句如下:

mysql>createtableworker->(->idintauto_incrementnotnullprimarykey,->Namevarchar(30)->);QueryOK,0rowsaffected(0.21sec)

分别单独向表worker中插入两条记录:

mysql>insertintoworkervalues(null,'jimy');QueryOK,1rowaffected(0.07sec)mysql>insertintoworkervalues(null,'Tom');QueryOK,1rowaffected(0.05sec)mysql>select*fromworker;+----+------+|id|Name|+----+------+|1|jimy||2|Tom|+----+------+2rowsinset(0.00sec)

查看已经插入的数据,发现最后一条插入的记录的id字段值为2,使用last_insert_id()查看最后自动生成的id值:

mysql>selectlast_insert_id();+------------------+|last_insert_id()|+------------------+|2|+------------------+1rowinset(0.05sec)

可以看到,一次插入一条记录时,返回值为最后一条插入记录的id值。

②一次同时插入多条记录
向表中插入多条记录:

mysql>insertintoworkervalues->(null,'Kevin'),->(null,'Michal'),->(null,'NICK');QueryOK,3rowsaffected(0.05sec)Records:3Duplicates:0Warnings:0mysql>SELECT*FROMWORKER;+----+--------+|id|Name|+----+--------+|1|jimy||2|Tom||3|Kevin||4|Michal||5|NICK|+----+--------+5rowsinset(0.00sec)

使用last_insert_id查看最后自动生成的id值:

mysql>SELECTLAST_INSERT_ID();+------------------+|LAST_INSERT_ID()|+------------------+|3|+------------------+1rowinset(0.00sec)

使用一条insert语句插入多个行时,last_insert_id()只返回插入的第一行数据时产生的值,在这里为插入第3条记录。之所以这样是因为这使依靠其他服务器复制同样的insert语句变得简单。

提示:

last_insert_id是与table无关的,先向表a插入数据,再向表b插入数据,last_insert_id返回表b中的id值。

看完了这篇文章,相信你对“MySQL中系统信息函数有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!