作者:右心1477 | 来源:互联网 | 2023-05-17 18:00
空值
- 空值
- 空值的运算
- 空值的算术运算
- 空值的比较运算
- unknown
- null 关键字
- 查询1. 找出instructor关系中salary为空值的所有教师。
- 空值的集合运算
空值的运算
空值的算术运算
如果一个算术表达式的任一输出为空,则该表达式结果为空。
例如:
表达式:r.A + 5
若r.A
为空,则该表达式结果为空。
空值的比较运算
SQL将涉及空值的任何比较运算的结果视为unknown
。
unknown
where子句的谓词中可以对比较结果使用and、or和not的布尔运算。这些布尔运算的定义也被扩展到可处理的unknown值。
- and:
true and unknown
结果为unknown
,false and unknown
结果为false
, unknown and unknown
的结果为unknown
。
- or :
true or unknown
结果为true
,false or unknown
结果为unknown
, unknown or unknown
的结果为unknown
。
- not : not unknown 的结果为unknown。
null 关键字
SQL使用关键字null测试空值。
查询1. 找出instructor关系中salary为空值的所有教师。
select name from instructor where salary is null;
同样如果,谓词is not null 所作用的值非空,那么它为真。
某些SQL实现允许使用is unknown 和is not unknown 测试一个表达式结果是否为unknown
空值的集合运算
空值在谓词中和在元组中的区别
比较两个元组对应的属性时,若这两个属性值相等,需要满足条件之一:
1. 这两个属性值非空且相等。
2. 这两个属性值为空。
例如:
{(‘a’ , null), (‘a’ , null)} 这两个元组拷贝被认为是相同的。
使用distinct会保存相同元组的一份拷贝。
在谓词中null = null
会返回unknown
。
在元组中,所有属性取值相等,就被认为是相同元组,即使某些值为空。上述方式还应有于集合的并、交和差运算