关键字和保留字
关键字是在SQL中具有重要意义的单词。某些关键字,如SELECT,DELETE或BIGINT,被保留,需要用作标识符,例如表和列名特殊待遇。内置函数的名称也可能如此。
允许使用非保留关键字作为标识符而无需引用。如果您按照“架构对象名称”中的描述引用保留字,则可以将它们用作标识符:
mysql>CREATE TABLE interval (egin 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 ` (egin INT,end INT); Query OK, 0 rows affected (0.01 sec)
例外:限定名称中句点后的单词必须是标识符,因此即使保留该单词也无需加引号:
mysql>CREATE TABLE myd .interval (egin INT,end INT); Query OK, 0 rows affected (0.01 sec)
允许使用内置函数的名称作为标识符,但可能需要谨慎使用。例如,COUNT可接受作为列名。但是,默认情况下,在函数调用中,函数名称和以下(字符之间不允许有空格。此要求使解析器能够区分名称是在函数调用中使用还是在非函数上下文中使用。有关识别函数名称的更多详细信息,请参见“函数名称的解析和解析”。
该INFORMATION_SCHEMA.KEYWORDS表列出了MySQL认为关键字的单词,并指出它们是否保留。请参见“ INFORMATION_SCHEMA关键字表”。
- MySQL 8.0关键字和保留字
- MySQL 8.0新关键字和保留字
- MySQL 8.0删除了关键字和保留字
MySQL 8.0关键字和保留字
以下列表显示了MySQL 8.0中的关键字和保留词,以及各个词在版本之间的更改。保留的关键字标有(R)。另外,_FILENAME是保留的。
在某个时候,您可能会升级到更高的版本,因此最好参见将来的保留字。您可以在涵盖更高版本的MySQL的手册中找到这些内容。标准SQL禁止使用列表中的大多数保留字作为列名或表名(例如GROUP)。保留了一些,因为MySQL需要它们并使用yacc解析器。
A | B | C | D | E | F | G | H |我| J | K | L | M | N | O | P |问| R | S | T | U | V | W | X | Y |ž
一种
ACCESSIBLE(右)ACCOUNTACTIONACTIVE;在8.0.14中添加(非保留)ADD(右)ADMIN;在8.0.12中变为非保留AFTERAGAINSTAGGREGATEALGORITHMALL(右)ALTER(右)ALWAYSANALYSE;在8.0.1中删除ANALYZE(右)AND(右)ANYARRAY;在8.0.17中添加(保留);在8.0.19中变为非保留AS(右)ASC(右)ASCIIASENSITIVE(右)ATAUTOEXTEND_SIZEAUTO_INCREMENTAVGAVG_ROW_LENGTH
乙
BACKUPBEFORE(右)BEGINBETWEEN(右)BIGINT(右)BINARY(右)BINLOGBITBLOB(右)BLOCKBOOLBOOLEANBOTH(右)BTREEBUCKETS;在8.0.2中添加(非保留)BY(右)BYTE
C
CACHECALL(右)CASCADE(右)CASCADEDCASE(右)CATALOG_NAMECHAINCHANGE(右)CHANGEDCHANNELCHAR(右)CHARACTER(右)CHARSETCHECK(右)CHECKSUMCIPHERCLASS_ORIGINCLIENTCLONE;在8.0.3中添加(非保留)CLOSECOALESCECODECOLLATE(右)COLLATIONCOLUMN(右)COLUMNSCOLUMN_FORMATCOLUMN_NAMECOMMENTCOMMITCOMMITTEDCOMPACTCOMPLETIONCOMPONENTCOMPRESSEDCOMPRESSIONCONCURRENTCONDITION(右)CONNECTIONCONSISTENTCONSTRAINT(右)CONSTRAINT_CATALOGCONSTRAINT_NAMECONSTRAINT_SCHEMACONTAINSCONTEXTCONTINUE(右)CONVERT(右)CPUCREATE(右)CROSS(右)CUBE(R);在8.0.1中保留CUME_DIST(R);在8.0.2中添加(保留)CURRENTCURRENT_DATE(右)CURRENT_TIME(右)CURRENT_TIMESTAMP(右)CURRENT_USER(右)CURSOR(右)CURSOR_NAME
d
DATADATABASE(右)DATABASES(右)DATAFILEDATEDATETIMEDAYDAY_HOUR(右)DAY_MICROSECOND(右)DAY_MINUTE(右)DAY_SECOND(右)DEALLOCATEDEC(右)DECIMAL(右)DECLARE(右)DEFAULT(右)DEFAULT_AUTHDEFINERDEFINITION;在8.0.4中添加(非保留)DELAYED(右)DELAY_KEY_WRITEDELETE(右)DENSE_RANK(R);在8.0.2中添加(保留)DESC(右)DESCRIBE(右)DESCRIPTION;在8.0.4中添加(非保留)DES_KEY_FILE;在8.0.3中删除DETERMINISTIC(右)DIAGNOSTICSDIRECTORYDISABLEDISCARDDISKDISTINCT(右)DISTINCTROW(右)DIV(右)DODOUBLE(右)DROP(右)DUAL(右)DUMPFILEDUPLICATEDYNAMIC
Ë
EACH(右)ELSE(右)ELSEIF(右)EMPTY(R);在8.0.4中添加(保留)ENABLEENCLOSED(右)ENCRYPTIONENDENDSENFORCED;在8.0.16中添加(非保留)ENGINEENGINESENUMERRORERRORSESCAPEESCAPED(右)EVENTEVENTSEVERYEXCEPT(右)EXCHANGEEXCLUDE;在8.0.2中添加(非保留)EXECUTEEXISTS(右)EXIT(右)EXPANSIONEXPIREEXPLAIN(右)EXPORTEXTENDEDEXTENT_SIZE
F
FAILED_LOGIN_ATTEMPTS;在8.0.19中添加(非保留)FALSE(右)FASTFAULTSFETCH(右)FIELDSFILEFILE_BLOCK_SIZEFILTERFIRSTFIRST_VALUE(R);在8.0.2中添加(保留)FIXEDFLOAT(右)FLOAT4(右)FLOAT8(右)FLUSHFOLLOWING;在8.0.2中添加(非保留)FOLLOWSFOR(右)FORCE(右)FOREIGN(右)FORMATFOUNDFROM(右)FULLFULLTEXT(右)FUNCTION(R);在8.0.1中保留
G
GENERALGENERATED(右)GEOMCOLLECTION;在8.0.11中添加(非保留)GEOMETRYGEOMETRYCOLLECTIONGET(右)GET_FORMATGET_MASTER_PUBLIC_KEY;在8.0.4中添加(保留);在8.0.11中成为非保留GLOBALGRANT(右)GRANTSGROUP(右)GROUPING(R);在8.0.1中添加(保留)GROUPS(R);在8.0.2中添加(保留)GROUP_REPLICATION
H
HANDLERHASHHAVING(右)HELPHIGH_PRIORITY(右)HISTOGRAM;在8.0.2中添加(非保留)HISTORY;在8.0.3中添加(非保留)HOSTHOSTSHOURHOUR_MICROSECOND(右)HOUR_MINUTE(右)HOUR_SECOND(右)
一世
IDENTIFIEDIF(右)IGNORE(右)IGNORE_SERVER_IDSIMPORTIN(右)INACTIVE;在8.0.14中添加(非保留)INDEX(右)INDEXESINFILE(右)INITIAL_SIZEINNER(右)INOUT(右)INSENSITIVE(右)INSERT(右)INSERT_METHODINSTALLINSTANCEINT(右)INT1(右)INT2(右)INT3(右)INT4(右)INT8(右)INTEGER(右)INTERVAL(右)INTO(右)INVISIBLEINVOKERIOIO_AFTER_GTIDS(右)IO_BEFORE_GTIDS(右)IO_THREADIPCIS(右)ISOLATIONISSUERITERATE(右)
Ĵ
JOIN(右)JSONJSON_TABLE(R);在8.0.4中添加(保留)JSON_VALUE;在8.0.21中添加(非保留)
ķ
KEY(右)KEYS(右)KEY_BLOCK_SIZEKILL(右)
大号
LAG(R);在8.0.2中添加(保留)LANGUAGELASTLAST_VALUE(R);在8.0.2中添加(保留)LATERAL(R);在8.0.14中添加(保留)LEAD(R);在8.0.2中添加(保留)LEADING(右)LEAVE(右)LEAVESLEFT(右)LESSLEVELLIKE(右)LIMIT(右)LINEAR(右)LINES(右)LINESTRINGLISTLOAD(右)LOCALLOCALTIME(右)LOCALTIMESTAMP(右)LOCK(右)LOCKED;在8.0.1中添加(非保留)LOCKSLOGFILELOGSLONG(右)LONGBLOB(右)LONGTEXT(右)LOOP(右)LOW_PRIORITY(右)
中号
MASTERMASTER_AUTO_POSITIONMASTER_BIND(右)MASTER_COMPRESSION_ALGORITHMS;在8.0.18中添加(非保留)MASTER_CONNECT_RETRYMASTER_DELAYMASTER_HEARTBEAT_PERIODMASTER_HOSTMASTER_LOG_FILEMASTER_LOG_POSMASTER_PASSWORDMASTER_PORTMASTER_PUBLIC_KEY_PATH;在8.0.4中添加(非保留)MASTER_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_CIPHERSUITES;在8.0.19中添加(非保留)MASTER_TLS_VERSIONMASTER_USERMASTER_ZSTD_COMPRESSION_LEVEL;在8.0.18中添加(非保留)MATCH(右)MAXVALUE(右)MAX_CONNECTIONS_PER_HOURMAX_QUERIES_PER_HOURMAX_ROWSMAX_SIZEMAX_UPDATES_PER_HOURMAX_USER_CONNECTIONSMEDIUMMEDIUMBLOB(右)MEDIUMINT(右)MEDIUMTEXT(右)MEMBER;在8.0.17中添加(保留);在8.0.19中变为非保留MEMORYMERGEMESSAGE_TEXTMICROSECONDMIDDLEINT(右)MIGRATEMINUTEMINUTE_MICROSECOND(右)MINUTE_SECOND(右)MIN_ROWSMOD(右)MODEMODIFIES(右)MODIFYMONTHMULTILINESTRINGMULTIPOINTMULTIPOLYGONMUTEXMYSQL_ERRNO
ñ
NAMENAMESNATIONALNATURAL(右)NCHARNDBNDBCLUSTERNESTED;在8.0.4中添加(非保留)NETWORK_NAMESPACE;在8.0.16中添加(非保留)NEVERNEWNEXTNONODEGROUPNONENOT(右)NOWAIT;在8.0.1中添加(非保留)NO_WAITNO_WRITE_TO_BINLOG(右)NTH_VALUE(R);在8.0.2中添加(保留)NTILE(R);在8.0.2中添加(保留)NULL(右)NULLS;在8.0.2中添加(非保留)NUMBERNUMERIC(右)NVARCHAR
Ø
OF(R);在8.0.1中添加(保留)OFF;在8.0.20中添加(非保留)OFFSETOJ;在8.0.16中添加(非保留)OLD;在8.0.14中添加(非保留)ON(右)ONEONLYOPENOPTIMIZE(右)OPTIMIZER_COSTS(右)OPTION(右)OPTIONAL;在8.0.13中添加(非保留)OPTIONALLY(右)OPTIONSOR(右)ORDER(右)ORDINALITY;在8.0.4中添加(非保留)ORGANIZATION;在8.0.4中添加(非保留)OTHERS;在8.0.2中添加(非保留)OUT(右)OUTER(右)OUTFILE(右)OVER(R);在8.0.2中添加(保留)OWNER
P
PACK_KEYSPAGEPARSERPARTIALPARTITION(右)PARTITIONINGPARTITIONSPASSWORDPASSWORD_LOCK_TIME;在8.0.19中添加(非保留)PATH;在8.0.4中添加(非保留)PERCENT_RANK(R);在8.0.2中添加(保留)PERSIST;在8.0.16中变为非保留PERSIST_ONLY;在8.0.2中添加(保留);在8.0.16中变为非保留PHASEPLUGINPLUGINSPLUGIN_DIRPOINTPOLYGONPORTPRECEDESPRECEDING;在8.0.2中添加(非保留)PRECISION(右)PREPAREPRESERVEPREVPRIMARY(右)PRIVILEGESPRIVILEGE_CHECKS_USER;在8.0.18中添加(非保留)PROCEDURE(右)PROCESS;在8.0.11中添加(非保留)PROCESSLISTPROFILEPROFILESPROXYPURGE(右)
问
QUARTERQUERYQUICK
[R
RANDOM;在8.0.18中添加(非保留)RANGE(右)RANK(R);在8.0.2中添加(保留)READ(右)READS(右)READ_ONLYREAD_WRITE(右)REAL(右)REBUILDRECOVERRECURSIVE(R);在8.0.1中添加(保留)REDOFILE;在8.0.3中删除REDO_BUFFER_SIZEREDUNDANTREFERENCE;在8.0.4中添加(非保留)REFERENCES(右)REGEXP(右)RELAYRELAYLOGRELAY_LOG_FILERELAY_LOG_POSRELAY_THREADRELEASE(右)RELOADREMOTE;在8.0.3中添加(非保留);在8.0.14中删除REMOVERENAME(右)REORGANIZEREPAIRREPEAT(右)REPEATABLEREPLACE(右)REPLICATE_DO_DBREPLICATE_DO_TABLEREPLICATE_IGNORE_DBREPLICATE_IGNORE_TABLEREPLICATE_REWRITE_DBREPLICATE_WILD_DO_TABLEREPLICATE_WILD_IGNORE_TABLEREPLICATIONREQUIRE(右)REQUIRE_ROW_FORMAT;在8.0.19中添加(非保留)RESETRESIGNAL(右)RESOURCE;在8.0.3中添加(非保留)RESPECT;在8.0.2中添加(非保留)RESTART;在8.0.4中添加(非保留)RESTORERESTRICT(右)RESUMERETAIN;在8.0.14中添加(非保留)RETURN(右)RETURNED_SQLSTATERETURNING;在8.0.21中添加(非保留)RETURNSREUSE;在8.0.3中添加(非保留)REVERSEREVOKE(右)RIGHT(右)RLIKE(右)ROLE;在8.0.1中变为非保留ROLLBACKROLLUPROTATEROUTINEROW(R);在8.0.2中保留ROWS(R);在8.0.2中保留ROW_COUNTROW_FORMATROW_NUMBER(R);在8.0.2中添加(保留)RTREE
小号
SAVEPOINTSCHEDULESCHEMA(右)SCHEMAS(右)SCHEMA_NAMESECONDSECONDARY;在8.0.16中添加(非保留)SECONDARY_ENGINE;在8.0.13中添加(非保留)SECONDARY_LOAD;在8.0.13中添加(非保留)SECONDARY_UNLOAD;在8.0.13中添加(非保留)SECOND_MICROSECOND(右)SECURITYSELECT(右)SENSITIVE(右)SEPARATOR(右)SERIALSERIALIZABLESERVERSESSIONSET(右)SHARESHOW(右)SHUTDOWNSIGNAL(右)SIGNEDSIMPLESKIP;在8.0.1中添加(非保留)SLAVESLOWSMALLINT(右)SNAPSHOTSOCKETSOMESONAMESOUNDSSOURCESPATIAL(右)SPECIFIC(右)SQL(右)SQLEXCEPTION(右)SQLSTATE(右)SQLWARNING(右)SQL_AFTER_GTIDSSQL_AFTER_MTS_GAPSSQL_BEFORE_GTIDSSQL_BIG_RESULT(右)SQL_BUFFER_RESULTSQL_CACHE;在8.0.3中删除SQL_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_YEARSRID;在8.0.3中添加(非保留)SSL(右)STACKEDSTARTSTARTING(右)STARTSSTATS_AUTO_RECALCSTATS_PERSISTENTSTATS_SAMPLE_PAGESSTATUSSTOPSTORAGESTORED(右)STRAIGHT_JOIN(右)STREAM;在8.0.20中添加(非保留)STRINGSUBCLASS_ORIGINSUBJECTSUBPARTITIONSUBPARTITIONSSUPERSUSPENDSWAPSSWITCHESSYSTEM(R);在8.0.3中添加(保留)
Ť
TABLE(右)TABLESTABLESPACETABLE_CHECKSUMTABLE_NAMETEMPORARYTEMPTABLETERMINATED(右)TEXTTHANTHEN(右)THREAD_PRIORITY;在8.0.3中添加(非保留)TIES;在8.0.2中添加(非保留)TIMETIMESTAMPTIMESTAMPADDTIMESTAMPDIFFTINYBLOB(右)TINYINT(右)TINYTEXT(右)TO(右)TRAILING(右)TRANSACTIONTRIGGER(右)TRIGGERSTRUE(右)TRUNCATETYPETYPES
ü
UNBOUNDED;在8.0.2中添加(非保留)UNCOMMITTEDUNDEFINEDUNDO(右)UNDOFILEUNDO_BUFFER_SIZEUNICODEUNINSTALLUNION(右)UNIQUE(右)UNKNOWNUNLOCK(右)UNSIGNED(右)UNTILUPDATE(右)UPGRADEUSAGE(右)USE(右)USERUSER_RESOURCESUSE_FRMUSING(右)UTC_DATE(右)UTC_TIME(右)UTC_TIMESTAMP(右)
V
VALIDATIONVALUEVALUES(右)VARBINARY(右)VARCHAR(右)VARCHARACTER(右)VARIABLESVARYING(右)VCPU;在8.0.3中添加(非保留)VIEWVIRTUAL(右)VISIBLE
w ^
WAITWARNINGSWEEKWEIGHT_STRINGWHEN(右)WHERE(右)WHILE(右)WINDOW(R);在8.0.2中添加(保留)WITH(右)WITHOUTWORKWRAPPERWRITE(右)
X
X509XAXIDXMLXOR(右)
ÿ
YEARYEAR_MONTH(右)
ž
ZEROFILL(右)
MySQL 8.0新关键字和保留字
下表显示了与MySQL 5.7相比在MySQL 8.0中添加的关键字和保留字。保留的关键字标有(R)。
A | B | C | D | E | F | G | H |我| J | L | M | N | O | P | R | S | T | U | V | w ^
一种
ACTIVEADMINARRAY
乙
BUCKETS
C
CLONECOMPONENTCUME_DIST(右)
d
DEFINITIONDENSE_RANK(右)DESCRIPTION
Ë
EMPTY(右)ENFORCEDEXCEPT(右)EXCLUDE
F
FAILED_LOGIN_ATTEMPTSFIRST_VALUE(右)FOLLOWING
G
GEOMCOLLECTIONGET_MASTER_PUBLIC_KEYGROUPING(右)GROUPS(右)
H
HISTOGRAMHISTORY
一世
INACTIVEINVISIBLE
Ĵ
JSON_TABLE(右)JSON_VALUE
大号
LAG(右)LAST_VALUE(右)LATERAL(右)LEAD(右)LOCKED
中号
MASTER_COMPRESSION_ALGORITHMSMASTER_PUBLIC_KEY_PATHMASTER_TLS_CIPHERSUITESMASTER_ZSTD_COMPRESSION_LEVELMEMBER
ñ
NESTEDNETWORK_NAMESPACENOWAITNTH_VALUE(右)NTILE(右)NULLS
Ø
OF(右)OFFOJOLDOPTIONALORDINALITYORGANIZATIONOTHERSOVER(右)
P
PASSWORD_LOCK_TIMEPATHPERCENT_RANK(右)PERSISTPERSIST_ONLYPRECEDINGPRIVILEGE_CHECKS_USERPROCESS
[R
RANDOMRANK(右)RECURSIVE(右)REFERENCEREQUIRE_ROW_FORMATRESOURCERESPECTRESTARTRETAINRETURNINGREUSEROLEROW_NUMBER(右)
小号
SECONDARYSECONDARY_ENGINESECONDARY_LOADSECONDARY_UNLOADSKIPSRIDSTREAMSYSTEM(右)
Ť
THREAD_PRIORITYTIES
ü
UNBOUNDED
V
VCPUVISIBLE
w ^
WINDOW(右)
MySQL 8.0删除了关键字和保留字
下表显示了与MySQL 5.7相比在MySQL 8.0中删除的关键字和保留词。保留的关键字标有(R)。
ANALYSEDES_KEY_FILEPARSE_GCOL_EXPRREDOFILE
