关键字和保留字
关键字和保留字
关键字在 SQL 中有特殊的意义, 例如 SELECT,UPDATE,DELETE,在作为表名跟函数名的时候,需要特殊对待,例如作为表名,保留字需要被反引号包住:
mysql> CREATE TABLE select (a INT);
ERROR 1105 (HY000): line 0 column 19 near " (a INT)" (total length 27)
mysql> CREATE TABLE `select` (a INT);
Query OK, 0 rows affected (0.09 sec)BEGIN 和 END 是关键字, 但不是保留字,所以不需要反引号:
mysql> CREATE TABLE `select` (BEGIN int, END int);
Query OK, 0 rows affected (0.09 sec)有一种特殊情况, 如果使用了限定符 .,那么也不需要用反引号:
mysql> CREATE TABLE test.select (BEGIN int, END int);
Query OK, 0 rows affected (0.08 sec)下表列出了在 TiDB 中的关键字跟保留字,保留字用 (R) 来标识:
| ACTION | ADD (R) | ADDDATE |
|---|---|---|
| ADMIN | AFTER | ALL (R) |
| ALTER (R) | ALWAYS | ANALYZE(R) |
| AND (R) | ANY | AS (R) |
| ASC (R) | ASCII | AUTO_INCREMENT |
| AVG | AVGROWLENGTH | BEGIN |
| BETWEEN (R) | BIGINT (R) | BINARY (R) |
| BINLOG | BIT | BIT_XOR |
| BLOB (R) | BOOL | BOOLEAN |
| BOTH (R) | BTREE | BY (R) |
| BYTE | CASCADE (R) | CASE (R) |
| CAST | CHANGE (R) | CHAR (R) |
| CHARACTER (R) | CHARSET | CHECK (R) |
| CHECKSUM | COALESCE | COLLATE (R) |
| COLLATION | COLUMN (R) | COLUMNS |
| COMMENT | COMMIT | COMMITTED |
| COMPACT | COMPRESSED | COMPRESSION |
| CONNECTION | CONSISTENT | CONSTRAINT (R) |
| CONVERT (R) | COUNT | CREATE (R) |
| CROSS (R) | CURRENT_DATE (R) | CURRENT_TIME (R) |
| CURRENT_TIMESTAMP (R) | CURRENT_USER (R) | CURTIME |
| DATA | DATABASE (R) | DATABASES (R) |
| DATE | DATE_ADD | DATE_SUB |
| DATETIME | DAY | DAY_HOUR (R) |
| DAY_MICROSECOND (R) | DAY_MINUTE (R) | DAY_SECOND (R) |
| DDL | DEALLOCATE | DEC |
| DECIMAL (R) | DEFAULT (R) | DELAYKEYWRITE |
| DELAYED (R) | DELETE (R) | DESC (R) |
| DESCRIBE (R) | DISABLE | DISTINCT (R) |
| DISTINCTROW (R) | DIV (R) | DO |
| DOUBLE (R) | DROP (R) | DUAL (R) |
| DUPLICATE | DYNAMIC | ELSE (R) |
| ENABLE | ENCLOSED | END |
| ENGINE | ENGINES | ENUM |
| ESCAPE | ESCAPED | EVENTS |
| EXCLUSIVE | EXECUTE | EXISTS |
| EXPLAIN (R) | EXTRACT | FALSE (R) |
| FIELDS | FIRST | FIXED |
| FLOAT (R) | FLUSH | FOR (R) |
| FORCE (R) | FOREIGN (R) | FORMAT |
| FROM (R) | FULL | FULLTEXT (R) |
| FUNCTION | GENERATED (R) | GET_FORMAT |
| GLOBAL | GRANT (R) | GRANTS |
| GROUP (R) | GROUP_CONCAT | HASH |
| HAVING (R) | HIGH_PRIORITY (R) | HOUR |
| HOUR_MICROSECOND (R) | HOUR_MINUTE (R) | HOUR_SECOND (R) |
| IDENTIFIED | IF (R) | IGNORE (R) |
| IN (R) | INDEX (R) | INDEXES |
| INFILE (R) | INNER (R) | INSERT (R) |
| INT (R) | INTEGER (R) | INTERVAL (R) |
| INTO (R) | IS (R) | ISOLATION |
| JOBS | JOIN (R) | JSON |
| KEY (R) | KEYBLOCKSIZE | KEYS (R) |
| KILL (R) | LEADING (R) | LEFT (R) |
| LESS | LEVEL | LIKE (R) |
| LIMIT (R) | LINES (R) | LOAD (R) |
| LOCAL | LOCALTIME (R) | LOCALTIMESTAMP (R) |
| LOCK (R) | LONGBLOB (R) | LONGTEXT (R) |
| LOW_PRIORITY (R) | MAX | MAX_ROWS |
| MAXVALUE (R) | MEDIUMBLOB (R) | MEDIUMINT (R) |
| MEDIUMTEXT (R) | MICROSECOND | MIN |
| MIN_ROWS | MINUTE | MINUTE_MICROSECOND (R) |
| MINUTE_SECOND (R) | MIN | MIN_ROWS |
| MINUTE | MINUTE_MICROSECOND | MINUTE_SECOND |
| MOD (R) | MODE | MODIRY |
| MONTH | NAMES | NATIONAL |
| NATURAL (R) | NO | NOWRITETO_BINLOG (R) |
| NONE | NOT (R) | NOW |
| NULL (R) | NUMERIC (R) | NVARCHAR (R) |
| OFFSET | ON (R) | ONLY |
| OPTION (R) | OR (R) | ORDER (R) |
| OUTER (R) | PARTITION (R) | PARTITIONS |
| PASSWORD | PLUGINS | POSITION |
| PRECISION (R) | PREPARE | PRIMARY (R) |
| PRIVILEGES | PROCEDURE (R) | PROCESS |
| PROCESSLIST | QUARTER | QUERY |
| QUICK | RANGE (R) | READ (R) |
| REAL (R) | REDUNDANT | REFERENCES (R) |
| REGEXP (R) | RENAME (R) | REPEAT (R) |
| REPEATABLE | REPLACE (R) | RESTRICT (R) |
| REVERSE | REVOKE (R) | RIGHT (R) |
| RLIKE (R) | ROLLBACK | ROW |
| ROW_COUNT | ROW_FORMAT | SCHEMA |
| SCHEMAS | SECOND | SECOND_MICROSECOND (R) |
| SELECT (R) | SERIALIZABLE | SESSION |
| SET (R) | SHARE | SHARED |
| SHOW (R) | SIGNED | SMALLINT (R) |
| SNAPSHOT | SOME | SQL_CACHE |
| SQLCALCFOUND_ROWS (R) | SQLNOCACHE | START |
| STARTING (R) | STATS | STATS_BUCKETS |
| STATS_HISTOGRAMS | STATS_META | STATS_PERSISTENT |
| STATUS | STORED (R) | SUBDATE |
| SUBSTR | SUBSTRING | SUM |
| SUPER | TABLE (R) | TABLES |
| TERMINATED (R) | TEXT | THAN |
| THEN (R) | TIDB | TIDB_INLJ |
| TIDB_SMJ | TIME | TIMESTAMP |
| TIMESTAMPADD | TIMESTAMPDIFF | TINYBLOB (R) |
| TINYINT (R) | TINYTEXT (R) | TO (R) |
| TRAILING (R) | TRANSACTION | TRIGGER (R) |
| TRIGGERS | TRIM | TRUE (R) |
| TRUNCATE | UNCOMMITTED | UNION (R) |
| UNIQUE (R) | UNKNOWN | UNLOCK (R) |
| UNSIGNED (R) | UPDATE (R) | USE (R) |
| USER | USING (R) | UTC_DATE (R) |
| UTC_TIME (R) | UTC_TIMESTAMP (R) | VALUE |
| VALUES (R) | VARBINARY (R) | VARCHAR (R) |
| VARIABLES | VIEW | VIRTUAL (R) |
| WARNINGS | WEEK | WHEN (R) |
| WHERE (R) | WITH (R) | WRITE (R) |
| XOR (R) | YEAR | YEAR_MONTH (R) |
| ZEROFILL (R) |