摘要:MySQL中的常用信息函数介绍及实测。
信息函数,顾名思义,就是通过这些函数可以获得各种各样的信息,方便使用。下表就是MySQL 5.7中支持的信息函数。
Name | Description |
---|---|
BENCHMARK() | Repeatedly execute an expression |
CHARSET() | Return the character set of the argument |
COERCIBILITY() | Return the collation coercibility value of the string argument |
COLLATION() | Return the collation of the string argument |
CONNECTION_ID() | Return the connection ID (thread ID) for the connection |
CURRENT_USER(), CURRENT_USER | The authenticated user name and host name |
DATABASE() | Return the default (current) database name |
FOUND_ROWS() | For a SELECT with a LIMIT clause, the number of rows that would be returned were there no LIMIT clause |
LAST_INSERT_ID() | Value of the AUTOINCREMENT column for the last INSERT |
ROW_COUNT() | The number of rows updated |
SCHEMA() | Synonym for DATABASE() |
SESSION_USER() | Synonym for USER() |
SYSTEM_USER() | Synonym for USER() |
USER() | The user name and host name provided by the client |
VERSION() | Return a string that indicates the MySQL server version |
我们通过实例来研究下用法。
- CHARSET(str),返回字符串str的字符集
root@database-one 22:56: [gftest]> SELECT CHARSET('abc'),CHARSET(CONVERT('abc' USING latin1)),CHARSET(USER()); +----------------+--------------------------------------+-----------------+ | CHARSET('abc') | CHARSET(CONVERT('abc' USING latin1)) | CHARSET(USER()) | +----------------+--------------------------------------+-----------------+ | utf8 | latin1 | utf8 | +----------------+--------------------------------------+-----------------+ 1 row in set (0.01 sec)
- CONNECTION_ID(),返回connection的ID(线程ID)
root@database-one 23:05: [gftest]> SELECT CONNECTION_ID(); +-----------------+ | CONNECTION_ID() | +-----------------+ | 31311271 | +-----------------+ 1 row in set (0.01 sec) root@database-one 23:05: [gftest]> select * from INFORMATION_SCHEMA.PROCESSLIST where id=connection_id(); +----------+------+-----------------+--------+---------+------+-----------+-----------------------------------------------------------------------+ | ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO | +----------+------+-----------------+--------+---------+------+-----------+-----------------------------------------------------------------------+ | 31311271 | root | 127.0.0.1:52438 | gftest | Query | 0 | executing | select * from INFORMATION_SCHEMA.PROCESSLIST where id=connection_id() | +----------+------+-----------------+--------+---------+------+-----------+-----------------------------------------------------------------------+ 1 row in set (0.03 sec)
- CURRENT_USER(), CURRENT_USER,返回当前登陆用户在user表中对应的哪一个
root@database-one 23:21: [gftest]> select current_user(); +----------------+ | current_user() | +----------------+ | root@% | +----------------+ 1 row in set (0.00 sec) root@database-one 23:21: [gftest]> select user,host from mysql.user where user='root' order by host; +------+------+ | user | host | +------+------+ | root | % | +------+------+ 1 row in set (0.03 sec)
- USER(),返回前登陆的用户名与它对应的host
root@database-one 23:29: [gftest]> SELECT USER(); +----------------+ | USER() | +----------------+ | root@127.0.0.1 | +----------------+ 1 row in set (0.02 sec)
上面可以看到,user()返回的是当前用户登录的来源信息,它跟current_user()是不一样的。
- DATABASE(),返回当前数据库的名字
root@database-one 23:34: [gftest]> SELECT DATABASE(); +------------+ | DATABASE() | +------------+ | gftest | +------------+ 1 row in set (0.03 sec)
- LAST_INSERT_ID(),返回AUTO_INCREMENT列为最后一个INSERT生成的值。
root@database-one 23:46: [gftest]> CREATE TABLE t ( -> id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, -> name VARCHAR(10) NOT NULL -> ); Query OK, 0 rows affected (0.32 sec) root@database-one 23:46: [gftest]> INSERT INTO t VALUES (NULL, 'Bob'); Query OK, 1 row affected (0.01 sec) root@database-one 23:46: [gftest]> SELECT * FROM t; +----+------+ | id | name | +----+------+ | 1 | Bob | +----+------+ 1 row in set (0.00 sec) root@database-one 23:47: [gftest]> SELECT LAST_INSERT_ID(); +------------------+ | LAST_INSERT_ID() | +------------------+ | 1 | +------------------+ 1 row in set (0.02 sec) root@database-one 23:47: [gftest]> INSERT INTO t VALUES -> (NULL, 'Mary'), (NULL, 'Jane'), (NULL, 'Lisa'); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 root@database-one 23:47: [gftest]> SELECT * FROM t; +----+------+ | id | name | +----+------+ | 1 | Bob | | 2 | Mary | | 3 | Jane | | 4 | Lisa | +----+------+ 4 rows in set (0.00 sec) root@database-one 23:47: [gftest]> SELECT LAST_INSERT_ID(); +------------------+ | LAST_INSERT_ID() | +------------------+ | 2 | +------------------+ 1 row in set (0.02 sec)
从上面可以看到,当INSERT语句插入多个行时,LAST_INSERT_ID() 返回本批插入第一行产生的值。
- VERSION(),返回MySQL服务器软件版本
root@database-one 23:52: [gftest]> SELECT VERSION(); +------------+ | VERSION() | +------------+ | 5.7.16-log | +------------+ 1 row in set (0.00 sec)
© 2020, morinson. 版权所有. 欢迎转载,但请保留作者及出处。