集合运算
并
1 | Select * from R UNION Select * from S; |
差
1 | Select * from R Except Select * from S; |
交
1 | Select * from R Intersect Select * from S |
笛卡尔积
1 | Select * from R,S |
关系运算
选择
1 | SELECT R.学号,R.课程名,R.分数 from R WHERE 分数>85 |
投影
1 | SELECT 课程名 FROM R; |
连接
从关系R和关系S的广义笛卡儿积中选取满足给定条件的元组组成新的关系称为R和S的连接
自然连接
给定一个关系R和关系S,R与S的等值连接运算结果也是一个关系,记作 $R⋈S$ ,它由关系R和关系S的笛卡尔积中,选取R与S的笛卡尔积中选取相同属性组B上值相等的元组组成。
1 | SELECT * from R natual join S |
$\theta$连接
给定一个关系R 和关系S,R 与S 的 $θ$ 连接运算结果也是一个关系,记作$R\underset{A\theta B}{\bowtie} S$,它由关系R和关系S的笛卡尔积中,选取R中属性A与S中属性E之间满足 $θ$ 条件的元组组成。
1 | SELECT * from R |
等值连接
给定一个关系R和关系S,R与S的等值连接运算结果也是一个关系,记作$R\underset{A= B}{\bowtie} S$,它由关系R和关系S的笛卡尔积中,选取R中属性A与S中属性B上值相等的元组组成。
1 | SELECT * from R |
外连接
两个关系R与S进行连接时,如果关系R(或S)中的元组在S(或R)中找不到相匹配的元组,则为了避免该元组信息丢失,从而将该元组与S(或R)中假定存在的全为空值的元组形成连接,放置在结果关系中,这种连接称之为外连接(Outer Join)
1 | select * from R left outer join S; |
除
给定关系R (X, Y) 和S (Y, Z), 其中X, Y, Z为属性组。R中的Y与S中的Y出自相同的域集。R与S的除运算得到一个新的关系P(X)。其中P(X)与S(Y)组成的元组都在R(X,Y)中。
1 | SELECT DISTINCT R.X FROM R R1 |
习题
求至少选择了C001和C003两门课程的学生学号
1
2
3
4
5
6
7
8select distinct sno from sc A
where not exists
(
select * from course B where cno in ('C002','C003') and not exists
(
select * from sc C where A.sno=C.sno and B.cno=C.cno
)
)