微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql – 在表中所有基于文本的字段上使用NOT NULL约束的共识是什么?

我遇到的一些表没有任何NOT NULL约束,这在查询时已经产生了一些问题.

我很好奇使用像NOT NULL DEFAULT’这样的东西是什么感觉,它会在检索/过滤记录时取代coalesce()函数的需要.另一方面,你不必使用合并,你必须使用CASE语句,或者如果你仍然想使用合并,你会做类似coalesce的事(nullif(field_foo,”),field_bar)

解决方法:

在语义上,数据是空的,将其设置为其他东西最多是尴尬的.我们总是假设NULL是NULL,我们知道那是什么.如果你使用”然后突然你必须跟踪你设置为新的NULL.只要尽可能使用系统的结构.

使用null值也存在问题;查询永远不会将null与任何内容匹配;它不是一个价值,所以没有任何选择范围可以匹配它;异常是IS NULL条件,它具有特殊的语义,因为NULL具有特殊的语义含义.

此外,您可疑地利用数据库的NOT NULL约束.该约束意味着该列始终具有数据.您的数据在技术上满足了该约束,但它没有语义.

我可以看到设置NOT NULL并使用自制的“NULL”值的唯一原因是当应用程序插入自己的数据并且它有自己的NULL值时.例如,存储到数据库列时,PHP的NULL将显示为值,而不是sql NULL.这可以通过应用程序中的适当编程来避免,但是如果我无法控制插入“假空值”的应用程序,我只会考虑“假NULL”解决方案 – 此时战斗就会丢失,并且解决方案变得最适用.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐