2013-03-13 60 views
1

這是VARCHAR/TEXT的正確方法嗎?沒有默認值Vs NULL Vs 0在MySQL中作爲文本和整數字段的默認值

在海蒂SQL,我認爲在phpMyAdmin也一樣,我可以從這個hoose:

1.無缺省值

2.自定義(其中預定爲零像 '0')

3. NULL

和療法也時間戳,autoincremnet但這些都不是我現在重要。

那麼,從這3箇中選擇哪一個是使用MySQL處理VARCHAR和TEXT列的好方法呢?

而這對於INT?

下面是截圖啥子我的選擇是:

enter image description here

+2

這完全取決於你和你的需求。這取決於您的應用程序是否需要區分未輸入的數據和使用默認值輸入的數據。 – Barmar 2013-03-13 16:16:01

+0

其中一個選項應該比其他選項更一般/抽象。你能幫我選擇哪個選項是未來擴展中最通用和最安全的嗎? – Derfder 2013-03-13 16:19:45

+0

有關此主題的更多討論,請參閱邊欄中的相關問題鏈接。沒有一般的答案。 – Barmar 2013-03-13 16:25:07

回答

3

我用大拇指的這個簡單的規則:

我用NOT NULL任何領域,它會顯示一個邏輯錯誤該系統沒有提供價值。

如果告訴「價值未提供」和「提供的價值,但空」之間的差異,那麼我使用的字段可能會默認爲NULL。默認爲""(或0爲整數字段)是不好的,因爲它阻止你做出區分。

+0

所以,NULL是根據你比0而定。謝謝,我也在想同樣的方式。但是,你能幫助我嗎,是NULL還是無默認值之間的區別? – Derfder 2013-03-13 16:21:17

+0

我的選項中沒有NOT NULL;(請檢查我的帖子中的圖片 – Derfder 2013-03-13 16:22:16

+0

NOT NULL是一個單獨的選項,用於設置默認值,我不知道它是否存在於phpmyadmin中(我從未使用過它),但它在MySQL的CREATE TABLE語法中。 – Barmar 2013-03-13 16:23:22