찾다

 >  Q&A  >  본문

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

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

天蓬老师天蓬老师2789일 전743

모든 응답(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。

    If a column in a row has no value, then the column is said to be null, or to contain null. Nulls can appear in columns of any data type that are not restricted by NOT NULL or PRIMARY KEY integrity constraints. Use a null when the actual value is not known or when a value would not be meaningful. Oracle Database treats a character value with a length of zero as null. However, do not use null to represent a numeric value of zero, because they are not equivalent.
    Note: Oracle Database currently treats a character value with a length of zero as null. However, this may not continue to be true in future releases, and Oracle recommends that you do not treat empty strings the same as nulls.
    Any arithmetic expression containing a null always evaluates to null. For example, null added to 10 is null. In fact, all operators (except concatenation) return null when given a null operand.

    회신하다
    0
  • 天蓬老师

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

    NULL是不确定的内容,空值的话是相当于""这个吧

    회신하다
    0
  • 黄舟

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

    null和''的区别,就像真空和一个存在空气的空间一样。null是纯粹意义上的没有任何东西,''就像一个长度为零的字符串。

    회신하다
    0
  • 취소회신하다