MySQL中没有默认值Vs NULL Vs 0作为文本和整数字段的默认值[关闭]

Posted

技术标签:

【中文标题】MySQL中没有默认值Vs NULL Vs 0作为文本和整数字段的默认值[关闭]【英文标题】:No default value Vs NULL Vs 0 in MySQL as a default value for text and integer fields [closed] 【发布时间】:2013-03-13 16:15:17 【问题描述】:

VARCHAR/TEXT 的正确方法是什么?

在 Heidi SQL 和可能的 phpMyAdmin 中提供了这些选项:

    无默认值 自定义(预定义为零,如 '0') 空

还有时间戳,自动增量。但现在这些都不重要了。

问题

mysql 中应该从 VARCHAR 和 TEXT 列的这 3 个选项中选择哪一个? INT 类型的列的哪个选项?

这是我的选项的屏幕截图:

【问题讨论】:

这完全取决于您和您的需求。这取决于您的应用程序是否需要区分未输入的数据和使用默认值输入的数据。 其中一个选项应该比其他选项更通用/抽象。你能帮我选择哪个选项对未来的扩展等最通用和安全吗? 请参阅侧边栏中的相关问题链接以获取有关此主题的更多讨论。没有一般的答案。 【参考方案1】:

我使用这个简单的经验法则:

我使用NOT NULL 表示系统中没有提供值的逻辑错误的任何字段。

如果区分“未提供的值”和“提供的值,但为空”,那么我使用的字段可能默认为 NULL。默认为""(或0 用于整数字段)是不好的,因为它会阻止您进行区分。

【讨论】:

所以,根据你的说法,NULL 比 0 好。谢谢,我也是这么想的。但是,你能帮我吗,NULL 和 No default value 之间的区别是什么? 我的选项中没有 NOT NULL ;( 检查我帖子中的图片。 NOT NULL 是一个独立于设置默认值的选项。我不知道它是否存在于 phpmyadmin 中(我从未使用过),但它在 MySQL CREATE TABLE 语法中。

以上是关于MySQL中没有默认值Vs NULL Vs 0作为文本和整数字段的默认值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

vs2008时间控件设置默认值

vs2012运行怎么设置参数

BeanUtils.copyProperties VS PropertyUtils.copyProperties

本周小贴士#146:默认vs值初始化

本周小贴士#146:默认vs值初始化

用vs2019编写c语言程序,明显语法错误为啥不回报错,没有加return 0;