PHP
是世界上最好的语言

MySQL表字段not null 可以保存空值原理

最近新建一个表,里面有个字段是not null,但在实际业务中,不传任何值依然保存成功了,于是就很奇怪为什么是这样的结果,翻看mysql官方手册发现了如下的解释,很有意思,特此记录下。
从概念上讲,NULL意味着 “ 缺失的未知值 ”,并且与其他值的处理方式略有不同。
要测试NULL,请使用 IS NULL和IS NOT NULL运算符,如下所示:

mysql> SELECT 1 IS NULL, 1 IS NOT NULL;
+———–+—————+
| 1 IS NULL | 1 IS NOT NULL |
+———–+—————+
| 0 | 1 |
+———–+—————+
你不能使用算术比较操作符,如 =, <或 <>以测试NULL。要自己演示,请尝试以下查询:

mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;
+———-+———–+———-+———-+
| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |
+———-+———–+———-+———-+
| NULL | NULL | NULL | NULL |
+———-+———–+———-+———-+
由于任何算术比较的结果 NULL也是如此NULL,因此您无法从此类比较中获得任何有意义的结果。

在MySQL中,0或NULL 意味着虚假,其他任何意味着真实。布尔运算的默认真值是1。

这种特殊处理NULL是为什么在上一节中,有必要确定哪些动物不再使用death IS NOT NULL而不是death <> NULL。

NULL在a中, 两个值被视为相等 GROUP BY。

在执行操作时ORDER BY,NULL如果您这样做ORDER BY … ASC,则首先显示值,如果执行, 则显示最后 值 ORDER BY … DESC。

使用时常见的错误NULL是假设无法将零或空字符串插入到定义为的列中NOT NULL,但事实并非如此。这些实际上是价值,而 NULL意味着“ 没有价值。“你可以通过使用IS [NOT] NULL如下所示轻松地测试这个 :

mysql> SELECT 0 IS NULL, 0 IS NOT NULL, ” IS NULL, ” IS NOT NULL;
+———–+—————+————+—————-+
| 0 IS NULL | 0 IS NOT NULL | ” IS NULL | ” IS NOT NULL |
+———–+—————+————+—————-+
| 0 | 1 | 0 | 1 |
+———–+—————+————+—————-+
因此,完全可以将零或空字符串插入到NOT NULL列中,因为这些实际上是这样的NOT NULL。

赞(0)
本文链接:PHPBeta » MySQL表字段not null 可以保存空值原理

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址