Related Documentation Download this Manual
PDF (US Ltr) - 31.4Mb
PDF (A4) - 31.5Mb
PDF (RPM) - 30.0Mb
EPUB - 7.7Mb
HTML Download (TGZ) - 7.5Mb
HTML Download (Zip) - 7.5Mb
HTML Download (RPM) - 6.5Mb
Eclipse Doc Plugin (TGZ) - 8.2Mb
Eclipse Doc Plugin (Zip) - 10.1Mb
Man Pages (TGZ) - 180.8Kb
Man Pages (Zip) - 291.9Kb
Info (Gzip) - 2.8Mb
Info (Zip) - 2.8Mb
Excerpts from this Manual

MySQL 5.6 Reference Manual  /  Language Structure  /  Keywords and Reserved Words

9.3 Keywords and Reserved Words

Keywords are words that have significance in SQL. Certain keywords, such as SELECT, DELETE, or BIGINT, are reserved and require special treatment for use as identifiers such as table and column names. This may also be true for the names of built-in functions.

Nonreserved keywords are permitted as identifiers without quoting. Reserved words are permitted as identifiers if you quote them as described in Section 9.2, “Schema Object Names”:

mysql> CREATE TABLE interval (begin INT, end INT);
ERROR 1064 (42000): You have an error in your SQL syntax ...
near 'interval (begin INT, end INT)'

BEGIN and END are keywords but not reserved, so their use as identifiers does not require quoting. INTERVAL is a reserved keyword and must be quoted to be used as an identifier:

mysql> CREATE TABLE `interval` (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)

Exception: A word that follows a period in a qualified name must be an identifier, so it need not be quoted even if it is reserved:

mysql> CREATE TABLE mydb.interval (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)

Names of built-in functions are permitted as identifiers but may require care to be used as such. For example, COUNT is acceptable as a column name. However, by default, no whitespace is permitted in function invocations between the function name and the following ( character. This requirement enables the parser to distinguish whether the name is used in a function call or in nonfunction context. For further details on recognition of function names, see Section 9.2.4, “Function Name Parsing and Resolution”.

The following table shows the keywords and reserved words in MySQL 5.6, along with changes to individual words from version to version. Reserved keywords are marked with (R). In addition, _FILENAME is reserved.

At some point, you might upgrade to a higher version, so it is 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 reserved 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 uses a yacc parser.

Table 9.2 Keywords and Reserved Words in MySQL 5.6

ACCESSIBLE (R) ACTION ADD (R)
AFTER AGAINST AGGREGATE
ALGORITHM ALL (R) ALTER (R)
ANALYSE[a] ANALYZE (R) AND (R)
ANY AS (R) ASC (R)
ASCII ASENSITIVE (R) AT
AUTHORS[b] AUTOEXTEND_SIZE AUTO_INCREMENT
AVG AVG_ROW_LENGTH BACKUP
BEFORE (R) BEGIN BETWEEN (R)
BIGINT (R) BINARY (R) BINLOG
BIT BLOB (R) BLOCK
BOOL BOOLEAN BOTH (R)
BTREE BY (R) BYTE
CACHE CALL (R) CASCADE (R)
CASCADED CASE (R) CATALOG_NAME
CHAIN CHANGE (R) CHANGED
CHAR (R) CHARACTER (R) CHARSET
CHECK (R) CHECKSUM CIPHER
CLASS_ORIGIN CLIENT CLOSE
COALESCE CODE COLLATE (R)
COLLATION COLUMN (R) COLUMNS
COLUMN_FORMAT[c] COLUMN_NAME COMMENT
COMMIT COMMITTED COMPACT
COMPLETION COMPRESSED CONCURRENT
CONDITION (R) CONNECTION CONSISTENT
CONSTRAINT (R) CONSTRAINT_CATALOG CONSTRAINT_NAME
CONSTRAINT_SCHEMA CONTAINS CONTEXT
CONTINUE (R) CONTRIBUTORS[d] CONVERT (R)
CPU CREATE (R) CROSS (R)
CUBE CURRENT[e] CURRENT_DATE (R)
CURRENT_TIME (R) CURRENT_TIMESTAMP (R) CURRENT_USER (R)
CURSOR (R) CURSOR_NAME DATA
DATABASE (R) DATABASES (R) DATAFILE
DATE DATETIME DAY
DAY_HOUR (R) DAY_MICROSECOND (R) DAY_MINUTE (R)
DAY_SECOND (R) DEALLOCATE DEC (R)
DECIMAL (R) DECLARE (R) DEFAULT (R)
DEFAULT_AUTH[f] DEFINER DELAYED (R)
DELAY_KEY_WRITE DELETE (R) DESC (R)
DESCRIBE (R) DES_KEY_FILE DETERMINISTIC (R)
DIAGNOSTICS[g] DIRECTORY DISABLE
DISCARD DISK DISTINCT (R)
DISTINCTROW (R) DIV (R) DO
DOUBLE (R) DROP (R) DUAL (R)
DUMPFILE DUPLICATE DYNAMIC
EACH (R) ELSE (R) ELSEIF (R)
ENABLE ENCLOSED (R) END
ENDS ENGINE ENGINES
ENUM ERROR ERRORS
ESCAPE ESCAPED (R) EVENT
EVENTS EVERY EXCHANGE
EXECUTE EXISTS (R) EXIT (R)
EXPANSION EXPIRE[h] EXPLAIN (R)
EXPORT[i] EXTENDED EXTENT_SIZE
FALSE (R) FAST FAULTS
FETCH (R) FIELDS FILE
FIRST FIXED FLOAT (R)
FLOAT4 (R) FLOAT8 (R) FLUSH
FOR (R) FORCE (R) FOREIGN (R)
FORMAT[j] FOUND FROM (R)
FULL FULLTEXT (R) FUNCTION
GENERAL[k] GEOMETRY GEOMETRYCOLLECTION
GET[l] (R) GET_FORMAT GLOBAL
GRANT (R) GRANTS GROUP (R)
HANDLER HASH HAVING (R)
HELP HIGH_PRIORITY (R) HOST
HOSTS HOUR HOUR_MICROSECOND (R)
HOUR_MINUTE (R) HOUR_SECOND (R) IDENTIFIED
IF (R) IGNORE (R) IGNORE_SERVER_IDS[m]
IMPORT IN (R) INDEX (R)
INDEXES INFILE (R) INITIAL_SIZE
INNER (R) INOUT (R) INSENSITIVE (R)
INSERT (R) INSERT_METHOD INSTALL
INT (R) INT1 (R) INT2 (R)
INT3 (R) INT4 (R) INT8 (R)
INTEGER (R) INTERVAL (R) INTO (R)
INVOKER IO IO_AFTER_GTIDS[n] (R)
IO_BEFORE_GTIDS[o] (R) IO_THREAD IPC
IS (R) ISOLATION ISSUER
ITERATE (R) JOIN (R) KEY (R)
KEYS (R) KEY_BLOCK_SIZE KILL (R)
LANGUAGE LAST LEADING (R)
LEAVE (R) LEAVES LEFT (R)
LESS LEVEL LIKE (R)
LIMIT (R) LINEAR (R) LINES (R)
LINESTRING LIST LOAD (R)
LOCAL LOCALTIME (R) LOCALTIMESTAMP (R)
LOCK (R) LOCKS LOGFILE
LOGS LONG (R) LONGBLOB (R)
LONGTEXT (R) LOOP (R) LOW_PRIORITY (R)
MASTER MASTER_AUTO_POSITION[p] MASTER_BIND[q] (R)
MASTER_CONNECT_RETRY MASTER_DELAY MASTER_HEARTBEAT_PERIOD[r]
MASTER_HOST MASTER_LOG_FILE MASTER_LOG_POS
MASTER_PASSWORD MASTER_PORT MASTER_RETRY_COUNT[s]
MASTER_SERVER_ID MASTER_SSL MASTER_SSL_CA
MASTER_SSL_CAPATH MASTER_SSL_CERT MASTER_SSL_CIPHER
MASTER_SSL_CRL[t] MASTER_SSL_CRLPATH[u] MASTER_SSL_KEY
MASTER_SSL_VERIFY_SERVER_CERT (R) MASTER_USER MATCH (R)
MAXVALUE (R) MAX_CONNECTIONS_PER_HOUR MAX_QUERIES_PER_HOUR
MAX_ROWS MAX_SIZE MAX_UPDATES_PER_HOUR
MAX_USER_CONNECTIONS MEDIUM MEDIUMBLOB (R)
MEDIUMINT (R) MEDIUMTEXT (R) MEMORY
MERGE MESSAGE_TEXT MICROSECOND
MIDDLEINT (R) MIGRATE MINUTE
MINUTE_MICROSECOND (R) MINUTE_SECOND (R) MIN_ROWS
MOD (R) MODE MODIFIES (R)
MODIFY MONTH MULTILINESTRING
MULTIPOINT MULTIPOLYGON MUTEX
MYSQL_ERRNO NAME NAMES
NATIONAL NATURAL (R) NCHAR
NDB NDBCLUSTER NEW
NEXT NO NODEGROUP
NONE NOT (R) NO_WAIT
NO_WRITE_TO_BINLOG (R) NULL (R) NUMBER[v]
NUMERIC (R) NVARCHAR OFFSET
OLD_PASSWORD ON (R) ONE
ONE_SHOT[w] ONLY[x] OPEN
OPTIMIZE (R) OPTION (R) OPTIONALLY (R)
OPTIONS OR (R) ORDER (R)
OUT (R) OUTER (R) OUTFILE (R)
OWNER PACK_KEYS PAGE
PARSER PARTIAL PARTITION[y] (R)
PARTITIONING PARTITIONS PASSWORD
PHASE PLUGIN PLUGINS
PLUGIN_DIR[z] POINT POLYGON
PORT PRECISION (R) PREPARE
PRESERVE PREV PRIMARY (R)
PRIVILEGES PROCEDURE (R) PROCESSLIST
PROFILE PROFILES PROXY[aa]
PURGE (R) QUARTER QUERY
QUICK RANGE (R) READ (R)
READS (R) READ_ONLY READ_WRITE (R)
REAL (R) REBUILD RECOVER
REDOFILE REDO_BUFFER_SIZE REDUNDANT
REFERENCES (R) REGEXP (R) RELAY
RELAYLOG RELAY_LOG_FILE RELAY_LOG_POS
RELAY_THREAD RELEASE (R) RELOAD
REMOVE RENAME (R) REORGANIZE
REPAIR REPEAT (R) REPEATABLE
REPLACE (R) REPLICATION REQUIRE (R)
RESET RESIGNAL (R) RESTORE
RESTRICT (R) RESUME RETURN (R)
RETURNED_SQLSTATE[ab] RETURNS REVERSE
REVOKE (R) RIGHT (R) RLIKE (R)
ROLLBACK ROLLUP ROUTINE
ROW ROWS ROW_COUNT[ac]
ROW_FORMAT RTREE SAVEPOINT
SCHEDULE SCHEMA (R) SCHEMAS (R)
SCHEMA_NAME SECOND SECOND_MICROSECOND (R)
SECURITY SELECT (R) SENSITIVE (R)
SEPARATOR (R) SERIAL SERIALIZABLE
SERVER SESSION SET (R)
SHARE SHOW (R) SHUTDOWN
SIGNAL (R) SIGNED SIMPLE
SLAVE SLOW[ad] SMALLINT (R)
SNAPSHOT SOCKET SOME
SONAME SOUNDS SOURCE
SPATIAL (R) SPECIFIC (R) SQL (R)
SQLEXCEPTION (R) SQLSTATE (R) SQLWARNING (R)
SQL_AFTER_GTIDS[ae] SQL_AFTER_MTS_GAPS[af] SQL_BEFORE_GTIDS[ag]
SQL_BIG_RESULT (R) SQL_BUFFER_RESULT SQL_CACHE
SQL_CALC_FOUND_ROWS (R) SQL_NO_CACHE SQL_SMALL_RESULT (R)
SQL_THREAD SQL_TSI_DAY SQL_TSI_HOUR
SQL_TSI_MINUTE SQL_TSI_MONTH SQL_TSI_QUARTER
SQL_TSI_SECOND SQL_TSI_WEEK SQL_TSI_YEAR
SSL (R) START STARTING (R)
STARTS STATS_AUTO_RECALC[ah] STATS_PERSISTENT[ai]
STATS_SAMPLE_PAGES[aj] STATUS STOP
STORAGE STRAIGHT_JOIN (R) STRING
SUBCLASS_ORIGIN SUBJECT SUBPARTITION
SUBPARTITIONS SUPER SUSPEND
SWAPS SWITCHES TABLE (R)
TABLES TABLESPACE TABLE_CHECKSUM
TABLE_NAME TEMPORARY TEMPTABLE
TERMINATED (R) TEXT THAN
THEN (R) TIME TIMESTAMP
TIMESTAMPADD TIMESTAMPDIFF TINYBLOB (R)
TINYINT (R) TINYTEXT (R) TO (R)
TRAILING (R) TRANSACTION TRIGGER (R)
TRIGGERS TRUE (R) TRUNCATE
TYPE TYPES UNCOMMITTED
UNDEFINED UNDO (R) UNDOFILE
UNDO_BUFFER_SIZE UNICODE UNINSTALL
UNION (R) UNIQUE (R) UNKNOWN
UNLOCK (R) UNSIGNED (R) UNTIL
UPDATE (R) UPGRADE USAGE (R)
USE (R) USER USER_RESOURCES
USE_FRM USING (R) UTC_DATE (R)
UTC_TIME (R) UTC_TIMESTAMP (R) VALUE
VALUES (R) VARBINARY (R) VARCHAR (R)
VARCHARACTER (R) VARIABLES VARYING (R)
VIEW WAIT WARNINGS
WEEK WEIGHT_STRING WHEN (R)
WHERE (R) WHILE (R) WITH (R)
WORK WRAPPER WRITE (R)
X509 XA XML
XOR (R) YEAR YEAR_MONTH (R)
ZEROFILL (R)    

[a] ANALYSE: added in 5.6.6 (nonreserved)

[b] AUTHORS: removed in 5.6.8

[c] COLUMN_FORMAT: added in 5.6.6 (nonreserved)

[d] CONTRIBUTORS: removed in 5.6.8

[e] CURRENT: added in 5.6.4 (nonreserved)

[f] DEFAULT_AUTH: added in 5.6.4 (nonreserved)

[g] DIAGNOSTICS: added in 5.6.4 (nonreserved)

[h] EXPIRE: added in 5.6.6 (nonreserved)

[i] EXPORT: added in 5.6.6 (nonreserved)

[j] FORMAT: added in 5.6.5 (nonreserved)

[k] GENERAL: became nonreserved in 5.6.1

[l] GET: added in 5.6.4 (reserved)

[m] IGNORE_SERVER_IDS: became nonreserved in 5.6.1

[n] IO_AFTER_GTIDS: added in 5.6.5 (reserved)

[o] IO_BEFORE_GTIDS: added in 5.6.5 (reserved)

[p] MASTER_AUTO_POSITION: added in 5.6.5 (nonreserved)

[q] MASTER_BIND: added in 5.6.1 (reserved)

[r] MASTER_HEARTBEAT_PERIOD: became nonreserved in 5.6.1

[s] MASTER_RETRY_COUNT: added in 5.6.1 (nonreserved)

[t] MASTER_SSL_CRL: added in 5.6.3 (nonreserved)

[u] MASTER_SSL_CRLPATH: added in 5.6.3 (nonreserved)

[v] NUMBER: added in 5.6.4 (nonreserved)

[w] ONE_SHOT: became reserved in 5.6.1; removed in 5.6.5

[x] ONLY: added in 5.6.5 (nonreserved)

[y] PARTITION: became reserved in 5.6.2

[z] PLUGIN_DIR: added in 5.6.4 (nonreserved)

[aa] PROXY: added in 5.6.1 (nonreserved)

[ab] RETURNED_SQLSTATE: added in 5.6.4 (nonreserved)

[ac] ROW_COUNT: added in 5.6.4 (nonreserved)

[ad] SLOW: became nonreserved in 5.6.1

[ae] SQL_AFTER_GTIDS: added in 5.6.5 (reserved); became nonreserved in 5.6.6

[af] SQL_AFTER_MTS_GAPS: added in 5.6.6 (nonreserved)

[ag] SQL_BEFORE_GTIDS: added in 5.6.5 (reserved); became nonreserved in 5.6.6

[ah] STATS_AUTO_RECALC: added in 5.6.6 (nonreserved)

[ai] STATS_PERSISTENT: added in 5.6.6 (nonreserved)

[aj] STATS_SAMPLE_PAGES: added in 5.6.6 (nonreserved)


The following table shows the keywords and reserved words that are new in MySQL 5.6. Reserved keywords are marked with (R).

Table 9.3 New Keywords and Reserved Words in MySQL 5.6 compared to MySQL 5.5

ANALYSE COLUMN_FORMAT CURRENT
DEFAULT_AUTH DIAGNOSTICS EXCHANGE
EXPIRE EXPORT FORMAT
GET (R) IO_AFTER_GTIDS (R) IO_BEFORE_GTIDS (R)
MASTER_AUTO_POSITION MASTER_BIND (R) MASTER_DELAY
MASTER_RETRY_COUNT MASTER_SSL_CRL MASTER_SSL_CRLPATH
NUMBER ONLY PLUGIN_DIR
RETURNED_SQLSTATE REVERSE ROW_COUNT
SQL_AFTER_GTIDS SQL_AFTER_MTS_GAPS SQL_BEFORE_GTIDS
STATS_AUTO_RECALC STATS_PERSISTENT STATS_SAMPLE_PAGES
WEIGHT_STRING    


User Comments
Sign Up Login You must be logged in to post a comment.