三值逻辑中的NULL值知识点

在SQL中逻辑表达式的可能值包括:TRUE、FALSE、UNKNOWN,它们被称为三值逻辑。SQL中的UNKNOWN逻辑值通常出现在包含NULL值的逻辑表达式中,通常表示丢失或未知的值。
关于UNKNOWN的相关知识点整理如下:
1、NOT  TRUE 等于 FALSE,,NOT  FALSE 等于 TRUE,,否定的UNKNOWN还是UNKNOWN;
2、比较两个NULL值,将返回FALSE而不是UNKOWN;
3、所有的查询筛选器(ON、WHERE和HAVING)都会把UNKNOWN当作FALSE处理,UNKNOWN的行会被排除在结果集之外;
4、CHECK约束中的UNKNOWN被当作TRUE来处理,假设表中包含一个CHECK约束,要求salary列的值必须大于0,向该表插入salary为NULL的行时可以被接受;
5、如果表中有一列定义了UNIQUE约束,将无法向表中插入两行该列值为NULL的数据;
6、GROUP BY会把所有NULL值分组到一起;ORDER BY 会把所有的NULL值排列在一起;
7、NULL值在聚合函数里的使用有点意思:Count(*)会返回表中的所有行,Count(salary)将会排除掉salary为NULL的行;
     使用AVG(salary)求平均值时也会排除掉salary为NULL的行,这样可能会导致计算的平均值不准确,需要将NULL转换成0或其它默认值再参与计算;
     在数据库设计时,关键字段上应考虑设计默认值,防止在统计时出现误差;

posted on 2011-03-17 11:04  Yuanet  阅读(577)  评论(2编辑  收藏  举报

导航