Это общая проблема, возникающая при попытке создать таблицу с именами
столбцов, использующих принятые в MySQL названия типов данных или функций,
такие как TIMESTAMP
или GROUP
. Иногда это возможно (например, ABS
является
разрешенным именем для столбца), но не допускается пробел между именем
функции и сразу же следующей за ним скобкой '(
' при использовании имен
функций, совпадающих с именами столбцов.
Следующие слова являются зарезервированными в MySQL. Большинство из них не
допускаются в ANSI SQL92 как имена столбцов и/или таблиц (например
GROUP). Некоторые зарезервированы для нужд MySQL и используются (в
настоящее время) синтаксическим анализатором yacc
:
Word | Word | Word |
ADD
|
ALL
|
ALTER
|
ANALYZE
|
AND
|
AS
|
ASC
|
ASENSITIVE
|
BEFORE
|
BETWEEN
|
BIGINT
|
BINARY
|
BLOB
|
BOTH
|
BY
|
CALL
|
CASCADE
|
CASE
|
CHANGE
|
CHAR
|
CHARACTER
|
CHECK
|
COLLATE
|
COLUMN
|
CONDITION
|
CONNECTION
|
CONSTRAINT
|
CONTINUE
|
CONVERT
|
CREATE
|
CROSS
|
CURRENT_DATE
|
CURRENT_TIME
|
CURRENT_TIMESTAMP
|
CURRENT_USER
|
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
|
DUAL
|
EACH
|
ELSE
|
ELSEIF
|
ENCLOSED
|
ESCAPED
|
EXISTS
|
EXIT
|
EXPLAIN
|
FALSE
|
FETCH
|
FLOAT
|
FOR
|
FORCE
|
FOREIGN
|
FROM
|
FULLTEXT
|
GOTO
|
GRANT
|
GROUP
|
HAVING
|
HIGH_PRIORITY
|
HOUR_MICROSECOND
|
HOUR_MINUTE
|
HOUR_SECOND
|
IF
|
IGNORE
|
IN
|
INDEX
|
INFILE
|
INNER
|
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
|
MATCH
|
MEDIUMBLOB
|
MEDIUMINT
|
MEDIUMTEXT
|
MIDDLEINT
|
MINUTE_MICROSECOND
|
MINUTE_SECOND
|
MOD
|
MODIFIES
|
NATURAL
|
NOT
|
NO_WRITE_TO_BINLOG
|
NULL
|
NUMERIC
|
ON
|
OPTIMIZE
|
OPTION
|
OPTIONALLY
|
OR
|
ORDER
|
OUT
|
OUTER
|
OUTFILE
|
PRECISION
|
PRIMARY
|
PROCEDURE
|
PURGE
|
READ
|
READS
|
REAL
|
REFERENCES
|
REGEXP
|
RENAME
|
REPEAT
|
REPLACE
|
REQUIRE
|
RESTRICT
|
RETURN
|
REVOKE
|
RIGHT
|
RLIKE
|
SCHEMA
|
SCHEMAS
|
SECOND_MICROSECOND
|
SELECT
|
SENSITIVE
|
SEPARATOR
|
SET
|
SHOW
|
SMALLINT
|
SONAME
|
SPATIAL
|
SPECIFIC
|
SQL
|
SQLEXCEPTION
|
SQLSTATE
|
SQLWARNING
|
SQL_BIG_RESULT
|
SQL_CALC_FOUND_ROWS
|
SQL_SMALL_RESULT
|
SSL
|
STARTING
|
STRAIGHT_JOIN
|
TABLE
|
TERMINATED
|
THEN
|
TINYBLOB
|
TINYINT
|
TINYTEXT
|
TO
|
TRAILING
|
TRIGGER
|
TRUE
|
UNDO
|
UNION
|
UNIQUE
|
UNLOCK
|
UNSIGNED
|
UPDATE
|
USAGE
|
USE
|
USING
|
UTC_DATE
|
UTC_TIME
|
UTC_TIMESTAMP
|
VALUES
|
VARBINARY
|
VARCHAR
|
VARCHARACTER
|
VARYING
|
WHEN
|
WHERE
|
WHILE
|
WITH
|
WRITE
|
XOR
|
YEAR_MONTH
|
ZEROFILL
|
Следующие символы (из приведенной выше таблицы таблицы) не разрешены в ANSI SQL, но допускаются в MySQL как имена столбцов/таблиц. Это объясняется тем, что некоторые из этих имен являются словами естественного языка и уже использованы многими потребителями.
ACTION
BIT
DATE
ENUM
NO
TEXT
TIME
TIMESTAMP