关键字是在SQL中有意义的词。某些关键字(如SELECT、DELETE或BIGINT)是保留的,在用作表和列名等标识符时需要特殊处理。
允许使用非保留关键字作为标识符而无需引用。如果引用保留字,则可以将它们用作标识符:

mysql> CREATE TABLE interval (begin INT, end INT);
ERROR 1064 (42000): You have an error in your SQL syntax ...
near 'interval (begin INT, end INT)'

BEGIN和END是关键字,但不是保留关键字,因此不需要将其用作标识符。INTERVAL是保留关键字,必须加引号用作标识符:

mysql> CREATE TABLE `interval` (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)

例外:限定名称中句点后的单词必须是标识符,因此即使保留该单词也无需加引号:

mysql> CREATE TABLE mydb.interval (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)

允许使用内置函数的名称作为标识符,但可能需要谨慎使用。例如, COUNT可接受作为列名。但是,默认情况下,在函数调用中,函数名称和以下( 字符之间不允许有空格。此要求使解析器能够区分名称是在函数调用中使用还是在非函数上下文中使用。

INFORMATION_SCHEMA.KEYWORDS表列出了MySQL认为关键词,并指出它们是否保留。

以下列表显示了MySQL 8.0中的关键字和保留词,以及各个词在版本之间的更改。保留的关键字标有(R)。另外,_FILENAME是保留的。

在某个时候,您可能会升级到更高的版本,因此最好查看将来的保留字。您可以在涵盖更高版本的MySQL的手册中找到这些内容。标准SQL禁止使用列表中的大多数保留字作为列名或表名(例如 GROUP)。保留了一些,因为MySQL需要它们并使用yacc解析器。

ACCESSIBLE (R)

ACCOUNT

ACTION

ACTIVE; 在8.0.14中添加(非保留)

ADD (R)

ADMIN; 在8.0.12中变为非保留

AFTER

AGAINST

AGGREGATE

ALGORITHM

ALL (R)

ALTER (R)

ALWAYS

ANALYSE; 在8.0.1中删除

ANALYZE (R)

AND (R)

ANY

ARRAY; 在8.0.17中添加(保留);在8.0.19中变为非保留

AS (R)

ASC (R)

ASCII

ASENSITIVE (R)

AT

AUTOEXTEND_SIZE

AUTO_INCREMENT

AVG

AVG_ROW_LENGTH

BACKUP

BEFORE (R)

BEGIN

BETWEEN (R)

BIGINT (R)

BINARY (R)

BINLOG

BIT

BLOB (R)

BLOCK

BOOL

BOOLEAN

BOTH (R)

BTREE

BUCKETS; 在8.0.2中添加(非保留)

BY (R)

BYTE

CACHE

CALL (R)

CASCADE (R)

CASCADED

CASE (R)

CATALOG_NAME

CHAIN

CHANGE (R)

CHANGED

CHANNEL

CHAR (R)

CHARACTER (R)

CHARSET

CHECK (R)

CHECKSUM

CIPHER

CLASS_ORIGIN

CLIENT

CLONE; 在8.0.3中添加(非保留)

CLOSE

COALESCE

CODE

COLLATE (R)

COLLATION

COLUMN (R)

COLUMNS

COLUMN_FORMAT

COLUMN_NAME

COMMENT

COMMIT

COMMITTED

COMPACT

COMPLETION

COMPONENT

COMPRESSED

COMPRESSION

CONCURRENT

CONDITION (R)

CONNECTION

CONSISTENT

CONSTRAINT (R)

CONSTRAINT_CATALOG

CONSTRAINT_NAME

CONSTRAINT_SCHEMA

CONTAINS

CONTEXT

CONTINUE (R)

CONVERT (R)

CPU

CREATE (R)

CROSS (R)

CUBE(R); 在8.0.1中保留

CUME_DIST(R); 在8.0.2中添加(保留)

CURRENT

CURRENT_DATE (R)

CURRENT_TIME (R)

CURRENT_TIMESTAMP (R)

CURRENT_USER (R)

CURSOR (R)

CURSOR_NAME

DATA

DATABASE (R)

DATABASES (R)

DATAFILE

DATE

DATETIME

DAY

DAY_HOUR (R)

DAY_MICROSECOND (R)

DAY_MINUTE (R)

DAY_SECOND (R)

DEALLOCATE

DEC (R)

DECIMAL (R)

DECLARE (R)

DEFAULT (R)

DEFAULT_AUTH

DEFINER

DEFINITION; 在8.0.4中添加(非保留)

DELAYED (R)

DELAY_KEY_WRITE

DELETE (R)

DENSE_RANK(R); 在8.0.2中添加(保留)

DESC (R)

DESCRIBE (R)

DESCRIPTION; 在8.0.4中添加(非保留)

DES_KEY_FILE; 在8.0.3中删除

DETERMINISTIC (R)

DIAGNOSTICS

DIRECTORY

DISABLE

DISCARD

DISK

DISTINCT (R)

DISTINCTROW (R)

DIV (R)

DO

DOUBLE (R)

DROP (R)

DUAL (R)

DUMPFILE

DUPLICATE

DYNAMIC

EACH (R)

ELSE (R)

ELSEIF (R)

EMPTY(R); 在8.0.4中添加(保留)

ENABLE

ENCLOSED (R)

ENCRYPTION

END

ENDS

ENFORCED; 在8.0.16中添加(非保留)

ENGINE

ENGINES

ENUM

ERROR

ERRORS

ESCAPE

ESCAPED (R)

EVENT

EVENTS

EVERY

EXCEPT (R)

EXCHANGE

EXCLUDE; 在8.0.2中添加(非保留)

EXECUTE

EXISTS (R)

EXIT (R)

EXPANSION

EXPIRE

EXPLAIN (R)

EXPORT

EXTENDED

EXTENT_SIZE

FAILED_LOGIN_ATTEMPTS; 在8.0.19中添加(非保留)

FALSE (R)

FAST

FAULTS

FETCH (R)

FIELDS

FILE

FILE_BLOCK_SIZE

FILTER

FIRST

FIRST_VALUE(R); 在8.0.2中添加(保留)

FIXED

FLOAT (R)

FLOAT4 (R)

FLOAT8 (R)

FLUSH

FOLLOWING; 在8.0.2中添加(非保留)

FOLLOWS

FOR (R)

FORCE (R)

FOREIGN (R)

FORMAT

FOUND

FROM (R)

FULL

FULLTEXT (R)

FUNCTION(R); 在8.0.1中保留

GENERAL

GENERATED (R)

GEOMCOLLECTION; 在8.0.11中添加(非保留)

GEOMETRY

GEOMETRYCOLLECTION

GET (R)

GET_FORMAT

GET_MASTER_PUBLIC_KEY; 在8.0.4中添加(保留);在8.0.11中成为非保留

GLOBAL

GRANT (R)

GRANTS

GROUP (R)

GROUPING(R); 在8.0.1中添加(保留)

GROUPS(R); 在8.0.2中添加(保留)

GROUP_REPLICATION

HANDLER

HASH

HAVING (R)

HELP

HIGH_PRIORITY (R)

HISTOGRAM; 在8.0.2中添加(非保留)

HISTORY; 在8.0.3中添加(非保留)

HOST

HOSTS

HOUR

HOUR_MICROSECOND (R)

HOUR_MINUTE (R)

HOUR_SECOND (R)

IDENTIFIED

IF (R)

IGNORE (R)

IGNORE_SERVER_IDS

IMPORT

IN (R)

INACTIVE; 在8.0.14中添加(非保留)

INDEX (R)

INDEXES

INFILE (R)

INITIAL_SIZE

INNER (R)

INOUT (R)

INSENSITIVE (R)

INSERT (R)

INSERT_METHOD

INSTALL

INSTANCE

INT (R)

INT1 (R)

INT2 (R)

INT3 (R)

INT4 (R)

INT8 (R)

INTEGER (R)

INTERVAL (R)

INTO (R)

INVISIBLE

INVOKER

IO

IO_AFTER_GTIDS (R)

IO_BEFORE_GTIDS (R)

IO_THREAD

IPC

IS (R)

ISOLATION

ISSUER

ITERATE (R)

JOIN (R)

JSON

JSON_TABLE(R); 在8.0.4中添加(保留)

JSON_VALUE; 在8.0.21中添加(非保留)

KEY (R)

KEYS (R)

KEY_BLOCK_SIZE

KILL (R)

LAG(R); 在8.0.2中添加(保留)

LANGUAGE

LAST

LAST_VALUE(R); 在8.0.2中添加(保留)

LATERAL(R); 在8.0.14中添加(保留)

LEAD(R); 在8.0.2中添加(保留)

LEADING (R)

LEAVE (R)

LEAVES

LEFT (R)

LESS

LEVEL

LIKE (R)

LIMIT (R)

LINEAR (R)

LINES (R)

LINESTRING

LIST

LOAD (R)

LOCAL

LOCALTIME (R)

LOCALTIMESTAMP (R)

LOCK (R)

LOCKED; 在8.0.1中添加(非保留)

LOCKS

LOGFILE

LOGS

LONG (R)

LONGBLOB (R)

LONGTEXT (R)

LOOP (R)

LOW_PRIORITY (R)

MASTER

MASTER_AUTO_POSITION

MASTER_BIND (R)

MASTER_COMPRESSION_ALGORITHMS; 在8.0.18中添加(非保留)

MASTER_CONNECT_RETRY

MASTER_DELAY

MASTER_HEARTBEAT_PERIOD

MASTER_HOST

MASTER_LOG_FILE

MASTER_LOG_POS

MASTER_PASSWORD

MASTER_PORT

MASTER_PUBLIC_KEY_PATH; 在8.0.4中添加(非保留)

MASTER_RETRY_COUNT

MASTER_SERVER_ID

MASTER_SSL

MASTER_SSL_CA

MASTER_SSL_CAPATH

MASTER_SSL_CERT

MASTER_SSL_CIPHER

MASTER_SSL_CRL

MASTER_SSL_CRLPATH

MASTER_SSL_KEY

MASTER_SSL_VERIFY_SERVER_CERT (R)

MASTER_TLS_CIPHERSUITES; 在8.0.19中添加(非保留)

MASTER_TLS_VERSION

MASTER_USER

MASTER_ZSTD_COMPRESSION_LEVEL; 在8.0.18中添加(非保留)

MATCH (R)

MAXVALUE (R)

MAX_CONNECTIONS_PER_HOUR

MAX_QUERIES_PER_HOUR

MAX_ROWS

MAX_SIZE

MAX_UPDATES_PER_HOUR

MAX_USER_CONNECTIONS

MEDIUM

MEDIUMBLOB (R)

MEDIUMINT (R)

MEDIUMTEXT (R)

MEMBER; 在8.0.17中添加(保留);在8.0.19中变为非保留

MEMORY

MERGE

MESSAGE_TEXT

MICROSECOND

MIDDLEINT (R)

MIGRATE

MINUTE

MINUTE_MICROSECOND (R)

MINUTE_SECOND (R)

MIN_ROWS

MOD (R)

MODE

MODIFIES (R)

MODIFY

MONTH

MULTILINESTRING

MULTIPOINT

MULTIPOLYGON

MUTEX

MYSQL_ERRNO

NAME

NAMES

NATIONAL

NATURAL (R)

NCHAR

NDB

NDBCLUSTER

NESTED; 在8.0.4中添加(非保留)

NETWORK_NAMESPACE; 在8.0.16中添加(非保留)

NEVER

NEW

NEXT

NO

NODEGROUP

NONE

NOT (R)

NOWAIT; 在8.0.1中添加(非保留)

NO_WAIT

NO_WRITE_TO_BINLOG (R)

NTH_VALUE(R); 在8.0.2中添加(保留)

NTILE(R); 在8.0.2中添加(保留)

NULL (R)

NULLS; 在8.0.2中添加(非保留)

NUMBER

NUMERIC (R)

NVARCHAR

OF(R); 在8.0.1中添加(保留)

OFF; 在8.0.20中添加(非保留)

OFFSET

OJ; 在8.0.16中添加(非保留)

OLD; 在8.0.14中添加(非保留)

ON (R)

ONE

ONLY

OPEN

OPTIMIZE (R)

OPTIMIZER_COSTS (R)

OPTION (R)

OPTIONAL; 在8.0.13中添加(非保留)

OPTIONALLY (R)

OPTIONS

OR (R)

ORDER (R)

ORDINALITY; 在8.0.4中添加(非保留)

ORGANIZATION; 在8.0.4中添加(非保留)

OTHERS; 在8.0.2中添加(非保留)

OUT (R)

OUTER (R)

OUTFILE (R)

OVER(R); 在8.0.2中添加(保留)

OWNER

PACK_KEYS

PAGE

PARSER

PARTIAL

PARTITION (R)

PARTITIONING

PARTITIONS

PASSWORD

PASSWORD_LOCK_TIME; 在8.0.19中添加(非保留)

PATH; 在8.0.4中添加(非保留)

PERCENT_RANK(R); 在8.0.2中添加(保留)

PERSIST; 在8.0.16中变为非保留

PERSIST_ONLY; 在8.0.2中添加(保留);在8.0.16中变为非保留

PHASE

PLUGIN

PLUGINS

PLUGIN_DIR

POINT

POLYGON

PORT

PRECEDES

PRECEDING; 在8.0.2中添加(非保留)

PRECISION (R)

PREPARE

PRESERVE

PREV

PRIMARY (R)

PRIVILEGES

PRIVILEGE_CHECKS_USER; 在8.0.18中添加(非保留)

PROCEDURE (R)

PROCESS; 在8.0.11中添加(非保留)

PROCESSLIST

PROFILE

PROFILES

PROXY

PURGE (R)

QUARTER

QUERY
QUICK
RANDOM; 在8.0.18中添加(非保留)

RANGE (R)

RANK(R); 在8.0.2中添加(保留)

READ (R)

READS (R)

READ_ONLY

READ_WRITE (R)

REAL (R)

REBUILD

RECOVER

RECURSIVE(R); 在8.0.1中添加(保留)

REDOFILE; 在8.0.3中删除

REDO_BUFFER_SIZE

REDUNDANT

REFERENCE; 在8.0.4中添加(非保留)

REFERENCES (R)

REGEXP (R)

RELAY

RELAYLOG

RELAY_LOG_FILE

RELAY_LOG_POS

RELAY_THREAD

RELEASE (R)

RELOAD

REMOTE; 在8.0.3中添加(非保留);在8.0.14中删除

REMOVE

RENAME (R)

REORGANIZE

REPAIR

REPEAT (R)

REPEATABLE

REPLACE (R)

REPLICATE_DO_DB

REPLICATE_DO_TABLE

REPLICATE_IGNORE_DB

REPLICATE_IGNORE_TABLE

REPLICATE_REWRITE_DB

REPLICATE_WILD_DO_TABLE

REPLICATE_WILD_IGNORE_TABLE

REPLICATION

REQUIRE (R)

REQUIRE_ROW_FORMAT; 在8.0.19中添加(非保留)

RESET

RESIGNAL (R)

RESOURCE; 在8.0.3中添加(非保留)

RESPECT; 在8.0.2中添加(非保留)

RESTART; 在8.0.4中添加(非保留)

RESTORE

RESTRICT (R)

RESUME

RETAIN; 在8.0.14中添加(非保留)

RETURN (R)

RETURNED_SQLSTATE

RETURNING; 在8.0.21中添加(非保留)

RETURNS

REUSE; 在8.0.3中添加(非保留)

REVERSE

REVOKE (R)

RIGHT (R)

RLIKE (R)

ROLE; 在8.0.1中变为非保留

ROLLBACK

ROLLUP

ROTATE

ROUTINE

ROW(R); 在8.0.2中保留

ROWS(R); 在8.0.2中保留

ROW_COUNT

ROW_FORMAT

ROW_NUMBER(R); 在8.0.2中添加(保留)

RTREE

SAVEPOINT

SCHEDULE

SCHEMA (R)

SCHEMAS (R)

SCHEMA_NAME

SECOND

SECONDARY; 在8.0.16中添加(非保留)

SECONDARY_ENGINE; 在8.0.13中添加(非保留)

SECONDARY_LOAD; 在8.0.13中添加(非保留)

SECONDARY_UNLOAD; 在8.0.13中添加(非保留)

SECOND_MICROSECOND (R)

SECURITY

SELECT (R)

SENSITIVE (R)

SEPARATOR (R)

SERIAL

SERIALIZABLE

SERVER

SESSION

SET (R)

SHARE

SHOW (R)

SHUTDOWN

SIGNAL (R)

SIGNED

SIMPLE

SKIP; 在8.0.1中添加(非保留)

SLAVE

SLOW

SMALLINT (R)

SNAPSHOT

SOCKET

SOME

SONAME

SOUNDS

SOURCE

SPATIAL (R)

SPECIFIC (R)

SQL (R)

SQLEXCEPTION (R)

SQLSTATE (R)

SQLWARNING (R)

SQL_AFTER_GTIDS

SQL_AFTER_MTS_GAPS

SQL_BEFORE_GTIDS

SQL_BIG_RESULT (R)

SQL_BUFFER_RESULT

SQL_CACHE; 在8.0.3中删除

SQL_CALC_FOUND_ROWS (R)

SQL_NO_CACHE

SQL_SMALL_RESULT (R)

SQL_THREAD

SQL_TSI_DAY

SQL_TSI_HOUR

SQL_TSI_MINUTE

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_SECOND

SQL_TSI_WEEK

SQL_TSI_YEAR

SRID; 在8.0.3中添加(非保留)

SSL (R)

STACKED

START

STARTING (R)

STARTS

STATS_AUTO_RECALC

STATS_PERSISTENT

STATS_SAMPLE_PAGES

STATUS

STOP

STORAGE

STORED (R)

STRAIGHT_JOIN (R)

STREAM; 在8.0.20中添加(非保留)

STRING

SUBCLASS_ORIGIN

SUBJECT

SUBPARTITION

SUBPARTITIONS

SUPER

SUSPEND

SWAPS

SWITCHES

SYSTEM(R); 在8.0.3中添加(保留)

TABLE (R)

TABLES

TABLESPACE

TABLE_CHECKSUM

TABLE_NAME

TEMPORARY

TEMPTABLE

TERMINATED (R)

TEXT

THAN

THEN (R)

THREAD_PRIORITY; 在8.0.3中添加(非保留)

TIES; 在8.0.2中添加(非保留)

TIME

TIMESTAMP

TIMESTAMPADD

TIMESTAMPDIFF

TINYBLOB (R)

TINYINT (R)

TINYTEXT (R)

TO (R)

TRAILING (R)

TRANSACTION

TRIGGER (R)

TRIGGERS

TRUE (R)

TRUNCATE

TYPE

TYPES

UNBOUNDED; 在8.0.2中添加(非保留)

UNCOMMITTED

UNDEFINED

UNDO (R)

UNDOFILE

UNDO_BUFFER_SIZE

UNICODE

UNINSTALL

UNION (R)

UNIQUE (R)

UNKNOWN

UNLOCK (R)

UNSIGNED (R)

UNTIL

UPDATE (R)

UPGRADE

USAGE (R)

USE (R)

USER

USER_RESOURCES

USE_FRM

USING (R)

UTC_DATE (R)

UTC_TIME (R)

UTC_TIMESTAMP (R)

VALIDATION

VALUE

VALUES (R)

VARBINARY (R)

VARCHAR (R)

VARCHARACTER (R)

VARIABLES

VARYING (R)

VCPU; 在8.0.3中添加(非保留)

VIEW

VIRTUAL (R)

VISIBLE

WAIT

WARNINGS

WEEK

WEIGHT_STRING

WHEN (R)

WHERE (R)

WHILE (R)

WINDOW(R); 在8.0.2中添加(保留)

WITH (R)

WITHOUT

WORK

WRAPPER

WRITE (R)

X509

XA

XID

XML

XOR (R)

YEAR

YEAR_MONTH (R)

ZEROFILL (R)

下表显示了与MySQL 5.7相比在MySQL 8.0中添加的关键字和保留字。保留的关键字标有(R)

ACTIVE

ADMIN

ARRAY

BUCKETS

CLONE

COMPONENT

CUME_DIST (R)

DEFINITION

DENSE_RANK (R)

DESCRIPTION

EMPTY (右)

ENFORCED

EXCEPT (右)

EXCLUDE

FAILED_LOGIN_ATTEMPTS

FIRST_VALUE (R)
FOLLOWING

GEOMCOLLECTION

GET_MASTER_PUBLIC_KEY

GROUPING (R)

GROUPS (R)

HISTOGRAM

HISTORY

INACTIVE

INVISIBLE

JSON_TABLE (R)

JSON_VALUE

LAG (R)

LAST_VALUE (R)

LATERAL (R)

LEAD (R)

LOCKED

MASTER_COMPRESSION_ALGORITHMS

MASTER_PUBLIC_KEY_PATH

MASTER_TLS_CIPHERSUITES

MASTER_ZSTD_COMPRESSION_LEVEL

MEMBER

NESTED

NETWORK_NAMESPACE

NOWAIT

NTH_VALUE (R)

NTILE (R)

NULLS

OF (R)

OFF

OJ

OLD

OPTIONAL

ORDINALITY

ORGANIZATION

OTHERS

OVER (R)

PASSWORD_LOCK_TIME

PATH

PERCENT_RANK (R)

PERSIST

PERSIST_ONLY

PRECEDING

PRIVILEGE_CHECKS_USER

PROCESS

RANDOM

RANK (R)

RECURSIVE (R)

REFERENCE

REQUIRE_ROW_FORMAT

RESOURCE

RESPECT

RESTART

RETAIN

RETURNING

REUSE

ROLE

ROW_NUMBER (R)

SECONDARY

SECONDARY_ENGINE

SECONDARY_LOAD

SECONDARY_UNLOAD

SKIP

SRID

STREAM

SYSTEM(R)

THREAD_PRIORITY

TIES

UNBOUNDED

VCPU

VISIBLE

WINDOW (R)

MySQL 8.0删除了关键字和保留字
下表显示了与MySQL 5.7相比在MySQL 8.0中删除的关键字和保留词。保留的关键字标有(R)。

ANALYSE

DES_KEY_FILE

PARSE_GCOL_EXPR

REDOFILE

SQL_CACHE