场景
如果在 MySQL 数据库中创建数据表时,没有设置字段的默认值为 null,并且该字段也没有设置非空约束,则当该字段在插入新行或更新行时没有指定值,或者该值为 null 时,MySQL 会将该字段存储为一个特殊的值:空字符串(’’)或者 0(数字型),具体取决于该字段的数据类型。 例如,如果该字段的数据类型为 varchar,则空字符串会被存储到该字段中;如果该字段的数据类型为 int,则 0 会被存储到该字段中。
需要注意的是,将空字符串或 0 存储到字段中可能会导致数据在业务层面上出现错误,因为这些值可能并不符合业务逻辑的要求。因此,在设计数据库时,应该根据具体业务需求合理地设置字段的默认值、非空约束,以确保数据的完整性、准确性和合法性。如果允许该字段为空,则建议将该字段的默认值设为 null,以便正确地表示该字段为空。
设置为Default Null带来哪些好处
① 将允许为空的字段的默认值设为 null,可以使得当该字段在插入新行或更新行时没有指定值,或者该值为 null 时,MySQL 会将该字段存储为 null。将字段默认值设为 null 会带来以下一些优点和性能提升:
② 提高数据完整性:如果允许字段为空,上传数据时就可以插入空值,这样就可能出现数据不完整或不符合要求的情况。而如果将允许为空的字段的默认值设为 null,可以在数据上传时任何时候不插入数据到允许为空的字段,保证数据的完整性。
③ 减少数据存储:如果将允许为空的字段在数据库中存储为 null,可以减少存储空间。因为 MySQL 在存储空值时需要使用一定的空间,而将允许为空的字段默认值设为 null,则可以在数据库中将该字段的值存储为一个空指针。
④ 数据操作更加简便:如果将字段默认值设为 null,数据操作更加简便。因为在进行数据操作时,就不需要再针对允许为空的字段设置默认值,也不用在处理数据库查询和筛选时考虑到空值的问题。
总的来说,将允许为空的字段的默认值设为 null 可以提高数据的完整性,减少数据存储,同时也可以让数据的操作更加容易和简便。
业务允许为空的字段在数据库中存储为 null,为什么可以减少存储空间
在 MySQL 中,空字符串、空日期等需要占用一定的存储空间。而将允许为空的字段在数据库中存储为 null,可以减少存储空间。这是因为存储 null 的字段并不需要占用空间,相当于是一个空指针,在数据库中只需要存储一个标记,而不需要存储一定数量的字节数。
举个例子,假设有一个 varchar(10) 类型的字段,如果它存储为 “”(空字符串),则需要占用 10 个字节的存储空间;如果存储为 null,则不需要占用任何额外的存储空间。对于一个大型数据表,这些空字符串的存储空间可能是非常大的,而将允许为空的字段在数据库中存储为 null 可以大大减少数据表的存储空间,提高数据库的存储效率。
需要注意的是,将允许为空的字段在数据库中存储为 null 只会对占用存储空间较大的字段有影响。如果某个数据表中的字段的占用存储空间较小,那么即使将该字段的默认值设为 null,也不会对存储空间产生较大的影响。因此,在设计数据库时,需要根据具体情况以及业务需求来确定是否需要将允许为空的字段的默认值设为 null。