最近在自学看 数据库系统概论 这本书,总结一下遇到的问题。数据库
属于 关系代数 里面的 传统的集合运算。其余的为union,except,intersection. spa
详情不提了,举个例子就是:.net
create table R
(
A char(2),
B char(2),
C char(2)
)
create table S
(
A char(2),
B char(2),
C char(2)
)
insert into R values('a1', 'b1', 'c1')
insert into R values('a1', 'b2', 'c2')
insert into R values('a2', 'b2', 'c1')
insert into S values('a1', 'b2', 'c2')
insert into S values('a1', 'b3', 'c2')
insert into S values('a2', 'b2', 'c1')
select * from R cross join S
结果:
A B C A B C
---- ---- ---- ---- ---- ----
a1 b1 c1 a1 b2 c2
a1 b2 c2 a1 b2 c2
a2 b2 c1 a1 b2 c2
a1 b1 c1 a1 b3 c2
a1 b2 c2 a1 b3 c2
a2 b2 c1 a1 b3 c2
a1 b1 c1 a2 b2 c1
a1 b2 c2 a2 b2 c1
a2 b2 c1 a2 b2 c1blog
行数为 3*3 ,由于k1*k2。get
列数为3+3, = 6.io
咱们关注这个重复行:一开始咱们同时选取名字和班级的时候,尽管班级有重复,可是整个行来讲不重复就行。table
当咱们转到了只取班级,这就有重复行了,就会被消灭(新版书上体现出来了,这里还保留了重复行)class
大致上分:select
等值链接是条件链接在链接运算符为“=”号时的特例。 nio
它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组。
天然链接 :是一种特殊的等值链接,它要求两个关系中进行比较的份量必须是相同的属性组,而且在结果中把重复的属性列去掉 等值链接表示为RA=BS,天然链接表示为RS;天然链接是除去重复属性的等值链接。
二者之间的区别和联系以下:
一、天然链接必定是等值链接,但等值链接不必定是天然链接。等值链接不把重复的属性除去;而天然链接要把重复的属性除去。
二、等值链接要求相等的份量,不必定是公共属性;而天然链接要求相等的份量必须是公共属性。
三、等值链接不把重复的属性除去;而天然链接要把重复的属性除去。
外链接就是天然链接的结果加上被舍弃的悬浮元祖,没有的属性便设定为NULL。
若是只保留左边R的悬浮元素就是左链接(left join),反之就是右链接(right join)
ps:正式名称应该是左/右外链接(left/right outer join)不过通常外面的资料都是简称。
参考:
https://blog.csdn.net/weixin_42194151/article/details/81135212
还有 数据库系统概论第五版