信息函数,顾名思义,就是通过这些函数可以获得各种各样的信息,方便使用。下表就是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)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




