9.3 关键字和保留字

关键字是在 SQL 中具有重要意义的单词。某些关键字(例如SELECTDELETEBIGINT)已保留,需要特殊对待才能用作 table 名和列名之类的标识符。内置函数的名称也可能如此。

允许使用非保留关键字作为标识符而无需引用。如果您按照第 9.2 节“架构对象名称”中的说明引用保留字,则可以将它们用作标识符:

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)'

BEGINEND是关键字,但不是保留关键字,因此它们用作标识符不需要引用。 INTERVAL是保留关键字,必须加引号用作标识符:

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

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

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

允许使用内置函数的名称作为标识符,但可能需要谨慎使用。例如,COUNT可以用作列名。但是,默认情况下,函数调用与函数名称和以下(字符之间不允许有空格。此要求使解析器能够区分名称是在函数调用中使用还是在非函数上下文中使用。有关识别功能名称的更多详细信息,请参见第 9.2.5 节“函数名称的解析和解析”

MySQL 5.7 关键字和保留字

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

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

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

  • ACCESSIBLE(R)

  • ACCOUNT;在 5.7.6 中添加(非保留)

  • ACTION

  • ADD(R)

  • AFTER

  • AGAINST

  • AGGREGATE

  • ALGORITHM

  • ALL(R)

  • ALTER(R)

  • ALWAYS;在 5.7.6 中添加(非保留)

  • ANALYSE

  • ANALYZE(R)

  • AND(R)

  • ANY

  • AS(R)

  • ASC(R)

  • ASCII

  • ASENSITIVE(R)

  • AT

  • AUTOEXTEND_SIZE

  • AUTO_INCREMENT

  • AVG

  • AVG_ROW_LENGTH

B

  • BACKUP

  • BEFORE(R)

  • BEGIN

  • BETWEEN(R)

  • BIGINT(R)

  • BINARY(R)

  • BINLOG

  • BIT

  • BLOB(R)

  • BLOCK

  • BOOL

  • BOOLEAN

  • BOTH(R)

  • BTREE

  • BY(R)

  • BYTE

C

  • CACHE

  • CALL(R)

  • CASCADE(R)

  • CASCADED

  • CASE(R)

  • CATALOG_NAME

  • CHAIN

  • CHANGE(R)

  • CHANGED

  • CHANNEL;在 5.7.6 中添加(非保留)

  • CHAR(R)

  • CHARACTER(R)

  • CHARSET

  • CHECK(R)

  • CHECKSUM

  • CIPHER

  • CLASS_ORIGIN

  • CLIENT

  • CLOSE

  • COALESCE

  • CODE

  • COLLATE(R)

  • COLLATION

  • COLUMN(R)

  • COLUMNS

  • COLUMN_FORMAT

  • COLUMN_NAME

  • COMMENT

  • COMMIT

  • COMMITTED

  • COMPACT

  • COMPLETION

  • COMPRESSED

  • COMPRESSION;在 5.7.8 中添加(非保留)

  • 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

  • CURRENT

  • CURRENT_DATE(R)

  • CURRENT_TIME(R)

  • CURRENT_TIMESTAMP(R)

  • CURRENT_USER(R)

  • CURSOR(R)

  • CURSOR_NAME

D

  • 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

  • DELAYED(R)

  • DELAY_KEY_WRITE

  • DELETE(R)

  • DESC(R)

  • DESCRIBE(R)

  • DES_KEY_FILE

  • DETERMINISTIC(R)

  • DIAGNOSTICS

  • DIRECTORY

  • DISABLE

  • DISCARD

  • DISK

  • DISTINCT(R)

  • DISTINCTROW(R)

  • DIV(R)

  • DO

  • DOUBLE(R)

  • DROP(R)

  • DUAL(R)

  • DUMPFILE

  • DUPLICATE

  • DYNAMIC

E

  • EACH(R)

  • ELSE(R)

  • ELSEIF(R)

  • ENABLE

  • ENCLOSED(R)

  • ENCRYPTION;在 5.7.11 中添加(非保留)

  • END

  • ENDS

  • ENGINE

  • ENGINES

  • ENUM

  • ERROR

  • ERRORS

  • ESCAPE

  • ESCAPED(R)

  • EVENT

  • EVENTS

  • EVERY

  • EXCHANGE

  • EXECUTE

  • EXISTS(R)

  • EXIT(R)

  • EXPANSION

  • EXPIRE

  • EXPLAIN(R)

  • EXPORT

  • EXTENDED

  • EXTENT_SIZE

F

  • FALSE(R)

  • FAST

  • FAULTS

  • FETCH(R)

  • FIELDS

  • FILE

  • FILE_BLOCK_SIZE;在 5.7.6 中添加(非保留)

  • FILTER;在 5.7.3 中添加(非保留)

  • FIRST

  • FIXED

  • FLOAT(R)

  • FLOAT4(R)

  • FLOAT8(R)

  • FLUSH

  • FOLLOWS;在 5.7.2 中添加(非保留)

  • FOR(R)

  • FORCE(R)

  • FOREIGN(R)

  • FORMAT

  • FOUND

  • FROM(R)

  • FULL

  • FULLTEXT(R)

  • FUNCTION

G

  • GENERAL

  • GENERATED(R);在 5.7.6 中添加(保留)

  • GEOMETRY

  • GEOMETRYCOLLECTION

  • GET(R)

  • GET_FORMAT

  • GLOBAL

  • GRANT(R)

  • GRANTS

  • GROUP(R)

  • GROUP_REPLICATION;在 5.7.6 中添加(非保留)

H

  • HANDLER

  • HASH

  • HAVING(R)

  • HELP

  • HIGH_PRIORITY(R)

  • HOST

  • HOSTS

  • HOUR

  • HOUR_MICROSECOND(R)

  • HOUR_MINUTE(R)

  • HOUR_SECOND(R)

I

  • IDENTIFIED

  • IF(R)

  • IGNORE(R)

  • IGNORE_SERVER_IDS

  • IMPORT

  • IN(R)

  • INDEX(R)

  • INDEXES

  • INFILE(R)

  • INITIAL_SIZE

  • INNER(R)

  • INOUT(R)

  • INSENSITIVE(R)

  • INSERT(R)

  • INSERT_METHOD

  • INSTALL

  • INSTANCE;在 5.7.11 中添加(非保留)

  • INT(R)

  • INT1(R)

  • INT2(R)

  • INT3(R)

  • INT4(R)

  • INT8(R)

  • INTEGER(R)

  • INTERVAL(R)

  • INTO(R)

  • INVOKER

  • IO

  • IO_AFTER_GTIDS(R)

  • IO_BEFORE_GTIDS(R)

  • IO_THREAD

  • IPC

  • IS(R)

  • ISOLATION

  • ISSUER

  • ITERATE(R)

J

  • JOIN(R)

  • JSON;在 5.7.8 中添加(非保留)

K

  • KEY(R)

  • KEYS(R)

  • KEY_BLOCK_SIZE

  • KILL(R)

L

  • LANGUAGE

  • LAST

  • 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)

  • LOCKS

  • LOGFILE

  • LOGS

  • LONG(R)

  • LONGBLOB(R)

  • LONGTEXT(R)

  • LOOP(R)

  • LOW_PRIORITY(R)

M

  • MASTER

  • MASTER_AUTO_POSITION

  • MASTER_BIND(R)

  • MASTER_CONNECT_RETRY

  • MASTER_DELAY

  • MASTER_HEARTBEAT_PERIOD

  • MASTER_HOST

  • MASTER_LOG_FILE

  • MASTER_LOG_POS

  • MASTER_PASSWORD

  • MASTER_PORT

  • 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_VERSION;在 5.7.10 中添加(非保留)

  • MASTER_USER

  • MATCH(R)

  • MAXVALUE(R)

  • MAX_CONNECTIONS_PER_HOUR

  • MAX_QUERIES_PER_HOUR

  • MAX_ROWS

  • MAX_SIZE

  • MAX_STATEMENT_TIME;在 5.7.4 中添加(非保留);在 5.7.8 中删除

  • MAX_UPDATES_PER_HOUR

  • MAX_USER_CONNECTIONS

  • MEDIUM

  • MEDIUMBLOB(R)

  • MEDIUMINT(R)

  • MEDIUMTEXT(R)

  • 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

N

  • NAME

  • NAMES

  • NATIONAL

  • NATURAL(R)

  • NCHAR

  • NDB

  • NDBCLUSTER

  • NEVER;在 5.7.4 中添加(非保留)

  • NEW

  • NEXT

  • NO

  • NODEGROUP

  • NONBLOCKING;在 5.7.6 中删除

  • NONE

  • NOT(R)

  • NO_WAIT

  • NO_WRITE_TO_BINLOG(R)

  • NULL(R)

  • NUMBER

  • NUMERIC(R)

  • NVARCHAR

O

  • OFFSET

  • OLD_PASSWORD;在 5.7.5 中删除

  • ON(R)

  • ONE

  • ONLY

  • OPEN

  • OPTIMIZE(R)

  • OPTIMIZER_COSTS(R);在 5.7.5 中添加(保留)

  • OPTION(R)

  • OPTIONALLY(R)

  • OPTIONS

  • OR(R)

  • ORDER(R)

  • OUT(R)

  • OUTER(R)

  • OUTFILE(R)

  • OWNER

P

  • PACK_KEYS

  • PAGE

  • PARSER

  • PARSE_GCOL_EXPR;在 5.7.6 中添加(保留);在 5.7.8 中变为非保留

  • PARTIAL

  • PARTITION(R)

  • PARTITIONING

  • PARTITIONS

  • PASSWORD

  • PHASE

  • PLUGIN

  • PLUGINS

  • PLUGIN_DIR

  • POINT

  • POLYGON

  • PORT

  • PRECEDES;在 5.7.2 中添加(非保留)

  • PRECISION(R)

  • PREPARE

  • PRESERVE

  • PREV

  • PRIMARY(R)

  • PRIVILEGES

  • PROCEDURE(R)

  • PROCESSLIST

  • PROFILE

  • PROFILES

  • PROXY

  • PURGE(R)

Q

  • QUARTER

  • QUERY

  • QUICK

R

  • RANGE(R)

  • READ(R)

  • READS(R)

  • READ_ONLY

  • READ_WRITE(R)

  • REAL(R)

  • REBUILD

  • RECOVER

  • REDOFILE

  • REDO_BUFFER_SIZE

  • REDUNDANT

  • REFERENCES(R)

  • REGEXP(R)

  • RELAY

  • RELAYLOG

  • RELAY_LOG_FILE

  • RELAY_LOG_POS

  • RELAY_THREAD

  • RELEASE(R)

  • RELOAD

  • REMOVE

  • RENAME(R)

  • REORGANIZE

  • REPAIR

  • REPEAT(R)

  • REPEATABLE

  • REPLACE(R)

  • REPLICATE_DO_DB;在 5.7.3 中添加(非保留)

  • REPLICATE_DO_TABLE;在 5.7.3 中添加(非保留)

  • REPLICATE_IGNORE_DB;在 5.7.3 中添加(非保留)

  • REPLICATE_IGNORE_TABLE;在 5.7.3 中添加(非保留)

  • REPLICATE_REWRITE_DB;在 5.7.3 中添加(非保留)

  • REPLICATE_WILD_DO_TABLE;在 5.7.3 中添加(非保留)

  • REPLICATE_WILD_IGNORE_TABLE;在 5.7.3 中添加(非保留)

  • REPLICATION

  • REQUIRE(R)

  • RESET

  • RESIGNAL(R)

  • RESTORE

  • RESTRICT(R)

  • RESUME

  • RETURN(R)

  • RETURNED_SQLSTATE

  • RETURNS

  • REVERSE

  • REVOKE(R)

  • RIGHT(R)

  • RLIKE(R)

  • ROLLBACK

  • ROLLUP

  • ROTATE;在 5.7.11 中添加(非保留)

  • ROUTINE

  • ROW

  • ROWS

  • ROW_COUNT

  • ROW_FORMAT

  • RTREE

S

  • SAVEPOINT

  • SCHEDULE

  • SCHEMA(R)

  • SCHEMAS(R)

  • SCHEMA_NAME

  • SECOND

  • SECOND_MICROSECOND(R)

  • SECURITY

  • SELECT(R)

  • SENSITIVE(R)

  • SEPARATOR(R)

  • SERIAL

  • SERIALIZABLE

  • SERVER

  • SESSION

  • SET(R)

  • SHARE

  • SHOW(R)

  • SHUTDOWN

  • SIGNAL(R)

  • SIGNED

  • SIMPLE

  • 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

  • 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

  • SSL(R)

  • STACKED

  • START

  • STARTING(R)

  • STARTS

  • STATS_AUTO_RECALC

  • STATS_PERSISTENT

  • STATS_SAMPLE_PAGES

  • STATUS

  • STOP

  • STORAGE

  • STORED(R);在 5.7.6 中添加(保留)

  • STRAIGHT_JOIN(R)

  • STRING

  • SUBCLASS_ORIGIN

  • SUBJECT

  • SUBPARTITION

  • SUBPARTITIONS

  • SUPER

  • SUSPEND

  • SWAPS

  • SWITCHES

T

  • TABLE(R)

  • TABLES

  • TABLESPACE

  • TABLE_CHECKSUM

  • TABLE_NAME

  • TEMPORARY

  • TEMPTABLE

  • TERMINATED(R)

  • TEXT

  • THAN

  • THEN(R)

  • TIME

  • TIMESTAMP

  • TIMESTAMPADD

  • TIMESTAMPDIFF

  • TINYBLOB(R)

  • TINYINT(R)

  • TINYTEXT(R)

  • TO(R)

  • TRAILING(R)

  • TRANSACTION

  • TRIGGER(R)

  • TRIGGERS

  • TRUE(R)

  • TRUNCATE

  • TYPE

  • TYPES

U

  • 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)

V

  • VALIDATION;在 5.7.5 中添加(非保留)

  • VALUE

  • VALUES(R)

  • VARBINARY(R)

  • VARCHAR(R)

  • VARCHARACTER(R)

  • VARIABLES

  • VARYING(R)

  • VIEW

  • VIRTUAL(R);在 5.7.6 中添加(保留)

W

  • WAIT

  • WARNINGS

  • WEEK

  • WEIGHT_STRING

  • WHEN(R)

  • WHERE(R)

  • WHILE(R)

  • WITH(R)

  • WITHOUT;在 5.7.5 中添加(非保留)

  • WORK

  • WRAPPER

  • WRITE(R)

X

  • X509

  • XA

  • XID;在 5.7.5 中添加(非保留)

  • XML

  • XOR(R)

Y

  • YEAR

  • YEAR_MONTH(R)

Z

  • ZEROFILL(R)

MySQL 5.7 新关键字和保留字

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

A | C | E | F | G | I | J | M | N | O | P | R | S | V | W | X

A

  • ACCOUNT

  • ALWAYS

C

  • CHANNEL

  • COMPRESSION

E

  • ENCRYPTION

F

  • FILE_BLOCK_SIZE

  • FILTER

  • FOLLOWS

G

  • GENERATED(R)

  • GROUP_REPLICATION

I

  • INSTANCE

J

  • JSON

M

  • MASTER_TLS_VERSION

N

  • NEVER

O

  • OPTIMIZER_COSTS(R)

P

  • PARSE_GCOL_EXPR

  • PRECEDES

R

  • REPLICATE_DO_DB

  • REPLICATE_DO_TABLE

  • REPLICATE_IGNORE_DB

  • REPLICATE_IGNORE_TABLE

  • REPLICATE_REWRITE_DB

  • REPLICATE_WILD_DO_TABLE

  • REPLICATE_WILD_IGNORE_TABLE

  • ROTATE

S

  • STACKED

  • STORED(R)

V

  • VALIDATION

  • VIRTUAL(R)

W

  • WITHOUT

X

  • XID

MySQL 5.7 删除了关键字和保留字

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

  • OLD_PASSWORD