2012-09-07 41 views
1

每當我們在mysql數據庫中創建我們的表時,那麼在那裏會出現一個null複選框選項。如果點擊它,那麼它也會使用空值,如果它保持未選中狀態,那麼它也會使用空值。那是什麼意思?MySQL數據庫中的NULL和NOT NULL的含義

+0

聽起來像你用來創建你的表的任何東西都不能正常工作。如果您將表定義爲NOT NULL,那麼您不能在其中存儲NULL。無論是或者你存儲的字符串值'null',而不是一個實際的NULL。做SHOW CREATE TABLE表;並檢查定義。 –

回答

1

該複選框可能會將默認值設置爲null。可能還有一個框指定該字段是否接受空值。空基本意味着空或無(在VB中)。

0

空基本上是「沒有價值」。如果您允許使用空值,則需要確保您的代碼能夠處理不包含值的列。另一種方法是爲每列定義「空」值(例如,整數爲0)。這有時比處理空值更省力。

正如下面的HLGEM所指出的:我不是想說0等於null。考慮: 具有「StockOnHand」列的數據庫。

0表示您知道手頭沒有庫存。 Null真的意味着未知(你的男人有股票,你可能不會)

根據應用程序,也許你決定把「未知」視爲「無股票」 - 在這種情況下,你可以使用「無空」並只有一個0值。

+0

然而,0具有特定的數學意義,並且無法與null相比,這意味着您不知道該值。如果你不知道價值,那麼你有時可以這樣做,但這是一種危險的做法。 – HLGEM

1

NULL用於表示「無值」,並允許區分1和0之間,真或假,或空字符串與含內容的字符串。它類似於Ruby中的nil,JavaScript中的null或PHP中的NULL

如果您將一列定義爲NOT NULL,那麼它將不允許INSERT沒有指定該列的值。如果你有一個DEFAULT那麼這將自動應用。如果您使用ORM,則可以使用安全的最小默認值爲您填充。

可以是NULL的列需要每行額外存儲幾乎不需要額外的一個位來保存NULLNOT NULL標誌。

請記住,MySQL中的NULL是不尋常的,因爲它不大於,小於或等於任何其他值。這就是邏輯比較需要IS NULLIS NOT NULL的原因。

0

按照manual

NULL值意味着 「無數據」 NULL可以寫在任何信箱中。同義詞是\N(區分大小寫)。

NOT NULL意味着與NULL相反,或不是沒有數據。由於某些列可能爲NULL,因此可以使用WHERE col IS NOT NULL來查找非「空」的值。