Spec-Zone .ru
спецификации, руководства, описания, API

9.3. Зарезервированные слова

Определенные слова такой как SELECT, DELETE, или BIGINT резервируются и требуют специального режима для использования в качестве идентификаторов, таких как имена таблиц и имена столбцов. Это может также быть истиной для имен встроенных функций.

Зарезервированные слова разрешаются как идентификаторы, если Вы заключаете им в кавычки как описано в Разделе 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)'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 является приемлемым как имя столбца. Однако, по умолчанию, никакой пробел не разрешается в вызовах функции между именем функции и следующим"("символ. Это требование позволяет синтаксическому анализатору различить, используется ли имя в вызове функции или в нефункциональном контексте. Для дальнейшей детали о распознавании имен функций см. Раздел 9.2.4, "Парсинг имени функции и Разрешение".

Слова в следующей таблице явно резервируются в MySQL 5.7. Кроме того, _FILENAME резервируется. В некоторый момент Вы могли бы обновить до более высокой версии, таким образом, это - хорошая идея взглянуть на будущие зарезервированные слова, также. Можно найти их в руководствах, которые касаются более высоких версий MySQL. Большинство слов в таблице запрещается стандартным SQL как имена столбцов или имена таблиц (например, GROUP). Некоторые резервируются, потому что MySQL нуждается в них и использует yacc синтаксический анализатор. Зарезервированное слово может использоваться в качестве идентификатора, если Вы заключаете его в кавычки.

Для более подробного списка зарезервированных слов, включая различия между версиями, см. Зарезервированные слова в MySQL 5.7.

Таблица 9.2. Зарезервированные слова в MySQL 5.7.2

ACCESSIBLE ADD ALL
ALTER ANALYZE AND
AS ASC ASENSITIVE
BEFORE BETWEEN BIGINT
BINARY BLOB BOTH
BY CALL CASCADE
CASE CHANGE CHAR
CHARACTER CHECK COLLATE
COLUMN CONDITION CONSTRAINT
CONTINUE CONVERT CREATE
CROSS CURRENT_DATE CURRENT_TIME
CURRENT_TIMESTAMP CURRENT_USER CURSOR
DATABASE DATABASES DAY_HOUR
DAY_MICROSECOND DAY_MINUTE DAY_SECOND
DEC DECIMAL DECLARE
DEFAULT DELAYED DELETE
DESC DESCRIBE DETERMINISTIC
DISTINCT DISTINCTROW DIV
DOUBLE DROP DUAL
EACH ELSE ELSEIF
ENCLOSED ESCAPED EXISTS
EXIT EXPLAIN FALSE
FETCH FLOAT FLOAT4
FLOAT8 FOR FORCE
FOREIGN FROM FULLTEXT
GET GRANT GROUP
HAVING HIGH_PRIORITY HOUR_MICROSECOND
HOUR_MINUTE HOUR_SECOND IF
IGNORE IN INDEX
INFILE INNER INOUT
INSENSITIVE INSERT INT
INT1 INT2 INT3
INT4 INT8 INTEGER
INTERVAL INTO IO_AFTER_GTIDS
IO_BEFORE_GTIDS IS ITERATE
JOIN KEY KEYS
KILL LEADING LEAVE
LEFT LIKE LIMIT
LINEAR LINES LOAD
LOCALTIME LOCALTIMESTAMP LOCK
LONG LONGBLOB LONGTEXT
LOOP LOW_PRIORITY MASTER_BIND
MASTER_SSL_VERIFY_SERVER_CERT MATCH MAXVALUE
MEDIUMBLOB MEDIUMINT MEDIUMTEXT
MIDDLEINT MINUTE_MICROSECOND MINUTE_SECOND
MOD MODIFIES NATURAL
NONBLOCKING NOT NO_WRITE_TO_BINLOG
NULL NUMERIC ON
OPTIMIZE OPTION OPTIONALLY
OR ORDER OUT
OUTER OUTFILE PARTITION
PRECISION PRIMARY PROCEDURE
PURGE RANGE READ
READS READ_WRITE REAL
REFERENCES REGEXP RELEASE
RENAME REPEAT REPLACE
REQUIRE RESIGNAL RESTRICT
RETURN REVOKE RIGHT
RLIKE SCHEMA SCHEMAS
SECOND_MICROSECOND SELECT SENSITIVE
SEPARATOR SET SHOW
SIGNAL SMALLINT SPATIAL
SPECIFIC SQL SQLEXCEPTION
SQLSTATE SQLWARNING SQL_BIG_RESULT
SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT SSL
STARTING STRAIGHT_JOIN TABLE
TERMINATED THEN TINYBLOB
TINYINT TINYTEXT TO
TRAILING TRIGGER TRUE
UNDO UNION UNIQUE
UNLOCK UNSIGNED UPDATE
USAGE USE USING
UTC_DATE UTC_TIME UTC_TIMESTAMP
VALUES VARBINARY VARCHAR
VARCHARACTER VARYING WHEN
WHERE WHILE WITH
WRITE XOR YEAR_MONTH
ZEROFILL

Таблица 9.3. Новые Зарезервированные слова в MySQL 5.7

NONBLOCKING

MySQL разрешает некоторым ключевым словам использоваться в качестве закрывших кавычки идентификаторов потому что много людей, ранее используемых их. Примеры - те в следующем списке: