Поиск
Трактовка зарезервированных слов MySQL
Общая проблема возникает при попытке использования идентификатора, такого как имя таблицы или столбца, совпадающего с именем встроенного в MySQL типа данных или именем функции, вроде TIMESTAMP или GROUP. Это делать разрешается (например, ABS допускается в качестве имени столбца). Однако по умолчанию не допускается наличие пробелов в вызове функции между именем функции и последующим символом ' ('• Это требование позволяет отличить вызов функции от ссылки на имя столбца.
Побочный эффект такого поведения заключается в том, что пропущенный пробел в некоторых контекстах заставляет идентификатор интерпретироваться как имя функции. Например, приведенный ниже оператор корректен:
Но если пропустить пробел после abs, возникнет синтаксическая ошибка, поскольку анализатор воспринимает это как вызов функции ABS (): mysql CREATE TABLE abs(val INT);
Если SQL-режим сервера включает значение IGNORE_SPACE, то в вызове функции разрешается оставлять пробел между ее именем и последующим символом ' ('. Это заставляет анализатор трактовать имена функций как зарезервированные слова. В результате идентификаторы, совпадающие с именами функций, должны быть взяты в кавычки, как описано в разделе Имена баз данных, таблиц, индексов, столбцов и псевдонимов
Слова из представленной ниже таблицы явно зарезервированы в MySQL. Большинство из них запрещены стандартом SQL для применения в качестве имен столбцов и/или таблиц (например, GROUP). Некоторые слова зарезервированы потому, что MySQL нуждается в них и в настоящее время использует анализатор уасс. Зарезервированные слова можно использовать в качестве идентификаторов, помещая их в кавычки.
| ADD | ALL | ALTER |
| ANALYZE | AND | AS |
| ASC | ASENSITIVE | AUTO INCREMENT |
| BDB | BEFORE | BERKELEYDB |
| BETWEEN | BIGINT | BINARY |
| BLOB | BOTH | BY |
| CALL | CASCADE | CASE |
| CHANGE | CHAR | CHARACTER |
| CHECK | COLLATE | COLUMN |
| COLUMNS | CONDITION | CONNECTION |
| CONSTRAINT | CONTINUE | CREATE |
| CROSS | CURRENT_DATE | CURRENT TIME |
| CURRENT_TIMESTAMP | 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 | ELSE | ELSEIF |
| ENCLOSED | ESCAPED | EXISTS |
| EXIT | EXPLAIN | FALSE |
| FETCH | FIELDS | FLOAT |
| FOR | FORCE | FOREIGN |
| FOUND | FRAC SECOND | FROM |
| FULLTEXT | GRANT | GROUP |
| HAVING | HIGH PRIORITY | HOUR MICROSECOND |
| HOUR_MINUTE | HOUR SECOND | IF |
| IGNORE | IN | INDEX |
| INFILE | INNER | INNODB |
| INOUT | INSENSITIVE | INSERT |
| INT | INTEGER | INTERVAL |
| INTO | IO_THREAD | IS |
| ITERATE | JOIN | KEY |
| KEYS | KILL | LEADING |
Следующие ключевые слова разрешены в MySQL для использования в качестве имен таблиц и столбцов. Это связано с тем, что они представляют собой очень естественные слова и большинство людей применяют их.
LEAVE
LIMIT
LOCALTIME
LONG
LOOP
MATCH
MEDIUMTEXT
MINUTE_SECOND
NOT
NUMERIC
OPTION
ORDER
OUTFILE
PRIVILEGES
READ
REGEXP
REPLACE
RETURN
RLIKE
SENSITIVE
SHOW
SONAME
SQL
SQLWARNING
SQL_SMALL_RESULT
SQL_TSI_HOUR
SQL_TSI_QUARTER
SQL_TSI_YEAR
STRAIGHT_JOIN
TABLES
TIMESTAMPADD
TINYINT
TRAILING
UNION
UNSIGNED
USE
UTC_DATE
VALUES
VARCHARACTER
WHERE
WRITE
ZEROFILL
LEFT
LINES
LOCALTMESTAMP
LONGBLOB
LOW_PRIORITY
MEDIUMBLOB
MIDDLEINT
MOD
NO_WRITE_TO_BINLOG
ON
OPTIONALLY
OUT
PRECISION
PROCEDURE
REAL
RENAME
REQUIRE
REVOKE
SECOND_MICROSECOND
SEPARATOR
SMALLINT
SPATIAL
SQLEXCEPTION
SQL_BIG_RESULT
SQL_TSI_DAY
SQL_TSI_MINUTE
SQL_TSI_SECOND
SSL
STRIPED
TERMINATED
TIMESTAMPDIFF
Т1КУТЕХГ
TRUE
UNIQUE
UPDATE
USER_RESOURCES
UTC_TIME
VARBINARY
VARYING
WHILE
XOR
LIKE
LOAD
LOCK
LONGTEXT
MASTER_SERVER_ID
MEDIUMINT
MINUTE_MICROSECOND
NATURAL
NULL
OPTIMIZE
OR
OUTER
PRIMARY
PURGE
REFERENCES
REPEAT
RESTRICT
RIGHT
SELECT
SET
SOME
SPECIFIC
SQLSTATE
SQL_CALC_FOUND_ROWS
SQL_TSI_FRAC_SECOND
SQL_TSI_MONTH
SQL_TSI_WEEK
STARTING
TABLE
THEN
TINYBLOB
TO
UNDO
UNLOCK
USAGE
USING
UTC_TIMESTAMP
VARCHAR
WHEN
WITH
YEAR MONTH
ACTION
BIT
DATE
ENUM NO
TEXT
TIME TIMESTAMP