关键字和保留字

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

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)

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

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 AVG_ROW_LENGTH 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) DELAY_KEY_WRITE
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) KEY_BLOCK_SIZE 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 NO_WRITE_TO_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
SQL_CALC_FOUND_ROWS(R) SQL_NO_CACHE 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)

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「方志朋」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界

results matching ""

    No results matching ""