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

MySQL中没有默认值Vs NULL Vs 0作为文本和整数字段的默认值,mysql,sql,database,database-design,Mysql,Sql,Database,Database Design,VARCHAR/TEXT的正确方式是什么 在Heidi SQL中,我也认为在phpMyAdmin中,我可以从中选择: 1。没有默认值 2。自定义(预定义值为零,如“0”) 3。空 还有时间戳,自动递增,但现在这些都不重要了 那么,这3个选项中哪一个是MySQL用于VARCHAR和TEXT列的好方法? 哪一个用于INT? 这是一个屏幕截图,其中有我的选项: 我使用这个简单的经验法则: 我对任何字段使用notnull,如果该字段未提供值,则表示系统中存在逻辑错误 如果告诉我“未提供值”和“提供值,但

VARCHAR/TEXT的正确方式是什么

在Heidi SQL中,我也认为在phpMyAdmin中,我可以从中选择:

1。没有默认值

2。自定义(预定义值为零,如“0”)

3。空

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

那么,这3个选项中哪一个是MySQL用于VARCHAR和TEXT列的好方法?

哪一个用于INT?

这是一个屏幕截图,其中有我的选项:


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

我对任何字段使用
notnull
,如果该字段未提供值,则表示系统中存在逻辑错误


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

这完全取决于您和您的需要。这取决于应用程序是否需要区分未输入的数据和使用默认值输入的数据。其中一个选项应与其他选项一样更一般/抽象。你能帮我选择哪一个选项对将来的扩展最为通用和安全吗?有关此主题的更多讨论,请参阅侧栏中的相关问题链接。没有一般的答案。所以,根据你的说法,NULL大于0。谢谢,我也这么想。但是,你能帮我一下吗?空值和无默认值的区别是什么?我的选项中没有NOTNULL;(检查我帖子中的图像。
notnull
是设置默认值的一个单独选项。我不知道它是否存在于phpmyadmin中(我从未使用过),但它在MySQL
CREATE TABLE
语法中。