在数据库中插入行时,使用缺省值(例如空字符串)是否有任何含义。使用空值的问题是,在应用程序中使用数据时必须检查它们,而默认值可以更容易地处理。
发布于 2009-01-23 22:13:01
数据库中NULL的含义应保留为'unknown‘,它不等同于空。因此,只要您使用的默认值反映了底层数据的性质(即它不是“未知”的),我实际上建议您使用默认值。
但是,您的里程可能会有所不同。这取决于您的应用程序。如果它以不同的方式处理未知值,那么一定要使用它:)
发布于 2009-01-23 22:53:54
我不同意使用默认值。null的目的是表明您没有任何信息。空字符串并不意味着这一点,它是一个值。此外,如果您开始禁止字符串上的空值,那么您需要考虑其他数据类型。数字和日期很难有一个表示“我没有这个字段的值”的值。如果您犯了在varchar字段中存储数字或日期的错误,那么当您需要将它们转换为日期或等效的数字以对它们进行数学处理时,使用空字符串而不是null可能会导致查询不起作用(不建议将日期和数字数据存储为字符串,只是认识到您可能已经有一些,这种方案可能会导致查询方式的问题)。如果您不允许除这些字段之外的所有字段都为空值,那么在查询这些字段时,您将会犯很多错误,因为您将不习惯检查空值,并且更有可能忘记这样做。你也可以引起一系列新的查询问题。考虑一下:
select count(myfield), myfield2 from mytable group by myfield2如果您使用null或空字符串来存储值,而您不知道哪一个值,这将产生不同的结果。
发布于 2009-01-23 22:12:38
我相信,你会遇到的主要错误是逻辑错误。
字符串很简单,但整数就不同了。考虑一个工资列。如果默认值为0,这可能表示与NULL不同的值。NULL表示该员工未通过工资单,而0表示由于某种原因仍需处理该员工。
空值也可以在外键上使用,但在FK上使用默认值似乎不是一个好主意。
https://stackoverflow.com/questions/474806
复制相似问题