关键字和保留字
关键字是在SQL中具有重要意义的单词。某些关键字,如SELECT
,DELETE
或BIGINT
,被保留,需要用作标识符,例如表和列名特殊待遇。内置函数的名称也可能如此。
允许使用非保留关键字作为标识符而无需引用。如果您按照“架构对象名称”中的描述引用保留字,则可以将它们用作标识符:
mysql>CREATE TABLE interval (egin 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 ` (egin INT,end INT); Query OK, 0 rows affected (0.01 sec)
例外:限定名称中句点后的单词必须是标识符,因此即使保留该单词也无需加引号:
mysql>CREATE TABLE myd .interval (egin INT,end INT); Query OK, 0 rows affected (0.01 sec)
允许使用内置函数的名称作为标识符,但可能需要谨慎使用。例如,COUNT
可接受作为列名。但是,默认情况下,在函数调用中,函数名称和以下(
字符之间不允许有空格。此要求使解析器能够区分名称是在函数调用中使用还是在非函数上下文中使用。有关识别函数名称的更多详细信息,请参见“函数名称的解析和解析”。
该INFORMATION_SCHEMA.KEYWORDS
表列出了MySQL认为关键字的单词,并指出它们是否保留。请参见“ INFORMATION_SCHEMA关键字表”。
- MySQL 8.0关键字和保留字
- MySQL 8.0新关键字和保留字
- MySQL 8.0删除了关键字和保留字
MySQL 8.0关键字和保留字
以下列表显示了MySQL 8.0中的关键字和保留词,以及各个词在版本之间的更改。保留的关键字标有(R)。另外,_FILENAME
是保留的。
在某个时候,您可能会升级到更高的版本,因此最好参见将来的保留字。您可以在涵盖更高版本的MySQL的手册中找到这些内容。标准SQL禁止使用列表中的大多数保留字作为列名或表名(例如GROUP
)。保留了一些,因为MySQL需要它们并使用yacc解析器。
A | B | C | D | E | F | G | H |我| J | K | L | M | N | O | P |问| R | S | T | U | V | W | X | Y |ž
一种
ACCESSIBLE
(右)ACCOUNT
ACTION
ACTIVE
;在8.0.14中添加(非保留)ADD
(右)ADMIN
;在8.0.12中变为非保留AFTER
AGAINST
AGGREGATE
ALGORITHM
ALL
(右)ALTER
(右)ALWAYS
ANALYSE
;在8.0.1中删除ANALYZE
(右)AND
(右)ANY
ARRAY
;在8.0.17中添加(保留);在8.0.19中变为非保留AS
(右)ASC
(右)ASCII
ASENSITIVE
(右)AT
AUTOEXTEND_SIZE
AUTO_INCREMENT
AVG
AVG_ROW_LENGTH
乙
BACKUP
BEFORE
(右)BEGIN
BETWEEN
(右)BIGINT
(右)BINARY
(右)BINLOG
BIT
BLOB
(右)BLOCK
BOOL
BOOLEAN
BOTH
(右)BTREE
BUCKETS
;在8.0.2中添加(非保留)BY
(右)BYTE
C
CACHE
CALL
(右)CASCADE
(右)CASCADED
CASE
(右)CATALOG_NAME
CHAIN
CHANGE
(右)CHANGED
CHANNEL
CHAR
(右)CHARACTER
(右)CHARSET
CHECK
(右)CHECKSUM
CIPHER
CLASS_ORIGIN
CLIENT
CLONE
;在8.0.3中添加(非保留)CLOSE
COALESCE
CODE
COLLATE
(右)COLLATION
COLUMN
(右)COLUMNS
COLUMN_FORMAT
COLUMN_NAME
COMMENT
COMMIT
COMMITTED
COMPACT
COMPLETION
COMPONENT
COMPRESSED
COMPRESSION
CONCURRENT
CONDITION
(右)CONNECTION
CONSISTENT
CONSTRAINT
(右)CONSTRAINT_CATALOG
CONSTRAINT_NAME
CONSTRAINT_SCHEMA
CONTAINS
CONTEXT
CONTINUE
(右)CONVERT
(右)CPU
CREATE
(右)CROSS
(右)CUBE
(R);在8.0.1中保留CUME_DIST
(R);在8.0.2中添加(保留)CURRENT
CURRENT_DATE
(右)CURRENT_TIME
(右)CURRENT_TIMESTAMP
(右)CURRENT_USER
(右)CURSOR
(右)CURSOR_NAME
d
DATA
DATABASE
(右)DATABASES
(右)DATAFILE
DATE
DATETIME
DAY
DAY_HOUR
(右)DAY_MICROSECOND
(右)DAY_MINUTE
(右)DAY_SECOND
(右)DEALLOCATE
DEC
(右)DECIMAL
(右)DECLARE
(右)DEFAULT
(右)DEFAULT_AUTH
DEFINER
DEFINITION
;在8.0.4中添加(非保留)DELAYED
(右)DELAY_KEY_WRITE
DELETE
(右)DENSE_RANK
(R);在8.0.2中添加(保留)DESC
(右)DESCRIBE
(右)DESCRIPTION
;在8.0.4中添加(非保留)DES_KEY_FILE
;在8.0.3中删除DETERMINISTIC
(右)DIAGNOSTICS
DIRECTORY
DISABLE
DISCARD
DISK
DISTINCT
(右)DISTINCTROW
(右)DIV
(右)DO
DOUBLE
(右)DROP
(右)DUAL
(右)DUMPFILE
DUPLICATE
DYNAMIC
Ë
EACH
(右)ELSE
(右)ELSEIF
(右)EMPTY
(R);在8.0.4中添加(保留)ENABLE
ENCLOSED
(右)ENCRYPTION
END
ENDS
ENFORCED
;在8.0.16中添加(非保留)ENGINE
ENGINES
ENUM
ERROR
ERRORS
ESCAPE
ESCAPED
(右)EVENT
EVENTS
EVERY
EXCEPT
(右)EXCHANGE
EXCLUDE
;在8.0.2中添加(非保留)EXECUTE
EXISTS
(右)EXIT
(右)EXPANSION
EXPIRE
EXPLAIN
(右)EXPORT
EXTENDED
EXTENT_SIZE
F
FAILED_LOGIN_ATTEMPTS
;在8.0.19中添加(非保留)FALSE
(右)FAST
FAULTS
FETCH
(右)FIELDS
FILE
FILE_BLOCK_SIZE
FILTER
FIRST
FIRST_VALUE
(R);在8.0.2中添加(保留)FIXED
FLOAT
(右)FLOAT4
(右)FLOAT8
(右)FLUSH
FOLLOWING
;在8.0.2中添加(非保留)FOLLOWS
FOR
(右)FORCE
(右)FOREIGN
(右)FORMAT
FOUND
FROM
(右)FULL
FULLTEXT
(右)FUNCTION
(R);在8.0.1中保留
G
GENERAL
GENERATED
(右)GEOMCOLLECTION
;在8.0.11中添加(非保留)GEOMETRY
GEOMETRYCOLLECTION
GET
(右)GET_FORMAT
GET_MASTER_PUBLIC_KEY
;在8.0.4中添加(保留);在8.0.11中成为非保留GLOBAL
GRANT
(右)GRANTS
GROUP
(右)GROUPING
(R);在8.0.1中添加(保留)GROUPS
(R);在8.0.2中添加(保留)GROUP_REPLICATION
H
HANDLER
HASH
HAVING
(右)HELP
HIGH_PRIORITY
(右)HISTOGRAM
;在8.0.2中添加(非保留)HISTORY
;在8.0.3中添加(非保留)HOST
HOSTS
HOUR
HOUR_MICROSECOND
(右)HOUR_MINUTE
(右)HOUR_SECOND
(右)
一世
IDENTIFIED
IF
(右)IGNORE
(右)IGNORE_SERVER_IDS
IMPORT
IN
(右)INACTIVE
;在8.0.14中添加(非保留)INDEX
(右)INDEXES
INFILE
(右)INITIAL_SIZE
INNER
(右)INOUT
(右)INSENSITIVE
(右)INSERT
(右)INSERT_METHOD
INSTALL
INSTANCE
INT
(右)INT1
(右)INT2
(右)INT3
(右)INT4
(右)INT8
(右)INTEGER
(右)INTERVAL
(右)INTO
(右)INVISIBLE
INVOKER
IO
IO_AFTER_GTIDS
(右)IO_BEFORE_GTIDS
(右)IO_THREAD
IPC
IS
(右)ISOLATION
ISSUER
ITERATE
(右)
Ĵ
JOIN
(右)JSON
JSON_TABLE
(R);在8.0.4中添加(保留)JSON_VALUE
;在8.0.21中添加(非保留)
ķ
KEY
(右)KEYS
(右)KEY_BLOCK_SIZE
KILL
(右)
大号
LAG
(R);在8.0.2中添加(保留)LANGUAGE
LAST
LAST_VALUE
(R);在8.0.2中添加(保留)LATERAL
(R);在8.0.14中添加(保留)LEAD
(R);在8.0.2中添加(保留)LEADING
(右)LEAVE
(右)LEAVES
LEFT
(右)LESS
LEVEL
LIKE
(右)LIMIT
(右)LINEAR
(右)LINES
(右)LINESTRING
LIST
LOAD
(右)LOCAL
LOCALTIME
(右)LOCALTIMESTAMP
(右)LOCK
(右)LOCKED
;在8.0.1中添加(非保留)LOCKS
LOGFILE
LOGS
LONG
(右)LONGBLOB
(右)LONGTEXT
(右)LOOP
(右)LOW_PRIORITY
(右)
中号
MASTER
MASTER_AUTO_POSITION
MASTER_BIND
(右)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
(右)MASTER_TLS_CIPHERSUITES
;在8.0.19中添加(非保留)MASTER_TLS_VERSION
MASTER_USER
MASTER_ZSTD_COMPRESSION_LEVEL
;在8.0.18中添加(非保留)MATCH
(右)MAXVALUE
(右)MAX_CONNECTIONS_PER_HOUR
MAX_QUERIES_PER_HOUR
MAX_ROWS
MAX_SIZE
MAX_UPDATES_PER_HOUR
MAX_USER_CONNECTIONS
MEDIUM
MEDIUMBLOB
(右)MEDIUMINT
(右)MEDIUMTEXT
(右)MEMBER
;在8.0.17中添加(保留);在8.0.19中变为非保留MEMORY
MERGE
MESSAGE_TEXT
MICROSECOND
MIDDLEINT
(右)MIGRATE
MINUTE
MINUTE_MICROSECOND
(右)MINUTE_SECOND
(右)MIN_ROWS
MOD
(右)MODE
MODIFIES
(右)MODIFY
MONTH
MULTILINESTRING
MULTIPOINT
MULTIPOLYGON
MUTEX
MYSQL_ERRNO
ñ
NAME
NAMES
NATIONAL
NATURAL
(右)NCHAR
NDB
NDBCLUSTER
NESTED
;在8.0.4中添加(非保留)NETWORK_NAMESPACE
;在8.0.16中添加(非保留)NEVER
NEW
NEXT
NO
NODEGROUP
NONE
NOT
(右)NOWAIT
;在8.0.1中添加(非保留)NO_WAIT
NO_WRITE_TO_BINLOG
(右)NTH_VALUE
(R);在8.0.2中添加(保留)NTILE
(R);在8.0.2中添加(保留)NULL
(右)NULLS
;在8.0.2中添加(非保留)NUMBER
NUMERIC
(右)NVARCHAR
Ø
OF
(R);在8.0.1中添加(保留)OFF
;在8.0.20中添加(非保留)OFFSET
OJ
;在8.0.16中添加(非保留)OLD
;在8.0.14中添加(非保留)ON
(右)ONE
ONLY
OPEN
OPTIMIZE
(右)OPTIMIZER_COSTS
(右)OPTION
(右)OPTIONAL
;在8.0.13中添加(非保留)OPTIONALLY
(右)OPTIONS
OR
(右)ORDER
(右)ORDINALITY
;在8.0.4中添加(非保留)ORGANIZATION
;在8.0.4中添加(非保留)OTHERS
;在8.0.2中添加(非保留)OUT
(右)OUTER
(右)OUTFILE
(右)OVER
(R);在8.0.2中添加(保留)OWNER
P
PACK_KEYS
PAGE
PARSER
PARTIAL
PARTITION
(右)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
(右)PREPARE
PRESERVE
PREV
PRIMARY
(右)PRIVILEGES
PRIVILEGE_CHECKS_USER
;在8.0.18中添加(非保留)PROCEDURE
(右)PROCESS
;在8.0.11中添加(非保留)PROCESSLIST
PROFILE
PROFILES
PROXY
PURGE
(右)
问
QUARTER
QUERY
QUICK
[R
RANDOM
;在8.0.18中添加(非保留)RANGE
(右)RANK
(R);在8.0.2中添加(保留)READ
(右)READS
(右)READ_ONLY
READ_WRITE
(右)REAL
(右)REBUILD
RECOVER
RECURSIVE
(R);在8.0.1中添加(保留)REDOFILE
;在8.0.3中删除REDO_BUFFER_SIZE
REDUNDANT
REFERENCE
;在8.0.4中添加(非保留)REFERENCES
(右)REGEXP
(右)RELAY
RELAYLOG
RELAY_LOG_FILE
RELAY_LOG_POS
RELAY_THREAD
RELEASE
(右)RELOAD
REMOTE
;在8.0.3中添加(非保留);在8.0.14中删除REMOVE
RENAME
(右)REORGANIZE
REPAIR
REPEAT
(右)REPEATABLE
REPLACE
(右)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
(右)REQUIRE_ROW_FORMAT
;在8.0.19中添加(非保留)RESET
RESIGNAL
(右)RESOURCE
;在8.0.3中添加(非保留)RESPECT
;在8.0.2中添加(非保留)RESTART
;在8.0.4中添加(非保留)RESTORE
RESTRICT
(右)RESUME
RETAIN
;在8.0.14中添加(非保留)RETURN
(右)RETURNED_SQLSTATE
RETURNING
;在8.0.21中添加(非保留)RETURNS
REUSE
;在8.0.3中添加(非保留)REVERSE
REVOKE
(右)RIGHT
(右)RLIKE
(右)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
(右)SCHEMAS
(右)SCHEMA_NAME
SECOND
SECONDARY
;在8.0.16中添加(非保留)SECONDARY_ENGINE
;在8.0.13中添加(非保留)SECONDARY_LOAD
;在8.0.13中添加(非保留)SECONDARY_UNLOAD
;在8.0.13中添加(非保留)SECOND_MICROSECOND
(右)SECURITY
SELECT
(右)SENSITIVE
(右)SEPARATOR
(右)SERIAL
SERIALIZABLE
SERVER
SESSION
SET
(右)SHARE
SHOW
(右)SHUTDOWN
SIGNAL
(右)SIGNED
SIMPLE
SKIP
;在8.0.1中添加(非保留)SLAVE
SLOW
SMALLINT
(右)SNAPSHOT
SOCKET
SOME
SONAME
SOUNDS
SOURCE
SPATIAL
(右)SPECIFIC
(右)SQL
(右)SQLEXCEPTION
(右)SQLSTATE
(右)SQLWARNING
(右)SQL_AFTER_GTIDS
SQL_AFTER_MTS_GAPS
SQL_BEFORE_GTIDS
SQL_BIG_RESULT
(右)SQL_BUFFER_RESULT
SQL_CACHE
;在8.0.3中删除SQL_CALC_FOUND_ROWS
(右)SQL_NO_CACHE
SQL_SMALL_RESULT
(右)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
(右)STACKED
START
STARTING
(右)STARTS
STATS_AUTO_RECALC
STATS_PERSISTENT
STATS_SAMPLE_PAGES
STATUS
STOP
STORAGE
STORED
(右)STRAIGHT_JOIN
(右)STREAM
;在8.0.20中添加(非保留)STRING
SUBCLASS_ORIGIN
SUBJECT
SUBPARTITION
SUBPARTITIONS
SUPER
SUSPEND
SWAPS
SWITCHES
SYSTEM
(R);在8.0.3中添加(保留)
Ť
TABLE
(右)TABLES
TABLESPACE
TABLE_CHECKSUM
TABLE_NAME
TEMPORARY
TEMPTABLE
TERMINATED
(右)TEXT
THAN
THEN
(右)THREAD_PRIORITY
;在8.0.3中添加(非保留)TIES
;在8.0.2中添加(非保留)TIME
TIMESTAMP
TIMESTAMPADD
TIMESTAMPDIFF
TINYBLOB
(右)TINYINT
(右)TINYTEXT
(右)TO
(右)TRAILING
(右)TRANSACTION
TRIGGER
(右)TRIGGERS
TRUE
(右)TRUNCATE
TYPE
TYPES
ü
UNBOUNDED
;在8.0.2中添加(非保留)UNCOMMITTED
UNDEFINED
UNDO
(右)UNDOFILE
UNDO_BUFFER_SIZE
UNICODE
UNINSTALL
UNION
(右)UNIQUE
(右)UNKNOWN
UNLOCK
(右)UNSIGNED
(右)UNTIL
UPDATE
(右)UPGRADE
USAGE
(右)USE
(右)USER
USER_RESOURCES
USE_FRM
USING
(右)UTC_DATE
(右)UTC_TIME
(右)UTC_TIMESTAMP
(右)
V
VALIDATION
VALUE
VALUES
(右)VARBINARY
(右)VARCHAR
(右)VARCHARACTER
(右)VARIABLES
VARYING
(右)VCPU
;在8.0.3中添加(非保留)VIEW
VIRTUAL
(右)VISIBLE
w ^
WAIT
WARNINGS
WEEK
WEIGHT_STRING
WHEN
(右)WHERE
(右)WHILE
(右)WINDOW
(R);在8.0.2中添加(保留)WITH
(右)WITHOUT
WORK
WRAPPER
WRITE
(右)
X
X509
XA
XID
XML
XOR
(右)
ÿ
YEAR
YEAR_MONTH
(右)
ž
ZEROFILL
(右)
MySQL 8.0新关键字和保留字
下表显示了与MySQL 5.7相比在MySQL 8.0中添加的关键字和保留字。保留的关键字标有(R)。
A | B | C | D | E | F | G | H |我| J | L | M | N | O | P | R | S | T | U | V | w ^
一种
ACTIVE
ADMIN
ARRAY
乙
BUCKETS
C
CLONE
COMPONENT
CUME_DIST
(右)
d
DEFINITION
DENSE_RANK
(右)DESCRIPTION
Ë
EMPTY
(右)ENFORCED
EXCEPT
(右)EXCLUDE
F
FAILED_LOGIN_ATTEMPTS
FIRST_VALUE
(右)FOLLOWING
G
GEOMCOLLECTION
GET_MASTER_PUBLIC_KEY
GROUPING
(右)GROUPS
(右)
H
HISTOGRAM
HISTORY
一世
INACTIVE
INVISIBLE
Ĵ
JSON_TABLE
(右)JSON_VALUE
大号
LAG
(右)LAST_VALUE
(右)LATERAL
(右)LEAD
(右)LOCKED
中号
MASTER_COMPRESSION_ALGORITHMS
MASTER_PUBLIC_KEY_PATH
MASTER_TLS_CIPHERSUITES
MASTER_ZSTD_COMPRESSION_LEVEL
MEMBER
ñ
NESTED
NETWORK_NAMESPACE
NOWAIT
NTH_VALUE
(右)NTILE
(右)NULLS
Ø
OF
(右)OFF
OJ
OLD
OPTIONAL
ORDINALITY
ORGANIZATION
OTHERS
OVER
(右)
P
PASSWORD_LOCK_TIME
PATH
PERCENT_RANK
(右)PERSIST
PERSIST_ONLY
PRECEDING
PRIVILEGE_CHECKS_USER
PROCESS
[R
RANDOM
RANK
(右)RECURSIVE
(右)REFERENCE
REQUIRE_ROW_FORMAT
RESOURCE
RESPECT
RESTART
RETAIN
RETURNING
REUSE
ROLE
ROW_NUMBER
(右)
小号
SECONDARY
SECONDARY_ENGINE
SECONDARY_LOAD
SECONDARY_UNLOAD
SKIP
SRID
STREAM
SYSTEM
(右)
Ť
THREAD_PRIORITY
TIES
ü
UNBOUNDED
V
VCPU
VISIBLE
w ^
WINDOW
(右)
MySQL 8.0删除了关键字和保留字
下表显示了与MySQL 5.7相比在MySQL 8.0中删除的关键字和保留词。保留的关键字标有(R)。
ANALYSE
DES_KEY_FILE
PARSE_GCOL_EXPR
REDOFILE