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 值。