Apache Calcite教程-基础知识-关系代数

关系代数解释

关系代数
relational algebra

常用关系代数

选择(selection)σ

一元运算符,选出满足给定的谓词元组,使用的是 =, ≠, >, ≥. <. ≤,另外可以用连词 ∧ (and), ∨ (or), ¬ (not),将多个谓词合并为一个较大的谓词

例子:

表S:

ABCD
aa13
ab15
bb27
bb37

表达式: σ ( A = B ∧ D &gt; 5 ) ( S ) \sigma{(A=B \wedge D&gt;5)}(S) σ(A=BD>5)(S)

ABCD
bb27
bb37

投影(projection) π

一元运算符,返回作为参数关系的某些属性

例子:

ABCD
aa13
ab15
bb27
bb37

表达式:πA,C

AC
a1
b2
b3

投影运算需要在结果集中删除重复行
因重复行被删除

AC
a1

笛卡尔积(cartesian product ) ×

例子
r表

AB
a1
b2
b3

s表

CD
a1
b3

r × s 求笛卡尔积

ABCD
a1a1
a1b3
b2a1
b2b3
b3a1
b3b3

注意:

  • 求笛卡尔积时有重复字段必须重命名

并集(set union) U

二元运算,将两个集合合并起来

例子
r表

AB
a1
b2
b3

s表

AB
a1
b7

r U s 求并集

AB
a1
b2
b3
b7

交集的两个条件

  • r和s必须有相同的列数
  • r和s对应的列类型相同

差集(set difference) -

找出一个关系中而不在另一个关系中的那些元组

例子
r表

AB
a1
b2
b3

s表

AB
a1
b7

r - s 求差集

AB
b2
b3

差集的两个条件

  • r和s必须有相同的列数
  • r和s对应的列类型相同

更名(rename) ρ

一元运算,更名运算不是必须的,为了得到具有新名字的一个相同的关系

例子
r表

AB
a1
b2
b3

ρs® 将r表更名为s表

s表

AB
a1
b2
b3

其他操作

链接运算

自然连接 (Natural join) ⋈

例子1
R = (A, B, C, D)
S = (E, B, D)
Result schema = (A, B, C, D, E)

例子2
r表

AB
a1
b2
b3

s表

AC
aj
bq

r ⋈ s

ABC
a1j
b2q
b3q

相等连接 (equijoin)

r表

AB
a1
b2
b3

s表

AC
aj
bq

r ⋈ s

ABC
a1j
b2q
b3q

θ-join (theta join)

θ是在集合{<, ≤, =, >, ≥}中的二元关系

r表

AB
a2
b3
b4

s表

CD
j2
q3
k4

r ⋈ s B>D

ABCD
b3j2
b4j2
b4q3

半链接(Semijoin) ⋉/⋊

r表

AB
a1
b2
c3

s表

AC
aj
bq
eq

r ⋉ s

ABC
a1j
b2q

反连接 Antijoin ▷

r表

AB
a1
b2
c3

s表

AC
aj
bq
eq

r ▷ s

AB
c3

外链接 Outer joins

数据库语言SQL所定义的NULL,所以衍生以下链接操作

左外链接 Left outer join (⟕)

r表

AB
a1
b2
c3

s表

AC
aj
bq
eq

r ⟕ s

ABC
a1j
b2q
c3NULL
右外链接 Right outer join (⟖)

r表

AB
a1
b2
c3

s表

AC
aj
bq
eq

r ⟖ s

ABC
a1j
b2q
eqNULL
全链接 Full outer join (⟗)

r表

AB
a1
b2
c3

s表

AC
aj
bq
eq

r ⟖ s

ABC
a1j
b2q
c3NULL
eqNULL

除 Division (÷)

r表

AB
s1p1
s1p2
s1p3
s1p4
s2p1
s2p2
s3p2
s4p2
s4p4

s1表

B
p2

s2表

B
p2
p4

r ÷ s1

A
s1
s2
s3
s4

r ÷ s2

A
s1
s4

聚集运算

  • 求和 Sum
  • 计数 Count
  • 平均 Average
  • 最大 Maximum
  • 最小 Minimum
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值