关键字是在 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.6 中的关键字和保留字,以及各个版本对各个字的更改。保留关键字标有 (R)。此外,_FILENAME保留。
在某些时候,您可能会升级到更高版本,因此最好也看看未来的保留字。您可以在涵盖更高版本 MySQL 的手册中找到它们。标准 SQL 禁止列表中的大多数保留字作为列名或表名(例如,
GROUP)。一些是保留的,因为 MySQL 需要它们并使用yacc解析器。
一个 | 乙 | 丙 | D | 乙 | 女 | 格 | H | 我 | 杰 | K | 大号 | 男 | 否 | 欧 | 磷 | 问 | 右 | 年代 | 吨 | ü | 五 | 瓦 | × | 是 | Z
ACCESSIBLE(右)ACTIONADD(右)AFTERAGAINSTAGGREGATEALGORITHMALL(右)ALTER(右)ANALYSE; 5.6.6新增(非保留)ANALYZE(右)AND(右)ANYAS(右)ASC(右)ASCIIASENSITIVE(右)ATAUTHORS; 在 5.6.8 中移除AUTOEXTEND_SIZEAUTO_INCREMENTAVGAVG_ROW_LENGTH
BACKUPBEFORE(右)BEGINBETWEEN(右)BIGINT(右)BINARY(右)BINLOGBITBLOB(右)BLOCKBOOLBOOLEANBOTH(右)BTREEBY(右)BYTE
CACHECALL(右)CASCADE(右)CASCADEDCASE(右)CATALOG_NAMECHAINCHANGE(右)CHANGEDCHAR(右)CHARACTER(右)CHARSETCHECK(右)CHECKSUMCIPHERCLASS_ORIGINCLIENTCLOSECOALESCECODECOLLATE(右)COLLATIONCOLUMN(右)COLUMNSCOLUMN_FORMAT; 5.6.6新增(非保留)COLUMN_NAMECOMMENTCOMMITCOMMITTEDCOMPACTCOMPLETIONCOMPRESSEDCONCURRENTCONDITION(右)CONNECTIONCONSISTENTCONSTRAINT(右)CONSTRAINT_CATALOGCONSTRAINT_NAMECONSTRAINT_SCHEMACONTAINSCONTEXTCONTINUE(右)CONTRIBUTORS; 在 5.6.8 中移除CONVERT(右)CPUCREATE(右)CROSS(右)CUBECURRENT; 5.6.4新增(非保留)CURRENT_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_AUTH; 5.6.4新增(非保留)DEFINERDELAYED(右)DELAY_KEY_WRITEDELETE(右)DESC(右)DESCRIBE(右)DES_KEY_FILEDETERMINISTIC(右)DIAGNOSTICS; 5.6.4新增(非保留)DIRECTORYDISABLEDISCARDDISKDISTINCT(右)DISTINCTROW(右)DIV(右)DODOUBLE(右)DROP(右)DUAL(右)DUMPFILEDUPLICATEDYNAMIC
EACH(右)ELSE(右)ELSEIF(右)ENABLEENCLOSED(右)ENDENDSENGINEENGINESENUMERRORERRORSESCAPEESCAPED(右)EVENTEVENTSEVERYEXCHANGEEXECUTEEXISTS(右)EXIT(右)EXPANSIONEXPIRE; 5.6.6新增(非保留)EXPLAIN(右)EXPORT; 5.6.6新增(非保留)EXTENDEDEXTENT_SIZE
FALSE(右)FASTFAULTSFETCH(右)FIELDSFILEFIRSTFIXEDFLOAT(右)FLOAT4(右)FLOAT8(右)FLUSHFOR(右)FORCE(右)FOREIGN(右)FORMAT; 5.6.5新增(非保留)FOUNDFROM(右)FULLFULLTEXT(右)FUNCTION
GENERAL; 在 5.6.1 中成为非保留的GEOMETRYGEOMETRYCOLLECTIONGET(R); 5.6.4新增(保留)GET_FORMATGLOBALGRANT(右)GRANTSGROUP(右)
HANDLERHASHHAVING(右)HELPHIGH_PRIORITY(右)HOSTHOSTSHOURHOUR_MICROSECOND(右)HOUR_MINUTE(右)HOUR_SECOND(右)
IDENTIFIEDIF(右)IGNORE(右)IGNORE_SERVER_IDS; 在 5.6.1 中成为非保留的IMPORTIN(右)INDEX(右)INDEXESINFILE(右)INITIAL_SIZEINNER(右)INOUT(右)INSENSITIVE(右)INSERT(右)INSERT_METHODINSTALLINT(右)INT1(右)INT2(右)INT3(右)INT4(右)INT8(右)INTEGER(右)INTERVAL(右)INTO(右)INVOKERIOIO_AFTER_GTIDS(R); 5.6.5新增(保留)IO_BEFORE_GTIDS(R); 5.6.5新增(保留)IO_THREADIPCIS(右)ISOLATIONISSUERITERATE(右)
JOIN(右)
KEY(右)KEYS(右)KEY_BLOCK_SIZEKILL(右)
LANGUAGELASTLEADING(右)LEAVE(右)LEAVESLEFT(右)LESSLEVELLIKE(右)LIMIT(右)LINEAR(右)LINES(右)LINESTRINGLISTLOAD(右)LOCALLOCALTIME(右)LOCALTIMESTAMP(右)LOCK(右)LOCKSLOGFILELOGSLONG(右)LONGBLOB(右)LONGTEXT(右)LOOP(右)LOW_PRIORITY(右)
MASTERMASTER_AUTO_POSITION; 5.6.5新增(非保留)MASTER_BIND(R); 5.6.1新增(保留)MASTER_CONNECT_RETRYMASTER_DELAYMASTER_HEARTBEAT_PERIOD; 在 5.6.1 中成为非保留的MASTER_HOSTMASTER_LOG_FILEMASTER_LOG_POSMASTER_PASSWORDMASTER_PORTMASTER_RETRY_COUNT; 5.6.1新增(非保留)MASTER_SERVER_IDMASTER_SSLMASTER_SSL_CAMASTER_SSL_CAPATHMASTER_SSL_CERTMASTER_SSL_CIPHERMASTER_SSL_CRL; 5.6.3新增(非保留)MASTER_SSL_CRLPATH; 5.6.3新增(非保留)MASTER_SSL_KEYMASTER_SSL_VERIFY_SERVER_CERT(右)MASTER_USERMATCH(右)MAXVALUE(右)MAX_CONNECTIONS_PER_HOURMAX_QUERIES_PER_HOURMAX_ROWSMAX_SIZEMAX_UPDATES_PER_HOURMAX_USER_CONNECTIONSMEDIUMMEDIUMBLOB(右)MEDIUMINT(右)MEDIUMTEXT(右)MEMORYMERGEMESSAGE_TEXTMICROSECONDMIDDLEINT(右)MIGRATEMINUTEMINUTE_MICROSECOND(右)MINUTE_SECOND(右)MIN_ROWSMOD(右)MODEMODIFIES(右)MODIFYMONTHMULTILINESTRINGMULTIPOINTMULTIPOLYGONMUTEXMYSQL_ERRNO
NAMENAMESNATIONALNATURAL(右)NCHARNDBNDBCLUSTERNEWNEXTNONODEGROUPNONENOT(右)NO_WAITNO_WRITE_TO_BINLOG(右)NULL(右)NUMBER; 5.6.4新增(非保留)NUMERIC(右)NVARCHAR
OFFSETOLD_PASSWORDON(右)ONEONE_SHOT; 在 5.6.1 中保留;在 5.6.5 中移除ONLY; 5.6.5新增(非保留)OPENOPTIMIZE(右)OPTION(右)OPTIONALLY(右)OPTIONSOR(右)ORDER(右)OUT(右)OUTER(右)OUTFILE(右)OWNER
PACK_KEYSPAGEPARSERPARTIALPARTITION(R); 在 5.6.2 中保留PARTITIONINGPARTITIONSPASSWORDPHASEPLUGINPLUGINSPLUGIN_DIR; 5.6.4新增(非保留)POINTPOLYGONPORTPRECISION(右)PREPAREPRESERVEPREVPRIMARY(右)PRIVILEGESPROCEDURE(右)PROCESSLISTPROFILEPROFILESPROXY; 5.6.1新增(非保留)PURGE(右)
QUARTERQUERYQUICK
RANGE(右)READ(右)READS(右)READ_ONLYREAD_WRITE(右)REAL(右)REBUILDRECOVERREDOFILEREDO_BUFFER_SIZEREDUNDANTREFERENCES(右)REGEXP(右)RELAYRELAYLOGRELAY_LOG_FILERELAY_LOG_POSRELAY_THREADRELEASE(右)RELOADREMOVERENAME(右)REORGANIZEREPAIRREPEAT(右)REPEATABLEREPLACE(右)REPLICATIONREQUIRE(右)RESETRESIGNAL(右)RESTORERESTRICT(右)RESUMERETURN(右)RETURNED_SQLSTATE; 5.6.4新增(非保留)RETURNSREVERSEREVOKE(右)RIGHT(右)RLIKE(右)ROLLBACKROLLUPROUTINEROWROWSROW_COUNT; 5.6.4新增(非保留)ROW_FORMATRTREE
SAVEPOINTSCHEDULESCHEMA(右)SCHEMAS(右)SCHEMA_NAMESECONDSECOND_MICROSECOND(右)SECURITYSELECT(右)SENSITIVE(右)SEPARATOR(右)SERIALSERIALIZABLESERVERSESSIONSET(右)SHARESHOW(右)SHUTDOWNSIGNAL(右)SIGNEDSIMPLESLAVESLOW; 在 5.6.1 中成为非保留的SMALLINT(右)SNAPSHOTSOCKETSOMESONAMESOUNDSSOURCESPATIAL(右)SPECIFIC(右)SQL(右)SQLEXCEPTION(右)SQLSTATE(右)SQLWARNING(右)SQL_AFTER_GTIDS; 5.6.5新增(预留);在 5.6.6 中成为非保留的SQL_AFTER_MTS_GAPS; 5.6.6新增(非保留)SQL_BEFORE_GTIDS; 5.6.5新增(预留);在 5.6.6 中成为非保留的SQL_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(右)STARTSTARTING(右)STARTSSTATS_AUTO_RECALC; 5.6.6新增(非保留)STATS_PERSISTENT; 5.6.6新增(非保留)STATS_SAMPLE_PAGES; 5.6.6新增(非保留)STATUSSTOPSTORAGESTRAIGHT_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(右)
VALUEVALUES(右)VARBINARY(右)VARCHAR(右)VARCHARACTER(右)VARIABLESVARYING(右)VIEW
WAITWARNINGSWEEKWEIGHT_STRINGWHEN(右)WHERE(右)WHILE(右)WITH(右)WORKWRAPPERWRITE(右)
X509XAXMLXOR(右)
YEARYEAR_MONTH(右)
ZEROFILL(右)
以下列表显示了 MySQL 5.6 中添加的关键字和保留字,与 MySQL 5.5 相比。保留关键字标有 (R)。
一个 | 丙 | D | 乙 | 女 | 格 | 我 | 男 | 否 | 欧 | 磷 | 右 | 年代 | W
ANALYSE
COLUMN_FORMATCURRENT
DEFAULT_AUTHDIAGNOSTICS
EXCHANGEEXPIREEXPORT
FORMAT
GET(右)
IO_AFTER_GTIDS(右)IO_BEFORE_GTIDS(右)
MASTER_AUTO_POSITIONMASTER_BIND(右)MASTER_DELAYMASTER_RETRY_COUNTMASTER_SSL_CRLMASTER_SSL_CRLPATH
NUMBER
ONLY
PLUGIN_DIR
RETURNED_SQLSTATEREVERSEROW_COUNT
SQL_AFTER_GTIDSSQL_AFTER_MTS_GAPSSQL_BEFORE_GTIDSSTATS_AUTO_RECALCSTATS_PERSISTENTSTATS_SAMPLE_PAGES
WEIGHT_STRING