MySQL 表名和字段名不要使用保留字命名

使用 MySQL 数据库,新建了一张表,其中有一个字段名是 limit

插入数据的时候报语法错误,检查了好几遍,也没看出 SQL 语句哪里有问题。

最后了解到,字段名 limit 属于数据库保留的关键字。

所以冲突了,有两种解决办法:

(1)使用撇号把字段名包起来:`limit`,就不会报错了。

(2)修改字段名。只要不是保留字就行。

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

SQL Server里是用 [ ] 括起来就能正常使用。

MySQL 里使用撇号(` 就是数字键1前面那个键)括起来才能正常使用。

 

附录:MySQL 保留字

ADDALLALTER
ANALYZEANDAS
ASCASENSITIVEBEFORE
BETWEENBIGINTBINARY
BLOBBOTHBY
CALLCASCADECASE
CHANGECHARCHARACTER
CHECKCOLLATECOLUMN
CONDITIONCONNECTIONCONSTRAINT
CONTINUECONVERTCREATE
CROSSCURRENT_DATECURRENT_TIME
CURRENT_TIMESTAMPCURRENT_USERCURSOR
DATABASEDATABASESDAY_HOUR
DAY_MICROSECONDDAY_MINUTEDAY_SECOND
DECDECIMALDECLARE
DEFAULTDELAYEDDELETE
DESCDESCRIBEDETERMINISTIC
DISTINCTDISTINCTROWDIV
DOUBLEDROPDUAL
EACHELSEELSEIF
ENCLOSEDESCAPEDEXISTS
EXITEXPLAINFALSE
FETCHFLOATFLOAT4
FLOAT8FORFORCE
FOREIGNFROMFULLTEXT
GOTOGRANTGROUP
HAVINGHIGH_PRIORITYHOUR_MICROSECOND
HOUR_MINUTEHOUR_SECONDIF
IGNOREININDEX
INFILEINNERINOUT
INSENSITIVEINSERTINT
INT1INT2INT3
INT4INT8INTEGER
INTERVALINTOIS
ITERATEJOINKEY
KEYSKILLLABEL
LEADINGLEAVELEFT
LIKELIMITLINEAR
LINESLOADLOCALTIME
LOCALTIMESTAMPLOCKLONG
LONGBLOBLONGTEXTLOOP
LOW_PRIORITYMATCHMEDIUMBLOB
MEDIUMINTMEDIUMTEXTMIDDLEINT
MINUTE_MICROSECONDMINUTE_SECONDMOD
MODIFIESNATURALNOT
NO_WRITE_TO_BINLOGNULLNUMERIC
ONOPTIMIZEOPTION
OPTIONALLYORORDER
OUTOUTEROUTFILE
PRECISIONPRIMARYPROCEDURE
PURGERAID0RANGE
READREADSREAL
REFERENCESREGEXPRELEASE
RENAMEREPEATREPLACE
REQUIRERESTRICTRETURN
REVOKERIGHTRLIKE
SCHEMASCHEMASSECOND_MICROSECOND
SELECTSENSITIVESEPARATOR
SETSHOWSMALLINT
SPATIALSPECIFICSQL
SQLEXCEPTIONSQLSTATESQLWARNING
SQL_BIG_RESULTSQL_CALC_FOUND_ROWSSQL_SMALL_RESULT
SSLSTARTINGSTRAIGHT_JOIN
TABLETERMINATEDTHEN
TINYBLOBTINYINTTINYTEXT
TOTRAILINGTRIGGER
TRUEUNDOUNION
UNIQUEUNLOCKUNSIGNED
UPDATEUSAGEUSE
USINGUTC_DATEUTC_TIME
UTC_TIMESTAMPVALUESVARBINARY
VARCHARVARCHARACTERVARYING
WHENWHEREWHILE
WITHWRITEX509
XORYEAR_MONTHZEROFILL
附录 2 SQL Server 数据库命名与编码规范 一.数据库对象命名基本规范 1. 总体命名规范 称的长度超过 32 个字符。 称采用英文单词、英文单词缩写数字,单词之间用"_"分隔。 说明:除非用户提供文档化的行业标准(例如,国标或部颁标准),否则得违反本规 范。 数据库对象称首字母必须小写。 得采用"_"作为称的起始字母终止字母。 称必须望文知意。 得与数据库管理系统保留字冲突。 不要在对象的字符之间留空格。 2. 数据库 数据库定义为系统+模块,或直接采用系统。 数据库全部采用小写。 3. 数据库文件 数据文件命名采用数据库+_+文件类型+[文件序号].文件后缀,文件序号为 1、2、 3…9 等数值,当数据库中某一文件类型的文件有多个时加上文件序号以区别。只有一个时 可加。 文件后缀:主数据文件为.mdf,其它数据文件为.ndf,日志文件为.ldf。 文件全部采用小写。 4. 命名要遵循以下原则: 采用"系统+_+t_+模块+_+"格式构成。 若数据库中只含有单个模块,命名可采用"系统+t_+"格式构成。 整个的长度不要超过 30 个字符。 系统、模块均采用小写字符。 模块均以其英文单词命名,且字符间加分割符;中单词的首 字符大写,其它字符小写,多个单词间也加任何分割符,单词全部采用单数形 式。 命名规则:取的前 3 个字符加最后一个字符。如果存在冲突,适当 增加字符(如取的前 4 个字符加最后一个字符等)。 关联命名为 Re_ A_ B,Re 是 Relative 的缩写, A B 均采用其 或缩写形式。 数据库设计规范 数据库中论是还是字段名,都一律用英文,准出现其它语言; 为了增加数据库当中的的长度, 一般允许出现如 Form 或者 Table 的字样, 如:记录:应为 Record,而是 RecordTable 数据库当中的命名允许出现空格,假如有几个单词出现的话,每个单 词之间用 " _" 隔开如人事信息: 应为 Human_Info, 而是 Human Info; 每个单词的第一个字母必须大写;如果太长,为了增加编程的难度可采用缩写 的方式,每个单词可取三到四个字母示,也可根据实际情况,实际习惯进行缩 写 5. 属性(列或字段) 属性命名遵循以下原则: 采用有意义的列,为实际含义的英文单词,且字符间加任何分割符。 属性不要等作为前缀。 属性后加任何类型标识作为后缀。 不要使用"ID"等与系统保留关键字冲突的单词作为列。 6. 主键 任何都必须定义主键。 主键命名为:"pk+_+(或缩写)+_+主键标识"。 7. 外键 外键命名为:"fk+_+(或缩写)+_主(或缩写)+_+主键标识"。 8. 索引 索引的命名为:"(或缩写)+_+列+_idx"。 其中多单词组成的属性列列取前几个单词首字符,加末单词组成。 9. Default 标识 由"df+_+<default 标识>"组成。 10. Rule 标识 由"ru+_+<Rule 标识>"组成。 11. 自定义数据类型 自定义数据类型由"ud+_+<自定义数据类型标识>+_+<数据类型>"组成。 12. 触发器 AFTER 型触发器: 系统+tr_+<>_+<i,u,d 的任意组合>, 其中 i, u, d 分别示 insert、 update delete。 INSTEAD OF 型触发器: 系统+ti_+<>+_+<i,u,d 的任意组合>, 其中 i, u, d 分别示 insert、 update delete。 13. 视图 视图命名以系统+v_+模块作为前缀,其他命名规则命名类似。 14. 存储过程 存储过程命名由"系统+sp+_+存储过程标识(缩写)"组成。 存储过程标识要以实际含义的英文单词构成,并用下划线分割各个组成部分。 15. 函数 函数命名由"系统+f+_+函数标识"组成。 16. 变量 参数变量命名采用"i (o 或 io)+_+ 称"形式, 前缀 i 或 o 示输入还是输出参数。 过程变量命名采用"l+_+称"形式。 变量采用小写,若属于词组形式,用下划线分隔每个单词。 17. 角色 全部使用小写字符命名。 由"系统称+_+role+_+词(或缩写)或词短语(或缩写)"组成。 18. 用户 全部使用小写字符命名。 由"系统称+_+user+_+词(或缩写)或词短语(或缩写)"组成。 二.Transact-SQL 编程基本规范 1. 一般性注释 注释可以
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值