码迷,mamicode.com
首页 > 数据库 > 详细

MySQL NULL--三值逻辑(Three Value Logic)

时间:2019-08-08 22:59:57      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:not   nbsp   col   logic   group by   筛选   唯一索引   索引   逻辑   

三值逻辑(Three Value Logic)

在关系型数据库中,由于NULL值的存在,导致逻辑表达式存在三种值:TRUE/FALSE/UNKNOW。

SELECT 
999=NULL AS C1,
999=111 AS C2,
999=999 AS C3;

+------+----+----+
| C1   | C2 | C3 |
+------+----+----+
| NULL |  0 |  1 |
+------+----+----+
1 row in set (0.00 sec)

NULL值表示不确定或未知的值,因此NULL值是否等于或不等于某个特定值,只能使用IS NULL或IS NOT NULL来判断。

 

NULL值处理

在大部分场景中,NULL值不等于任何值包括NULL值,但在下列场景中设定NULL值相等:

1、对于唯一索引,仅允许唯一索引列存在一个NULL值。

2、对于GROUP BY和DISTINCT操作,所有NULL值当做同一组处理。

3、对于ORDER BY操作,所有NULL值被当做"最小值"排序在一起。

 

UNKNOW值处理

对于逻辑表达式计算后得到的UNKNOW值,在不同场景中处理方式不同:

1、在WHERE/ON/HAVING三类筛选操作中,UNKNOW值被当做FALSE处理。

2、在CHECK约束中,UNKNOW值被当做TRUE处理,CHECK约束仅对CHCK表达式为FALSE的记录返回错误。

 

MySQL NULL--三值逻辑(Three Value Logic)

标签:not   nbsp   col   logic   group by   筛选   唯一索引   索引   逻辑   

原文地址:https://www.cnblogs.com/gaogao67/p/11324365.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!