搜尋

首頁  >  問答  >  主體

mysql - 数据库中,NULL与空值有什么区别

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

天蓬老师天蓬老师2789 天前750

全部回覆(9)我來回復

  • 黄舟

    黄舟2017-04-17 11:04:31

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

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

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 11:04:31

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

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 11:04:31

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

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 11:04:31

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

    回覆
    0
  • 阿神

    阿神2017-04-17 11:04:31

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

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

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 11:04:31

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

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 11:04:31

    以下是摘自 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。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 11:04:31

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

    回覆
    0
  • 黄舟

    黄舟2017-04-17 11:04:31

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

    回覆
    0
  • 取消回覆