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