共计 4994 个字符,预计需要花费 13 分钟才能阅读完成。
自动写代码机器人,免费开通
丸趣 TV 小编给大家分享一下 MySQL 中系统信息函数有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
系统信息函数
(1)获取 MySQL 版本号、连接数和数据库名的函数
(2) 获取用户名的函数
(3) 获取字符串的字符集和排序方式的函数
(4) 获取最后一个自动生成的 ID 值的函数
(相关免费学习推荐:mysql 视频教程)
(1)、获取 MySQL 版本号、连接数和数据库名的函数
1.version()
version()返回指示 MySQL 服务器版本的字符串, 这个字符串使用 utf8 字符集。
【例】查看当前 MySQL 版本号,SQL 语句如下:
mysql select version();+-----------+| version() |+-----------+| 8.0.16 |+-----------+1 row in set (0.05 sec)
2.connection_id()
connection_id()返回 MySQL 服务器当前连接的次数,每个连接都有各自唯一的 ID。
【例】查看当前用户的连接数,SQL 语句如下:
mysql select connection_id();+-----------------+| connection_id() |+-----------------+| 18 |+-----------------+1 row in set (0.05 sec)
3.show processlist 和 show full processlist
processlist 命令的输出结果显示有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态,帮助识别出有问题的查询语句等。
如果是 root 账号,就能看到所有用户的当前连接,如果是其他普通账号,则只能看到自己占用的连接。show processlist 只列出 前 100 条,如果想全部列出可使用 show full processlist 命令。
【例】使用 showprocesslist 命令输出当前用户的连接信息,SQL 语句如下:
mysql show processlist;+----+-----------------+-----------------+---------+---------+--------+------------------------+------------------+| Id | User | Host | db | Command | Time | State | Info |+----+-----------------+-----------------+---------+---------+--------+------------------------+------------------+| 4 | event_scheduler | localhost | NULL | Daemon | 381487 | Waiting on empty queue | NULL || 18 | root | localhost:60272 | company | Query | 0 | starting | show processlist |+----+-----------------+-----------------+---------+---------+--------+------------------------+------------------+2 rows in set (0.05 sec)
各个列的含义:
列含义 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 select database(),schema();+------------+----------+| database() | schema() |+------------+----------+| company | company |+------------+----------+1 row in set (0.00 sec)
(2)、获取用户名的函数
user()、current_user()、system_user()和 session_user()这几个函数返回当前被 MySQL 服务器验证的用户名和主机名组合。这个值符合确定当前登录用户存取权限的 MySQL 账户。
【例】获取当前登录用户名称,SQL 语句如下:
返回结果值显示了当前账户连接服务器时的用户名及所连接的客户主机,root 为当前登录的用户名,localhost 为登录的主机名。
mysql select user(),current_user,system_user();+----------------+----------------+----------------+| user() | current_user | system_user() |+----------------+----------------+----------------+| root@localhost | root@localhost | root@localhost |+----------------+----------------+----------------+1 row in set (0.05 sec)
(3)、获取字符串的字符集和排序方式的函数
1.charset(str)
【例】使用 charset()函数返回字符串使用的字符集,SQL 语句如下:
mysql select charset(abc),
- charset(convert( abc USING latin1 ) ),
- charset(version());+----------------+----------------------------------------+--------------------+| charset(abc) | charset(convert( abc USING latin1 ) ) | charset(version()) |+----------------+----------------------------------------+--------------------+| gbk | latin1 | utf8 |+----------------+----------------------------------------+--------------------+1 row in set (0.00 sec)
2.collation(str)
【例】使用 collation()函数返回字符串排列方式,SQL 语句如下:
mysql select collation(abc),collation(convert( abc USING utf8 ));+------------------+---------------------------------------+| collation(abc) | collation(convert( abc USING utf8 )) |+------------------+---------------------------------------+| gbk_chinese_ci | utf8_general_ci |+------------------+---------------------------------------+1 row in set, 1 warning (0.05 sec)
(4)、获取最后一个自动生成的 ID 值的函数
【例】使用 select last_insetr_id 查看最后一个自动生成的列值,执行过程如下:
①一次插入一条记录
首先创建表 worker,其 id 字段带有 auto_increment 约束,SQL 语句如下:
mysql create table worker - (
- id int auto_increment not null primary key,
- Name varchar(30)
- );Query OK, 0 rows affected (0.21 sec)
分别单独向表 worker 中插入两条记录:
mysql insert into worker values(null, jimy Query OK, 1 row affected (0.07 sec)mysql insert into worker values(null, Tom Query OK, 1 row affected (0.05 sec)mysql select * from worker;+----+------+| id | Name |+----+------+| 1 | jimy || 2 | Tom |+----+------+2 rows in set (0.00 sec)
查看已经插入的数据,发现最后一条插入的记录的 id 字段值为 2,使用 last_insert_id()查看最后自动生成的 id 值:
mysql select last_insert_id();+------------------+| last_insert_id() |+------------------+| 2 |+------------------+1 row in set (0.05 sec)
可以看到,一次插入一条记录时,返回值为最后一条插入记录的 id 值。
②一次同时插入多条记录
向表中插入多条记录:
mysql insert into worker values
- (null, Kevin),
- (null, Michal),
- (null, NICK Query OK, 3 rows affected (0.05 sec)Records: 3 Duplicates: 0 Warnings: 0mysql SELECT * FROM WORKER;+----+--------+| id | Name |+----+--------+| 1 | jimy || 2 | Tom || 3 | Kevin || 4 | Michal || 5 | NICK |+----+--------+5 rows in set (0.00 sec)
使用 last_insert_id 查看最后自动生成的 id 值:
mysql SELECT LAST_INSERT_ID();+------------------+| LAST_INSERT_ID() |+------------------+| 3 |+------------------+1 row in set (0.00 sec)
使用一条 insert 语句插入多个行时,last_insert_id()只返回插入的第一行数据时产生的值,在这里为插入第 3 条记录。之所以这样是因为这使依靠其他服务器复制同样的 insert 语句变得简单。
提示:
last_insert_id 是与 table 无关的,先向表 a 插入数据,再向表 b 插入数据,last_insert_id 返回表 b 中的 id 值。
看完了这篇文章,相信你对“MySQL 中系统信息函数有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!
向 AI 问一下细节