我正在组建一个MySQL数据库,数据是一个客户列表。并非每个客户的所有字段都有数据。所以有些字段是空的。我们希望完成缺失的数据,但希望能够使用SELECT生成报告以列出缺少数据字段的客户记录。
在将数据更新到这些字段之前应该存储哪些字段?它应该是NULL吗?空的?或者是其他东西?此外,在设置MySQL TABLE时应该将NULL列设置为什么以及将DEFAULT列设置为什么以最好地处理可能没有数据的情况?谢谢!
答案 0 :(得分:1)
NULL
明确表示无数据。
因此,如果您想确定没有值,请使用NULL
。否则,所有其他默认值都被视为值。
空字符串''
是一个值。
零0
也是一个值。
但NULL
很特别,因为它意味着没有价值。
它将查询无输入的行。
您仍应对数据进行类型检查 - 以便人们不会在高度或重量列中输入-1
或0
。对我们来说,显而易见的是 - 没有任何东西可以有0
高度,但是对于数据库,该列有一个值 - 即使它的不合逻辑,你也必须调整你的查询以过滤这些行
答案 1 :(得分:0)
您应该将其设置为NULL
,因为它是表示the three-valued logic中UNKNOWN
或缺失值的标准值。
答案 2 :(得分:0)
根据我的经验,你会想要为这样的事情允许null。特别谈论字符串;有一天,空字符串可能是有效值。与数字字段类似,如果您不允许空值,则必须使用特殊值来表示“空”,例如-9876.6789,这对于编码来说永远不会有趣。
请记住,在编写查询并查找空值时,如果您执行field != null
之类的操作,则可能会产生误导性结果。您需要使用field is not null
。
希望有所帮助!