Это общая проблема, возникающая при попытке создать таблицу с именами столбцов, использующих принятые в MySQL названия типов данных или функций, такие как TIMESTAMP или GROUP. Иногда это возможно (например, ABS является разрешенным именем для столбца), но не допускается пробел между именем функции и сразу же следующей за ним скобкой `(' при использовании имен функций, совпадающих с именами столбцов.
Следующие слова являются зарезервированными в MySQL. Большинство из них не допускаются в ANSI SQL92 как имена столбцов и/или таблиц (например GROUP). Некоторые зарезервированы для нужд MySQL и используются (в настоящее время) синтаксическим анализатором yacc:
Слово | Слово
| Слово |
ADD | ALL | ALTER |
ANALYZE | AND | AS |
ASC | AUTO_INCREMENT | BDB |
BERKELEYDB | BETWEEN | BIGINT |
BINARY | BLOB | BOTH |
BY | CASCADE | CASE |
CHANGE | CHAR | CHARACTER |
COLUMN | COLUMNS | CONSTRAINT |
CREATE | CROSS | CURRENT_DATE |
CURRENT_TIME | CURRENT_TIMESTAMP | DATABASE |
DATABASES | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | DEC | DECIMAL |
DEFAULT | DELAYED | DELETE |
DESC | DESCRIBE | DISTINCT |
DISTINCTROW | DOUBLE | DROP |
ELSE | ENCLOSED | ESCAPED |
EXISTS | EXPLAIN | FIELDS |
FLOAT | FOR | FOREIGN |
FROM | FULLTEXT | FUNCTION |
GRANT | GROUP | HAVING |
HIGH_PRIORITY | HOUR_MINUTE | HOUR_SECOND |
IF | IGNORE | IN |
INDEX | INFILE | INNER |
INNODB | INSERT | INSERT_ID |
INT | INTEGER | INTERVAL |
INTO | IS | JOIN |
KEY | KEYS | KILL |
LAST_INSERT_ID | LEADING | LEFT |
LIKE | LIMIT | LINES |
LOAD | LOCK | LONG |
LONGBLOB | LONGTEXT | LOW_PRIORITY |
MASTER_SERVER_ID | MATCH | MEDIUMBLOB |
MEDIUMINT | MEDIUMTEXT | MIDDLEINT |
MINUTE_SECOND | MRG_MYISAM | NATURAL |
NOT | NULL | NUMERIC |
ON | OPTIMIZE | OPTION |
OPTIONALLY | OR | ORDER |
OUTER | OUTFILE | PARTIAL |
PRECISION | PRIMARY | PRIVILEGES |
PROCEDURE | PURGE | READ |
REAL | REFERENCES | REGEXP |
RENAME | REPLACE | REQUIRE |
RESTRICT | RETURNS | REVOKE |
RIGHT | RLIKE | SELECT |
SET | SHOW | SMALLINT |
SONAME | SQL_AUTO_IS_NULL | SQL_BIG_RESULT |
SQL_BIG_SELECTS | SQL_BIG_TABLES | SQL_BUFFER_RESULT |
SQL_CALC_FOUND_ROWS | SQL_LOG_BIN | SQL_LOG_OFF |
SQL_LOG_UPDATE | SQL_LOW_PRIORITY_UPDATES | SQL_MAX_JOIN_SIZE |
SQL_QUOTE_SHOW_CREATE | SQL_SAFE_UPDATES | SQL_SELECT_LIMIT |
SQL_SLAVE_SKIP_COUNTER | SQL_SMALL_RESULT | SQL_WARNINGS |
SSL | STARTING | STRAIGHT_JOIN |
STRIPED | TABLE | TABLES |
TERMINATED | THEN | TINYBLOB |
TINYINT | TINYTEXT | TO |
TRAILING | UNION | UNIQUE |
UNLOCK | UNSIGNED | UPDATE |
USAGE | USE | USER_RESOURCES |
USING | VALUES | VARBINARY |
VARCHAR | VARYING | WHEN |
WHERE | WITH | WRITE |
YEAR_MONTH | ZEROFILL |
Следующие символы (из приведенной выше таблицы таблицы) не разрешены в ANSI SQL, но допускаются в MySQL как имена столбцов/таблиц. Это объясняется тем, что некоторые из этих имен являются словами естественного языка и уже использованы многими потребителями.
6.1.5 Синтаксис комментариев | Оглавление | 6.2 Типы данных столбцов |