«Придирчив» ли MySQL к зарезервированным словам?


Это общая проблема, возникающая при попытке создать таблицу с именами столбцов, использующих принятые в MySQL названия типов данных или функций, такие как TIMESTAMP или GROUP. Иногда это возможно (например, ABS является разрешенным именем для столбца), но не допускается пробел между именем функции и сразу же следующей за ним скобкой ( при использовании имен функций, совпадающих с именами столбцов.

Следующие слова являются зарезервированными в MySQL. Большинство из них не допускаются в ANSI SQL92 как имена столбцов и/или таблиц (например GROUP). Некоторые зарезервированы для нужд MySQL и используются (в настоящее время) синтаксическим анализатором yacc:

ADD ALL ALTER
ANALYZE AND AS
ASC BEFORE BETWEEN
BIGINT BINARY BLOB
BOTH BY CASCADE
CASE CHANGE CHAR
CHARACTER CHECK COLLATE
COLUMN COLUMNS CONSTRAINT
CONVERT CREATE CROSS
CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP
CURRENT_USER DATABASE DATABASES
DAY_HOUR DAY_MICROSECOND DAY_MINUTE
DAY_SECOND DEC DECIMAL
DEFAULT DELAYED DELETE
DESC DESCRIBE DISTINCT
DISTINCTROW DIV DOUBLE
DROP DUAL ELSE
ENCLOSED ESCAPED EXISTS
EXPLAIN FALSE FIELDS
FLOAT FLOAT4 FLOAT8
FOR FORCE FOREIGN
FROM FULLTEXT GRANT
GROUP HAVING HIGH_PRIORITY
HOUR_MICROSECOND HOUR_MINUTE HOUR_SECOND
IF IGNORE IN
INDEX INFILE INNER
INSERT INT INT1
INT2 INT3 INT4
INT8 INTEGER INTERVAL
INTO IS JOIN
KEY KEYS KILL
LEADING LEFT LIKE
LIMIT LINES LOAD
LOCALTIME LOCALTIMESTAMP LOCK
LONG LONGBLOB LONGTEXT
LOW_PRIORITY MATCH MEDIUMBLOB
MEDIUMINT MEDIUMTEXT MIDDLEINT
MINUTE_MICROSECOND MINUTE_SECOND MOD
NATURAL NOT NO_WRITE_TO_BINLOG
NULL NUMERIC ON
OPTIMIZE OPTION OPTIONALLY
OR ORDER OUTER
OUTFILE PRECISION PRIMARY
PRIVILEGES PROCEDURE PURGE
READ REAL REFERENCES
REGEXP RENAME REPLACE
REQUIRE RESTRICT REVOKE
RIGHT RLIKE SECOND_MICROSECOND
SELECT SEPARATOR SET
SHOW SMALLINT SONAME
SPATIAL SQL_BIG_RESULT SQL_CALC_FOUND_ROWS
SQL_SMALL_RESULT SSL STARTING
STRAIGHT_JOIN TABLE TABLES
TERMINATED THEN TINYBLOB
TINYINT TINYTEXT TO
TRAILING TRUE UNION
UNIQUE UNLOCK UNSIGNED
UPDATE USAGE USE
USING UTC_DATE UTC_TIME
UTC_TIMESTAMP VALUES VARBINARY
VARCHAR VARCHARACTER VARYING
WHEN WHERE WITH
WRITE XOR YEAR_MONTH
ZEROFILL

Следующие слова являются новыми зарезервированными словами в MySQL 4.0:

CHECK FORCE LOCALTIME
LOCALTIMESTAMP REQUIRE SQL_CALC_FOUND_ROWS
SSL XOR

Следующие символы (из приведенной выше таблицы таблицы) не разрешены в ANSI SQL, но допускаются в MySQL как имена столбцов/таблиц. Это объясняется тем, что некоторые из этих имен являются словами естественного языка и уже использованы многими потребителями.

  • ACTION

  • BIT

  • DATE

  • ENUM

  • NO

  • TEXT

  • TIME

  • TIMESTAMP

Навигация