diff --git a/TOC.md b/TOC.md
index e0ec6abc0325c..bb0f14088b283 100644
--- a/TOC.md
+++ b/TOC.md
@@ -205,7 +205,7 @@
+ [AUTO_RANDOM](/auto-random.md)
+ [Literal Values](/literal-values.md)
+ [Schema Object Names](/schema-object-names.md)
- + [Keywords and Reserved Words](/keywords-and-reserved-words.md)
+ + [Keywords and Reserved Words](/keywords.md)
+ [User-Defined Variables](/user-defined-variables.md)
+ [Expression Syntax](/expression-syntax.md)
+ [Comment Syntax](/comment-syntax.md)
diff --git a/keywords-and-reserved-words.md b/keywords.md
similarity index 54%
rename from keywords-and-reserved-words.md
rename to keywords.md
index e8b23ee4f92db..02d970a01d8c5 100644
--- a/keywords-and-reserved-words.md
+++ b/keywords.md
@@ -1,112 +1,174 @@
---
-title: Keywords and Reserved Words
-summary: Learn about the keywords and reserved words in TiDB.
+title: Keywords
category: reference
-aliases: ['/docs/dev/keywords-and-reserved-words/','/docs/dev/reference/sql/language-structure/keywords-and-reserved-words/']
+summary: Keywords and Reserved Words
+aliases: ['/docs/dev/keywords-and-reserved-words/','/docs/dev/reference/sql/language-structure/keywords-and-reserved-words/','tidb/dev/keywords-and-reserved-words/']
---
-# Keywords and Reserved Words
+# Keywords
-Keywords are words that have significance in SQL. Certain keywords, such as `SELECT`, `UPDATE`, or `DELETE`, are reserved and require special treatment for use as identifiers such as table and column names. For example, as table names, the reserved words must be quoted with backquotes:
+This article introduces the keywords in TiDB, the differences between reserved words and non-reserved words and summarizes all keywords for the query.
+
+Keywords are words that have special meanings in SQL statements, such as `SELECT`, `UPDATE`, and `DELETE`. Some of them can be used as identifiers directly, which are called **non-reserved keywords**. Some of them require special treatment before being used as identifiers, which are called **reserved keywords**.
+
+To use the reserved keywords as identifiers, you must enclose them in backticks `` ` ``:
+
+{{< copyable "sql" >}}
```sql
-mysql> CREATE TABLE select (a INT);
+CREATE TABLE select (a INT);
+```
+
+```
ERROR 1105 (HY000): line 0 column 19 near " (a INT)" (total length 27)
-mysql> CREATE TABLE `select` (a INT);
+```
+
+{{< copyable "sql" >}}
+
+```sql
+CREATE TABLE `select` (a INT);
+```
+
+```
Query OK, 0 rows affected (0.09 sec)
```
-The `BEGIN` and `END` are keywords but not reserved words, so you do not need to quote them with backquotes:
+The non-reserved keywords do not require backticks, such as `BEGIN` and `END`, which can be successfully used as identifiers in the following statement:
+
+{{< copyable "sql" >}}
```sql
-mysql> CREATE TABLE `select` (BEGIN int, END int);
+CREATE TABLE `select` (BEGIN int, END int);
+```
+
+```
Query OK, 0 rows affected (0.09 sec)
```
-Exception: A word that follows a period `.` qualifier does not need to be quoted with backquotes either:
+In the special case, the reserved keywords do not need backticks if they are used with the `.` delimiter:
+
+{{< copyable "sql" >}}
```sql
-mysql> CREATE TABLE test.select (BEGIN int, END int);
+CREATE TABLE test.select (BEGIN int, END int);
+```
+
+```
Query OK, 0 rows affected (0.08 sec)
```
-The following list shows the keywords and reserved words in TiDB. Most of the reserved words are labelled with `(R)`. [Window functions'](/functions-and-operators/window-functions.md) reserved words are labelled with `(R-Window)`.
+The following list shows the keywords in TiDB. Reserved keywords are marked with `(R)`. Reserved keywords for [Window Functions](/functions-and-operators/window-functions.md) are marked with `(R-Window)`:
{{< tabs-panel "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z" >}}
A
+- ACCOUNT
- ACTION
- ADD (R)
-- ADDDATE
-- ADMIN
+- ADMIN (R)
+- ADVISE
- AFTER
+- AGAINST
+- AGO
+- ALGORITHM
- ALL (R)
- ALTER (R)
- ALWAYS
-- ANALYZE(R)
+- ANALYZE (R)
- AND (R)
- ANY
- AS (R)
- ASC (R)
- ASCII
+- AUTO_ID_CACHE
- AUTO_INCREMENT
- AUTO_RANDOM
+- AUTO_RANDOM_BASE
- AVG
- AVG_ROW_LENGTH
B
+- BACKEND
+- BACKUP
+- BACKUPS
- BEGIN
- BETWEEN (R)
- BIGINT (R)
- BINARY (R)
+- BINDING
+- BINDINGS
- BINLOG
- BIT
-- BIT_XOR
- BLOB (R)
+- BLOCK
- BOOL
- BOOLEAN
- BOTH (R)
- BTREE
+- BUCKETS (R)
+- BUILTINS (R)
- BY (R)
- BYTE
C
+- CACHE
+- CANCEL (R)
+- CAPTURE
- CASCADE (R)
+- CASCADED
- CASE (R)
-- CAST
+- CHAIN
- CHANGE (R)
- CHAR (R)
- CHARACTER (R)
- CHARSET
- CHECK (R)
+- CHECKPOINT
- CHECKSUM
+- CIPHER
+- CLEANUP
+- CLIENT
+- CMSKETCH (R)
- COALESCE
- COLLATE (R)
- COLLATION
- COLUMN (R)
- COLUMNS
+- COLUMN_FORMAT
- COMMENT
- COMMIT
- COMMITTED
- COMPACT
- COMPRESSED
- COMPRESSION
+- CONCURRENCY
+- CONFIG
- CONNECTION
- CONSISTENT
- CONSTRAINT (R)
+- CONTEXT
- CONVERT (R)
-- COUNT
+- CPU
- CREATE (R)
- CROSS (R)
+- CSV_BACKSLASH_ESCAPE
+- CSV_DELIMITER
+- CSV_HEADER
+- CSV_NOT_NULL
+- CSV_NULL
+- CSV_SEPARATOR
+- CSV_TRIM_LAST_SEPARATORS
- CUME_DIST (R-Window)
+- CURRENT
- CURRENT_DATE (R)
+- CURRENT_ROLE (R)
- CURRENT_TIME (R)
- CURRENT_TIMESTAMP (R)
- CURRENT_USER (R)
-- CURTIME
+- CYCLE
D
@@ -114,31 +176,34 @@ The following list shows the keywords and reserved words in TiDB. Most of the re
- DATABASE (R)
- DATABASES (R)
- DATE
-- DATE_ADD
-- DATE_SUB
- DATETIME
- DAY
- DAY_HOUR (R)
- DAY_MICROSECOND (R)
- DAY_MINUTE (R)
- DAY_SECOND (R)
-- DDL
+- DDL (R)
- DEALLOCATE
-- DEC
- DECIMAL (R)
- DEFAULT (R)
-- DELAY_KEY_WRITE
+- DEFINER
- DELAYED (R)
+- DELAY_KEY_WRITE
- DELETE (R)
- DENSE_RANK (R-Window)
+- DEPTH (R)
- DESC (R)
- DESCRIBE (R)
+- DIRECTORY
- DISABLE
+- DISCARD
+- DISK
- DISTINCT (R)
- DISTINCTROW (R)
- DIV (R)
- DO
- DOUBLE (R)
+- DRAINER (R)
- DROP (R)
- DUAL (R)
- DUPLICATE
@@ -148,29 +213,42 @@ The following list shows the keywords and reserved words in TiDB. Most of the re
- ELSE (R)
- ENABLE
-- ENCLOSED
+- ENCLOSED (R)
+- ENCRYPTION
- END
+- ENFORCED
- ENGINE
- ENGINES
- ENUM
+- ERROR
+- ERRORS
- ESCAPE
-- ESCAPED
+- ESCAPED (R)
+- EVENT
- EVENTS
+- EVOLVE
+- EXCEPT (R)
+- EXCHANGE
- EXCLUSIVE
- EXECUTE
-- EXISTS
+- EXISTS (R)
+- EXPANSION
+- EXPIRE
- EXPLAIN (R)
-- EXTRACT
+- EXTENDED
F
- FALSE (R)
+- FAULTS
- FIELDS
+- FILE
- FIRST
- FIRST_VALUE (R-Window)
- FIXED
- FLOAT (R)
- FLUSH
+- FOLLOWING
- FOR (R)
- FORCE (R)
- FOREIGN (R)
@@ -182,13 +260,12 @@ The following list shows the keywords and reserved words in TiDB. Most of the re
G
+- GENERAL
- GENERATED (R)
-- GET_FORMAT
- GLOBAL
- GRANT (R)
- GRANTS
- GROUP (R)
-- GROUP_CONCAT
- GROUPS (R-Window)
H
@@ -196,6 +273,8 @@ The following list shows the keywords and reserved words in TiDB. Most of the re
- HASH
- HAVING (R)
- HIGH_PRIORITY (R)
+- HISTORY
+- HOSTS
- HOUR
- HOUR_MICROSECOND (R)
- HOUR_MINUTE (R)
@@ -206,35 +285,57 @@ The following list shows the keywords and reserved words in TiDB. Most of the re
- IDENTIFIED
- IF (R)
- IGNORE (R)
+- IMPORT
+- IMPORTS
- IN (R)
+- INCREMENT
+- INCREMENTAL
- INDEX (R)
- INDEXES
- INFILE (R)
- INNER (R)
- INSERT (R)
+- INSERT_METHOD
+- INSTANCE
- INT (R)
+- INT1 (R)
+- INT2 (R)
+- INT3 (R)
+- INT4 (R)
+- INT8 (R)
- INTEGER (R)
- INTERVAL (R)
- INTO (R)
+- INVISIBLE
+- INVOKER
+- IO
+- IPC
- IS (R)
- ISOLATION
+- ISSUER
J
-- JOBS
+- JOB (R)
+- JOBS (R)
- JOIN (R)
- JSON
K
- KEY (R)
-- KEY_BLOCK_SIZE
- KEYS (R)
+- KEY_BLOCK_SIZE
- KILL (R)
L
+- LABELS
- LAG (R-Window)
+- LANGUAGE
+- LAST
+- LASTVAL
+- LAST_BACKUP
- LAST_VALUE (R-Window)
- LEAD (R-Window)
- LEADING (R)
@@ -243,38 +344,48 @@ The following list shows the keywords and reserved words in TiDB. Most of the re
- LEVEL
- LIKE (R)
- LIMIT (R)
+- LINEAR (R)
- LINES (R)
+- LIST
- LOAD (R)
- LOCAL
- LOCALTIME (R)
- LOCALTIMESTAMP (R)
+- LOCATION
- LOCK (R)
+- LOGS
+- LONG (R)
- LONGBLOB (R)
- LONGTEXT (R)
- LOW_PRIORITY (R)
M
-- MAX
-- MAX_ROWS
+- MASTER
+- MATCH (R)
- MAXVALUE (R)
+- MAX_CONNECTIONS_PER_HOUR
+- MAX_IDXNUM
+- MAX_MINUTES
+- MAX_QUERIES_PER_HOUR
+- MAX_ROWS
+- MAX_UPDATES_PER_HOUR
+- MAX_USER_CONNECTIONS
+- MB
- MEDIUMBLOB (R)
- MEDIUMINT (R)
- MEDIUMTEXT (R)
+- MEMORY
+- MERGE
- MICROSECOND
-- MIN
-- MIN_ROWS
- MINUTE
- MINUTE_MICROSECOND (R)
- MINUTE_SECOND (R)
-- MIN
+- MINVALUE
- MIN_ROWS
-- MINUTE
-- MINUTE_MICROSECOND
-- MINUTE_SECOND
- MOD (R)
- MODE
-- MODIRY
+- MODIFY
- MONTH
N
@@ -282,47 +393,79 @@ The following list shows the keywords and reserved words in TiDB. Most of the re
- NAMES
- NATIONAL
- NATURAL (R)
+- NCHAR
+- NEVER
+- NEXT
+- NEXTVAL
- NO
-- NO_WRITE_TO_BINLOG (R)
+- NOCACHE
+- NOCYCLE
+- NODEGROUP
+- NODE_ID (R)
+- NODE_STATE (R)
+- NOMAXVALUE
+- NOMINVALUE
- NONE
- NOT (R)
-- NOW
+- NOWAIT
+- NO_WRITE_TO_BINLOG (R)
- NTH_VALUE (R-Window)
- NTILE (R-Window)
- NULL (R)
+- NULLS
- NUMERIC (R)
-- NVARCHAR (R)
+- NVARCHAR
O
- OFFSET
- ON (R)
+- ONLINE
- ONLY
+- ON_DUPLICATE
+- OPEN
+- OPTIMISTIC (R)
+- OPTIMIZE (R)
- OPTION (R)
+- OPTIONALLY (R)
- OR (R)
- ORDER (R)
- OUTER (R)
+- OUTFILE (R)
- OVER (R-Window)
P
+- PACK_KEYS
+- PAGE
+- PARSER
+- PARTIAL
- PARTITION (R)
+- PARTITIONING
- PARTITIONS
- PASSWORD
- PERCENT_RANK (R-Window)
+- PER_DB
+- PER_TABLE
+- PESSIMISTIC (R)
- PLUGINS
-- POSITION
+- PRECEDING
- PRECISION (R)
- PREPARE
+- PRE_SPLIT_REGIONS
- PRIMARY (R)
- PRIVILEGES
- PROCEDURE (R)
- PROCESS
- PROCESSLIST
+- PROFILE
+- PROFILES
+- PUMP (R)
Q
- QUARTER
+- QUERIES
- QUERY
- QUICK
@@ -330,98 +473,164 @@ The following list shows the keywords and reserved words in TiDB. Most of the re
- RANGE (R)
- RANK (R-Window)
+- RATE_LIMIT
- READ (R)
- REAL (R)
+- REBUILD
+- RECOVER
- REDUNDANT
- REFERENCES (R)
- REGEXP (R)
+- REGION (R)
+- REGIONS (R)
+- RELEASE (R)
+- RELOAD
+- REMOVE
- RENAME (R)
+- REORGANIZE
+- REPAIR
- REPEAT (R)
- REPEATABLE
- REPLACE (R)
+- REPLICA
+- REPLICATION
+- REQUIRE (R)
+- RESPECT
+- RESTORE
+- RESTORES
- RESTRICT (R)
- REVERSE
- REVOKE (R)
- RIGHT (R)
- RLIKE (R)
+- ROLE
- ROLLBACK
-- ROW
+- ROUTINE
+- ROW (R)
+- ROWS (R-Window)
- ROW_COUNT
- ROW_FORMAT
- ROW_NUMBER (R-Window)
-- ROWS (R-Window)
+- RTREE
S
-- SCHEMA
-- SCHEMAS
+- SAMPLES (R)
- SECOND
+- SECONDARY_ENGINE
+- SECONDARY_LOAD
+- SECONDARY_UNLOAD
- SECOND_MICROSECOND (R)
+- SECURITY
- SELECT (R)
+- SEND_CREDENTIALS_TO_TIKV
+- SEPARATOR
+- SEQUENCE
+- SERIAL
- SERIALIZABLE
- SESSION
- SET (R)
+- SETVAL
+- SHARD_ROW_ID_BITS
- SHARE
- SHARED
- SHOW (R)
+- SHUTDOWN
- SIGNED
+- SIMPLE
+- SKIP_SCHEMA_FILES
+- SLAVE
+- SLOW
- SMALLINT (R)
- SNAPSHOT
- SOME
+- SOURCE
+- SPATIAL (R)
+- SPLIT (R)
+- SQL (R)
+- SQL_BIG_RESULT (R)
+- SQL_BUFFER_RESULT
- SQL_CACHE
- SQL_CALC_FOUND_ROWS (R)
- SQL_NO_CACHE
+- SQL_SMALL_RESULT (R)
+- SQL_TSI_DAY
+- SQL_TSI_HOUR
+- SQL_TSI_MINUTE
+- SQL_TSI_MONTH
+- SQL_TSI_QUARTER
+- SQL_TSI_SECOND
+- SQL_TSI_WEEK
+- SQL_TSI_YEAR
+- SSL (R)
- START
- STARTING (R)
-- STATS
-- STATS_BUCKETS
-- STATS_HISTOGRAMS
-- STATS_META
+- STATS (R)
+- STATS_AUTO_RECALC
+- STATS_BUCKETS (R)
+- STATS_HEALTHY (R)
+- STATS_HISTOGRAMS (R)
+- STATS_META (R)
- STATS_PERSISTENT
+- STATS_SAMPLE_PAGES
- STATUS
+- STORAGE
- STORED (R)
-- SUBDATE
-- SUBSTR
-- SUBSTRING
-- SUM
+- STRAIGHT_JOIN (R)
+- STRICT_FORMAT
+- SUBJECT
+- SUBPARTITION
+- SUBPARTITIONS
- SUPER
+- SWAPS
+- SWITCHES
+- SYSTEM_TIME
T
- TABLE (R)
- TABLES
+- TABLESPACE
+- TABLE_CHECKSUM
+- TEMPORARY
+- TEMPTABLE
- TERMINATED (R)
- TEXT
- THAN
- THEN (R)
-- TIDB
-- TIDB_INLJ
-- TIDB_SMJ
+- TIDB (R)
+- TIFLASH (R)
+- TIKV_IMPORTER
- TIME
- TIMESTAMP
-- TIMESTAMPADD
-- TIMESTAMPDIFF
- TINYBLOB (R)
- TINYINT (R)
- TINYTEXT (R)
- TO (R)
+- TOPN (R)
+- TRACE
+- TRADITIONAL
- TRAILING (R)
- TRANSACTION
- TRIGGER (R)
- TRIGGERS
-- TRIM
- TRUE (R)
- TRUNCATE
+- TYPE
U
+- UNBOUNDED
- UNCOMMITTED
+- UNDEFINED
+- UNICODE
- UNION (R)
- UNIQUE (R)
- UNKNOWN
- UNLOCK (R)
- UNSIGNED (R)
- UPDATE (R)
+- USAGE (R)
- USE (R)
- USER
- USING (R)
@@ -431,26 +640,34 @@ The following list shows the keywords and reserved words in TiDB. Most of the re
V
+- VALIDATION
- VALUE
- VALUES (R)
- VARBINARY (R)
- VARCHAR (R)
+- VARCHARACTER (R)
- VARIABLES
+- VARYING (R)
- VIEW
- VIRTUAL (R)
+- VISIBLE
W
- WARNINGS
- WEEK
+- WEIGHT_STRING
- WHEN (R)
- WHERE (R)
+- WIDTH (R)
- WINDOW (R-Window)
- WITH (R)
+- WITHOUT
- WRITE (R)
X
+- X509
- XOR (R)
Y