2011-08-30 38 views
-1

任何人都可以给我一个例子,当使用不同的属性栏

  • allow null
  • default 0
  • default ''empty string

在哪种情况下应该使用这些不同的配置?

+0

我很困惑,你写的这种方式好像你正试图将它们一起使用。你想知道你什么时候分别使用每一个? – animuson

+0

是的。这正是我想知道的 –

回答

2

通常,避免NULL。 NULL往往需要额外的编码工作。对于NULL与空字符串的处理因RDBMS而异。对一个集合中的NULL排序因RDBMS而异。

也就是说,您可能希望: 当相关行是可选的时,在外键列上使用NULL。

如果希望从集合操作中消除值,请使用NULL。例如,如果您有一个“年龄”列,但不需要所有记录的此信息,您仍然可以从以下位置获得有意义的信息:SELECT AVG(年龄)FROM mytable

当您需要时使用NULL三元逻辑。

+1

“一般来说,避免NULL”?没门!我会说相反的:如果你没有一个值的东西,让值为NULL。这不仅在语义上更加精确,而且还允许您提高查询的性能。测试NULL的测试与测试''的测试不同。 – Icarus

+1

我可以看到Jamey和@Icarus的观点。我会在第六种常规表单数据库中添加这个数据库,您应该能够设计出没有空值或空白字段的结构。尽管如此,但以我的经验来看,这往往是不值得的。 [更多信息](http://stackoverflow.com/questions/4336687/how-can-i-avoid-nulls-in-my-database-while-also-representing-missing-data) – Spycho

+0

这里是[另一个例子] (http://stackoverflow.com/questions/167952/null-or-empty-string-to-represent-no-data-in-table-column)从右边的相关列表。我一直使用空字符串,因为1)我从来没有需要使用NULL和2)我的数据库中没有那么多字段,甚至可以留空。 – animuson

1

1.空值代表字段中没有记录值(其他软件称其为缺失值)。

2.空值是一个“字段格式”值,其中没有重要数据。

3.NULL没有分配任何内存,具有NUll值的字符串只是一个指向内存中无处的指针。然而,虽然存储在内存中的值是“”,但空值被分配给内存位置。

4.Null没有界限,它可以用于数据库中的字符串,整数,日期等字段。空字符串只是关于一个字符串;它是一个像'asdfasdf'这样的字符串,但没有长度。如果您没有字段值,请使用null,而不是空字符串。

5.Null是数据库在逻辑上确定一个缺乏价值的东西,可以这么说。你可以这样查询:其中FIELD_NAME是NULL