Mysql 为什么我可以创建名为“的表列”;“关键”;及;“价值”;,但我可以';你以后不会用吗?

Mysql 为什么我可以创建名为“的表列”;“关键”;及;“价值”;,但我可以';你以后不会用吗?,mysql,sql,database,database-design,Mysql,Sql,Database,Database Design,一天的小贴士:像老板一样使用backticks!即使是你的笔迹 更新:如果你接受了上述建议,你就不需要再阅读以下内容了!说真的 问题: 我对此有点恼火。我可以创建一个表,其中包含名为key和value的列,但是当我想处理这些列时,我会看到一个非常好的语法错误,说明这些是MySQL的保留关键字 我的问题是:有人知道为什么会这样吗?为什么我一开始没有收到语法错误?是否有任何原因支持它?只有键是保留关键字:D 只需将列名键用反勾号括起来,即可使用,例如 SELECT `key` FROM t

一天的小贴士:像老板一样使用
backticks
!即使是你的笔迹

更新:如果你接受了上述建议,你就不需要再阅读以下内容了!说真的

问题: 我对此有点恼火。我可以创建一个表,其中包含名为
key
value
的列,但是当我想处理这些列时,我会看到一个非常好的语法错误,说明这些是MySQL的
保留关键字


我的问题是:有人知道为什么会这样吗?为什么我一开始没有收到语法错误?是否有任何原因支持它?

只有
是保留关键字
:D

只需将列名
用反勾号括起来,即可使用,例如

SELECT `key`
FROM   tableName
或者为表提供别名

SELECT a.key
FROM   tableName a

那些是保留字。如果你用背景符号环绕它们,那么你可以使用它们。另一方面,对任何类型的表或列使用MySQL的保留字都不是一个好主意。@N.B.只有
KEY
,value不是关键字。@N.B.我刚意识到当问题发布时!您知道键值表通常是存储数据的最差解决方案,对吗?我只会在没有可能的方法知道Adviance中的字段时使用,例如在存储实验室结果时(每个新的实验室测试都会有不同的列需要)。对于99%的用户使用键值,它们是不必要的,会导致性能问题,并使编写查询变得更加困难。@HLGEM我使用
键值
对来存储配置数据(在本例中),但正如您所说,这并不是每个问题的解决方案。呵呵,如果您不喜欢使用backtick,为表提供别名
:D
,否则,请不要使用关键字。是!如果您花3个小时调试世界上最简单的更新查询,但没有成功,那么在此之后,您将乐于在任何地方使用backticks!简直是弱智。我很长一段时间都不明白。然后我意识到你们不能使用键,所以我改为使用索引。它也不允许索引。索引也是保留字吗?!?!