关键字是在 SQL 中具有重要意义的词。某些关键字(如SELECT、
DELETE或
BIGINT)是保留关键字,需要特殊处理才能用作表名和列名等标识符。这也可能适用于内置函数的名称。
允许非保留关键字作为标识符而不用引号。如果您按照第 9.2 节,“模式对象名称”中的描述引用保留字,则允许它们作为标识符:
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并且END是关键字但不是保留的,因此它们用作标识符不需要引用。INTERVAL是保留关键字,必须用引号引起来用作标识符:
mysql> CREATE TABLE `interval` (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)例外:限定名称中句点后面的单词必须是标识符,因此即使保留也不需要引用:
mysql> CREATE TABLE mydb.interval (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)
允许将内置函数的名称用作标识符,但可能需要谨慎使用。例如,
COUNT可以作为列名。(
但是,默认情况下,函数调用中函数名称和后续字符之间不允许有空格。此要求使解析器能够区分该名称是在函数调用中还是在非函数上下文中使用。有关函数名称识别的更多详细信息,请参阅
第 9.2.5 节,“函数名称解析和解析”。
以下列表显示了 MySQL 5.7 中的关键字和保留字,以及各个版本对各个字的更改。保留关键字标有 (R)。此外,_FILENAME保留。
在某些时候,您可能会升级到更高版本,因此最好也看看未来的保留字。您可以在涵盖更高版本 MySQL 的手册中找到它们。标准 SQL 禁止列表中的大多数保留字作为列名或表名(例如,
GROUP)。一些是保留的,因为 MySQL 需要它们并使用yacc解析器。
一个 | 乙 | 丙 | D | 乙 | 女 | 格 | H | 我 | 杰 | K | 大号 | 男 | 否 | 欧 | 磷 | 问 | 右 | 年代 | 吨 | ü | 五 | 瓦 | × | 是 | Z
ACCESSIBLE(右)ACCOUNT; 5.7.6新增(非保留)ACTIONADD(右)AFTERAGAINSTAGGREGATEALGORITHMALL(右)ALTER(右)ALWAYS; 5.7.6新增(非保留)ANALYSEANALYZE(右)AND(右)ANYAS(右)ASC(右)ASCIIASENSITIVE(右)ATAUTOEXTEND_SIZEAUTO_INCREMENTAVGAVG_ROW_LENGTH
BACKUPBEFORE(右)BEGINBETWEEN(右)BIGINT(右)BINARY(右)BINLOGBITBLOB(右)BLOCKBOOLBOOLEANBOTH(右)BTREEBY(右)BYTE
CACHECALL(右)CASCADE(右)CASCADEDCASE(右)CATALOG_NAMECHAINCHANGE(右)CHANGEDCHANNEL; 5.7.6新增(非保留)CHAR(右)CHARACTER(右)CHARSETCHECK(右)CHECKSUMCIPHERCLASS_ORIGINCLIENTCLOSECOALESCECODECOLLATE(右)COLLATIONCOLUMN(右)COLUMNSCOLUMN_FORMATCOLUMN_NAMECOMMENTCOMMITCOMMITTEDCOMPACTCOMPLETIONCOMPRESSEDCOMPRESSION; 5.7.8新增(非保留)CONCURRENTCONDITION(右)CONNECTIONCONSISTENTCONSTRAINT(右)CONSTRAINT_CATALOGCONSTRAINT_NAMECONSTRAINT_SCHEMACONTAINSCONTEXTCONTINUE(右)CONVERT(右)CPUCREATE(右)CROSS(右)CUBECURRENTCURRENT_DATE(右)CURRENT_TIME(右)CURRENT_TIMESTAMP(右)CURRENT_USER(右)CURSOR(右)CURSOR_NAME
DATADATABASE(右)DATABASES(右)DATAFILEDATEDATETIMEDAYDAY_HOUR(右)DAY_MICROSECOND(右)DAY_MINUTE(右)DAY_SECOND(右)DEALLOCATEDEC(右)DECIMAL(右)DECLARE(右)DEFAULT(右)DEFAULT_AUTHDEFINERDELAYED(右)DELAY_KEY_WRITEDELETE(右)DESC(右)DESCRIBE(右)DES_KEY_FILEDETERMINISTIC(右)DIAGNOSTICSDIRECTORYDISABLEDISCARDDISKDISTINCT(右)DISTINCTROW(右)DIV(右)DODOUBLE(右)DROP(右)DUAL(右)DUMPFILEDUPLICATEDYNAMIC
EACH(右)ELSE(右)ELSEIF(右)ENABLEENCLOSED(右)ENCRYPTION; 5.7.11 新增(非保留)ENDENDSENGINEENGINESENUMERRORERRORSESCAPEESCAPED(右)EVENTEVENTSEVERYEXCHANGEEXECUTEEXISTS(右)EXIT(右)EXPANSIONEXPIREEXPLAIN(右)EXPORTEXTENDEDEXTENT_SIZE
FALSE(右)FASTFAULTSFETCH(右)FIELDSFILEFILE_BLOCK_SIZE; 5.7.6新增(非保留)FILTER; 5.7.3新增(非保留)FIRSTFIXEDFLOAT(右)FLOAT4(右)FLOAT8(右)FLUSHFOLLOWS; 5.7.2新增(非保留)FOR(右)FORCE(右)FOREIGN(右)FORMATFOUNDFROM(右)FULLFULLTEXT(右)FUNCTION
GENERALGENERATED(R); 5.7.6新增(保留)GEOMETRYGEOMETRYCOLLECTIONGET(右)GET_FORMATGLOBALGRANT(右)GRANTSGROUP(右)GROUP_REPLICATION; 5.7.6新增(非保留)
HANDLERHASHHAVING(右)HELPHIGH_PRIORITY(右)HOSTHOSTSHOURHOUR_MICROSECOND(右)HOUR_MINUTE(右)HOUR_SECOND(右)
IDENTIFIEDIF(右)IGNORE(右)IGNORE_SERVER_IDSIMPORTIN(右)INDEX(右)INDEXESINFILE(右)INITIAL_SIZEINNER(右)INOUT(右)INSENSITIVE(右)INSERT(右)INSERT_METHODINSTALLINSTANCE; 5.7.11 新增(非保留)INT(右)INT1(右)INT2(右)INT3(右)INT4(右)INT8(右)INTEGER(右)INTERVAL(右)INTO(右)INVOKERIOIO_AFTER_GTIDS(右)IO_BEFORE_GTIDS(右)IO_THREADIPCIS(右)ISOLATIONISSUERITERATE(右)
JOIN(右)JSON; 5.7.8新增(非保留)
KEY(右)KEYS(右)KEY_BLOCK_SIZEKILL(右)
LANGUAGELASTLEADING(右)LEAVE(右)LEAVESLEFT(右)LESSLEVELLIKE(右)LIMIT(右)LINEAR(右)LINES(右)LINESTRINGLISTLOAD(右)LOCALLOCALTIME(右)LOCALTIMESTAMP(右)LOCK(右)LOCKSLOGFILELOGSLONG(右)LONGBLOB(右)LONGTEXT(右)LOOP(右)LOW_PRIORITY(右)
MASTERMASTER_AUTO_POSITIONMASTER_BIND(右)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(右)MASTER_TLS_VERSION; 5.7.10 新增(非保留)MASTER_USERMATCH(右)MAXVALUE(右)MAX_CONNECTIONS_PER_HOURMAX_QUERIES_PER_HOURMAX_ROWSMAX_SIZEMAX_STATEMENT_TIME; 5.7.4新增(非保留);在 5.7.8 中移除MAX_UPDATES_PER_HOURMAX_USER_CONNECTIONSMEDIUMMEDIUMBLOB(右)MEDIUMINT(右)MEDIUMTEXT(右)MEMORYMERGEMESSAGE_TEXTMICROSECONDMIDDLEINT(右)MIGRATEMINUTEMINUTE_MICROSECOND(右)MINUTE_SECOND(右)MIN_ROWSMOD(右)MODEMODIFIES(右)MODIFYMONTHMULTILINESTRINGMULTIPOINTMULTIPOLYGONMUTEXMYSQL_ERRNO
NAMENAMESNATIONALNATURAL(右)NCHARNDBNDBCLUSTERNEVER; 5.7.4新增(非保留)NEWNEXTNONODEGROUPNONBLOCKING; 在 5.7.6 中移除NONENOT(右)NO_WAITNO_WRITE_TO_BINLOG(右)NULL(右)NUMBERNUMERIC(右)NVARCHAR
OFFSETOLD_PASSWORD; 在 5.7.5 中移除ON(右)ONEONLYOPENOPTIMIZE(右)OPTIMIZER_COSTS(R); 5.7.5新增(保留)OPTION(右)OPTIONALLY(右)OPTIONSOR(右)ORDER(右)OUT(右)OUTER(右)OUTFILE(右)OWNER
PACK_KEYSPAGEPARSERPARSE_GCOL_EXPR; 5.7.6新增(预留);在 5.7.8 中成为非保留的PARTIALPARTITION(右)PARTITIONINGPARTITIONSPASSWORDPHASEPLUGINPLUGINSPLUGIN_DIRPOINTPOLYGONPORTPRECEDES; 5.7.2新增(非保留)PRECISION(右)PREPAREPRESERVEPREVPRIMARY(右)PRIVILEGESPROCEDURE(右)PROCESSLISTPROFILEPROFILESPROXYPURGE(右)
QUARTERQUERYQUICK
RANGE(右)READ(右)READS(右)READ_ONLYREAD_WRITE(右)REAL(右)REBUILDRECOVERREDOFILEREDO_BUFFER_SIZEREDUNDANTREFERENCES(右)REGEXP(右)RELAYRELAYLOGRELAY_LOG_FILERELAY_LOG_POSRELAY_THREADRELEASE(右)RELOADREMOVERENAME(右)REORGANIZEREPAIRREPEAT(右)REPEATABLEREPLACE(右)REPLICATE_DO_DB; 5.7.3新增(非保留)REPLICATE_DO_TABLE; 5.7.3新增(非保留)REPLICATE_IGNORE_DB; 5.7.3新增(非保留)REPLICATE_IGNORE_TABLE; 5.7.3新增(非保留)REPLICATE_REWRITE_DB; 5.7.3新增(非保留)REPLICATE_WILD_DO_TABLE; 5.7.3新增(非保留)REPLICATE_WILD_IGNORE_TABLE; 5.7.3新增(非保留)REPLICATIONREQUIRE(右)RESETRESIGNAL(右)RESTORERESTRICT(右)RESUMERETURN(右)RETURNED_SQLSTATERETURNSREVERSEREVOKE(右)RIGHT(右)RLIKE(右)ROLLBACKROLLUPROTATE; 5.7.11 新增(非保留)ROUTINEROWROWSROW_COUNTROW_FORMATRTREE
SAVEPOINTSCHEDULESCHEMA(右)SCHEMAS(右)SCHEMA_NAMESECONDSECOND_MICROSECOND(右)SECURITYSELECT(右)SENSITIVE(右)SEPARATOR(右)SERIALSERIALIZABLESERVERSESSIONSET(右)SHARESHOW(右)SHUTDOWNSIGNAL(右)SIGNEDSIMPLESLAVESLOWSMALLINT(右)SNAPSHOTSOCKETSOMESONAMESOUNDSSOURCESPATIAL(右)SPECIFIC(右)SQL(右)SQLEXCEPTION(右)SQLSTATE(右)SQLWARNING(右)SQL_AFTER_GTIDSSQL_AFTER_MTS_GAPSSQL_BEFORE_GTIDSSQL_BIG_RESULT(右)SQL_BUFFER_RESULTSQL_CACHESQL_CALC_FOUND_ROWS(右)SQL_NO_CACHESQL_SMALL_RESULT(右)SQL_THREADSQL_TSI_DAYSQL_TSI_HOURSQL_TSI_MINUTESQL_TSI_MONTHSQL_TSI_QUARTERSQL_TSI_SECONDSQL_TSI_WEEKSQL_TSI_YEARSSL(右)STACKEDSTARTSTARTING(右)STARTSSTATS_AUTO_RECALCSTATS_PERSISTENTSTATS_SAMPLE_PAGESSTATUSSTOPSTORAGESTORED(R); 5.7.6新增(保留)STRAIGHT_JOIN(右)STRINGSUBCLASS_ORIGINSUBJECTSUBPARTITIONSUBPARTITIONSSUPERSUSPENDSWAPSSWITCHES
TABLE(右)TABLESTABLESPACETABLE_CHECKSUMTABLE_NAMETEMPORARYTEMPTABLETERMINATED(右)TEXTTHANTHEN(右)TIMETIMESTAMPTIMESTAMPADDTIMESTAMPDIFFTINYBLOB(右)TINYINT(右)TINYTEXT(右)TO(右)TRAILING(右)TRANSACTIONTRIGGER(右)TRIGGERSTRUE(右)TRUNCATETYPETYPES
UNCOMMITTEDUNDEFINEDUNDO(右)UNDOFILEUNDO_BUFFER_SIZEUNICODEUNINSTALLUNION(右)UNIQUE(右)UNKNOWNUNLOCK(右)UNSIGNED(右)UNTILUPDATE(右)UPGRADEUSAGE(右)USE(右)USERUSER_RESOURCESUSE_FRMUSING(右)UTC_DATE(右)UTC_TIME(右)UTC_TIMESTAMP(右)
VALIDATION; 5.7.5新增(非保留)VALUEVALUES(右)VARBINARY(右)VARCHAR(右)VARCHARACTER(右)VARIABLESVARYING(右)VIEWVIRTUAL(R); 5.7.6新增(保留)
WAITWARNINGSWEEKWEIGHT_STRINGWHEN(右)WHERE(右)WHILE(右)WITH(右)WITHOUT; 5.7.5新增(非保留)WORKWRAPPERWRITE(右)
X509XAXID; 5.7.5新增(非保留)XMLXOR(右)
YEARYEAR_MONTH(右)
ZEROFILL(右)
以下列表显示了与 MySQL 5.6 相比,MySQL 5.7 中添加的关键字和保留字。保留关键字标有 (R)。
一个 | 丙 | 乙 | 女 | 格 | 我 | 杰 | 男 | 否 | 欧 | 磷 | 右 | 年代 | 五 | 瓦 | X
ACCOUNTALWAYS
CHANNELCOMPRESSION
ENCRYPTION
FILE_BLOCK_SIZEFILTERFOLLOWS
GENERATED(右)GROUP_REPLICATION
INSTANCE
JSON
MASTER_TLS_VERSION
NEVER
OPTIMIZER_COSTS(右)
PARSE_GCOL_EXPRPRECEDES
REPLICATE_DO_DBREPLICATE_DO_TABLEREPLICATE_IGNORE_DBREPLICATE_IGNORE_TABLEREPLICATE_REWRITE_DBREPLICATE_WILD_DO_TABLEREPLICATE_WILD_IGNORE_TABLEROTATE
STACKEDSTORED(右)
VALIDATIONVIRTUAL(右)
WITHOUT
XID