实体完整性约束参照完整性约束左外连接右外连接关系表达式的优化
程序员文章站
2024-01-22 20:13:10
...
实体完整性约束:关系的主码中的属性不能为空 参照完整性约束:如果关系R2的外部码Fk与关系R1的主码Pk相对应,则R2中的每一个元组的Fk或者等于R1中某个元组的Pk,或者为空;意义:如果关系R2的某个元组t2参照了关系R1的某个元组t1,则t1必须存在;例如关系S
实体完整性约束:关系的主码中的属性值不能为空值
参照完整性约束:如果关系R2的外部码Fk与关系R1的主码Pk相对应,则R2中的每一个元组的Fk值或者等于R1中某个元组的Pk值,或者为空值;意义:如果关系R2的某个元组t2参照了关系R1的某个元组t1,则t1必须存在;例如关系S在D#上的取值有两种可能:空值,表示该学生尚未分到任何系中,若非空值,则必须是DEPT关系中某个元组的D#值,表示该学生不可能分到一个不存在的系中
左外连接,表示左边的每一个元组必须出现!!!
关系表达式的优化,将选择和投影操作尽量移动到叶节点。。。
一些SQL的写法:
左外连接:
成绩最高的学生:
除法操作:
select SNAME from S where not exists(select CN from C where not exists (select * from SC where SC.CN = C.CN and SC.SN = S.SN ));