null和notnull mysql

null和notnull mysql,mysql,sql,null,notnull,Mysql,Sql,Null,Notnull,您好,我已经开始将access移到mysql中,我想知道是否有一个约束或一些东西可以用来使列不null并且仍然有空值 这不是我自己的数据库,如果是的话,我只需填写空字段,然后将列更改为notnull是的,有多种方法可以在不使用null的情况下建模缺失信息 您可以选择一个值来表示缺失。这很难理解,所以这里有几个例子。对于开放期内的end_date属性(即已开始但正在进行且尚未完成),请使用较远的将来日期,如9999-12-31。对于person\u middle\u nameattributete

您好,我已经开始将access移到mysql中,我想知道是否有一个约束或一些东西可以用来使列不
null
并且仍然有空值


这不是我自己的数据库,如果是的话,我只需填写空字段,然后将列更改为not
null
是的,有多种方法可以在不使用null的情况下建模缺失信息

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

另一种比较直观的建模缺失信息的方法是通过表中缺少一行。如果某个员工未进行分类,则不要在
工资单
表中为其添加一行,从而使其与
工资单
表中的
工资金额
为零的受薪员工不同


另一种方法是在表中显示一行。您可以为
Salaried
Unsalaried
SalaryUnknown
创建表,并确保每个员工在其中一个表中有一行(可能在MySQL中使用触发器和/或过程强制执行)。

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

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

另一种比较直观的建模缺失信息的方法是通过表中缺少一行。如果某个员工未进行分类,则不要在
工资单
表中为其添加一行,从而使其与
工资单
表中的
工资金额
为零的受薪员工不同


另一种方法是在表中显示一行。您可以为
Salaried
Unsalaried
SalaryUnknown
创建表,并确保每个员工在其中一个表中正好有一行(可能在MySQL中使用触发器和/或过程强制执行)。

将字段从nullable切换为not null应自动使用MySQL中的默认值填充该字段。然而,事实并非如此。将NOTNULL切换为nullable不会将具有默认值的字段更改为null。将字段从nullable切换为NOTNULL将自动使用MySQL中的默认值填充该字段。然而,事实并非如此。将NOTNULL切换为nullable不会将具有默认值的字段更改为null。