创建数据库的时候,对某个字段定义了 NOT NULL,但是,在写入数据的时候,空字符串''竟然也能写入成功。 有人能给我解释一下 NULL 和 NOT NULL 到底是什么意思呢?
''
欢迎选择我的课程,让我们一起见证您的进步~~
空 (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。
NULL是不確定的內容,空值的話是相當於""這個吧
null和''的區別,就像真空和一個存在空氣的空間一樣。null是純粹意義上的沒有任何東西,''就像一個長度為零的字符串。
空 (NULL) 值表示數值未知。空值不同於空白或零值。沒有兩個相等的空值。比較兩個空值或將空值與任何其它數值相比均返回未知,這是因為每個空值均為未知。
在寫入數據的時候,空字符串'' 也是一個確定的值,所以就算你定義了 NOT NULL 也可以被寫入。
NULL是處女
''是非處女,但目前單身
NULL跟空值的區別,基本上就是0跟“沒有”的區別。
在MySQL中,對於每一個允許為NULL的字段,mysql要(在每一行)為它預留一個bit的信息,用來標記它是否為NULL。
在你說的情況中:
NULL 表示 未知
空字符串表示 已知為 空
要注意NULL的確切意思是 "未知" 而不是 "空"
"" 其實有知道的, 舉個例子: 例如空氣他其實是存在的, 而NULL 可以說是真空。
以下是摘自 Oracle SQL Reference 的內容,供您參考。版本是 11g Release 2。
NULL是不確定的內容,空值的話是相當於""這個吧
null和''的區別,就像真空和一個存在空氣的空間一樣。null是純粹意義上的沒有任何東西,''就像一個長度為零的字符串。