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

Der*_*der 3 mysql sql database database-design

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

在 Heidi SQL 中以及可能在 phpMyAdmin 中提供了这些选项:

  1. 无默认值
  2. 自定义(其中预定义为零,如“0”)
  3. 无效的

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

问题

  • 在 MySQL 中应该为 VARCHAR 和 TEXT 列选择这 3 个选项中的哪一个?
  • 对于 INT 类型的列,哪个选项是正确的?

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

在此输入图像描述

Aln*_*tak 5

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

我用于NOT NULL任何未提供值的字段,该字段将指示系统中存在逻辑错误。

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