SQL 语句概述
TiDB 使用的 SQL 语句旨在遵循 ISO/IEC SQL 标准,并在必要时对 MySQL 和 TiDB 特定的语句进行了扩展。
Schema 管理与数据定义语句 (DDL)
SQL 语句 | 描述 |
---|---|
ALTER DATABASE | 修改数据库。 |
ALTER SEQUENCE | 修改序列对象。 |
ALTER TABLE ... ADD COLUMN | 在已有表中添加列。 |
ALTER TABLE ... ADD INDEX | 在已有表中添加索引。 |
ALTER TABLE ... ALTER INDEX | 修改索引定义。 |
ALTER TABLE ... CHANGE COLUMN | 修改列定义。 |
ALTER TABLE ... COMPACT | 对表进行数据整理。 |
ALTER TABLE ... DROP COLUMN | 从表中删除列。 |
ALTER TABLE ... MODIFY COLUMN | 修改列定义。 |
ALTER TABLE ... RENAME INDEX | 重命名索引。 |
ALTER TABLE | 修改表定义。 |
CREATE DATABASE | 创建新数据库。 |
CREATE INDEX | 在表上创建新索引。 |
CREATE SEQUENCE | 创建新序列对象。 |
CREATE TABLE LIKE | 复制已有表的定义,但不复制任何数据。 |
CREATE TABLE | 创建新表。 |
CREATE VIEW | 创建新视图。 |
DROP DATABASE | 删除已有数据库。 |
DROP INDEX | 从表中删除索引。 |
DROP SEQUENCE | 删除序列对象。 |
DROP TABLE | 删除已有表。 |
DROP VIEW | 删除已有视图。 |
RENAME TABLE | 重命名表。 |
SHOW COLUMNS FROM | 显示表的列。 |
SHOW CREATE DATABASE | 显示数据库的 CREATE 语句。 |
SHOW CREATE SEQUENCE | 显示序列的 CREATE 语句。 |
SHOW CREATE TABLE | 显示表的 CREATE 语句。 |
SHOW DATABASES | 显示当前用户有权限访问的数据库列表。 |
SHOW FIELDS FROM | 显示表的列。 |
SHOW INDEXES | 显示表的索引。 |
SHOW SCHEMAS | SHOW DATABASES 的别名,显示当前用户有权限访问的数据库列表。 |
SHOW TABLE NEXT_ROW_ID | 显示表中下一个行的 ID。 |
SHOW TABLE REGIONS | 显示 TiDB 中表的 Region 信息。 |
SHOW TABLE STATUS | 显示 TiDB 中表的各种统计信息。 |
SHOW TABLES | 显示数据库中的表。 |
TRUNCATE | 清空表中的所有数据。 |
数据操作语句 (DML)
SQL 语句 | 描述 |
---|---|
BATCH | 在 TiDB 中将一个 DML 语句拆分为多个语句执行。 |
DELETE | 从表中删除行。 |
INSERT | 向表中插入新行。 |
REPLACE | 替换现有的行或插入新行。 |
SELECT | 从表中读取数据。 |
TABLE | 从表中读取行数据。 |
UPDATE | 修改表中现有的行。 |
WITH | 定义公用表表达式。 |
事务语句
SQL 语句 | 描述 |
---|---|
BEGIN | 启动一个新事务。 |
COMMIT | 提交当前事务。 |
ROLLBACK | 回滚当前事务。 |
SAVEPOINT | 在事务中设置一个保存点。 |
SET TRANSACTION | 在 GLOBAL 或 SESSION 范围更改当前隔离级别。 |
START TRANSACTION | 启动一个新事务。 |
预处理语句
SQL 语句 | 描述 |
---|---|
DEALLOCATE | 释放预处理语句以释放相关资源。 |
EXECUTE | 使用特定参数值执行预处理语句。 |
PREPARE | 创建包含占位符的预处理语句。 |
管理语句
SQL 语句 | 描述 |
---|---|
ADMIN CANCEL DDL | 取消 DDL 作业。 |
ADMIN CHECK [TABLE\|INDEX] | 检查表或索引的完整性。 |
ADMIN CHECKSUM TABLE | 计算表的校验和。 |
ADMIN CLEANUP INDEX | 清理表中的索引。 |
ADMIN PAUSE DDL | 暂停 DDL 作业。 |
ADMIN RESUME DDL | 恢复 DDL 作业。 |
ADMIN SHOW DDL [JOBS\|JOB QUERIES] | 显示 DDL 作业信息或 DDL 对应的查询语句。 |
ADMIN SHOW TELEMETRY | 显示遥测数据。 |
ADMIN | 执行各种管理任务。 |
FLUSH TABLES | 用于提供 MySQL 兼容性,在 TiDB 中没有实际用途。 |
SET <variable> | 修改系统变量或用户变量。 |
SET [NAMES\|CHARACTER SET] | 设置字符集和排序规则。 |
SPLIT REGION | 将 Region 切分为更小的 Region。 |
数据导入和导出
SQL 语句 | 描述 |
---|---|
CANCEL IMPORT JOB | 取消正在进行的导入任务。 |
IMPORT INTO | 通过 TiDB Lightning 的物理导入模式 将数据导入到表中。 |
LOAD DATA | 从 Amazon S3 或 Google Cloud Storage 加载数据到表中。 |
SHOW IMPORT JOB | 显示导入任务的状态。 |
备份和恢复
SQL 语句 | 描述 |
---|---|
BACKUP | 对 TiDB 集群执行分布式备份操作。 |
FLASHBACK CLUSTER | 将集群恢复到特定的时间点。 |
FLASHBACK DATABASE | 恢复被 DROP 语句删除的数据库及其数据。 |
FLASHBACK TABLE | 恢复被 DROP 或 TRUNCATE 操作删除的表及其数据。 |
RECOVER TABLE | 恢复被删除的表及其数据。 |
RESTORE | 从备份中恢复数据库。 |
SHOW BACKUPS | 显示备份任务。 |
SHOW RESTORES | 显示恢复任务。 |
放置策略
SQL 语句 | 描述 |
---|---|
ALTER PLACEMENT POLICY | 修改放置策略。 |
ALTER RANGE | 修改放置策略的范围。 |
CREATE PLACEMENT POLICY | 创建新的放置策略。 |
DROP PLACEMENT POLICY | 删除现有放置策略。 |
SHOW CREATE PLACEMENT POLICY | 显示放置策略的 CREATE 语句。 |
SHOW PLACEMENT FOR | 显示指定表的放置策略。 |
SHOW PLACEMENT LABELS | 显示可用的放置标签。 |
SHOW PLACEMENT | 显示放置规则。 |
资源组
SQL 语句 | 描述 |
---|---|
ALTER RESOURCE GROUP | 修改资源组。 |
CALIBRATE RESOURCE | 估算并输出当前集群的 Request Unit (RU) 容量。 |
CREATE RESOURCE GROUP | 创建新的资源组。 |
DROP RESOURCE GROUP | 删除资源组。 |
QUERY WATCH | 管理 Runaway Queries 监控列表。 |
SET RESOURCE GROUP | 设置资源组。 |
SHOW CREATE RESOURCE GROUP | 显示资源组的 CREATE 语句。 |
效用语句
SQL 语句 | 描述 |
---|---|
DESC | DESCRIBE 的别名,显示表的结构。 |
DESCRIBE | 显示表的结构。 |
DO | 执行表达式,但不返回任何结果。 |
EXPLAIN | 显示查询的执行计划。 |
TRACE | 提供查询执行的详细信息。 |
USE | 选择当前数据库。 |
显示语句
SQL 语句 | 描述 |
---|---|
SHOW BUILTINS | 列出内置函数。 |
SHOW CHARACTER SET | 列出字符集。 |
SHOW COLLATIONS | 列出排序规则。 |
SHOW ERRORS | 显示先前已执行语句中的错误。 |
SHOW STATUS | 用于提供 MySQL 兼容性。对于大多数指标,TiDB 会使用 Prometheus 和 Grafana 来集中收集,而不是使用 SHOW STATUS 。 |
SHOW VARIABLES | 显示系统变量。 |
SHOW WARNINGS | 显示先前已执行语句中的警告和注意。 |
实例管理
SQL 语句 | 描述 |
---|---|
ALTER INSTANCE | 修改实例。 |
FLUSH STATUS | 用于提供 MySQL 兼容性。对于大多数指标,TiDB 会使用 Prometheus 和 Grafana 来集中收集,而不是使用 SHOW STATUS 。 |
KILL | 终止当前 TiDB 集群中任意一个 TiDB 实例的连接。 |
SHOW CONFIG | 显示 TiDB 各组件的配置信息。 |
SHOW ENGINES | 显示可用的存储引擎。 |
SHOW PLUGINS | 显示已安装的插件。 |
SHOW PROCESSLIST | 显示连接到相同 TiDB 服务器的当前会话。 |
SHOW PROFILES | 用于提供 MySQL 兼容性,目前返回结果为空。 |
SHUTDOWN | 停止客户端连接的 TiDB 实例,而不是整个 TiDB 集群。 |
锁定语句
SQL 语句 | 描述 |
---|---|
LOCK STATS | 锁定表或分区的统计信息。 |
LOCK TABLES | 锁定当前会话的表。 |
UNLOCK STATS | 解锁表或分区的统计信息。 |
UNLOCK TABLES | 解锁表。 |
账户管理与数据控制语言 (DCL)
SQL 语句 | 描述 |
---|---|
ALTER USER | 修改用户。 |
CREATE ROLE | 创建角色。 |
CREATE USER | 创建新用户。 |
DROP ROLE | 删除现有角色。 |
DROP USER | 删除现有用户。 |
FLUSH PRIVILEGES | 从权限表中重新加载权限的内存副本。 |
GRANT <privileges> | 授予权限。 |
GRANT <role> | 授予角色。 |
RENAME USER | 重命名现有用户。 |
REVOKE <privileges> | 撤销权限。 |
REVOKE <role> | 撤销角色。 |
SET DEFAULT ROLE | 设置默认角色。 |
SET PASSWORD | 更改密码。 |
SET ROLE | 在当前会话中启用角色。 |
SHOW CREATE USER | 显示用户的 CREATE 语句。 |
SHOW GRANTS | 显示与用户关联的权限。 |
SHOW PRIVILEGES | 显示可用的权限。 |
TiCDC
SQL 语句 | 描述 |
---|---|
ADMIN [SET\|SHOW\|UNSET] BDR ROLE | 管理 BDR 角色。 |
SHOW MASTER STATUS | 显示集群中当前最新的 TSO。 |
统计信息和执行计划管理
SQL 语句 | 描述 |
---|---|
ANALYZE TABLE | 收集表的统计信息。 |
CREATE BINDING | 为 SQL 语句创建执行计划绑定。 |
DROP BINDING | 删除 SQL 语句的执行计划绑定。 |
DROP STATS | 删除表的统计信息。 |
EXPLAIN ANALYZE | 工作方式类似于 EXPLAIN ,但主要区别在于 EXPLAIN ANALYZE 会执行语句。 |
LOAD STATS | 将统计信息加载到 TiDB 中。 |
SHOW ANALYZE STATUS | 显示统计信息收集任务。 |
SHOW BINDINGS | 显示已创建的 SQL 绑定。 |
SHOW STATS_HEALTHY | 显示统计信息准确度的预估值。 |
SHOW STATS_HISTOGRAMS | 显示统计信息中的直方图信息。 |
SHOW STATS_LOCKED | 显示统计信息被锁定的表。 |
SHOW STATS_META | 显示表中的行数和表中发生更改的行数。 |