DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(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