2011-08-30 19 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