diff --git a/TOC.md b/TOC.md index b0a2e117f74e3..34e1ac899572a 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 55% rename from keywords-and-reserved-words.md rename to keywords.md index 23db0ccd49b39..eb16402f9ea5f 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 +summary: Learn the keywords and reserved words in TiDB. category: reference -aliases: ['/docs/stable/keywords-and-reserved-words/','/docs/v4.0/keywords-and-reserved-words/','/docs/stable/reference/sql/language-structure/keywords-and-reserved-words/'] +aliases: ['/docs/stable/keywords-and-reserved-words/','/docs/v4.0/keywords-and-reserved-words/','/docs/stable/reference/sql/language-structure/keywords-and-reserved-words/','tidb/v4.0/keywords-and-reserved-words/','tidb/stable/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