【问题标题】:What does 'default' varchar(255) in MySQL mean?MySQL 中的“默认”varchar(255) 是什么意思?
【发布时间】:2012-06-23 14:45:44
【问题描述】:

我在 MySQL 脚本中遇到了这一行

 `other_validator` varchar(5000) NOT NULL DEFAULT '',
   `default` varchar(255) NOT NULL DEFAULT '',
  `widget` varchar(255) NOT NULL DEFAULT '',

这条线是什么意思?

`default` varchar(255) NOT NULL DEFAULT '', 

这如何在 SQL Server 中实现?

【问题讨论】:

  • 这意味着您有一个名为“default”的列,大多数 RDBMS 不允许,因为它是保留字。
  • 对我来说似乎只是一个字段名称,但错误地使用了保留关键字。
  • @Paul:大多数 RDBMS 很乐意允许您使用保留字作为标识符或列名;您需要使用适当的字符将它们括起来。一些程序员走得更远,几乎用适当的分隔符将每个列名括起来。
  • 当然,只要用“x”字符包围它,您就可以将所有字段都设为“null”。这并不是一个好主意。

标签: mysql sql-server database


【解决方案1】:

您看到一个名称很差的列。尝试为列选择一个更具描述性的名称。如果你这样做,其他开发人员会更好。

您可以对 SQL Server 使用方括号分隔符。

CREATE TABLE foo (
    [defaultXyz] varchar(255)
)

SQL Server 将允许您仅使用方括号为列指定此名称。只是不要这样做。这就像给一个孩子起一个名字'Kid'。

【讨论】:

  • 感谢您的信息。它实际上是一个使用该列名的扩展。如果我更改它,我将不得不进入源代码并查看它出现的位置并重命名它。我想我会保持原样。我其实虽然它有特殊的属性,这就是为什么我很困惑。再次感谢所有做出贡献的人。
【解决方案2】:

它会在您的表中创建一个名为“default”的字段,该字段的类型为 VARCHAR,长度最多为 255 个字符。如果在 INSERT 中没有为其分配值,则它不能为 NULL,并且默认为空字符串。

这里没什么特别的......只是简单的 ole SQL

【讨论】:

  • 好吧,除了大多数其他 RDBM 不允许您使用 'default' 作为字段名,因此它不会移植到 SQL-Server。
  • @Paul:只要将反引号 `default` 替换为方括号即可:[default]
  • 这证明了我的观点,“默认”对于一个列来说是个坏名字。
  • @Paul:当然是这样,而且没有争论。只是指出default 在 MySQL 中也是保留的——不仅仅是其他 DBMS。
【解决方案3】:

SQL Server 对保留字使用方括号。例如[默认]

但是:请不要这样做。每当您忘记引用没有括号的列或表时,您都会遇到非常严重的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 2015-04-26
    • 2020-08-13
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    相关资源
    最近更新 更多