带有DEFAULT NULL的MySQL列 – 样式选择,还是它?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了带有DEFAULT NULL的MySQL列 – 样式选择,还是它?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1888字,纯文字阅读大概需要3分钟。
内容图文
在许多SQL版本中,有三种方法可以在每次插入行时将列隐式设置为NULL.这些是:
columnname type NULL
columnname type DEFAULT NULL
columnname type NULL DEFAULT NULL
即第一个设置NULL标志(而不是NOT NULL),第二个将NULL标志保留为默认值,第三个设置NULL标志并将隐式值设置为NULL.
我听说过在Microsoft SQL中,第二种变体并不完全相同,因为您还可以自定义表或模式的NULL标志的默认值.
但对于MySQL,我不相信有这样的功能.此外,在MySQL中,具有NULL标志的列(与NOT NULL列不同),如果没有显式值,则在插入时始终隐式设置为NULL,即使打开严格模式也是如此.这样就使所有这些列声明都相同.
在我的MySQL脚本中,对于每个NOT NULL列,我为我的应用程序中的某些插入中不希望设置的列指定DEFAULT值,以避免在启用严格模式时出现任何问题.因此,如果我选择第三种变体,我觉得它会更加对称,即使它是最冗长和明确的.是第三种变体的声明是常见的,还是第一种或第二种变异在其他人的脚本中更频繁地出现?
我正在考虑倾向于第二种方法,因为这是MySQL转储使用的别名,但我不确定这是一个好主意,因为它还在列声明的默认子句中将整数文字转储为字符串(单引号).
这个问题似乎比有解决方案的问题更有意见,但我也想知道任何我不知道的潜在问题.我可能会选择将来从MySQL迁移到PostgreSQL,我也可以使用这些专家的一些建议,例如:如果PostgreSQL像MS-SQL那样区分这些情况.如果我做了任何不正确的假设,如果我错了,请纠正我.
解决方法:
我遇到的每个数据库都以您描述它们的方式处理NULL.当列接受NULL值时,则不在INSERT上提供值时将该值默认为NULL.我相信这是ANSI标准行为的一部分.
至于指定“NULL”本身.这是一个偏好问题.该标准确实表示除非指定NOT NULL(在数据定义语言的级别),否则列允许NULL.因此,NULL本身是不必要的,并且您有第四个等效选项:
columnname type
通过ANSI标准将NULL完全嵌入到SQL语言中.你的第三个选择是最明确的,但它看起来也有点不寻常.
如果您计划在整个系统中保持超级一致,那么我将采取您所在的路径.对于每个表中的每个列都有NULL或NOT NULL.对于采用默认值的所有列,请使用DEFAULT语句.
但是,不要指望与您合作的其他人(现在或将来)能够轻松地遵循此示例.在这种情况下,许多人更喜欢第四种选择,因为它需要更少的输入,并且是所有(或几乎所有)SQL方言的行为.
内容总结
以上是互联网集市为您收集整理的带有DEFAULT NULL的MySQL列 – 样式选择,还是它?全部内容,希望文章能够帮你解决带有DEFAULT NULL的MySQL列 – 样式选择,还是它?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。