TiDB关键字、保留字和注释语法

2023-10-26

关键字和保留字

关键字在 SQL 中有特殊的意义, 例如 SELECTUPDATEDELETE,在作为表名跟函数名的时候,需要特殊对待,例如作为表名,保留字需要被反引号包住:

CREATE TABLE select (a INT);
ERROR 1105 (HY000): line 0 column 19 near " (a INT)" (total length 27)
CREATE TABLE `select` (a INT);
Query OK, 0 rows affected (0.09 sec)

BEGINEND 是关键字, 但不是保留字,所以不需要反引号:

CREATE TABLE `select` (BEGIN int, END int);
Query OK, 0 rows affected (0.09 sec)

有一种特殊情况, 如果使用了限定符 .,那么也不需要用反引号:

CREATE TABLE test.select (BEGIN int, END int);
Query OK, 0 rows affected (0.08 sec)

下表列出了在 TiDB 中的关键字跟保留字,保留字用 ® 来标识:

  • ACTION
  • ADD ®
  • ADDDATE
  • ADMIN
  • AFTER
  • ALL ®
  • ALTER ®
  • ALWAYS
  • ANALYZE ®
  • AND ®
  • ANY
  • AS ®
  • ASC ®
  • ASCII
  • AUTO_INCREMENT
  • AVG
  • AVG_ROW_LENGTH
  • BEGIN
  • BETWEEN ®
  • BIGINT ®
  • BINARY ®
  • BINLOG
  • BIT
  • BIT_XOR
  • BLOB ®
  • BOOL
  • BOOLEAN
  • BOTH ®
  • BTREE
  • BY ®
  • BYTE
  • CASCADE ®
  • CASE ®
  • CAST
  • CHANGE ®
  • CHAR ®
  • CHARACTER ®
  • CHARSET
  • CHECK ®
  • CHECKSUM
  • COALESCE
  • COLLATE ®
  • COLLATION
  • COLUMN ®
  • COLUMNS
  • COMMENT
  • COMMIT
  • COMMITTED
  • COMPACT
  • COMPRESSED
  • COMPRESSION
  • CONNECTION
  • CONSISTENT
  • CONSTRAINT ®
  • CONVERT ®
  • COUNT
  • CREATE ®
  • CROSS ®
  • CURRENT_DATE ®
  • CURRENT_TIME ®
  • CURRENT_TIMESTAMP ®
  • CURRENT_USER ®
  • CURTIME
  • DATA
  • DATABASE ®
  • DATABASES ®
  • DATE
  • DATE_ADD
  • DATE_SUB
  • DATETIME
  • DAY
  • DAY_HOUR ®
  • DAY_MICROSECOND ®
  • DAY_MINUTE ®
  • DAY_SECOND ®
  • DDL
  • DEALLOCATE
  • DEC
  • DECIMAL ®
  • DEFAULT ®
  • DELAY_KEY_WRITE
  • DELAYED ®
  • DELETE ®
  • DESC ®
  • DESCRIBE ®
  • DISABLE
  • DISTINCT ®
  • DISTINCTROW ®
  • DIV ®
  • DO
  • DOUBLE ®
  • DROP ®
  • DUAL ®
  • DUPLICATE
  • DYNAMIC
  • ELSE ®
  • ENABLE
  • ENCLOSED
  • END
  • ENGINE
  • ENGINES
  • ENUM
  • ESCAPE
  • ESCAPED
  • EVENTS
  • EXCLUSIVE
  • EXECUTE
  • EXISTS
  • EXPLAIN ®
  • EXTRACT
  • FALSE ®
  • FIELDS
  • FIRST
  • FIXED
  • FLOAT ®
  • FLUSH
  • FOR ®
  • FORCE ®
  • FOREIGN ®
  • FORMAT
  • FROM ®
  • FULL
  • FULLTEXT ®
  • FUNCTION
  • GENERATED ®
  • GET_FORMAT
  • GLOBAL
  • GRANT ®
  • GRANTS
  • GROUP ®
  • GROUP_CONCAT
  • HASH
  • HAVING ®
  • HIGH_PRIORITY ®
  • HOUR
  • HOUR_MICROSECOND ®
  • HOUR_MINUTE ®
  • HOUR_SECOND ®
  • IDENTIFIED
  • IF ®
  • IGNORE ®
  • IN ®
  • INDEX ®
  • INDEXES
  • INFILE ®
  • INNER ®
  • INSERT ®
  • INT ®
  • INTEGER ®
  • INTERVAL ®
  • INTO ®
  • IS ®
  • ISOLATION
  • JOBS
  • JOIN ®
  • JSON
  • KEY ®
  • KEY_BLOCK_SIZE
  • KEYS ®
  • KILL ®
  • LEADING ®
  • LEFT ®
  • LESS
  • LEVEL
  • LIKE ®
  • LIMIT ®
  • LINES ®
  • LOAD ®
  • LOCAL
  • LOCALTIME ®
  • LOCALTIMESTAMP ®
  • LOCK ®
  • LONGBLOB ®
  • LONGTEXT ®
  • LOW_PRIORITY ®
  • MAX
  • MAX_ROWS
  • MAXVALUE ®
  • MEDIUMBLOB ®
  • MEDIUMINT ®
  • MEDIUMTEXT ®
  • MICROSECOND
  • MIN
  • MIN_ROWS
  • MINUTE
  • MINUTE_MICROSECOND ®
  • MINUTE_SECOND ®
  • MIN
  • MIN_ROWS
  • MINUTE
  • MINUTE_MICROSECOND
  • MINUTE_SECOND
  • MOD ®
  • MODE
  • MODIRY
  • MONTH
  • NAMES
  • NATIONAL
  • NATURAL ®
  • NO
  • NO_WRITE_TO_BINLOG ®
  • NONE
  • NOT ®
  • NOW
  • NULL ®
  • NUMERIC ®
  • NVARCHAR ®
  • OFFSET
  • ON ®
  • ONLY
  • OPTION ®
  • OR ®
  • ORDER ®
  • OUTER ®
  • PARTITION ®
  • PARTITIONS
  • PASSWORD
  • PLUGINS
  • POSITION
  • PRECISION ®
  • PREPARE
  • PRIMARY ®
  • PRIVILEGES
  • PROCEDURE ®
  • PROCESS
  • PROCESSLIST
  • QUARTER
  • QUERY
  • QUICK
  • RANGE ®
  • READ ®
  • REAL ®
  • REDUNDANT
  • REFERENCES ®
  • REGEXP ®
  • RENAME ®
  • REPEAT ®
  • REPEATABLE
  • REPLACE ®
  • RESTRICT ®
  • REVERSE
  • REVOKE ®
  • RIGHT ®
  • RLIKE ®
  • ROLLBACK
  • ROW
  • ROW_COUNT
  • ROW_FORMAT
  • ROWS ®
  • SCHEMA
  • SCHEMAS
  • SECOND
  • SECOND_MICROSECOND ®
  • SELECT ®
  • SERIALIZABLE
  • SESSION
  • SET ®
  • SHARE
  • SHARED
  • SHOW ®
  • SIGNED
  • SMALLINT ®
  • SNAPSHOT
  • SOME
  • SQL_CACHE
  • SQL_CALC_FOUND_ROWS ®
  • SQL_NO_CACHE
  • START
  • STARTING ®
  • STATS
  • STATS_BUCKETS
  • STATS_HISTOGRAMS
  • STATS_META
  • STATS_PERSISTENT
  • STORED ®
  • SUBDATE
  • SUBSTR
  • SUBSTRING
  • SUM
  • SUPER
  • TABLE ®
  • TABLES
  • TERMINATED ®
  • TEXT
  • THAN
  • THEN ®
  • TIDB
  • TIDB_INLJ
  • TIDB_SMJ
  • TIME
  • TIMESTAMP
  • TIMESTAMPADD
  • TIMESTAMPDIFF
  • TINYBLOB ®
  • TINYINT ®
  • TINYTEXT ®
  • TO ®
  • TRAILING ®
  • TRANSACTION
  • TRIGGER ®
  • TRIGGERS
  • TRIM
  • TRUE ®
  • TRUNCATE
  • UNCOMMITTED
  • UNION ®
  • UNIQUE ®
  • UNKNOWN
  • UNLOCK ®
  • UNSIGNED ®
  • UPDATE ®
  • USE ®
  • USER
  • USING ®
  • UTC_DATE ®
  • UTC_TIME ®
  • UTC_TIMESTAMP ®
  • VALUE
  • VALUES ®
  • VARBINARY ®
  • VARCHAR ®
  • VARIABLES
  • VIEW
  • VIRTUAL ®
  • WARNINGS
  • WEEK
  • WHEN ®
  • WHERE ®
  • WITH ®
  • WRITE ®
  • XOR ®
  • YEAR
  • YEAR_MONTH ®
  • ZEROFILL ®

注释语法

TiDB 支持三种注释风格:

  • 用 # 注释一行
  • 用 – 注释一行,用 – 注释必须要在其之后留出至少一个空格。
  • 用 /* */ 注释一块,可以注释多行。
    例:
SELECT 1+1;     # 注释文字
+------+
| 1+1  |
+------+
|    2 |
+------+
1 row in set (0.00 sec)
SELECT 1+1;     -- 注释文字
+------+
| 1+1  |
+------+
|    2 |
+------+
1 row in set (0.00 sec)
SELECT 1 /* 这是行内注释文字 */ + 1;
+--------+
| 1  + 1 |
+--------+
|      2 |
+--------+
1 row in set (0.01 sec)
SELECT 1+
    -> /*
   /*> 这是一条
   /*> 多行注释
   /*> */
    -> 1;
+-------+
| 1+

1 |
+-------+
|     2 |
+-------+
1 row in set (0.00 sec)
SELECT 1+1--1;
+--------+
| 1+1--1 |
+--------+
|      3 |
+--------+
1 row in set (0.01 sec)

TiDB 也跟 MySQL 保持一致,支持一种 C 风格注释的变体:

/*! Specific code */

在这种格式中,TiDB 会执行注释中的语句,这个语法是为了让这些 SQL 在其他的数据库中被忽略,而在 TiDB 中被执行。

例如:SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...

在 TiDB 中,这种写法等价于 SELECT STRAIGHT_JOIN col1 FROM table1,table2 WHERE …

如果注释中指定了 Server 版本号,例如 /*!50110 KEY_BLOCK_SIZE=1024 */,在 MySQL 中表示只有 MySQL 的版本大于等于 5.1.10 才会处理这个 comment 中的内容。但是在 TiDB 中,这个版本号不会起作用,所有的 comment 都会处理。

还有一种注释会被当做是优化器 Hint 特殊对待:

SELECT /*+ hint */ FROM ...;

由于 hint 包含在类似 /*+ xxx */ 的 comment 里,MySQL 客户端在 5.7.7 之前,会默认把 comment 清除掉,如果需要在旧的客户端使用 hint,需要在启动客户端时加上 –comments 选项,例如 mysql -h 127.0.0.1 -P 4000 -uroot –comments

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TiDB关键字、保留字和注释语法 的相关文章

随机推荐

  • QWidget/QDialog主窗体设置边框圆角

    1 问题 QT中窗体QWidget和QDialog为容器 不能对窗体进行边框圆角样式改变 只能通过绘图QPainter 2 设置无上边框选项窗口 this gt setWindowFlags Qt Widget Qt FramelessWi
  • CSS学习笔记八——宽高自适应

    宽高自适应 一 宽度自适应 二 高度自适应 三 浮动元素的高度自适应 四 窗口自适应 五 结语 一 宽度自适应 不写宽度或者写 width auto就表示宽度自适应 可用于横栏或导航栏 与 width 100 不同 设为100 已经固定了宽
  • MySQL之无限级分类表设计

    首先查找一下goods cates表和table goods brands数据表 分别使用命令 root localhost test gt show columns from goods cates root localhost test
  • 【Spring源码】一:整体流程

    总流程 12 个方法 Prepare this context for refreshing prepareRefresh Tell the subclass to refresh the internal bean factory Con
  • 与焦虑同行,话技术领导者成长

    解码职场焦虑 系列直播第二期来啦 技术领导者在职场跃迁中 会因为各种内外因素的变化而产生焦虑 困惑 烦躁等情绪 我们该怎样与负面情绪共处 认识到局限 接纳并不完美的自己 从而稳步前行 技术Leader成长路上会面对哪些情绪挑战 高压和忙碌状
  • html提取信息变xml,网络爬虫笔记【7】 利用 XPATH 实现 XML 和 HTML 文本信息提取

    XML Extensible Markup Language 指可扩展标记语言 被设计用来传输和存储数据 HTML指的是超文本标记语言 Hyper Text Markup Language 是WWW上用于编写网页的主要工具 详细信息请参考
  • R语言做文本挖掘 Part3文本聚类

    Part3文本聚类 发现有人转载 决定把格式什么重新整理一遍 有时间做个进阶版文本挖掘 恩 原文地址 CSDN R语言做文本挖掘 Part3文本聚类 分类和聚类算法 都是数据挖掘中最常接触到的算法 分类聚类算法分别有很多种 可以看下下面两篇
  • 万字超详细的Java图书管理系统

    生命中的每个人都是一个故事 而每个故事都值得被讲述 作者 不能再留遗憾了 专栏 Java学习 该文章主要内容 用Java实现简单的图书管理系统 文章目录 前言 基本思路 书和书架 书Book类 书架BookList类 用户身份User 父类
  • Oracle : ORA-00001: unique constraint (SHULAN_TEST.SYS_C0026496) violated

    Caused by java lang IllegalStateException Can t overwrite cause with java sql SQLIntegrityConstraintViolationException O
  • Random Vectors and the Variance-Covariance Matrix

    Random Vectors and the Variance Covariance Matrix pdf 多维变量概率论 Definition 1 随机向量 x x 1
  • jsp与html,html与web语言的交互

    jsp 又名java Server Pages 用于开发动态网页 文件扩展名为jsp 优点 1 首先jsp是一种服务端技术 提供了动态接口 用于不断更改数据并调用服务器操作 2 jsp本身是一种编译好的Servlet文件 3 jsp基于ja
  • 给本科实验室的分享PPT续-回复各种问题

    谢邀 该分享主要面向实验室的大一 大二同学
  • Neo4J(Cypher语句)初识

    欢迎各路大神临幸寒舍 以下节点标签为people friend 用户自己也可以设置成其他标签 查询时需要用到标签 这个标签可以类比为关系数据库中的表名 创建节点 关系 创建节点 小明 create n people name 小明 age
  • FFmpeg音频处理——音频混合、拼接、剪切、转码

    接触FFmpeg有一段时间了 它是音视频开发的开源库 几乎其他所有播放器 直播平台都基于FFmpeg进行二次开发 本篇文章来总结下采用FFmpeg进行音频处理 音频混合 音频剪切 音频拼接与音频转码 采用android studio进行开发
  • 一篇搞定React生命周期以及执行顺序 v16.8+(前端面试整理)

    React 组件生命周期 从事前端工作已经有一段时间 最近在面试求职者的时候发现 React最基础的实例生命周期都说不清楚 也不能说清楚每个生命周期方法具体作用 所以我通过代码 官网文档的形式总结下文 React生命周期可以说是react最
  • Ubuntu和windows系统下安装odoo16 社区版和企业版附带安装视频

    Ubuntu安装视频 ubuntu下安装odoo16社区版和企业版 Windows10安装视频 windows10安装odoo16社区版和企业版不成功的看这个视频 还是和以前的类似 先用官方的方法安装社区版 然后企业版源码覆盖掉社区版源码就
  • 数据结构 —— 线索二叉树

    线索二叉树的意义 对于一个有n个节点的二叉树 每个节点有指向左右孩子的指针域 其中会出现n 1个空指针域 这些空间不储存任何事物 浪费着内存的资源 对于一些需要频繁进行二叉树遍历操作的场合 二叉树的非递归遍历操作过程相对比较复杂 递归遍历虽
  • Rust- File

    In Rust file I O is handled primarily through the std fs and std io modules The std fs module contains several functions
  • win10此计算机无法创建家庭组,win10专业版无法创建家庭组网络该怎么办?

    在局域网中 我们可以创建一个家庭组 方便几台电脑之间互相发送文件 但是使用Win10系统的用户反应无法创建家庭组的问题 该怎么办呢 遇到这样的情况 由于系统服务未开启 系统网络设置不正确导致 我们可以通过以下方法进行修复 步骤 1 按下 W
  • TiDB关键字、保留字和注释语法

    关键字和保留字 关键字在 SQL 中有特殊的意义 例如 SELECT UPDATE DELETE 在作为表名跟函数名的时候 需要特殊对待 例如作为表名 保留字需要被反引号包住 CREATE TABLE select a INT ERROR