【问题标题】:Why I can create table columns named "key" and "value", but I can't use them later?为什么我可以创建名为“key”和“value”的表列,但以后不能使用它们?
【发布时间】:2013-03-01 14:18:43
【问题描述】:

每日提示:像老板一样使用backticks!即使是你的笔迹!

更新:如果您接受上述建议,则无需再阅读以下内容!说真的!

问题: 我对此有点恼火。我可以创建一个包含名为 keyvalue 的列的表,但是当我想使用这些列时,我会看到一个非常好的语法错误,说明这些是 MySQL 的 reserved keywords

我的问题是:有人知道为什么会这样吗?为什么我一开始就没有收到语法错误?有什么理由支持吗?

【问题讨论】:

  • 这些是保留字。如果你用反引号包围它们,那么你可以使用它们。另一方面,对任何类型的表或列使用 MySQL 的保留字是一个坏主意。
  • @N.B.只有KEY,值不是关键字。
  • @N.B.当问题发布时,我才意识到!
  • 您知道键值表通常是存储数据的最差解决方案,对吧?如果没有可能的方法来了解建议中的字段,例如在存储实验室结果时(每个新的实验室测试都会有不同的列需求),我只会使用它。 99% 的人使用键值是不必要的,会导致性能问题,并使编写查询变得更加困难。
  • @HLGEM 我正在​​使用key-value 对来存储配置数据(在这种情况下),但正如您所说,这并不是解决所有问题的方法。

标签: mysql sql database database-design


【解决方案1】:

只有KEY 是保留关键字:D

只需将列名KEY 用反引号括起来,这样您就可以使用它,例如

SELECT `key`
FROM   tableName

或为表提供别名,

SELECT a.key
FROM   tableName a

【讨论】:

  • 呵呵,如果您不喜欢使用反引号,请为表提供别名:D,否则请不要使用关键字。
  • 是的!如果你花了 3 个小时调试世界上最简单的更新查询但没有成功,那么在那之后,你会很乐意在任何地方使用反引号!
  • 字面上的智障。我想不通最长的时间。然后我意识到你不能使用密钥,所以我改用索引。它也不允许索引。索引也是保留字吗?!?!
猜你喜欢
  • 2012-01-10
  • 1970-01-01
  • 2020-04-28
  • 2013-11-29
  • 2010-12-25
  • 1970-01-01
  • 2013-10-26
  • 1970-01-01
  • 2021-03-24
相关资源
最近更新 更多