mysql - 数据库中,NULL与空值有什么区别
天蓬老师
天蓬老师 2017-04-17 11:02:31
0
9
701

创建数据库的时候,对某个字段定义了 NOT NULL,但是,在写入数据的时候,空字符串''竟然也能写入成功。
有人能给我解释一下 NULL 和 NOT NULL 到底是什么意思呢?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(9)
黄舟

空 (NULL) 值表示數值未知。空值不同於空白或零值。沒有兩個相等的空值。比較兩個空值或將空值與任何其它數值相比均返回未知,這是因為每個空值均為未知。

在寫入數據的時候,空字符串'' 也是一個確定的值,所以就算你定義了 NOT NULL 也可以被寫入。

大家讲道理

NULL是處女
''是非處女,但目前單身

巴扎黑

NULL跟空值的區別,基本上就是0跟“沒有”的區別。

左手右手慢动作

在MySQL中,對於每一個允許為NULL的字段,mysql要(在每一行)為它預留一個bit的信息,用來標記它是否為NULL。

阿神

在你說的情況中:
NULL 表示 未知
空字符串表示 已知為 空

要注意NULL的確切意思是 "未知" 而不是 "空"

左手右手慢动作

"" 其實有知道的, 舉個例子: 例如空氣他其實是存在的, 而NULL 可以說是真空。

洪涛

以下是摘自 Oracle SQL Reference 的內容,供您參考。版本是 11g Release 2。

如果行中的列沒有值,則該列被稱為空值,或者包含空值。 Null 可以出現在不受 NOT NULL 或 PRIMARY KEY 完整性約束限製的任何數據類型的列中。當實際值未知或值沒有意義時,請使用 null。 Oracle 數據庫將長度為零的字符值視為空。但是,不要使用 null 來表示零數值,因為它們不等價。
注意:Oracle 數據庫目前將長度為零的字符值視為 null。但是,在未來的版本中,這種情況可能不會繼續存在,Oracle 建議您不要將空字符串與 null 相同。
任何包含 null 的算術表達式始終計算為 null。例如,null 加 10 就是 null。事實上,當給定 null 操作數時,所有運算符(除了串聯)都會返回 null。
Peter_Zhu

NULL是不確定的內容,空值的話是相當於""這個吧

黄舟

null和''的區別,就像真空和一個存在空氣的空間一樣。null是純粹意義上的沒有任何東西,''就像一個長度為零的字符串。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板