(mysql.info) reserved-words
Info Catalog
(mysql.info) comments
(mysql.info) language-structure
9.5 Treatment of Reserved Words in MySQL
========================================
A common problem stems from trying to use an identifier such as a table
or column name that is a reserved word such as `SELECT' or the name of
a built-in MySQL data type or function such as `TIMESTAMP' or `GROUP'.
If an identifier is a reserved word, you must quote it as described in
legal-names. Exception: A word that follows a period in a
qualified name must be an identifier, so it is not necessary to quote
it, even if it is a reserved word.
You are permitted to use function names as identifiers. For example,
`ABS' is acceptable as a column name. However, by default, no
whitespace is allowed in function invocations between the function name
and the following ‘`('’ character. This requirement allows a
function call to be distinguished from a reference to a column name.
A side effect of this behavior is that omitting a space in some
contexts causes an identifier to be interpreted as a function name. For
example, this statement is legal:
mysql> CREATE TABLE abs (val INT);
But omitting the space after `abs' causes a syntax error because the
statement then appears to invoke the `ABS()' function:
mysql> CREATE TABLE abs(val INT);
ERROR 1064 (42000) at line 2: You have an error in your SQL
syntax ... near 'abs(val INT)'
If the `IGNORE_SPACE' SQL mode is enabled, the server allows function
invocations to have whitespace between a function name and the
following ‘`('’ character. This causes function names to be treated
as reserved words. As a result, identifiers that are the same as
function names must be quoted as described in legal-names. The
server SQL mode is controlled as described in server-sql-mode.
The words in the following table are explicitly reserved in MySQL 5.0.
At some point, you might update to a higher version, so it's a good
idea to have a look at future reserved words, too. You can find these
in the manuals that cover higher versions of MySQL. Most of the words
in the table are forbidden by standard SQL as column or table names
(for example, `GROUP'). A few are reserved because MySQL needs them and
(currently) uses a `yacc' parser. A reserved word can be used as an
identifier if you quote it.
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 FLOAT4
FLOAT8 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
INT1 INT2 INT3
INT4 INT8 INTEGER
INTERVAL INTO IS
ITERATE JOIN KEY
KEYS KILL LABEL
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
RAID0 READ READS
REAL REFERENCES REGEXP
RELEASE 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
UPGRADE USAGE USE
USING UTC_DATE UTC_TIME
UTC_TIMESTAMP VALUES VARBINARY
VARCHAR VARCHARACTER VARYING
WHEN WHERE WHILE
WITH WRITE X509
XOR YEAR_MONTH ZEROFILL
The following are new reserved words in MySQL 5.0: `ASENSITIVE', `CALL',
`CONDITION', `CONNECTION', `CONTINUE', `CURSOR', `DECLARE',
`DETERMINISTIC', `EACH', `ELSEIF', `EXIT', `FETCH', `GOTO', `INOUT',
`INSENSITIVE', `ITERATE', `LABEL', `LEAVE', `LOOP', `MODIFIES', `OUT',
`READS', `RELEASE', `REPEAT', `RETURN', `SCHEMA', `SCHEMAS',
`SENSITIVE', `SPECIFIC', `SQL', `SQLEXCEPTION', `SQLSTATE',
`SQLWARNING', `TRIGGER', `UNDO', `UPGRADE', `WHILE'.
MySQL allows some keywords to be used as unquoted identifiers because
many people previously used them. Examples are those in the following
list:
* `ACTION'
* `BIT'
* `DATE'
* `ENUM'
* `NO'
* `TEXT'
* `TIME'
* `TIMESTAMP'
Info Catalog
(mysql.info) comments
(mysql.info) language-structure
automatically generated byinfo2html