Придирчив'' ли 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 как имена столбцов/таблиц. Это объясняется тем, что некоторые из этих имен являются словами естественного языка и уже использованы многими потребителями.