📣

TiDB Cloud Serverless 现已更名为
Starter
!此页面由 AI 自动翻译,英文原文请见
此处。

信息函数

TiDB 支持大部分 information functions 在 MySQL 8.0 中提供的功能。

TiDB 支持的 MySQL 函数

名称描述
BENCHMARK()在循环中执行表达式
CONNECTION_ID()返回连接的 ID(线程 ID)
CURRENT_ROLE()返回当前连接使用的角色
CURRENT_USER()``, CURRENT_USER`返回已验证的用户名和主机名
DATABASE()返回当前会话使用的默认(当前)数据库名
FOUND_ROWS()对于带有 LIMIT 子句的 SELECT,如果没有 LIMIT,返回结果集中的行数
LAST_INSERT_ID()返回最后一次 INSERT 操作中 AUTOINCREMENT 列的值
ROW_COUNT()影响的行数
SCHEMA()DATABASE() 的同义词
SESSION_USER()USER() 的同义词
SYSTEM_USER()USER() 的同义词
USER()返回客户端提供的用户名和主机名
VERSION()返回表示 MySQL 服务器版本的字符串

BENCHMARK()

BENCHMARK() 函数执行给定的表达式指定次数。

语法:

BENCHMARK(count, expression)
  • count:要执行表达式的次数。
  • expression:要重复执行的表达式。

示例:

SELECT BENCHMARK(5, SLEEP(2));
+------------------------+ | BENCHMARK(5, SLEEP(2)) | +------------------------+ | 0 | +------------------------+ 1 row in set (10.00 sec)

CONNECTION_ID()

CONNECTION_ID() 函数返回连接的 ID。根据 TiDB 的 enable-32bits-connection-id 配置项的值,该函数返回 32 位或 64 位的连接 ID。

如果启用 enable-global-kill,可以使用连接 ID 来终止跨多个 TiDB 实例的查询。

SELECT CONNECTION_ID();
+-----------------+ | CONNECTION_ID() | +-----------------+ | 322961414 | +-----------------+ 1 row in set (0.00 sec)

CURRENT_ROLE()

CURRENT_ROLE() 函数返回当前会话的 role

SELECT CURRENT_ROLE();
+----------------+ | CURRENT_ROLE() | +----------------+ | NONE | +----------------+ 1 row in set (0.00 sec)

CURRENT_USER()

CURRENT_USER() 函数返回当前会话使用的账户。

SELECT CURRENT_USER();
+----------------+ | CURRENT_USER() | +----------------+ | root@% | +----------------+ 1 row in set (0.00 sec)

DATABASE()

DATABASE() 函数返回当前会话使用的数据库架构。

SELECT DATABASE();
+------------+ | DATABASE() | +------------+ | test | +------------+ 1 row in set (0.00 sec)

FOUND_ROWS()

FOUND_ROWS() 函数返回上一次执行的 SELECT 语句的结果集中的行数。

SELECT 1 UNION ALL SELECT 2;
+------+ | 1 | +------+ | 2 | | 1 | +------+ 2 rows in set (0.01 sec)
SELECT FOUND_ROWS();
+--------------+ | FOUND_ROWS() | +--------------+ | 2 | +--------------+ 1 row in set (0.00 sec)

LAST_INSERT_ID()

LAST_INSERT_ID() 函数返回包含 AUTO_INCREMENTAUTO_RANDOM 列的表中最后一次插入的行的 ID。

CREATE TABLE t1(id SERIAL); Query OK, 0 rows affected (0.17 sec) INSERT INTO t1() VALUES(); Query OK, 1 row affected (0.03 sec) INSERT INTO t1() VALUES(); Query OK, 1 row affected (0.00 sec) SELECT LAST_INSERT_ID(); +------------------+ | LAST_INSERT_ID() | +------------------+ | 3 | +------------------+ 1 row in set (0.00 sec) TABLE t1; +----+ | id | +----+ | 1 | | 3 | +----+ 2 rows in set (0.00 sec)

LAST_INSERT_ID(expr) 函数可以接受一个表达式作为参数,将其存储为下一次调用 LAST_INSERT_ID() 时返回的值。你可以用它作为生成序列的 MySQL 兼容方法。注意,TiDB 也支持正确的 sequence functions

ROW_COUNT()

ROW_COUNT() 函数返回受影响的行数。

CREATE TABLE t1(id BIGINT UNSIGNED PRIMARY KEY AUTO_RANDOM); Query OK, 0 rows affected, 1 warning (0.16 sec) INSERT INTO t1() VALUES (),(),(); Query OK, 3 rows affected (0.02 sec) Records: 3 Duplicates: 0 Warnings: 0 SELECT ROW_COUNT(); +-------------+ | ROW_COUNT() | +-------------+ | 3 | +-------------+ 1 row in set (0.00 sec)

SCHEMA()

SCHEMA() 函数是 DATABASE() 的同义词。

SESSION_USER()

SESSION_USER() 函数是 USER() 的同义词。

SYSTEM_USER()

SYSTEM_USER() 函数是 USER() 的同义词。

USER()

USER() 函数返回当前连接的用户。可能与 CURRENT_USER() 的输出略有不同,因为 USER() 显示实际的 IP 地址,而不是通配符。

SELECT USER(), CURRENT_USER();
+----------------+----------------+ | USER() | CURRENT_USER() | +----------------+----------------+ | root@127.0.0.1 | root@% | +----------------+----------------+ 1 row in set (0.00 sec)

VERSION()

VERSION() 函数返回 TiDB 版本,格式与 MySQL 兼容。若想获得更详细的结果,可以使用 TIDB_VERSION()

SELECT VERSION(); +--------------------+ | VERSION() | +--------------------+ | 8.0.11-TiDB-v7.5.1 | +--------------------+ 1 row in set (0.00 sec)
SELECT TIDB_VERSION()\G *************************** 1. row *************************** TIDB_VERSION(): Release Version: v7.5.1 Edition: Community Git Commit Hash: 7d16cc79e81bbf573124df3fd9351c26963f3e70 Git Branch: heads/refs/tags/v7.5.1 UTC Build Time: 2024-02-27 14:28:32 GoVersion: go1.21.6 Race Enabled: false Check Table Before Drop: false Store: tikv 1 row in set (0.00 sec)

上述示例来自 TiDB v7.5.1,标识为 MySQL 8.0.11。

TiDB 特有函数

以下函数仅支持 TiDB,没有对应的 MySQL 等价函数。

名称描述
CURRENT_RESOURCE_GROUP()返回当前会话绑定的资源组名称

不支持的函数

  • CHARSET()
  • COERCIBILITY()
  • COLLATION()
  • ICU_VERSION()
  • ROLES_GRAPHML()

文档内容是否有帮助?