2010-01-03 28 views
0

我希望當我通過在mysql數據庫中添加值的查詢時,空值不應該通過我應該做的事情?以及在哪裏以及如何使用這些代碼?請詳細告訴我我完全是新來的停止傳遞給mysql的空值

回答

4

要下手,約束你列在數據庫中是NOT NULL。這將防止無效數據被存儲。

然後,你需要考慮你的代碼的數據表示,不涉及空值。這可能會影響您如何表示默認或未指定的值。

您可能會發現(作爲副作用),你的代碼變得更簡單,更不容易出錯,因爲你不必擔心你的代碼取消引用空值。因此,一般來說,從數據庫中刪除空值和你的代碼是一種很好的習慣。

+0

這是很好的建議。數據約束應該在數據庫的控制之下,而不是一些應用程序。那是因爲你永遠不知道什麼時候會有錯誤的或惡意的應用程序進入並附加到你的寶貴數據。如果你不想停止這些應用程序,但仍然想阻止NULL,你可以選擇插入/更新觸發器來將NULL轉換成其他的東西,但這是一個混亂。 – paxdiablo 2010-01-03 12:09:06

1

添加不帶NULL的記錄的唯一方法是爲每列指定值。

+0

或者添加合理​​的默認值。 – duffymo 2010-01-03 12:36:51

1

如果您希望在向數據庫中添加空值時發生錯誤,可以設置NOT NULL。

如果你還不想一個錯誤,你可以使用默認值,該字段,那麼字段值將作爲默認值,而不是空。


當你的表是編輯 模式(選擇在phpMyAdmin筆),

  • 你可以設置一個字段的默認值,

  • 對於設置不爲空,你可以取消-check NULL複選框

0

y爲了保持數據不存在,請確保你不需要它們。空值是表示未知值的最佳方式。然而,你必須編寫預計爲空值的代碼,並且驅使很多人離開。

人們很容易使用默認值,或絕對荒謬的價值,爲空。但是,這經常會導致問題的發生。有趣的是,像「NOPLATE」和「XXXXXXXX」這樣的虛擬平板電腦的人獲得數百張其他車票,因爲票務編寫者會使用這些值,其中NULL是最好的選擇。如果將票據數據放入計算機的人有辦法在板號字段中放置NULL,則問題不會發生。 ...嘿,魔鬼的擁護者 - 字符串「NULL」與NULL值不同,所以你可以在完美的世界中有一個名爲「NULL」的虛榮盤。 (我不會接受NULL培訓交通執法官員的責任,但我會接受培訓警察IT人員的合同,收取正確的費用:))

使用「荒謬」值並不罕見比如「1/1/1899」,表示未知日期,而不是允許空值。但是,這有兩個問題。首先,用戶會因某一天實際需要該日期而感到震驚。其次,當編寫代碼來處理null時,你必須編寫查找「1/1/1899」的代碼,這將是相同數量的工作,並且在語義上更加正確。

使用的情況下,使用NOT NULL約束「這個值可以永遠,永遠是空的。無論是通過主鍵描述必須始終有這個價值。」避免使用NOT NULL約束來將空值保留在數據庫之外,以獲得實際可能丟失或未知的值。

NULL可能很有用。這是表示未知數據的最佳方式。