sql06实现关系代数

并交差的处理

SQL语言:并运算UNION, 交运算INTERSECT, 差运算EXCEPT 基本语法:

如果带all表示保留重复元组,如果不带all表示删除重复元组

eg.求学过002号课的同学或学过003号课的同学学号

eg.假定所有学生都有选课,求没学过002号课程的学生学号

差运算符Except也没有增强SQL的表达能力,没有Except,SQL也可以用其他方式表达同样的查询需求。只是有了Except更容易表达一些,但增加了SQL语言的不唯一性

空值处理

  • 空值检测:is [not] null 示例:找出年龄为空的学生姓名

不能写成 Where Sage = null; 空值是不参与运算的

内连接,外连接

连接类型:inner join, left outer join, right outer join, full outer join

连接条件:natural, on <连接条件>, using(col, col, col...)

inner Join: 即关系代数中的theta-连接运算

表1 Left Outer Join表2, 连接后,表1的任何元组t都会出现在结果表中,如表2中有满足连接条件的元组s, 则t与s连接;否则t与空值元组连接;

natural连接:出现在结果关系中的两个连接关系的元组在公共属性上取值相等,且公共属性只出现一次

on <连接条件> 出现在结果关系中的两个连接关系的元组取值满足连接条件,且公共属性出现两次

连接中使用using (Col1, Col2, ..., Coln) (Col1, Col2, ..., Coln)是两个连接关系的公共属性的子集,元组在(Col1, Col2, ..., Coln)上取值相等,且(Col1, Col2, ..., Coln)只出现一次

eg. 求所有教师的任课情况并按教师号排序(没有任课的教师也需列在表中)

 


立志成为一名攻城狮