1.问题描述

项目引入 shardingsphere 做数据脱敏,在部署到线上时 发现说不准业务执行哪段sql语句就会报如下错误

Caused by: org.apache.shardingsphere.sql.parser.exception.SQLParsingException: 
You have an error in your SQL syntax

2.解决过程

本以为 是因为 4.10版本太低导致的 结果升级成5.0.0版本仍然存在,然而执行的sql语句在为引入shardingsphere之前并没有问题,以下是报错的mysql语句
 

||2022-05-16 11:30:32.541||INFO||ShardingSphere-SQL||hangtian-ewy-crm-provider||Logic SQL: SELECT  id,emp_id,emp_no,com_id,rank,status,product_type,dept_id,dept_name,create_time,create_by,update_time,update_by,is_del,reward_rank,is_approve,is_add_link,book_auth,data_auth,book_dept_ids,open_bank,open_bank_no,phone,use_status,station_no  FROM crm_emp_company 
 WHERE emp_id = ? AND status IN (?,?,?,?) AND is_del = ? 
 

经过排查发现 查询的字段属性中 由于存在 "rank"这个字段 导致 ShardingJDBC 在解析语句时发生异常

去github上找到项目的Issues模块 发现有人遇到了相同的问题 同样是 shardingsphere 解析语句中包含"rank"报异常,官方给出的解释如下
 

 

翻译过来就是 mysql8.0不支持 rank关键字 因为是mysql的保留字段 

突然醒悟 我们的项目用的mysql版本还是 5.7的版本所以 使用过程中没有异常出现,但是shardingsphere 采用了mysql8.0的保留关键字规则,于是乎 我重点筛查了项目中所有不符合保留关键字的sql语句 加以修改
 

3.mysql8.0的保留关键字

MySQL 关键字和保留字汇总(MySQL 8.0)
关键字是在SQL中具有重要意义的单词,如果作为列名则会导致SQL语句出错。

可以使用反引号来避免错误。列如:rank作为保留字,可以采用'rank'。

但是反引号这种方式尽量避免,也就是说列名设计避免关键字与保留字带引号的方式,采取前后缀,多个单词拼接等合理的方式来避免引号

## MySQL 关键字以及保留字

#### A

- `ACCESSIBLE` (R)
- `ACCOUNT`
- `ACTION`
- `ACTIVE`; added in 8.0.14 (nonreserved)
- `ADD` (R)
- `ADMIN`; became nonreserved in 8.0.12
- `AFTER`
- `AGAINST`
- `AGGREGATE`
- `ALGORITHM`
- `ALL` (R)
- `ALTER` (R)
- `ALWAYS`
- `ANALYSE`; removed in 8.0.1
- `ANALYZE` (R)
- `AND` (R)
- `ANY`
- `ARRAY`; added in 8.0.17 (reserved); became nonreserved in 8.0.19
- `AS` (R)
- `ASC` (R)
- `ASCII`
- `ASENSITIVE` (R)
- `AT`
- `ATTRIBUTE`; added in 8.0.21 (nonreserved)
- `AUTOEXTEND_SIZE`
- `AUTO_INCREMENT`
- `AVG`
- `AVG_ROW_LENGTH`
 
#### B
 
- `BACKUP`
- `BEFORE` (R)
- `BEGIN`
- `BETWEEN` (R)
- `BIGINT` (R)
- `BINARY` (R)
- `BINLOG`
- `BIT`
- `BLOB` (R)
- `BLOCK`
- `BOOL`
- `BOOLEAN`
- `BOTH` (R)
- `BTREE`
- `BUCKETS`; added in 8.0.2 (nonreserved)
- `BY` (R)
- `BYTE`
 
#### C
 
- `CACHE`
- `CALL` (R)
- `CASCADE` (R)
- `CASCADED`
- `CASE` (R)
- `CATALOG_NAME`
- `CHAIN`
- `CHANGE` (R)
- `CHANGED`
- `CHANNEL`
- `CHAR` (R)
- `CHARACTER` (R)
- `CHARSET`
- `CHECK` (R)
- `CHECKSUM`
- `CIPHER`
- `CLASS_ORIGIN`
- `CLIENT`
- `CLONE`; added in 8.0.3 (nonreserved)
- `CLOSE`
- `COALESCE`
- `CODE`
- `COLLATE` (R)
- `COLLATION`
- `COLUMN` (R)
- `COLUMNS`
- `COLUMN_FORMAT`
- `COLUMN_NAME`
- `COMMENT`
- `COMMIT`
- `COMMITTED`
- `COMPACT`
- `COMPLETION`
- `COMPONENT`
- `COMPRESSED`
- `COMPRESSION`
- `CONCURRENT`
- `CONDITION` (R)
- `CONNECTION`
- `CONSISTENT`
- `CONSTRAINT` (R)
- `CONSTRAINT_CATALOG`
- `CONSTRAINT_NAME`
- `CONSTRAINT_SCHEMA`
- `CONTAINS`
- `CONTEXT`
- `CONTINUE` (R)
- `CONVERT` (R)
- `CPU`
- `CREATE` (R)
- `CROSS` (R)
- `CUBE` (R); became reserved in 8.0.1
- `CUME_DIST` (R); added in 8.0.2 (reserved)
- `CURRENT`
- `CURRENT_DATE` (R)
- `CURRENT_TIME` (R)
- `CURRENT_TIMESTAMP` (R)
- `CURRENT_USER` (R)
- `CURSOR` (R)
- `CURSOR_NAME`
 
#### D
 
- `DATA`
- `DATABASE` (R)
- `DATABASES` (R)
- `DATAFILE`
- `DATE`
- `DATETIME`
- `DAY`
- `DAY_HOUR` (R)
- `DAY_MICROSECOND` (R)
- `DAY_MINUTE` (R)
- `DAY_SECOND` (R)
- `DEALLOCATE`
- `DEC` (R)
- `DECIMAL` (R)
- `DECLARE` (R)
- `DEFAULT` (R)
- `DEFAULT_AUTH`
- `DEFINER`
- `DEFINITION`; added in 8.0.4 (nonreserved)
- `DELAYED` (R)
- `DELAY_KEY_WRITE`
- `DELETE` (R)
- `DENSE_RANK` (R); added in 8.0.2 (reserved)
- `DESC` (R)
- `DESCRIBE` (R)
- `DESCRIPTION`; added in 8.0.4 (nonreserved)
- `DES_KEY_FILE`; removed in 8.0.3
- `DETERMINISTIC` (R)
- `DIAGNOSTICS`
- `DIRECTORY`
- `DISABLE`
- `DISCARD`
- `DISK`
- `DISTINCT` (R)
- `DISTINCTROW` (R)
- `DIV` (R)
- `DO`
- `DOUBLE` (R)
- `DROP` (R)
- `DUAL` (R)
- `DUMPFILE`
- `DUPLICATE`
- `DYNAMIC`
 
#### E
 
- `EACH` (R)
- `ELSE` (R)
- `ELSEIF` (R)
- `EMPTY` (R); added in 8.0.4 (reserved)
- `ENABLE`
- `ENCLOSED` (R)
- `ENCRYPTION`
- `END`
- `ENDS`
- `ENFORCED`; added in 8.0.16 (nonreserved)
- `ENGINE`
- `ENGINES`
- `ENGINE_ATTRIBUTE`; added in 8.0.21 (nonreserved)
- `ENUM`
- `ERROR`
- `ERRORS`
- `ESCAPE`
- `ESCAPED` (R)
- `EVENT`
- `EVENTS`
- `EVERY`
- `EXCEPT` (R)
- `EXCHANGE`
- `EXCLUDE`; added in 8.0.2 (nonreserved)
- `EXECUTE`
- `EXISTS` (R)
- `EXIT` (R)
- `EXPANSION`
- `EXPIRE`
- `EXPLAIN` (R)
- `EXPORT`
- `EXTENDED`
- `EXTENT_SIZE`
 
#### F
 
- `FAILED_LOGIN_ATTEMPTS`; added in 8.0.19 (nonreserved)
- `FALSE` (R)
- `FAST`
- `FAULTS`
- `FETCH` (R)
- `FIELDS`
- `FILE`
- `FILE_BLOCK_SIZE`
- `FILTER`
- `FIRST`
- `FIRST_VALUE` (R); added in 8.0.2 (reserved)
- `FIXED`
- `FLOAT` (R)
- `FLOAT4` (R)
- `FLOAT8` (R)
- `FLUSH`
- `FOLLOWING`; added in 8.0.2 (nonreserved)
- `FOLLOWS`
- `FOR` (R)
- `FORCE` (R)
- `FOREIGN` (R)
- `FORMAT`
- `FOUND`
- `FROM` (R)
- `FULL`
- `FULLTEXT` (R)
- `FUNCTION` (R); became reserved in 8.0.1
 
#### G
 
- `GENERAL`
- `GENERATED` (R)
- `GEOMCOLLECTION`; added in 8.0.11 (nonreserved)
- `GEOMETRY`
- `GEOMETRYCOLLECTION`
- `GET` (R)
- `GET_FORMAT`
- `GET_MASTER_PUBLIC_KEY`; added in 8.0.4 (reserved); became nonreserved in 8.0.11
- `GLOBAL`
- `GRANT` (R)
- `GRANTS`
- `GROUP` (R)
- `GROUPING` (R); added in 8.0.1 (reserved)
- `GROUPS` (R); added in 8.0.2 (reserved)
- `GROUP_REPLICATION`
 
#### H
 
- `HANDLER`
- `HASH`
- `HAVING` (R)
- `HELP`
- `HIGH_PRIORITY` (R)
- `HISTOGRAM`; added in 8.0.2 (nonreserved)
- `HISTORY`; added in 8.0.3 (nonreserved)
- `HOST`
- `HOSTS`
- `HOUR`
- `HOUR_MICROSECOND` (R)
- `HOUR_MINUTE` (R)
- `HOUR_SECOND` (R)
 
#### I
 
- `IDENTIFIED`
- `IF` (R)
- `IGNORE` (R)
- `IGNORE_SERVER_IDS`
- `IMPORT`
- `IN` (R)
- `INACTIVE`; added in 8.0.14 (nonreserved)
- `INDEX` (R)
- `INDEXES`
- `INFILE` (R)
- `INITIAL_SIZE`
- `INNER` (R)
- `INOUT` (R)
- `INSENSITIVE` (R)
- `INSERT` (R)
- `INSERT_METHOD`
- `INSTALL`
- `INSTANCE`
- `INT` (R)
- `INT1` (R)
- `INT2` (R)
- `INT3` (R)
- `INT4` (R)
- `INT8` (R)
- `INTEGER` (R)
- `INTERVAL` (R)
- `INTO` (R)
- `INVISIBLE`
- `INVOKER`
- `IO`
- `IO_AFTER_GTIDS` (R)
- `IO_BEFORE_GTIDS` (R)
- `IO_THREAD`
- `IPC`
- `IS` (R)
- `ISOLATION`
- `ISSUER`
- `ITERATE` (R)
 
#### J
 
- `JOIN` (R)
- `JSON`
- `JSON_TABLE` (R); added in 8.0.4 (reserved)
- `JSON_VALUE`; added in 8.0.21 (nonreserved)
 
#### K
 
- `KEY` (R)
- `KEYS` (R)
- `KEY_BLOCK_SIZE`
- `KILL` (R)
 
#### L
 
- `LAG` (R); added in 8.0.2 (reserved)
- `LANGUAGE`
- `LAST`
- `LAST_VALUE` (R); added in 8.0.2 (reserved)
- `LATERAL` (R); added in 8.0.14 (reserved)
- `LEAD` (R); added in 8.0.2 (reserved)
- `LEADING` (R)
- `LEAVE` (R)
- `LEAVES`
- `LEFT` (R)
- `LESS`
- `LEVEL`
- `LIKE` (R)
- `LIMIT` (R)
- `LINEAR` (R)
- `LINES` (R)
- `LINESTRING`
- `LIST`
- `LOAD` (R)
- `LOCAL`
- `LOCALTIME` (R)
- `LOCALTIMESTAMP` (R)
- `LOCK` (R)
- `LOCKED`; added in 8.0.1 (nonreserved)
- `LOCKS`
- `LOGFILE`
- `LOGS`
- `LONG` (R)
- `LONGBLOB` (R)
- `LONGTEXT` (R)
- `LOOP` (R)
- `LOW_PRIORITY` (R)
 
#### M
 
- `MASTER`
- `MASTER_AUTO_POSITION`
- `MASTER_BIND` (R)
- `MASTER_COMPRESSION_ALGORITHMS`; added in 8.0.18 (nonreserved)
- `MASTER_CONNECT_RETRY`
- `MASTER_DELAY`
- `MASTER_HEARTBEAT_PERIOD`
- `MASTER_HOST`
- `MASTER_LOG_FILE`
- `MASTER_LOG_POS`
- `MASTER_PASSWORD`
- `MASTER_PORT`
- `MASTER_PUBLIC_KEY_PATH`; added in 8.0.4 (nonreserved)
- `MASTER_RETRY_COUNT`
- `MASTER_SERVER_ID`
- `MASTER_SSL`
- `MASTER_SSL_CA`
- `MASTER_SSL_CAPATH`
- `MASTER_SSL_CERT`
- `MASTER_SSL_CIPHER`
- `MASTER_SSL_CRL`
- `MASTER_SSL_CRLPATH`
- `MASTER_SSL_KEY`
- `MASTER_SSL_VERIFY_SERVER_CERT` (R)
- `MASTER_TLS_CIPHERSUITES`; added in 8.0.19 (nonreserved)
- `MASTER_TLS_VERSION`
- `MASTER_USER`
- `MASTER_ZSTD_COMPRESSION_LEVEL`; added in 8.0.18 (nonreserved)
- `MATCH` (R)
- `MAXVALUE` (R)
- `MAX_CONNECTIONS_PER_HOUR`
- `MAX_QUERIES_PER_HOUR`
- `MAX_ROWS`
- `MAX_SIZE`
- `MAX_UPDATES_PER_HOUR`
- `MAX_USER_CONNECTIONS`
- `MEDIUM`
- `MEDIUMBLOB` (R)
- `MEDIUMINT` (R)
- `MEDIUMTEXT` (R)
- `MEMBER`; added in 8.0.17 (reserved); became nonreserved in 8.0.19
- `MEMORY`
- `MERGE`
- `MESSAGE_TEXT`
- `MICROSECOND`
- `MIDDLEINT` (R)
- `MIGRATE`
- `MINUTE`
- `MINUTE_MICROSECOND` (R)
- `MINUTE_SECOND` (R)
- `MIN_ROWS`
- `MOD` (R)
- `MODE`
- `MODIFIES` (R)
- `MODIFY`
- `MONTH`
- `MULTILINESTRING`
- `MULTIPOINT`
- `MULTIPOLYGON`
- `MUTEX`
- `MYSQL_ERRNO`
 
#### N
 
- `NAME`
- `NAMES`
- `NATIONAL`
- `NATURAL` (R)
- `NCHAR`
- `NDB`
- `NDBCLUSTER`
- `NESTED`; added in 8.0.4 (nonreserved)
- `NETWORK_NAMESPACE`; added in 8.0.16 (nonreserved)
- `NEVER`
- `NEW`
- `NEXT`
- `NO`
- `NODEGROUP`
- `NONE`
- `NOT` (R)
- `NOWAIT`; added in 8.0.1 (nonreserved)
- `NO_WAIT`
- `NO_WRITE_TO_BINLOG` (R)
- `NTH_VALUE` (R); added in 8.0.2 (reserved)
- `NTILE` (R); added in 8.0.2 (reserved)
- `NULL` (R)
- `NULLS`; added in 8.0.2 (nonreserved)
- `NUMBER`
- `NUMERIC` (R)
- `NVARCHAR`
 
#### O
 
- `OF` (R); added in 8.0.1 (reserved)
- `OFF`; added in 8.0.20 (nonreserved)
- `OFFSET`
- `OJ`; added in 8.0.16 (nonreserved)
- `OLD`; added in 8.0.14 (nonreserved)
- `ON` (R)
- `ONE`
- `ONLY`
- `OPEN`
- `OPTIMIZE` (R)
- `OPTIMIZER_COSTS` (R)
- `OPTION` (R)
- `OPTIONAL`; added in 8.0.13 (nonreserved)
- `OPTIONALLY` (R)
- `OPTIONS`
- `OR` (R)
- `ORDER` (R)
- `ORDINALITY`; added in 8.0.4 (nonreserved)
- `ORGANIZATION`; added in 8.0.4 (nonreserved)
- `OTHERS`; added in 8.0.2 (nonreserved)
- `OUT` (R)
- `OUTER` (R)
- `OUTFILE` (R)
- `OVER` (R); added in 8.0.2 (reserved)
- `OWNER`
 
#### P
 
- `PACK_KEYS`
- `PAGE`
- `PARSER`
- `PARTIAL`
- `PARTITION` (R)
- `PARTITIONING`
- `PARTITIONS`
- `PASSWORD`
- `PASSWORD_LOCK_TIME`; added in 8.0.19 (nonreserved)
- `PATH`; added in 8.0.4 (nonreserved)
- `PERCENT_RANK` (R); added in 8.0.2 (reserved)
- `PERSIST`; became nonreserved in 8.0.16
- `PERSIST_ONLY`; added in 8.0.2 (reserved); became nonreserved in 8.0.16
- `PHASE`
- `PLUGIN`
- `PLUGINS`
- `PLUGIN_DIR`
- `POINT`
- `POLYGON`
- `PORT`
- `PRECEDES`
- `PRECEDING`; added in 8.0.2 (nonreserved)
- `PRECISION` (R)
- `PREPARE`
- `PRESERVE`
- `PREV`
- `PRIMARY` (R)
- `PRIVILEGES`
- `PRIVILEGE_CHECKS_USER`; added in 8.0.18 (nonreserved)
- `PROCEDURE` (R)
- `PROCESS`; added in 8.0.11 (nonreserved)
- `PROCESSLIST`
- `PROFILE`
- `PROFILES`
- `PROXY`
- `PURGE` (R)
 
#### Q
 
- `QUARTER`
- `QUERY`
- `QUICK`
 
#### R
 
- `RANDOM`; added in 8.0.18 (nonreserved)
- `RANGE` (R)
- `RANK` (R); added in 8.0.2 (reserved)
- `READ` (R)
- `READS` (R)
- `READ_ONLY`
- `READ_WRITE` (R)
- `REAL` (R)
- `REBUILD`
- `RECOVER`
- `RECURSIVE` (R); added in 8.0.1 (reserved)
- `REDOFILE`; removed in 8.0.3
- `REDO_BUFFER_SIZE`
- `REDUNDANT`
- `REFERENCE`; added in 8.0.4 (nonreserved)
- `REFERENCES` (R)
- `REGEXP` (R)
- `RELAY`
- `RELAYLOG`
- `RELAY_LOG_FILE`
- `RELAY_LOG_POS`
- `RELAY_THREAD`
- `RELEASE` (R)
- `RELOAD`
- `REMOTE`; added in 8.0.3 (nonreserved); removed in 8.0.14
- `REMOVE`
- `RENAME` (R)
- `REORGANIZE`
- `REPAIR`
- `REPEAT` (R)
- `REPEATABLE`
- `REPLACE` (R)
- `REPLICA`; added in 8.0.22 (nonreserved)
- `REPLICAS`; added in 8.0.22 (nonreserved)
- `REPLICATE_DO_DB`
- `REPLICATE_DO_TABLE`
- `REPLICATE_IGNORE_DB`
- `REPLICATE_IGNORE_TABLE`
- `REPLICATE_REWRITE_DB`
- `REPLICATE_WILD_DO_TABLE`
- `REPLICATE_WILD_IGNORE_TABLE`
- `REPLICATION`
- `REQUIRE` (R)
- `REQUIRE_ROW_FORMAT`; added in 8.0.19 (nonreserved)
- `RESET`
- `RESIGNAL` (R)
- `RESOURCE`; added in 8.0.3 (nonreserved)
- `RESPECT`; added in 8.0.2 (nonreserved)
- `RESTART`; added in 8.0.4 (nonreserved)
- `RESTORE`
- `RESTRICT` (R)
- `RESUME`
- `RETAIN`; added in 8.0.14 (nonreserved)
- `RETURN` (R)
- `RETURNED_SQLSTATE`
- `RETURNING`; added in 8.0.21 (nonreserved)
- `RETURNS`
- `REUSE`; added in 8.0.3 (nonreserved)
- `REVERSE`
- `REVOKE` (R)
- `RIGHT` (R)
- `RLIKE` (R)
- `ROLE`; became nonreserved in 8.0.1
- `ROLLBACK`
- `ROLLUP`
- `ROTATE`
- `ROUTINE`
- `ROW` (R); became reserved in 8.0.2
- `ROWS` (R); became reserved in 8.0.2
- `ROW_COUNT`
- `ROW_FORMAT`
- `ROW_NUMBER` (R); added in 8.0.2 (reserved)
- `RTREE`
 
#### S
 
- `SAVEPOINT`
- `SCHEDULE`
- `SCHEMA` (R)
- `SCHEMAS` (R)
- `SCHEMA_NAME`
- `SECOND`
- `SECONDARY`; added in 8.0.16 (nonreserved)
- `SECONDARY_ENGINE`; added in 8.0.13 (nonreserved)
- `SECONDARY_ENGINE_ATTRIBUTE`; added in 8.0.21 (nonreserved)
- `SECONDARY_LOAD`; added in 8.0.13 (nonreserved)
- `SECONDARY_UNLOAD`; added in 8.0.13 (nonreserved)
- `SECOND_MICROSECOND` (R)
- `SECURITY`
- `SELECT` (R)
- `SENSITIVE` (R)
- `SEPARATOR` (R)
- `SERIAL`
- `SERIALIZABLE`
- `SERVER`
- `SESSION`
- `SET` (R)
- `SHARE`
- `SHOW` (R)
- `SHUTDOWN`
- `SIGNAL` (R)
- `SIGNED`
- `SIMPLE`
- `SKIP`; added in 8.0.1 (nonreserved)
- `SLAVE`
- `SLOW`
- `SMALLINT` (R)
- `SNAPSHOT`
- `SOCKET`
- `SOME`
- `SONAME`
- `SOUNDS`
- `SOURCE`
- `SPATIAL` (R)
- `SPECIFIC` (R)
- `SQL` (R)
- `SQLEXCEPTION` (R)
- `SQLSTATE` (R)
- `SQLWARNING` (R)
- `SQL_AFTER_GTIDS`
- `SQL_AFTER_MTS_GAPS`
- `SQL_BEFORE_GTIDS`
- `SQL_BIG_RESULT` (R)
- `SQL_BUFFER_RESULT`
- `SQL_CACHE`; removed in 8.0.3
- `SQL_CALC_FOUND_ROWS` (R)
- `SQL_NO_CACHE`
- `SQL_SMALL_RESULT` (R)
- `SQL_THREAD`
- `SQL_TSI_DAY`
- `SQL_TSI_HOUR`
- `SQL_TSI_MINUTE`
- `SQL_TSI_MONTH`
- `SQL_TSI_QUARTER`
- `SQL_TSI_SECOND`
- `SQL_TSI_WEEK`
- `SQL_TSI_YEAR`
- `SRID`; added in 8.0.3 (nonreserved)
- `SSL` (R)
- `STACKED`
- `START`
- `STARTING` (R)
- `STARTS`
- `STATS_AUTO_RECALC`
- `STATS_PERSISTENT`
- `STATS_SAMPLE_PAGES`
- `STATUS`
- `STOP`
- `STORAGE`
- `STORED` (R)
- `STRAIGHT_JOIN` (R)
- `STREAM`; added in 8.0.20 (nonreserved)
- `STRING`
- `SUBCLASS_ORIGIN`
- `SUBJECT`
- `SUBPARTITION`
- `SUBPARTITIONS`
- `SUPER`
- `SUSPEND`
- `SWAPS`
- `SWITCHES`
- `SYSTEM` (R); added in 8.0.3 (reserved)
 
#### T
 
- `TABLE` (R)
- `TABLES`
- `TABLESPACE`
- `TABLE_CHECKSUM`
- `TABLE_NAME`
- `TEMPORARY`
- `TEMPTABLE`
- `TERMINATED` (R)
- `TEXT`
- `THAN`
- `THEN` (R)
- `THREAD_PRIORITY`; added in 8.0.3 (nonreserved)
- `TIES`; added in 8.0.2 (nonreserved)
- `TIME`
- `TIMESTAMP`
- `TIMESTAMPADD`
- `TIMESTAMPDIFF`
- `TINYBLOB` (R)
- `TINYINT` (R)
- `TINYTEXT` (R)
- `TLS`; added in 8.0.21 (nonreserved)
- `TO` (R)
- `TRAILING` (R)
- `TRANSACTION`
- `TRIGGER` (R)
- `TRIGGERS`
- `TRUE` (R)
- `TRUNCATE`
- `TYPE`
- `TYPES`
 
#### U
 
- `UNBOUNDED`; added in 8.0.2 (nonreserved)
- `UNCOMMITTED`
- `UNDEFINED`
- `UNDO` (R)
- `UNDOFILE`
- `UNDO_BUFFER_SIZE`
- `UNICODE`
- `UNINSTALL`
- `UNION` (R)
- `UNIQUE` (R)
- `UNKNOWN`
- `UNLOCK` (R)
- `UNSIGNED` (R)
- `UNTIL`
- `UPDATE` (R)
- `UPGRADE`
- `USAGE` (R)
- `USE` (R)
- `USER`
- `USER_RESOURCES`
- `USE_FRM`
- `USING` (R)
- `UTC_DATE` (R)
- `UTC_TIME` (R)
- `UTC_TIMESTAMP` (R)
 
#### V
 
- `VALIDATION`
- `VALUE`
- `VALUES` (R)
- `VARBINARY` (R)
- `VARCHAR` (R)
- `VARCHARACTER` (R)
- `VARIABLES`
- `VARYING` (R)
- `VCPU`; added in 8.0.3 (nonreserved)
- `VIEW`
- `VIRTUAL` (R)
- `VISIBLE`
 
#### W
 
- `WAIT`
- `WARNINGS`
- `WEEK`
- `WEIGHT_STRING`
- `WHEN` (R)
- `WHERE` (R)
- `WHILE` (R)
- `WINDOW` (R); added in 8.0.2 (reserved)
- `WITH` (R)
- `WITHOUT`
- `WORK`
- `WRAPPER`
- `WRITE` (R)
 
#### X
 
- `X509`
- `XA`
- `XID`
- `XML`
- `XOR` (R)
 
#### Y
 
- `YEAR`
- `YEAR_MONTH` (R)
 
#### Z
 
- `ZEROFILL` (R)
- `ZONE`; added in 8.0.22 (nonreserved)
 
## MySQL 8.0新关键字和保留字
 
下表显示了与MySQL 5.7相比在MySQL 8.0中添加的关键字和保留字。保留的关键字标有(R)。
 
#### A
 
- `ACTIVE`
- `ADMIN`
- `ARRAY`
- `ATTRIBUTE`
 
#### B
 
- `BUCKETS`
 
#### C
 
- `CLONE`
- `COMPONENT`
- `CUME_DIST` (R)
 
#### D
 
- `DEFINITION`
- `DENSE_RANK` (R)
- `DESCRIPTION`
 
#### E
 
- `EMPTY` (R)
- `ENFORCED`
- `ENGINE_ATTRIBUTE`
- `EXCEPT` (R)
- `EXCLUDE`
 
#### F
 
- `FAILED_LOGIN_ATTEMPTS`
- `FIRST_VALUE` (R)
- `FOLLOWING`
 
#### G
 
- `GEOMCOLLECTION`
- `GET_MASTER_PUBLIC_KEY`
- `GROUPING` (R)
- `GROUPS` (R)
 
#### H
 
- `HISTOGRAM`
- `HISTORY`
 
#### I
 
- `INACTIVE`
- `INVISIBLE`
 
#### J
 
- `JSON_TABLE` (R)
- `JSON_VALUE`
 
#### L
 
- `LAG` (R)
- `LAST_VALUE` (R)
- `LATERAL` (R)
- `LEAD` (R)
- `LOCKED`
 
#### M
 
- `MASTER_COMPRESSION_ALGORITHMS`
- `MASTER_PUBLIC_KEY_PATH`
- `MASTER_TLS_CIPHERSUITES`
- `MASTER_ZSTD_COMPRESSION_LEVEL`
- `MEMBER`
 
#### N
 
- `NESTED`
- `NETWORK_NAMESPACE`
- `NOWAIT`
- `NTH_VALUE` (R)
- `NTILE` (R)
- `NULLS`
 
#### O
 
- `OF` (R)
- `OFF`
- `OJ`
- `OLD`
- `OPTIONAL`
- `ORDINALITY`
- `ORGANIZATION`
- `OTHERS`
- `OVER` (R)
 
#### P
 
- `PASSWORD_LOCK_TIME`
- `PATH`
- `PERCENT_RANK` (R)
- `PERSIST`
- `PERSIST_ONLY`
- `PRECEDING`
- `PRIVILEGE_CHECKS_USER`
- `PROCESS`
 
#### R
 
- `RANDOM`
- `RANK` (R)
- `RECURSIVE` (R)
- `REFERENCE`
- `REPLICA`
- `REPLICAS`
- `REQUIRE_ROW_FORMAT`
- `RESOURCE`
- `RESPECT`
- `RESTART`
- `RETAIN`
- `RETURNING`
- `REUSE`
- `ROLE`
- `ROW_NUMBER` (R)
 
#### S
 
- `SECONDARY`
- `SECONDARY_ENGINE`
- `SECONDARY_ENGINE_ATTRIBUTE`
- `SECONDARY_LOAD`
- `SECONDARY_UNLOAD`
- `SKIP`
- `SRID`
- `STREAM`
- `SYSTEM` (R)
 
#### T
 
- `THREAD_PRIORITY`
- `TIES`
- `TLS`
 
#### U
 
- `UNBOUNDED`
 
#### V
 
- `VCPU`
- `VISIBLE`
 
#### W
 
- `WINDOW` (R)
 
#### Z
 
- `ZONE`
 
## MySQL 8.0删除了关键字和保留字
 
下表显示了与MySQL 5.7相比在MySQL 8.0中删除的关键字和保留字。保留的关键字标有(R)。
 
- `ANALYSE`
- `DES_KEY_FILE`
- `PARSE_GCOL_EXPR`
- `REDOFILE`
- `SQL_CACHE`

附原址链接:

MySQL :: MySQL 8.0 Reference Manual :: 9.3 Keywords and Reserved Words

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐