mysql - null 和 not null mysql

标签 mysql sql null notnull

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

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

最佳答案

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

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

另一种对缺失信息进行建模的直观方法是通过表格中缺失的行。如果员工没有领薪水,则不要在 Payroll 表中为他们添加一行,从而使他们与目前没有领到薪水的领薪员工区分开来,用 salary_amount 表示Payroll 表中的零。

另一种方法是通过表中存在的行。您可以为 SalaryUnsalariedSalaryUnknown 设置表,并确保每个员工在其中一个表中只有一行(可能在 MySQL 中使用触发器和/或程序)。

关于mysql - null 和 not null mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8041782/

相关文章:

MySQL SELECT 查询未选择完全匹配?

php - Codeigniter 和 Tank Auth - 新的注册字段被错误地添加到数据库中?

mysql - 为什么我可以创建名为 "key"和 "value"的表列,但以后不能使用它们?

javascript - 为什么 null 是一个对象,null 和 undefined 有什么区别?

MySQL 与数据库一起工作包含一个包含数百万行的表

MySQL求和计算错误

sql - 使用限制在内部连接表

python - 如何连接 3 个表并执行 func.sum

Postgresql - 求和时如何将 NaN 视为 0?

mysql - 如果 CONCAT 中有 'null' 值,则得到空结果