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.5, “Function Name Parsing and Resolution”.
The following list shows the keywords and reserved words in
MySQL 5.7, 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 list 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.
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
ACCESSIBLE(R)ACCOUNT; added in 5.7.6 (nonreserved)ACTIONADD(R)AFTERAGAINSTAGGREGATEALGORITHMALL(R)ALTER(R)ALWAYS; added in 5.7.6 (nonreserved)ANALYSEANALYZE(R)AND(R)ANYAS(R)ASC(R)ASCIIASENSITIVE(R)ATAUTOEXTEND_SIZEAUTO_INCREMENTAVGAVG_ROW_LENGTH
BACKUPBEFORE(R)BEGINBETWEEN(R)BIGINT(R)BINARY(R)BINLOGBITBLOB(R)BLOCKBOOLBOOLEANBOTH(R)BTREEBY(R)BYTE
CACHECALL(R)CASCADE(R)CASCADEDCASE(R)CATALOG_NAMECHAINCHANGE(R)CHANGEDCHANNEL; added in 5.7.6 (nonreserved)CHAR(R)CHARACTER(R)CHARSETCHECK(R)CHECKSUMCIPHERCLASS_ORIGINCLIENTCLOSECOALESCECODECOLLATE(R)COLLATIONCOLUMN(R)COLUMNSCOLUMN_FORMATCOLUMN_NAMECOMMENTCOMMITCOMMITTEDCOMPACTCOMPLETIONCOMPRESSEDCOMPRESSION; added in 5.7.8 (nonreserved)CONCURRENTCONDITION(R)CONNECTIONCONSISTENTCONSTRAINT(R)CONSTRAINT_CATALOGCONSTRAINT_NAMECONSTRAINT_SCHEMACONTAINSCONTEXTCONTINUE(R)CONVERT(R)CPUCREATE(R)CROSS(R)CUBECURRENTCURRENT_DATE(R)CURRENT_TIME(R)CURRENT_TIMESTAMP(R)CURRENT_USER(R)CURSOR(R)CURSOR_NAME
DATADATABASE(R)DATABASES(R)DATAFILEDATEDATETIMEDAYDAY_HOUR(R)DAY_MICROSECOND(R)DAY_MINUTE(R)DAY_SECOND(R)DEALLOCATEDEC(R)DECIMAL(R)DECLARE(R)DEFAULT(R)DEFAULT_AUTHDEFINERDELAYED(R)DELAY_KEY_WRITEDELETE(R)DESC(R)DESCRIBE(R)DES_KEY_FILEDETERMINISTIC(R)DIAGNOSTICSDIRECTORYDISABLEDISCARDDISKDISTINCT(R)DISTINCTROW(R)DIV(R)DODOUBLE(R)DROP(R)DUAL(R)DUMPFILEDUPLICATEDYNAMIC
EACH(R)ELSE(R)ELSEIF(R)ENABLEENCLOSED(R)ENCRYPTION; added in 5.7.11 (nonreserved)ENDENDSENGINEENGINESENUMERRORERRORSESCAPEESCAPED(R)EVENTEVENTSEVERYEXCHANGEEXECUTEEXISTS(R)EXIT(R)EXPANSIONEXPIREEXPLAIN(R)EXPORTEXTENDEDEXTENT_SIZE
FALSE(R)FASTFAULTSFETCH(R)FIELDSFILEFILE_BLOCK_SIZE; added in 5.7.6 (nonreserved)FILTER; added in 5.7.3 (nonreserved)FIRSTFIXEDFLOAT(R)FLOAT4(R)FLOAT8(R)FLUSHFOLLOWS; added in 5.7.2 (nonreserved)FOR(R)FORCE(R)FOREIGN(R)FORMATFOUNDFROM(R)FULLFULLTEXT(R)FUNCTION
GENERALGENERATED(R); added in 5.7.6 (reserved)GEOMETRYGEOMETRYCOLLECTIONGET(R)GET_FORMATGLOBALGRANT(R)GRANTSGROUP(R)GROUP_REPLICATION; added in 5.7.6 (nonreserved)
HANDLERHASHHAVING(R)HELPHIGH_PRIORITY(R)HOSTHOSTSHOURHOUR_MICROSECOND(R)HOUR_MINUTE(R)HOUR_SECOND(R)
IDENTIFIEDIF(R)IGNORE(R)IGNORE_SERVER_IDSIMPORTIN(R)INDEX(R)INDEXESINFILE(R)INITIAL_SIZEINNER(R)INOUT(R)INSENSITIVE(R)INSERT(R)INSERT_METHODINSTALLINSTANCE; added in 5.7.11 (nonreserved)INT(R)INT1(R)INT2(R)INT3(R)INT4(R)INT8(R)INTEGER(R)INTERVAL(R)INTO(R)INVOKERIOIO_AFTER_GTIDS(R)IO_BEFORE_GTIDS(R)IO_THREADIPCIS(R)ISOLATIONISSUERITERATE(R)
JOIN(R)JSON; added in 5.7.8 (nonreserved)
KEY(R)KEYS(R)KEY_BLOCK_SIZEKILL(R)
LANGUAGELASTLEADING(R)LEAVE(R)LEAVESLEFT(R)LESSLEVELLIKE(R)LIMIT(R)LINEAR(R)LINES(R)LINESTRINGLISTLOAD(R)LOCALLOCALTIME(R)LOCALTIMESTAMP(R)LOCK(R)LOCKSLOGFILELOGSLONG(R)LONGBLOB(R)LONGTEXT(R)LOOP(R)LOW_PRIORITY(R)
MASTERMASTER_AUTO_POSITIONMASTER_BIND(R)MASTER_CONNECT_RETRYMASTER_DELAYMASTER_HEARTBEAT_PERIODMASTER_HOSTMASTER_LOG_FILEMASTER_LOG_POSMASTER_PASSWORDMASTER_PORTMASTER_RETRY_COUNTMASTER_SERVER_IDMASTER_SSLMASTER_SSL_CAMASTER_SSL_CAPATHMASTER_SSL_CERTMASTER_SSL_CIPHERMASTER_SSL_CRLMASTER_SSL_CRLPATHMASTER_SSL_KEYMASTER_SSL_VERIFY_SERVER_CERT(R)MASTER_TLS_VERSION; added in 5.7.10 (nonreserved)MASTER_USERMATCH(R)MAXVALUE(R)MAX_CONNECTIONS_PER_HOURMAX_QUERIES_PER_HOURMAX_ROWSMAX_SIZEMAX_STATEMENT_TIME; added in 5.7.4 (nonreserved); removed in 5.7.8MAX_UPDATES_PER_HOURMAX_USER_CONNECTIONSMEDIUMMEDIUMBLOB(R)MEDIUMINT(R)MEDIUMTEXT(R)MEMORYMERGEMESSAGE_TEXTMICROSECONDMIDDLEINT(R)MIGRATEMINUTEMINUTE_MICROSECOND(R)MINUTE_SECOND(R)MIN_ROWSMOD(R)MODEMODIFIES(R)MODIFYMONTHMULTILINESTRINGMULTIPOINTMULTIPOLYGONMUTEXMYSQL_ERRNO
NAMENAMESNATIONALNATURAL(R)NCHARNDBNDBCLUSTERNEVER; added in 5.7.4 (nonreserved)NEWNEXTNONODEGROUPNONBLOCKING; removed in 5.7.6NONENOT(R)NO_WAITNO_WRITE_TO_BINLOG(R)NULL(R)NUMBERNUMERIC(R)NVARCHAR
OFFSETOLD_PASSWORD; removed in 5.7.5ON(R)ONEONLYOPENOPTIMIZE(R)OPTIMIZER_COSTS(R); added in 5.7.5 (reserved)OPTION(R)OPTIONALLY(R)OPTIONSOR(R)ORDER(R)OUT(R)OUTER(R)OUTFILE(R)OWNER
PACK_KEYSPAGEPARSERPARSE_GCOL_EXPR; added in 5.7.6 (reserved); became nonreserved in 5.7.8PARTIALPARTITION(R)PARTITIONINGPARTITIONSPASSWORDPHASEPLUGINPLUGINSPLUGIN_DIRPOINTPOLYGONPORTPRECEDES; added in 5.7.2 (nonreserved)PRECISION(R)PREPAREPRESERVEPREVPRIMARY(R)PRIVILEGESPROCEDURE(R)PROCESSLISTPROFILEPROFILESPROXYPURGE(R)
QUARTERQUERYQUICK
RANGE(R)READ(R)READS(R)READ_ONLYREAD_WRITE(R)REAL(R)REBUILDRECOVERREDOFILEREDO_BUFFER_SIZEREDUNDANTREFERENCES(R)REGEXP(R)RELAYRELAYLOGRELAY_LOG_FILERELAY_LOG_POSRELAY_THREADRELEASE(R)RELOADREMOVERENAME(R)REORGANIZEREPAIRREPEAT(R)REPEATABLEREPLACE(R)REPLICATE_DO_DB; added in 5.7.3 (nonreserved)REPLICATE_DO_TABLE; added in 5.7.3 (nonreserved)REPLICATE_IGNORE_DB; added in 5.7.3 (nonreserved)REPLICATE_IGNORE_TABLE; added in 5.7.3 (nonreserved)REPLICATE_REWRITE_DB; added in 5.7.3 (nonreserved)REPLICATE_WILD_DO_TABLE; added in 5.7.3 (nonreserved)REPLICATE_WILD_IGNORE_TABLE; added in 5.7.3 (nonreserved)REPLICATIONREQUIRE(R)RESETRESIGNAL(R)RESTORERESTRICT(R)RESUMERETURN(R)RETURNED_SQLSTATERETURNSREVERSEREVOKE(R)RIGHT(R)RLIKE(R)ROLLBACKROLLUPROTATE; added in 5.7.11 (nonreserved)ROUTINEROWROWSROW_COUNTROW_FORMATRTREE
SAVEPOINTSCHEDULESCHEMA(R)SCHEMAS(R)SCHEMA_NAMESECONDSECOND_MICROSECOND(R)SECURITYSELECT(R)SENSITIVE(R)SEPARATOR(R)SERIALSERIALIZABLESERVERSESSIONSET(R)SHARESHOW(R)SHUTDOWNSIGNAL(R)SIGNEDSIMPLESLAVESLOWSMALLINT(R)SNAPSHOTSOCKETSOMESONAMESOUNDSSOURCESPATIAL(R)SPECIFIC(R)SQL(R)SQLEXCEPTION(R)SQLSTATE(R)SQLWARNING(R)SQL_AFTER_GTIDSSQL_AFTER_MTS_GAPSSQL_BEFORE_GTIDSSQL_BIG_RESULT(R)SQL_BUFFER_RESULTSQL_CACHESQL_CALC_FOUND_ROWS(R)SQL_NO_CACHESQL_SMALL_RESULT(R)SQL_THREADSQL_TSI_DAYSQL_TSI_HOURSQL_TSI_MINUTESQL_TSI_MONTHSQL_TSI_QUARTERSQL_TSI_SECONDSQL_TSI_WEEKSQL_TSI_YEARSSL(R)STACKEDSTARTSTARTING(R)STARTSSTATS_AUTO_RECALCSTATS_PERSISTENTSTATS_SAMPLE_PAGESSTATUSSTOPSTORAGESTORED(R); added in 5.7.6 (reserved)STRAIGHT_JOIN(R)STRINGSUBCLASS_ORIGINSUBJECTSUBPARTITIONSUBPARTITIONSSUPERSUSPENDSWAPSSWITCHES
TABLE(R)TABLESTABLESPACETABLE_CHECKSUMTABLE_NAMETEMPORARYTEMPTABLETERMINATED(R)TEXTTHANTHEN(R)TIMETIMESTAMPTIMESTAMPADDTIMESTAMPDIFFTINYBLOB(R)TINYINT(R)TINYTEXT(R)TO(R)TRAILING(R)TRANSACTIONTRIGGER(R)TRIGGERSTRUE(R)TRUNCATETYPETYPES
UNCOMMITTEDUNDEFINEDUNDO(R)UNDOFILEUNDO_BUFFER_SIZEUNICODEUNINSTALLUNION(R)UNIQUE(R)UNKNOWNUNLOCK(R)UNSIGNED(R)UNTILUPDATE(R)UPGRADEUSAGE(R)USE(R)USERUSER_RESOURCESUSE_FRMUSING(R)UTC_DATE(R)UTC_TIME(R)UTC_TIMESTAMP(R)
VALIDATION; added in 5.7.5 (nonreserved)VALUEVALUES(R)VARBINARY(R)VARCHAR(R)VARCHARACTER(R)VARIABLESVARYING(R)VIEWVIRTUAL(R); added in 5.7.6 (reserved)
WAITWARNINGSWEEKWEIGHT_STRINGWHEN(R)WHERE(R)WHILE(R)WITH(R)WITHOUT; added in 5.7.5 (nonreserved)WORKWRAPPERWRITE(R)
X509XAXID; added in 5.7.5 (nonreserved)XMLXOR(R)
YEARYEAR_MONTH(R)
ZEROFILL(R)
The following list shows the keywords and reserved words that are added in MySQL 5.7, compared to MySQL 5.6. Reserved keywords are marked with (R).
A | C | E | F | G | I | J | M | N | O | P | R | S | V | W | X
ACCOUNTALWAYS
CHANNELCOMPRESSION
ENCRYPTION
FILE_BLOCK_SIZEFILTERFOLLOWS
GENERATED(R)GROUP_REPLICATION
INSTANCE
JSON
MASTER_TLS_VERSION
NEVER
OPTIMIZER_COSTS(R)
PARSE_GCOL_EXPRPRECEDES
REPLICATE_DO_DBREPLICATE_DO_TABLEREPLICATE_IGNORE_DBREPLICATE_IGNORE_TABLEREPLICATE_REWRITE_DBREPLICATE_WILD_DO_TABLEREPLICATE_WILD_IGNORE_TABLEROTATE
STACKEDSTORED(R)
VALIDATIONVIRTUAL(R)
WITHOUT
XID