1空值的处理
1.1空值的产生
空值就是不知道,不存在或者无意义的值,因此空值是一个特殊的值,含有不确定性,需要特殊的处理
3.79 向SC表插入一个元组,学号是'201215126',课程号是'1',成绩为空
insert
into SC(Sno,Cno)
values('201215126','1'); -- grade值默认为空
或
insert
into SC
values('201215126','1',null);
3.80 将student表中学生号为'201215200'的学生所属的系改为空值
update Student
set Sdept=null
where Sno='201215200';
1.2空值的判断
用IS NULL 或 IS NOT NULL来判断
3.81 从Student表中找出漏填了数据的学生信息
select *
from student
where Sname is null or Ssex is null
or Sage is null or Sdept is null; -- 主键Sno不用判断
1.3空值的约束条件
1.属性定义(或者域定义)中有NOT NULL约束条件
2.加了UNIQUE 限制的属性
3.码属性不能去空值
1.4空值的算术运算.比较运算和逻辑运算
注意:空值与另一个值的算术运算结果为空值,空值与另一个值的比较运算结果为UNKNOWN.有了UNKNOWN后,传统的逻辑运算中二值(true,false)逻辑就扩展成了三值逻辑.,true,false,unknown.
3.82 找出选修1号课程的不及格的学生
select sno
from SC
where grade < 60 and cno='1';
这个结果是参加考试的同学,不包括grade值为null的同学
3.83 找出选修1号课程不及格的学生以及缺考的学生.
select sno
from sc
where grade < 60 and cno='1'
union
select sno
from sc
where grade = null and cno = '1';
或
select sno
from sc
where cno='1' and (grade < 60 or grade is null);