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