欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数据库自学笔记(1)---广义笛卡尔积,投影,连接

程序员文章站 2022-05-29 07:57:46
最近在自学看 数据库系统概论 这本书,总结一下遇到的问题。 1.广义笛卡尔积(Extende cartesian product): 属于 关系代数 里面的 传统的集合运算。其他的为union,except,intersection. 详情不提了,举个例子就是: create table R(A c ......

最近在自学看 数据库系统概论 这本书,总结一下遇到的问题。

1.广义笛卡尔积(extende cartesian product):

属于 关系代数 里面的 传统的集合运算。其他的为union,except,intersection. 

数据库自学笔记(1)---广义笛卡尔积,投影,连接

详情不提了,举个例子就是:

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   c1

 

 

行数为 3*3 ,因为k1*k2。

列数为3+3, = 6.

2.投影(projection):

关系r的投影是从关系r中选择出若干属性列组成新的关系。
分为两步:
(1)选择出指定的属性,形成一个可能含有重复行的表。
(2)删除重复行,形成新的关系。
 
数据库自学笔记(1)---广义笛卡尔积,投影,连接

 

我们关注这个重复行:一开始我们同时选取名字和班级的时候,尽管班级有重复,但是整个行来说不重复就行。

当我们转到了只取班级,这就有重复行了,就会被消灭(新版书上体现出来了,这里还保留了重复行)

 3.连接(join):

大体上分:

1. 等值连接(内连接)【inner join】:

等值连接是条件连接在连接运算符为“=”号时的特例。  

它是从关系r与s的广义笛卡尔积中选取a,b属性值相等的那些元组。

自然连接 :是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉 等值连接表示为ra=bs,自然连接表示为rs;自然连接是除去重复属性的等值连接。

两者之间的区别和联系如下:

1、自然连接一定是等值连接,但等值连接不一定是自然连接。等值连接不把重复的属性除去;而自然连接要把重复的属性除去。

2、等值连接要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性。

3、等值连接不把重复的属性除去;而自然连接要把重复的属性除去。

2. 外连接(outer join):

外连接就是自然连接的结果加上被舍弃的悬浮元祖,没有的属性便设定为null。

如果只保留左边r的悬浮元素就是左连接(left join),反之就是右连接(right join)

ps:正式名称应该是左/右外连接(left/right outer join)不过一般外面的资料都是简称。

 

 

参考:

还有 数据库系统概论第五版