Mysql教程

13.6 系统信息函数

系统信息函数用来查询MySQL数据库的系统信息。例如,查询数据库的版本,查询数据库的当前用户等。本小节将详细讲解系统信息函数的作用和使用方法。 下面是各种系统信息函数的符号和作用,如下表所示

函数 作用
VERSION() 返回数据库的版本号
CONNECTION_ID() 返回服务器的连接数
DATABASE(),SCHEMA() 返回当前数据库名
USER(),SYSTEM_USER(),SESSION_USER() 返回当前用户
CURRENT_USER(),CURRENT_USER() 返回当前用户
CHARSET(str) 返回字符串str的字符集
COLLATION(str) 返回字符串str的字符排列方式
LAST_INSERT_ID() 返回最近生成的AUTO_INCRETMENT值

13.6.1 获取MySQL的版本号,连接数和数据库的函数

VERSION()函数返回数据库的版本号;CONNECTION_ID()函数返回服务器的连接数,也就是到现在为止MySQL服务的连接次数;DATABASE(),SCHEMA()返回当前数据库名。

【示例 13-55】下面将演示 VERSION()、CONNECTION_ID()、DATABASE() SCHEMA()4个函数的用法。

mysql> SELECT VERSION(),CONNECTION_ID();
+------------------+-----------------+
| VERSION()        | CONNECTION_ID() |
+------------------+-----------------+
| 5.1.73-community |             1   |
+------------------+-----------------+
1 row in set (0.04 sec)
mysql> SELECT DATABASE(),SCHEMA();
+------------+----------+
| DATABASE() | SCHEMA() |
+------------+----------+
| test       | test     |
+------------+----------+
1 row in set (0.00 sec)

其中,VERSION()函数返回的版本号为 "5.1.73-community"; CONNECTION_ID()回的连接数为1; DATABASEC() SCHEMA()返回的当前数据库名是test。

13.6.2 获取用户名的函数

13.6.2获取用户名的函数

USER(),SYSTEM_USER(),SESSION_USER(), CURRENT_USER(),CURRENT_USER()这几个函数可以返回当前用户的名称。

【示例13-56】下面查询当前用户的用户名

mysql> SELECT USER(),SYSTEM_USER(),SESSION_USER(),CURRENT_USER(),CURRENT_USER();
+----------------+----------------+----------------+----------------+----------------+
| USER()         | SYSTEM_USER()  | SESSION_USER() | CURRENT_USER() | CURRENT_USER() |
+----------------+----------------+----------------+----------------+----------------+
| root@localhost | root@localhost | root@localhost | root@localhost | root@localhost |
+----------------+----------------+----------------+----------------+----------------+
1 row in set (0.00 sec)

结果显示,当前用户的用户名为root. localhost是主机名。因为服务器和客户端在 台机器上,所以服务器的主机名为localhost。用户名和主机名之间用符号“@”进行连接。

13.6.3 获取字符串的字符集合排序方式的函数

CHARSET(str)函数返回字符串str的字符集,一般情况这个字符集就是系统的默认字符集;COLLATION(str)的函数返回字符串str的字符排列方式。

【示例13-57】下面查看字符串'aa'的字符集和字符串排序方式。

mysql> SELECT CHARSET('aa'),COLLATION('aa');
+---------------+-----------------+
| CHARSET('aa') | COLLATION('aa') |
+---------------+-----------------+
| utf8          | utf8_general_ci |
+---------------+-----------------+
1 row in set (0.02 sec)

<>p结果显示,字符串aa的默认字符集是utf8,排列方式是utf8_general_ci。

13.6.4 获取最后一个自动生成的旧值的函数

LAST_INSERT_ID()函数返回最后生成的AUTO_INCREMENT值。

【示例13-58】下面测试LAST_INSERT_ID()函数的作用。

//创建表t8,只有一个字段id而且id为AUTO_INCREMENT类型的。
mysql> CREATE TABLE t8(id INT AUTO_INCREMENT NOT NULL UNIQUE);
Query OK, 0 rows affected (0.02 sec)
//插入3条记录。插入的值为NULL时,系统会自动为id加上数值。
mysql> INSERT INTO t8 VALUES(NULL);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO t8 VALUES(NULL);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO t8 VALUES(NULL);
Query OK, 1 row affected (0.00 sec)
//查询一共有多少记录
mysql> SELECT * FROM t8;
+------+
|  id  |
+------+
|   1  |
|   2  |
|   3  |
+------+
3 rows in set (0.00 sec)
//查询最后一个AUTO_INCREMENT值
mysql> SELECT LAST_INSERTID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|         3        |
+------------------+
1 row in set (0.00 sec)

结果显示,LAST_INSERT_ID()返回的结果为3。因为一共插入了3条记录。记录的id值从1开始增加,最后一条记录的id值为3。这说明LAST_INSERT_ID()返回最后生成的 AUTO_INCREMENT 值。


关注微信获取最新动态