SqlServer其它/综合
Access使用MYSQL要注意Mysql 保留字 关键字
2017-05-10 08:25:50

今天使用Access通过 mysql-connector-odbc 连接到mysql ,却发现无法显示一个字段Desc的内容

经过研究发现,原来Desc是mysql的保留字 关键字,所以出错

要在这个字段前后加上撇号(单引号)

select 'Desc'  from table;

但即使加上了,但用ado记录集提取时还是取不到

必须 要使用别名

select 'Desc' as MyDesc from table;

然后在ADO中使用 rs("MyDesc") 就可以了

相关文章:

我们知道通常的SQL查询语句是这么写的:

复制代码 代码如下:

select col from table;

这当然没问题,但如果字段名是“from”呢?

复制代码 代码如下:

select from from table;

若真的这么写,必然出错,当字段名与MySQL保留字冲突时,可以用字符“`”将字段名括起来:

复制代码 代码如下:

select `from` from table;

总结

刚发现我原先设计的数据库表里有两个字段都用了保留字(add,comment)。在insert和update的时候出错。记得sql server里好像是用[]括起来就ok了。于是试了一下,事实证明这在mySql里行不通。上网简单搜了一下发现都是说用中括号。后来又想到MySql Administrator生成的sql语句好像会把表名什么都用单引号括起来。试了一下,还是行不通。但复制生成的那个符号发现可以。确定那个符号不是单引号。一看才发现时撇号(` 就是数字1前面那个键上的)。到此问题解决。总结一下就是一句话:

在Mysql中,当表名或字段名乃至数据库名和保留字冲突时,在sql语句里可以用撇号(`)括起来。

Table 10.2 Keywords and Reserved Words in MySQL 5.7

ACCESSIBLE (R)ACCOUNT[a]ACTION
ADD (R)AFTERAGAINST
AGGREGATEALGORITHMALL (R)
ALTER (R)ALWAYS[b]ANALYSE
ANALYZE (R)AND (R)ANY
AS (R)ASC (R)ASCII
ASENSITIVE (R)ATAUTOEXTEND_SIZE
AUTO_INCREMENTAVGAVG_ROW_LENGTH
BACKUPBEFORE (R)BEGIN
BETWEEN (R)BIGINT (R)BINARY (R)
BINLOGBITBLOB (R)
BLOCKBOOLBOOLEAN
BOTH (R)BTREEBY (R)
BYTECACHECALL (R)
CASCADE (R)CASCADEDCASE (R)
CATALOG_NAMECHAINCHANGE (R)
CHANGEDCHANNEL[c]CHAR (R)
CHARACTER (R)CHARSETCHECK (R)
CHECKSUMCIPHERCLASS_ORIGIN
CLIENTCLOSECOALESCE
CODECOLLATE (R)COLLATION
COLUMN (R)COLUMNSCOLUMN_FORMAT
COLUMN_NAMECOMMENTCOMMIT
COMMITTEDCOMPACTCOMPLETION
COMPRESSEDCOMPRESSION[d]CONCURRENT
CONDITION (R)CONNECTIONCONSISTENT
CONSTRAINT (R)CONSTRAINT_CATALOGCONSTRAINT_NAME
CONSTRAINT_SCHEMACONTAINSCONTEXT
CONTINUE (R)CONVERT (R)CPU
CREATE (R)CROSS (R)CUBE
CURRENTCURRENT_DATE (R)CURRENT_TIME (R)
CURRENT_TIMESTAMP (R)CURRENT_USER (R)CURSOR (R)
CURSOR_NAMEDATADATABASE (R)
DATABASES (R)DATAFILEDATE
DATETIMEDAYDAY_HOUR (R)
DAY_MICROSECOND (R)DAY_MINUTE (R)DAY_SECOND (R)
DEALLOCATEDEC (R)DECIMAL (R)
DECLARE (R)DEFAULT (R)DEFAULT_AUTH
DEFINERDELAYED (R)DELAY_KEY_WRITE
DELETE (R)DESC (R)DESCRIBE (R)
DES_KEY_FILEDETERMINISTIC (R)DIAGNOSTICS
DIRECTORYDISABLEDISCARD
DISKDISTINCT (R)DISTINCTROW (R)
DIV (R)DODOUBLE (R)
DROP (R)DUAL (R)DUMPFILE
DUPLICATEDYNAMICEACH (R)
ELSE (R)ELSEIF (R)ENABLE
ENCLOSED (R)ENCRYPTION[e]END
ENDSENGINEENGINES
ENUMERRORERRORS
ESCAPEESCAPED (R)EVENT
EVENTSEVERYEXCHANGE
EXECUTEEXISTS (R)EXIT (R)
EXPANSIONEXPIREEXPLAIN (R)
EXPORTEXTENDEDEXTENT_SIZE
FALSE (R)FASTFAULTS
FETCH (R)FIELDSFILE
FILE_BLOCK_SIZE[f]FILTER[g]FIRST
FIXEDFLOAT (R)FLOAT4 (R)
FLOAT8 (R)FLUSHFOLLOWS[h]
FOR (R)FORCE (R)FOREIGN (R)
FORMATFOUNDFROM (R)
FULLFULLTEXT (R)FUNCTION
GENERALGENERATED[i] (R)GEOMETRY
GEOMETRYCOLLECTIONGET (R)GET_FORMAT
GLOBALGRANT (R)GRANTS
GROUP (R)GROUP_REPLICATION[j]HANDLER
HASHHAVING (R)HELP
HIGH_PRIORITY (R)HOSTHOSTS
HOURHOUR_MICROSECOND (R)HOUR_MINUTE (R)
HOUR_SECOND (R)IDENTIFIEDIF (R)
IGNORE (R)IGNORE_SERVER_IDSIMPORT
IN (R)INDEX (R)INDEXES
INFILE (R)INITIAL_SIZEINNER (R)
INOUT (R)INSENSITIVE (R)INSERT (R)
INSERT_METHODINSTALLINSTANCE[k]
INT (R)INT1 (R)INT2 (R)
INT3 (R)INT4 (R)INT8 (R)
INTEGER (R)INTERVAL (R)INTO (R)
INVOKERIOIO_AFTER_GTIDS (R)
IO_BEFORE_GTIDS (R)IO_THREADIPC
IS (R)ISOLATIONISSUER
ITERATE (R)JOIN (R)JSON[l]
KEY (R)KEYS (R)KEY_BLOCK_SIZE
KILL (R)LANGUAGELAST
LEADING (R)LEAVE (R)LEAVES
LEFT (R)LESSLEVEL
LIKE (R)LIMIT (R)LINEAR (R)
LINES (R)LINESTRINGLIST
LOAD (R)LOCALLOCALTIME (R)
LOCALTIMESTAMP (R)LOCK (R)LOCKS
LOGFILELOGSLONG (R)
LONGBLOB (R)LONGTEXT (R)LOOP (R)
LOW_PRIORITY (R)MASTERMASTER_AUTO_POSITION
MASTER_BIND (R)MASTER_CONNECT_RETRYMASTER_DELAY
MASTER_HEARTBEAT_PERIODMASTER_HOSTMASTER_LOG_FILE
MASTER_LOG_POSMASTER_PASSWORDMASTER_PORT
MASTER_RETRY_COUNTMASTER_SERVER_IDMASTER_SSL
MASTER_SSL_CAMASTER_SSL_CAPATHMASTER_SSL_CERT
MASTER_SSL_CIPHERMASTER_SSL_CRLMASTER_SSL_CRLPATH
MASTER_SSL_KEYMASTER_SSL_VERIFY_SERVER_CERT (R)MASTER_TLS_VERSION[m]
MASTER_USERMATCH (R)MAXVALUE (R)
MAX_CONNECTIONS_PER_HOURMAX_QUERIES_PER_HOURMAX_ROWS
MAX_SIZEMAX_STATEMENT_TIME[n]MAX_UPDATES_PER_HOUR
MAX_USER_CONNECTIONSMEDIUMMEDIUMBLOB (R)
MEDIUMINT (R)MEDIUMTEXT (R)MEMORY
MERGEMESSAGE_TEXTMICROSECOND
MIDDLEINT (R)MIGRATEMINUTE
MINUTE_MICROSECOND (R)MINUTE_SECOND (R)MIN_ROWS
MOD (R)MODEMODIFIES (R)
MODIFYMONTHMULTILINESTRING
MULTIPOINTMULTIPOLYGONMUTEX
MYSQL_ERRNONAMENAMES
NATIONALNATURAL (R)NCHAR
NDBNDBCLUSTERNEVER[o]
NEWNEXTNO
NODEGROUPNONBLOCKING[p]NONE
NOT (R)NO_WAITNO_WRITE_TO_BINLOG (R)
NULL (R)NUMBERNUMERIC (R)
NVARCHAROFFSETOLD_PASSWORD[q]
ON (R)ONEONLY
OPENOPTIMIZE (R)OPTIMIZER_COSTS[r] (R)
OPTION (R)OPTIONALLY (R)OPTIONS
OR (R)ORDER (R)OUT (R)
OUTER (R)OUTFILE (R)OWNER
PACK_KEYSPAGEPARSER
PARSE_GCOL_EXPR[s]PARTIALPARTITION (R)
PARTITIONINGPARTITIONSPASSWORD
PHASEPLUGINPLUGINS
PLUGIN_DIRPOINTPOLYGON
PORTPRECEDES[t]PRECISION (R)
PREPAREPRESERVEPREV
PRIMARY (R)PRIVILEGESPROCEDURE (R)
PROCESSLISTPROFILEPROFILES
PROXYPURGE (R)QUARTER
QUERYQUICKRANGE (R)
READ (R)READS (R)READ_ONLY
READ_WRITE (R)REAL (R)REBUILD
RECOVERREDOFILEREDO_BUFFER_SIZE
REDUNDANTREFERENCES (R)REGEXP (R)
RELAYRELAYLOGRELAY_LOG_FILE
RELAY_LOG_POSRELAY_THREADRELEASE (R)
RELOADREMOVERENAME (R)
REORGANIZEREPAIRREPEAT (R)
REPEATABLEREPLACE (R)REPLICATE_DO_DB[u]
REPLICATE_DO_TABLE[v]REPLICATE_IGNORE_DB[w]REPLICATE_IGNORE_TABLE[x]
REPLICATE_REWRITE_DB[y]REPLICATE_WILD_DO_TABLE[z]REPLICATE_WILD_IGNORE_TABLE[aa]
REPLICATIONREQUIRE (R)RESET
RESIGNAL (R)RESTORERESTRICT (R)
RESUMERETURN (R)RETURNED_SQLSTATE
RETURNSREVERSEREVOKE (R)
RIGHT (R)RLIKE (R)ROLLBACK
ROLLUPROTATE[ab]ROUTINE
ROWROWSROW_COUNT
ROW_FORMATRTREESAVEPOINT
SCHEDULESCHEMA (R)SCHEMAS (R)
SCHEMA_NAMESECONDSECOND_MICROSECOND (R)
SECURITYSELECT (R)SENSITIVE (R)
SEPARATOR (R)SERIALSERIALIZABLE
SERVERSESSIONSET (R)
SHARESHOW (R)SHUTDOWN
SIGNAL (R)SIGNEDSIMPLE
SLAVESLOWSMALLINT (R)
SNAPSHOTSOCKETSOME
SONAMESOUNDSSOURCE
SPATIAL (R)SPECIFIC (R)SQL (R)
SQLEXCEPTION (R)SQLSTATE (R)SQLWARNING (R)
SQL_AFTER_GTIDSSQL_AFTER_MTS_GAPSSQL_BEFORE_GTIDS
SQL_BIG_RESULT (R)SQL_BUFFER_RESULTSQL_CACHE
SQL_CALC_FOUND_ROWS (R)SQL_NO_CACHESQL_SMALL_RESULT (R)
SQL_THREADSQL_TSI_DAYSQL_TSI_HOUR
SQL_TSI_MINUTESQL_TSI_MONTHSQL_TSI_QUARTER
SQL_TSI_SECONDSQL_TSI_WEEKSQL_TSI_YEAR
SSL (R)STACKEDSTART
STARTING (R)STARTSSTATS_AUTO_RECALC
STATS_PERSISTENTSTATS_SAMPLE_PAGESSTATUS
STOPSTORAGESTORED[ac] (R)
STRAIGHT_JOIN (R)STRINGSUBCLASS_ORIGIN
SUBJECTSUBPARTITIONSUBPARTITIONS
SUPERSUSPENDSWAPS
SWITCHESTABLE (R)TABLES
TABLESPACETABLE_CHECKSUMTABLE_NAME
TEMPORARYTEMPTABLETERMINATED (R)
TEXTTHANTHEN (R)
TIMETIMESTAMPTIMESTAMPADD
TIMESTAMPDIFFTINYBLOB (R)TINYINT (R)
TINYTEXT (R)TO (R)TRAILING (R)
TRANSACTIONTRIGGER (R)TRIGGERS
TRUE (R)TRUNCATETYPE
TYPESUNCOMMITTEDUNDEFINED
UNDO (R)UNDOFILEUNDO_BUFFER_SIZE
UNICODEUNINSTALLUNION (R)
UNIQUE (R)UNKNOWNUNLOCK (R)
UNSIGNED (R)UNTILUPDATE (R)
UPGRADEUSAGE (R)USE (R)
USERUSER_RESOURCESUSE_FRM
USING (R)UTC_DATE (R)UTC_TIME (R)
UTC_TIMESTAMP (R)VALIDATION[ad]VALUE
VALUES (R)VARBINARY (R)VARCHAR (R)
VARCHARACTER (R)VARIABLESVARYING (R)
VIEWVIRTUAL[ae] (R)WAIT
WARNINGSWEEKWEIGHT_STRING
WHEN (R)WHERE (R)WHILE (R)
WITH (R)WITHOUT[af]WORK
WRAPPERWRITE (R)X509
XAXID[ag]XML
XOR (R)YEARYEAR_MONTH (R)
ZEROFILL (R)

[a] ACCOUNT: added in 5.7.6 (nonreserved)

[b] ALWAYS: added in 5.7.6 (nonreserved)

[c] CHANNEL: added in 5.7.6 (nonreserved)

[d] COMPRESSION: added in 5.7.8 (nonreserved)

[e] ENCRYPTION: added in 5.7.11 (nonreserved)

[f] FILE_BLOCK_SIZE: added in 5.7.6 (nonreserved)

[g] FILTER: added in 5.7.3 (nonreserved)

[h] FOLLOWS: added in 5.7.2 (nonreserved)

[i] GENERATED: added in 5.7.6 (reserved)

[j] GROUP_REPLICATION: added in 5.7.6 (nonreserved)

[k] INSTANCE: added in 5.7.11 (nonreserved)

[l] JSON: added in 5.7.8 (nonreserved)

[m] MASTER_TLS_VERSION: added in 5.7.10 (nonreserved)

[n] MAX_STATEMENT_TIME: added in 5.7.4 (nonreserved); removed in 5.7.8

[o] NEVER: added in 5.7.4 (nonreserved)

[p] NONBLOCKING: removed in 5.7.6

[q] OLD_PASSWORD: removed in 5.7.5

[r] OPTIMIZER_COSTS: added in 5.7.5 (reserved)

[s] PARSE_GCOL_EXPR: added in 5.7.6 (reserved); became nonreserved in 5.7.8

[t] PRECEDES: added in 5.7.2 (nonreserved)

[u] REPLICATE_DO_DB: added in 5.7.3 (nonreserved)

[v] REPLICATE_DO_TABLE: added in 5.7.3 (nonreserved)

[w] REPLICATE_IGNORE_DB: added in 5.7.3 (nonreserved)

[x] REPLICATE_IGNORE_TABLE: added in 5.7.3 (nonreserved)

[y] REPLICATE_REWRITE_DB: added in 5.7.3 (nonreserved)

[z] REPLICATE_WILD_DO_TABLE: added in 5.7.3 (nonreserved)

[aa] REPLICATE_WILD_IGNORE_TABLE: added in 5.7.3 (nonreserved)

[ab] ROTATE: added in 5.7.11 (nonreserved)

[ac] STORED: added in 5.7.6 (reserved)

[ad] VALIDATION: added in 5.7.5 (nonreserved)

[ae] VIRTUAL: added in 5.7.6 (reserved)

[af] WITHOUT: added in 5.7.5 (nonreserved)

[ag] XID: added in 5.7.5 (nonreserved)

The following table shows the keywords and reserved words that are added in MySQL 5.7. Reserved keywords are marked with (R).

Table 10.3 Keywords and Reserved Words Added in MySQL 5.7 Compared to MySQL 5.6

ACCOUNTALWAYSCHANNEL
COMPRESSIONENCRYPTIONFILE_BLOCK_SIZE
FILTERFOLLOWSGENERATED (R)
GROUP_REPLICATIONINSTANCEJSON
MASTER_TLS_VERSIONNEVEROPTIMIZER_COSTS (R)
PARSE_GCOL_EXPRPRECEDESREPLICATE_DO_DB
REPLICATE_DO_TABLEREPLICATE_IGNORE_DBREPLICATE_IGNORE_TABLE
REPLICATE_REWRITE_DBREPLICATE_WILD_DO_TABLEREPLICATE_WILD_IGNORE_TABLE
ROTATESTACKEDSTORED (R)
VALIDATIONVIRTUAL (R)WITHOUT
XID

The following table shows the keywords and reserved words that are removed in MySQL 5.7. Reserved keywords are marked with (R).

Table 10.4 Keywords and Reserved Words Removed in MySQL 5.7 Compared to MySQL 5.6

OLD_PASSWORD