(1)空值就是“不知道”或“不存在”或“无意义”的值。
(2)一般有以下几种情况:
①该属性应该有一个值,但目前不知道它的具体值;
②该属性不应该有值;
③由于某种原因不便于填写。
(3)所以空值是一个很特殊的值,含有不确定性。对关系运算带来特殊的问题,需要做特殊的处理。
一.空值的产生
例子:向SC表中插入一个元组,学生号为“201215126”,课程号是“1”,成绩为空。
INSERT INTO SC(Sno,Cno,Grade)
VALUES('201215126','1',NULL);
另一种写法:
INSERT INTO SC(Sno,Cno)
VALUES('201215126','1');
二.空值的判断
判断一个属性的值是否为空值,用IS NULL或IS NOT NULL来表示。
例子:从Student表中找出漏填了数据的学生信息。
SELECT *
FROM Student
WHERE Sname IS NULL OR Ssex IS NULL OR Sage IS NULL OR Sdept IS NULL;
三.空值的约束条件
属性定义(或者域定义)中:
a.有NOT NULL约束条件的不能取空值;
b.加了UNIQUE限制的属性不能取空值;
c.码属性不能取空值。
四.空值的算术运算、比较运算和逻辑运算
(1)空值与另一个值(包括另一个空值)的算术运算的结果为空值;
(2)空值与另一个值(包括另一个空值)的比较运算结果为UNKNOWN;
(3)有UNKNOWN后,传统二值(TRUE、FALSE)逻辑就扩展成了三值逻辑。