Придирчив'' ли MySQL к зарезервированным словам?
Это общая проблема, возникающая при попытке создать таблицу с именами столбцов, использующих принятые в MySQL названия типов данных или функций, такие как TIMESTAMP или GROUP. Иногда это возможно (например, ABS является разрешенным именем для столбца), но не допускается пробел между именем функции и сразу же следующей за ним скобкой `(' при использовании имен функций, совпадающих с именами столбцов.
Следующие слова являются зарезервированными в MySQL. Большинство из них не допускаются в ANSI SQL92 как имена столбцов и/или таблиц (например GROUP). Некоторые зарезервированы для нужд MySQL и используются (в настоящее время) синтаксическим анализатором yacc:
Word | Word | Word |
ADD | ALL | ALTER |
ANALYZE | AND | AS |
ASC | ASENSITIVE | AUTO_INCREMENT |
BDB | BEFORE | BERKELEYDB |
BETWEEN | BIGINT | BINARY |
BLOB | BOTH | BTREE |
BY | CALL | CASCADE |
CASE | CHANGE | CHAR |
CHARACTER | CHECK | COLLATE |
COLUMN | COLUMNS | CONNECTION |
CONSTRAINT | CREATE | CROSS |
CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP |
CURSOR | DATABASE | DATABASES |
DAY_HOUR | DAY_MINUTE | DAY_SECOND |
DEC | DECIMAL | DECLARE |
DEFAULT | DELAYED | DELETE |
DESC | DESCRIBE | DISTINCT |
DISTINCTROW | DIV | DOUBLE |
DROP | ELSE | ELSEIF |
ENCLOSED | ERRORS | ESCAPED |
EXISTS | EXPLAIN | FALSE |
FIELDS | FLOAT | FOR |
FORCE | FOREIGN | FROM |
FULLTEXT | GRANT | GROUP |
HASH | HAVING | HIGH_PRIORITY |
HOUR_MINUTE | HOUR_SECOND | IF |
IGNORE | IN | INDEX |
INFILE | INNER | INNODB |
INOUT | INSENSITIVE | INSERT |
INT | INTEGER | INTERVAL |
INTO | IS | ITERATE |
JOIN | KEY | KEYS |
KILL | LEADING | LEAVE |
LEFT | LIKE | LIMIT |
LINES | LOAD | LOCALTIME |
LOCALTIMESTAMP | LOCK | LONG |
LONGBLOB | LONGTEXT | LOOP |
LOW_PRIORITY | MASTER_SERVER_ID | MATCH |
MEDIUMBLOB | MEDIUMINT | MEDIUMTEXT |
MIDDLEINT | MINUTE_SECOND | MOD |
MRG_MYISAM | NATURAL | NOT |
NULL | NUMERIC | ON |
OPTIMIZE | OPTION | OPTIONALLY |
OR | ORDER | OUT |
OUTER | OUTFILE | PRECISION |
PRIMARY | PRIVILEGES | PROCEDURE |
PURGE | READ | REAL |
REFERENCES | REGEXP | RENAME |
REPEAT | REPLACE | REQUIRE |
RESTRICT | RETURN |
RETURNS |
REVOKE | RIGHT | RLIKE |
RTREE | SELECT | SENSITIVE |
SEPARATOR | SET | SHOW |
SMALLINT | SOME | SONAME |
SPATIAL | SPECIFIC | SQL_BIG_RESULT |
SQL_CALC_FOUND_ROWS | SQL_SMALL_RESULT | SSL |
STARTING | STRAIGHT_JOIN | STRIPED |
TABLE | TABLES | TERMINATED |
THEN | TINYBLOB | TINYINT |
TINYTEXT | TO | TRAILING |
TRUE | TYPES | UNION |
UNIQUE | UNLOCK | UNSIGNED |
UNTIL | UPDATE | USAGE |
USE | USER_RESOURCES | USING |
VALUES | VARBINARY | VARCHAR |
VARCHARACTER | VARYING | WARNINGS |
WHEN | WHERE | WHILE |
WITH | WRITE | XOR |
YEAR_MONTH | ZEROFILL |
Следующие символы ( из приведенной выше таблицы таблицы) не разрешены в ANSI SQL, но допускаются в MySQL как имена столбцов/таблиц. Это объясняется тем, что некоторые из этих имен являются словами естественного языка и уже использованы многими потребителями.