關鍵字是在 SQL 中具有意義的單字。某些關鍵字,例如 SELECT、DELETE 或 BIGINT,會被保留,並且在使用它們作為識別碼(例如表格和欄位名稱)時,需要特別處理。內建函式的名稱也可能如此。
非保留關鍵字允許作為識別碼,而無需加上引號。如果將保留字加上引號,如第 11.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 可以接受作為欄位名稱。但是,預設情況下,函式名稱與後面的 ( 字元之間不允許有空格。此要求使剖析器能夠區分名稱是用在函式呼叫中還是用在非函式上下文中。有關函式名稱識別的更多詳細資訊,請參閱第 11.2.5 節「函式名稱剖析和解析」。
INFORMATION_SCHEMA.KEYWORDS 表格列出了 MySQL 視為關鍵字的單字,並指出它們是否被保留。請參閱第 28.3.17 節「INFORMATION_SCHEMA KEYWORDS 表格」。
以下清單顯示 MySQL 8.4 中的關鍵字和保留字,以及各版本之間個別單字的變更。保留關鍵字標記為 (R)。此外,_FILENAME 也被保留。
在某些時候,您可能會升級到較高的版本,因此最好也看看未來保留字。您可以在涵蓋較高版本 MySQL 的手冊中找到這些保留字。清單中的大多數保留字(例如,GROUP)都被標準 SQL 禁止作為欄位或表格名稱。一些保留字是因為 MySQL 需要它們並使用 yacc 剖析器。
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)ACCOUNTACTIONACTIVEADD(R)ADMINAFTERAGAINSTAGGREGATEALGORITHMALL(R)ALTER(R)ALWAYSANALYZE(R)AND(R)ANYARRAYAS(R)ASC(R)ASCIIASENSITIVE(R)ATATTRIBUTEAUTHENTICATIONAUTOAUTOEXTEND_SIZEAUTO_INCREMENTAVGAVG_ROW_LENGTH
BACKUPBEFORE(R)BEGINBERNOULLIBETWEEN(R)BIGINT(R)BINARY(R)BINLOGBITBLOB(R)BLOCKBOOLBOOLEANBOTH(R)BTREEBUCKETSBULKBY(R)BYTE
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
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
EACH(R)ELSE(R)ELSEIF(R)EMPTY(R)ENABLEENCLOSED(R)ENCRYPTIONENDENDSENFORCEDENGINEENGINESENGINE_ATTRIBUTEENUMERRORERRORSESCAPEESCAPED(R)EVENTEVENTS每個EXCEPT(R)交換排除執行EXISTS(R)EXIT(R)擴展到期EXPLAIN(R)匯出擴充的範圍大小
因素登入失敗嘗試次數FALSE(R)快速錯誤FETCH(R)欄位檔案檔案區塊大小篩選器完成第一FIRST_VALUE(R)固定的FLOAT(R)FLOAT4(R)FLOAT8(R)刷新以下跟隨FOR(R)FORCE(R)FOREIGN(R)格式已找到FROM(R)完整FULLTEXT(R)FUNCTION(R)
一般產生GENERATED(R)幾何集合幾何幾何集合GET(R)取得格式取得來源公開金鑰全域GRANT(R)授權GROUP(R)GROUPING(R)GROUPS(R)群組複製GTIDS僅限 GTID
處理器雜湊HAVING(R)說明HIGH_PRIORITY(R)直方圖歷史記錄主機主機小時HOUR_MICROSECOND(R)HOUR_MINUTE(R)HOUR_SECOND(R)
已識別IF(R)IGNORE(R)忽略伺服器 ID匯入IN(R)非活動INDEX(R)索引INFILE(R)初始初始大小啟動INNER(R)INOUT(R)INSENSITIVE(R)INSERT(R)插入方法安裝執行個體INT(R)INT1(R)INT2(R)INT3(R)INT4(R)INT8(R)INTEGER(R)INTERSECT(R)INTERVAL(R)INTO(R)不可見調用者IOIO_AFTER_GTIDS(R)IO_BEFORE_GTIDS(R)IO 執行緒IPCIS(R)隔離發行者ITERATE(R)
JOIN(R)JSONJSON_TABLE(R)JSON 值
KEY(R)金鑰環KEYS(R)金鑰區塊大小KILL(R)
LAG(R)語言最後LAST_VALUE(R)LATERAL(R)LEAD(R)LEADING(R)LEAVE(R)離開LEFT(R)較少等級LIKE(R)LIMIT(R)LINEAR(R)LINES(R)線字串清單LOAD(R)本機LOCALTIME(R)LOCALTIMESTAMP(R)LOCK(R)已鎖定鎖定記錄記錄檔記錄LONG(R)LONGBLOB(R)LONGTEXT(R)LOOP(R)LOW_PRIORITY(R)
MANUAL(R)主機MATCH(R)MAXVALUE(R)每小時最大連線數每小時最大查詢數最大列數最大大小每小時最大更新次數最大使用者連線數中型MEDIUMBLOB(R)MEDIUMINT(R)MEDIUMTEXT(R)成員記憶體合併訊息文字微秒MIDDLEINT(R)遷移分鐘MINUTE_MICROSECOND(R)MINUTE_SECOND(R)最小列數MOD(R)模式MODIFIES(R)修改月多線字串多點多邊形互斥MYSQL_ERRNO
名稱名稱國家NATURAL(R)NCHARNDBNDB叢集巢狀網路命名空間從不新下一個否節點群組無NOT(R)立即不等待NO_WRITE_TO_BINLOG(R)NTH_VALUE(R)NTILE(R)NULL(R)NULL數字NUMERIC(R)NVARCHAR
OF(R)關閉偏移量OJ舊ON(R)一僅開啟OPTIMIZE(R)OPTIMIZER_COSTS(R)OPTION(R)選用OPTIONALLY(R)選項OR(R)ORDER(R)序數組織其他OUT(R)OUTER(R)OUTFILE(R)OVER(R)擁有者
封裝金鑰頁面PARALLEL(R)剖析器剖析樹狀結構部分PARTITION(R)分割分割區密碼密碼鎖定時間路徑PERCENT_RANK(R)持續僅限持續階段外掛程式外掛程式外掛程式目錄點多邊形連接埠優先在先PRECISION(R)準備保留上一個PRIMARY(R)權限權限檢查使用者PROCEDURE(R)處理處理程序清單設定檔設定檔ProxyPURGE(R)
QUALIFY(R)季查詢快速
隨機RANGE(R)RANK(R)READ(R)READS(R)唯讀READ_WRITE(R)REAL(R)重建復原RECURSIVE(R)重做緩衝區大小多餘參考REFERENCES(R)REGEXP(R)註冊中繼中繼記錄中繼記錄檔中繼記錄位置中繼執行緒RELEASE(R)重新載入移除RENAME(R)重新整理修復REPEAT(R)可重複REPLACE(R)複本複本複製執行資料庫複製執行資料表複製忽略資料庫複製忽略資料表複製重新寫入資料庫複製萬用字元執行資料表複製萬用字元忽略資料表複製REQUIRE(R)需要列格式重設RESIGNAL(R)資源尊重重新啟動還原RESTRICT(R)繼續保留RETURN(R)傳回的 SQLSTATE正在傳回傳回重複使用反向REVOKE(R)RIGHT(R)RLIKE(R)角色復原彙總旋轉常式ROW(R)ROWS(R)列數列格式ROW_NUMBER(R)RTREE
S3儲存點排程SCHEMA(R)SCHEMAS(R)結構描述名稱秒次要次要引擎次要引擎屬性次要載入次要卸載SECOND_MICROSECOND(R)安全性SELECT(R)SENSITIVE(R)SEPARATOR(R)序列可序列化伺服器工作階段SET(R)分享SHOW(R)關閉SIGNAL(R)已簽署簡單跳過從屬慢速SMALLINT(R)快照套接字某些共享函式庫名稱聲音來源來源_自動_定位來源_綁定來源_壓縮_演算法來源_連線_重試來源_延遲來源_心跳_週期來源_主機來源_日誌_檔案來源_日誌_位置來源_密碼來源_連接埠來源_公開金鑰_路徑來源_重試_次數來源_SSL來源_SSL_CA來源_SSL_CAPATH來源_SSL_憑證來源_SSL_加密來源_SSL_CRL來源_SSL_CRLPATH來源_SSL_金鑰來源_SSL_驗證_伺服器_憑證來源_TLS_加密套件來源_TLS_版本來源_使用者來源_ZSTD_壓縮_層級SPATIAL(R)SPECIFIC(R)SQL(R)SQLEXCEPTION(R)SQLSTATE(R)SQLWARNING(R)SQL_在_GTIDS_之後SQL_在_MTS_間隙_之後SQL_在_GTIDS_之前SQL_BIG_RESULT(R)SQL_緩衝_結果SQL_CALC_FOUND_ROWS(R)SQL_不_快取SQL_SMALL_RESULT(R)SQL_執行緒SQL_TSI_天SQL_TSI_小時SQL_TSI_分鐘SQL_TSI_月SQL_TSI_季SQL_TSI_秒SQL_TSI_週SQL_TSI_年SRIDSSL(R)堆疊開始STARTING(R)開始於統計_自動_重新計算統計_持續統計_樣本_頁面狀態停止儲存STORED(R)STRAIGHT_JOIN(R)串流字串子類別_來源主旨子分割區子分割區超級暫停交換開關SYSTEM(R)
TABLE(R)表格TABLESAMPLE(R)表空間表格_檢查和表格_名稱臨時臨時表TERMINATED(R)文字大於THEN(R)執行緒_優先順序並列時間時間戳記時間戳記相加時間戳記相減TINYBLOB(R)TINYINT(R)TINYTEXT(R)TLSTO(R)TRAILING(R)交易TRIGGER(R)觸發器TRUE(R)截斷類型類型
無界限未提交未定義UNDO(R)復原檔案復原_緩衝區_大小萬國碼解除安裝UNION(R)UNIQUE(R)未知UNLOCK(R)取消註冊UNSIGNED(R)直到UPDATE(R)升級網址USAGE(R)USE(R)使用者使用者_資源使用_FRMUSING(R)UTC_DATE(R)UTC_TIME(R)UTC_TIMESTAMP(R)
驗證值VALUES(R)VARBINARY(R)VARCHAR(R)VARCHARACTER(R)變數VARYING(R)虛擬CPU視圖VIRTUAL(R)可見
等待警告週權重_字串WHEN(R)WHERE(R)WHILE(R)WINDOW(R)WITH(R)無工作封裝器WRITE(R)
X509XAXIDXMLXOR(R)
年YEAR_MONTH(R)
ZEROFILL(R)時區
以下清單顯示與 MySQL 8.0 相比,在 MySQL 8.4 中新增的關鍵字和保留字。保留關鍵字標示為 (R)。
A | B | G | L | M | P | Q | S | T
AUTO
BERNOULLI
GTIDS
記錄
MANUAL(R)
PARALLEL(R)剖析樹狀結構
QUALIFY(R)
S3
TABLESAMPLE(R)
以下清單顯示與 MySQL 8.0 相比,在 MySQL 8.4 中移除的關鍵字和保留字。保留關鍵字標示為 (R)。
取得_主機_公開金鑰
主機_自動_定位主機_綁定(R)主機_壓縮_演算法主機_連線_重試主機_延遲主機_心跳_週期主機_主機主機_日誌_檔案主機_日誌_位置主機_密碼主機_連接埠主機_公開金鑰_路徑主機_重試_次數主機_SSL主機_SSL_CA主機_SSL_CAPATH主機_SSL_憑證主機_SSL_加密主機_SSL_CRL主機_SSL_CRLPATH主機_SSL_金鑰主機_SSL_驗證_伺服器_憑證(R)主機_TLS_加密套件主機_TLS_版本主機_使用者主機_ZSTD_壓縮_層級