11.3 Keywords and Reserved Words
MySQL 8.4 Reference Manual Including MySQL NDB Cluster 8.4
11.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.
Most nonreserved keywords are permitted as identifiers without quoting. Some keywords which are otherwise considered nonreserved are restricted from use as unquoted identifiers for roles, stored program labels, or, in some cases, both. See MySQL 8.4 Restricted Keywords, for listings of these keywords.
Reserved words are permitted as identifiers if you quote them as described in Section 11.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 11.2.5, “Function Name Parsing and Resolution”.
The INFORMATION_SCHEMA.KEYWORDS table lists the
words considered keywords by MySQL and indicates whether they are
reserved. See Section 28.3.17, “The INFORMATION_SCHEMA KEYWORDS Table”.
- MySQL 8.4 Keywords and Reserved Words
- MySQL 8.4 New Keywords and Reserved Words
- MySQL 8.4 Removed Keywords and Reserved Words
- MySQL 8.4 Restricted Keywords
MySQL 8.4 Keywords and Reserved Words
The following list shows the keywords and reserved words in
MySQL 8.4, 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
A
ACCESSIBLE(R)ACCOUNTACTIONACTIVEADD(R)ADMINAFTERAGAINSTAGGREGATEALGORITHMALL(R)ALTER(R)ALWAYSANALYZE(R)AND(R)ANYARRAYAS(R)ASC(R)ASCIIASENSITIVE(R)ATATTRIBUTEAUTHENTICATIONAUTOAUTOEXTEND_SIZEAUTO_INCREMENTAVGAVG_ROW_LENGTH
B
BACKUPBEFORE(R)BEGINBERNOULLIBETWEEN(R)BIGINT(R)BINARY(R)BINLOGBITBLOB(R)BLOCKBOOLBOOLEANBOTH(R)BTREEBUCKETSBULKBY(R)BYTE
C
CACHECALL(R)CASCADE(R)CASCADEDCASE(R)CATALOG_NAMECHAINCHALLENGE_RESPONSECHANGE(R)CHANGEDCHANNELCHAR(R)CHARACTER(R)CHARSETCHECK(R)CHECKSUMCIPHERCLASS_ORIGINCLIENTCLONECLOSECOALESCECODECOLLATE(R)COLLATIONCOLUMN(R)COLUMNSCOLUMN_FORMATCOLUMN_NAMECOMMENTCOMMITCOMMITTEDCOMPACTCOMPLETIONCOMPONENTCOMPRESSEDCOMPRESSIONCONCURRENTCONDITION(R)CONNECTIONCONSISTENTCONSTRAINT(R)CONSTRAINT_CATALOGCONSTRAINT_NAMECONSTRAINT_SCHEMACONTAINSCONTEXTCONTINUE(R)CONVERT(R)CPUCREATE(R)CROSS(R)CUBE(R)CUME_DIST(R)CURRENTCURRENT_DATE(R)CURRENT_TIME(R)CURRENT_TIMESTAMP(R)CURRENT_USER(R)CURSOR(R)CURSOR_NAME
D
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_AUTHDEFINERDEFINITIONDELAYED(R)DELAY_KEY_WRITEDELETE(R)DENSE_RANK(R)DESC(R)DESCRIBE(R)DESCRIPTIONDETERMINISTIC(R)DIAGNOSTICSDIRECTORYDISABLEDISCARDDISKDISTINCT(R)DISTINCTROW(R)DIV(R)DODOUBLE(R)DROP(R)DUAL(R)DUMPFILEDUPLICATEDYNAMIC
E
EACH(R)ELSE(R)ELSEIF(R)EMPTY(R)ENABLEENCLOSED(R)ENCRYPTIONENDENDSENFORCEDENGINEENGINESENGINE_ATTRIBUTEENUMERRORERRORSESCAPEESCAPED(R)EVENTEVENTSEVERYEXCEPT(R)EXCHANGEEXCLUDEEXECUTEEXISTS(R)EXIT(R)EXPANSIONEXPIREEXPLAIN(R)EXPORTEXTENDEDEXTENT_SIZE
F
FACTORFAILED_LOGIN_ATTEMPTSFALSE(R)FASTFAULTSFETCH(R)FIELDSFILEFILE_BLOCK_SIZEFILTERFINISHFIRSTFIRST_VALUE(R)FIXEDFLOAT(R)FLOAT4(R)FLOAT8(R)FLUSHFOLLOWINGFOLLOWSFOR(R)FORCE(R)FOREIGN(R)FORMATFOUNDFROM(R)FULLFULLTEXT(R)FUNCTION(R)
G
GENERALGENERATEGENERATED(R)GEOMCOLLECTIONGEOMETRYGEOMETRYCOLLECTIONGET(R)GET_FORMATGET_SOURCE_PUBLIC_KEYGLOBALGRANT(R)GRANTSGROUP(R)GROUPING(R)GROUPS(R)GROUP_REPLICATIONGTIDSGTID_ONLY
H
HANDLERHASHHAVING(R)HELPHIGH_PRIORITY(R)HISTOGRAMHISTORYHOSTHOSTSHOURHOUR_MICROSECOND(R)HOUR_MINUTE(R)HOUR_SECOND(R)
I
IDENTIFIEDIF(R)IGNORE(R)IGNORE_SERVER_IDSIMPORTIN(R)INACTIVEINDEX(R)INDEXESINFILE(R)INITIALINITIAL_SIZEINITIATEINNER(R)INOUT(R)INSENSITIVE(R)INSERT(R)INSERT_METHODINSTALLINSTANCEINT(R)INT1(R)INT2(R)INT3(R)INT4(R)INT8(R)INTEGER(R)INTERSECT(R)INTERVAL(R)INTO(R)INVISIBLEINVOKERIOIO_AFTER_GTIDS(R)IO_BEFORE_GTIDS(R)IO_THREADIPCIS(R)ISOLATIONISSUERITERATE(R)
J
JOIN(R)JSONJSON_TABLE(R)JSON_VALUE
K
KEY(R)KEYRINGKEYS(R)KEY_BLOCK_SIZEKILL(R)
L
LAG(R)LANGUAGELASTLAST_VALUE(R)LATERAL(R)LEAD(R)LEADING(R)LEAVE(R)LEAVESLEFT(R)LESSLEVELLIKE(R)LIMIT(R)LINEAR(R)LINES(R)LINESTRINGLISTLOAD(R)LOCALLOCALTIME(R)LOCALTIMESTAMP(R)LOCK(R)LOCKEDLOCKSLOGLOGFILELOGSLONG(R)LONGBLOB(R)LONGTEXT(R)LOOP(R)LOW_PRIORITY(R)
M
MANUAL(R)MASTERMATCH(R)MAXVALUE(R)MAX_CONNECTIONS_PER_HOURMAX_QUERIES_PER_HOURMAX_ROWSMAX_SIZEMAX_UPDATES_PER_HOURMAX_USER_CONNECTIONSMEDIUMMEDIUMBLOB(R)MEDIUMINT(R)MEDIUMTEXT(R)MEMBERMEMORYMERGEMESSAGE_TEXTMICROSECONDMIDDLEINT(R)MIGRATEMINUTEMINUTE_MICROSECOND(R)MINUTE_SECOND(R)MIN_ROWSMOD(R)MODEMODIFIES(R)MODIFYMONTHMULTILINESTRINGMULTIPOINTMULTIPOLYGONMUTEXMYSQL_ERRNO
N
NAMENAMESNATIONALNATURAL(R)NCHARNDBNDBCLUSTERNESTEDNETWORK_NAMESPACENEVERNEWNEXTNONODEGROUPNONENOT(R)NOWAITNO_WAITNO_WRITE_TO_BINLOG(R)NTH_VALUE(R)NTILE(R)NULL(R)NULLSNUMBERNUMERIC(R)NVARCHAR
O
OF(R)OFFOFFSETOJOLDON(R)ONEONLYOPENOPTIMIZE(R)OPTIMIZER_COSTS(R)OPTION(R)OPTIONALOPTIONALLY(R)OPTIONSOR(R)ORDER(R)ORDINALITYORGANIZATIONOTHERSOUT(R)OUTER(R)OUTFILE(R)OVER(R)OWNER
P
PACK_KEYSPAGEPARALLEL(R)PARSERPARSE_TREEPARTIALPARTITION(R)PARTITIONINGPARTITIONSPASSWORDPASSWORD_LOCK_TIMEPATHPERCENT_RANK(R)PERSISTPERSIST_ONLYPHASEPLUGINPLUGINSPLUGIN_DIRPOINTPOLYGONPORTPRECEDESPRECEDINGPRECISION(R)PREPAREPRESERVEPREVPRIMARY(R)PRIVILEGESPRIVILEGE_CHECKS_USERPROCEDURE(R)PROCESSPROCESSLISTPROFILEPROFILESPROXYPURGE(R)
Q
QUALIFY(R)QUARTERQUERYQUICK
R
RANDOMRANGE(R)RANK(R)READ(R)READS(R)READ_ONLYREAD_WRITE(R)REAL(R)REBUILDRECOVERRECURSIVE(R)REDO_BUFFER_SIZEREDUNDANTREFERENCEREFERENCES(R)REGEXP(R)REGISTRATIONRELAYRELAYLOGRELAY_LOG_FILERELAY_LOG_POSRELAY_THREADRELEASE(R)RELOADREMOVERENAME(R)REORGANIZEREPAIRREPEAT(R)REPEATABLEREPLACE(R)REPLICAREPLICASREPLICATE_DO_DBREPLICATE_DO_TABLEREPLICATE_IGNORE_DBREPLICATE_IGNORE_TABLEREPLICATE_REWRITE_DBREPLICATE_WILD_DO_TABLEREPLICATE_WILD_IGNORE_TABLEREPLICATIONREQUIRE(R)REQUIRE_ROW_FORMATRESETRESIGNAL(R)RESOURCERESPECTRESTARTRESTORERESTRICT(R)RESUMERETAINRETURN(R)RETURNED_SQLSTATERETURNINGRETURNSREUSEREVERSEREVOKE(R)RIGHT(R)RLIKE(R)ROLEROLLBACKROLLUPROTATEROUTINEROW(R)ROWS(R)ROW_COUNTROW_FORMATROW_NUMBER(R)RTREE
S
S3SAVEPOINTSCHEDULESCHEMA(R)SCHEMAS(R)SCHEMA_NAMESECONDSECONDARYSECONDARY_ENGINESECONDARY_ENGINE_ATTRIBUTESECONDARY_LOADSECONDARY_UNLOADSECOND_MICROSECOND(R)SECURITYSELECT(R)SENSITIVE(R)SEPARATOR(R)SERIALSERIALIZABLESERVERSESSIONSET(R)SHARESHOW(R)SHUTDOWNSIGNAL(R)SIGNEDSIMPLESKIPSLAVESLOWSMALLINT(R)SNAPSHOTSOCKETSOMESONAMESOUNDSSOURCESOURCE_AUTO_POSITIONSOURCE_BINDSOURCE_COMPRESSION_ALGORITHMSSOURCE_CONNECT_RETRYSOURCE_DELAYSOURCE_HEARTBEAT_PERIODSOURCE_HOSTSOURCE_LOG_FILESOURCE_LOG_POSSOURCE_PASSWORDSOURCE_PORTSOURCE_PUBLIC_KEY_PATHSOURCE_RETRY_COUNTSOURCE_SSLSOURCE_SSL_CASOURCE_SSL_CAPATHSOURCE_SSL_CERTSOURCE_SSL_CIPHERSOURCE_SSL_CRLSOURCE_SSL_CRLPATHSOURCE_SSL_KEYSOURCE_SSL_VERIFY_SERVER_CERTSOURCE_TLS_CIPHERSUITESSOURCE_TLS_VERSIONSOURCE_USERSOURCE_ZSTD_COMPRESSION_LEVELSPATIAL(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_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_YEARSRIDSSL(R)STACKEDSTARTSTARTING(R)STARTSSTATS_AUTO_RECALCSTATS_PERSISTENTSTATS_SAMPLE_PAGESSTATUSSTOPSTORAGESTORED(R)STRAIGHT_JOIN(R)STREAMSTRINGSUBCLASS_ORIGINSUBJECTSUBPARTITIONSUBPARTITIONSSUPERSUSPENDSWAPSSWITCHESSYSTEM(R)
T
TABLE(R)TABLESTABLESAMPLE(R)TABLESPACETABLE_CHECKSUMTABLE_NAMETEMPORARYTEMPTABLETERMINATED(R)TEXTTHANTHEN(R)THREAD_PRIORITYTIESTIMETIMESTAMPTIMESTAMPADDTIMESTAMPDIFFTINYBLOB(R)TINYINT(R)TINYTEXT(R)TLSTO(R)TRAILING(R)TRANSACTIONTRIGGER(R)TRIGGERSTRUE(R)TRUNCATETYPETYPES
U
UNBOUNDEDUNCOMMITTEDUNDEFINEDUNDO(R)UNDOFILEUNDO_BUFFER_SIZEUNICODEUNINSTALLUNION(R)UNIQUE(R)UNKNOWNUNLOCK(R)UNREGISTERUNSIGNED(R)UNTILUPDATE(R)UPGRADEURLUSAGE(R)USE(R)USERUSER_RESOURCESUSE_FRMUSING(R)UTC_DATE(R)UTC_TIME(R)UTC_TIMESTAMP(R)
V
VALIDATIONVALUEVALUES(R)VARBINARY(R)VARCHAR(R)VARCHARACTER(R)VARIABLESVARYING(R)VCPUVIEWVIRTUAL(R)VISIBLE
W
WAITWARNINGSWEEKWEIGHT_STRINGWHEN(R)WHERE(R)WHILE(R)WINDOW(R)WITH(R)WITHOUTWORKWRAPPERWRITE(R)
X
X509XAXIDXMLXOR(R)
Y
YEARYEAR_MONTH(R)
Z
ZEROFILL(R)ZONE
MySQL 8.4 New Keywords and Reserved Words
The following list shows the keywords and reserved words that are added in MySQL 8.4, compared to MySQL 8.0. Reserved keywords are marked with (R).
A | B | G | L | M | P | Q | S | T
A
AUTO
B
BERNOULLI
G
GTIDS
L
LOG
M
MANUAL(R)
P
PARALLEL(R)PARSE_TREE
Q
QUALIFY(R)
S
S3
T
TABLESAMPLE(R)
MySQL 8.4 Removed Keywords and Reserved Words
The following list shows the keywords and reserved words that are removed in MySQL 8.4, compared to MySQL 8.0. Reserved keywords are marked with (R).
G
GET_MASTER_PUBLIC_KEY
M
MASTER_AUTO_POSITIONMASTER_BIND(R)MASTER_COMPRESSION_ALGORITHMSMASTER_CONNECT_RETRYMASTER_DELAYMASTER_HEARTBEAT_PERIODMASTER_HOSTMASTER_LOG_FILEMASTER_LOG_POSMASTER_PASSWORDMASTER_PORTMASTER_PUBLIC_KEY_PATHMASTER_RETRY_COUNTMASTER_SSLMASTER_SSL_CAMASTER_SSL_CAPATHMASTER_SSL_CERTMASTER_SSL_CIPHERMASTER_SSL_CRLMASTER_SSL_CRLPATHMASTER_SSL_KEYMASTER_SSL_VERIFY_SERVER_CERT(R)MASTER_TLS_CIPHERSUITESMASTER_TLS_VERSIONMASTER_USERMASTER_ZSTD_COMPRESSION_LEVEL
MySQL 8.4 Restricted Keywords
Some MySQL keywords are not reserved but even so must be quoted in certain circumstances. This section provides listings of these keywords.
- Keywords which must be quoted when used as labels
- Keywords which must be quoted when used as role names
- Keywords which must be quoted when used as labels or role names
Keywords which must be quoted when used as labels
The keywords listed here must be quoted when used as labels in MySQL stored programs:
A | B | C | D | E | F | H | I | L | N | P | R | S | T | U | X
A
ASCII
B
BEGINBYTE
C
CACHECHARSETCHECKSUMCLONECOMMENTCOMMITCONTAINS
D
DEALLOCATEDO
E
END
F
FLUSHFOLLOWS
H
HANDLERHELP
I
IMPORTINSTALL
L
LANGUAGE
N
NO
P
PRECEDESPREPARE
R
REPAIRRESETROLLBACK
S
SAVEPOINTSIGNEDSLAVESTARTSTOP
T
TRUNCATE
U
UNICODEUNINSTALL
X
XA
Keywords which must be quoted when used as role names
The keywords listed here must be quoted when used as names of roles:
EVENTFILENONEPROCESSPROXYRELOADREPLICATIONRESOURCESUPER
Keywords which must be quoted when used as labels or role names
The keywords listed here must be quoted when used as labels in stored programs, or as names of roles:
EXECUTERESTARTSHUTDOWN
