【问题标题】:null and not null mysql空而不是空 mysql
【发布时间】:2011-11-07 19:54:19
【问题描述】:

您好,我已经开始将访问权限转移到 mysql 中,我想知道是否存在约束或我可以使用什么东西来使列不是 null 并且其中仍然有空值?

这不是我自己的数据库,如果是我就填写空白字段,然后将列更改为不是null

【问题讨论】:

  • 将字段从可为空切换到非空应该会自动用 MySQL 中的默认值填充它。然而,反之亦然。将 not null 切换为 nullable 不会将具有默认值的字段更改为 null。

标签: mysql sql null notnull


【解决方案1】:

是的,有多种方法可以在不使用空值的情况下对缺失信息进行建模。

您可以选择一个值来表示缺失。很难分类,所以这里有几个例子。对于开放式期间的end_date 属性(即已开始但正在进行但尚未完成),请使用遥远的未来日期,例如9999-12-31。对于person_middle_name 属性,Joe Celko 建议将元数据值放在双花括号中,例如{{NK}} 表示“未知”,{{NA}} 表示“不适用”等

另一种对缺失信息建模的直观方法是表格中没有一行。如果员工未受薪,则不要在Payroll 表中为他们添加一行,从而使他们与当前没有收到工资的受薪员工不同,该员工在Payroll 表中以零的salary_amount 表示。

另一种方法是在表中存在一行。您可以拥有SalariedUnsalariedSalaryUnknown 的表,并确保每个员工在其中一个表中都有一行(可能在 MySQL 中使用触发器和/或过程强制执行)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 2020-02-13
    • 2014-08-15
    • 2013-02-01
    • 2011-12-18
    • 2018-04-20
    • 2021-10-08
    相关资源
    最近更新 更多