数据库的传统集合运算(并、差、交、笛卡尔积)和专门的关系运算(选择、投影、连接、除运算)

转载https://blog.csdn.net/zgcr654321/article/details/82077809

正文如下:

各种运算符如下:

数据库中每行就是一个元组,每列就是一个属性。

数据库的传统集合运算包括:并、差、交、笛卡尔积运算。这四种运算都与数学上的同名运算概念相似。

并:

差:

交:

笛卡尔积:

广义笛卡尔积(Extended Cartesian Product):两个分别为n目和m目关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合,元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1*k2个元组,记作:R×S={tr⌒ts| tr∈R∧ts∈S}或记做R×S={(r1,…,rn ,s1,…,sm)∣((r1,…,rn)∈R∧(s1,…,sm)∈S)。

r,s为R和S中的相应分量。

简单来说,就是把R表的第一行与S表第一行组合写在一起,作为一行。然后把R表的第一行与S表第二行依此写在一起,作为新一行。以此类推。当S表的每一行都与R表的第一行组合过一次以后,换R表的第二行与S表第一行组合,以此类推,直到R表与S表的每一行都组合过一次,则运算完毕。如果R表有n行,S表有M行,那么笛卡尔积R×S有n×M行。

下面举一个例子:

关系表R和S如下图所示:

R并S、R减S、R交S、选择、R与S的笛卡尔积结果如下所示:

选择B>'4'(R),即选择语句的条件,对R的关系做水平分割,选择R中符合条件的元组。

 

数据库的专门关系运算有:选择(对关系进行水平分割)、投影(对关系进行垂直分割)、连接、自然连接(关系的结合)、除运算等。

选择(selection):

选择就是"筛选行"。选择一般要对一张表选择符合条件的行(但包含所有列)。

举例:

投影(projection):

投影就是"筛选列"。一个数据库表,如仅希望得到其一部分的列的内容(但全部行),就是投影。

举例:

除法(division):

记为R÷S,它是笛卡尔积的逆运算。设关系R和S分别有r列和s列(r>s,且s≠0),那么R÷S的结果有(r-s)个列,并且是满足下列条件的最大的表:其中每行与S中的每行组合成的新行都在R中。注意有时关系之间的除法也有"余数",可能S×T的结果为R的一部分(最大的一部分),R中的多余部分为"余数"。

举例:

运算过程:

 C, D是关系S中的两个属性, 故在R集合中对除了C, D的属性, 即A, B两属性进行投影, 得到a, b; b, c; e, d;这三组, 然后用这个结果与关系S进行笛卡尔积运算, 发现b c c d这组在关系R中没有, 其余a, b; e, d; 做的运算在R中存在. 因此最后结果为a, b; e, d。

连接(join):

 

两表笛卡尔积的结果比较庞大,实际应用中一般仅选取其中一部分的行,选取两表列之间满足一定条件的行,就是关系之间的连接。

根据连接条件的种类不同,关系之间的连接分为等值连接、大于连接、小于连接、自然连接。

条件是类似于"B列=D列"的"某列=某列"的条件,就是等值连接;

条件是"某列>某列"的,就是大于连接;

条件是"某列<某列"的,就是小于连接。

自然连接是不提出明确的连接条件,但"暗含"着一个条件,就是"列名相同的值也相同"。在自然连接的结果表中,往往还要合并相同列名的列。当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的属性。

举一个等值连接的例子:

关系R和S如下图所示:

对关系R、S按条件"R表的B列=S表的B列"进行连接的结果(等值连接):

小于连接的结果(B<D):

自然连接的结果(自然连接暗含的条件是R.B=S.B且R.C=S.C,因为R、S中有同名的2列B、C):

多个条件之间可用"∧"表示"且",即两边的条件必须同时成立。

如"C>4∧D>3",表示"C列值>4,且D列值>3",二者需同时满足。

用"∨"表示"或",即两边的条件有一个成立即可。

例如"性别='女'∨年龄<20"表示"性别为'女'或者年龄在20岁以下"。
--------------------- 
作者:一骑走烟尘 
来源:CSDN 
原文:https://blog.csdn.net/zgcr654321/article/details/82077809 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

  • 107
    点赞
  • 435
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
【完整Oracle SQL开发教程课件如下】 数据库开发 Oracle数据库 SQL开发教程 第0章 开篇概述(共14页).pdf 数据库开发 Oracle数据库 SQL开发教程 第01章 Oracle数据库基础(共60页).pdf 数据库开发 Oracle数据库 SQL开发教程 第02章 编写简单的查询语句(共34页).pdf 数据库开发 Oracle数据库 SQL开发教程 第03章 限制数据和对数据排序(共37页).pdf 数据库开发 Oracle数据库 SQL开发教程 第04章 单行函数(共61页).pdf 数据库开发 Oracle数据库 SQL开发教程 第05章 多表连接(共48页).pdf 数据库开发 Oracle数据库 SQL开发教程 第06章 分组函数(共41页).pdf 数据库开发 Oracle数据库 SQL开发教程 第07章 子查询(共49页).pdf 数据库开发 Oracle数据库 SQL开发教程 第08章 集合运算(共20页).pdf 数据库开发 Oracle数据库 SQL开发教程 第09章 高级子查询(共23页).pdf 数据库开发 Oracle数据库 SQL开发教程 第10章 层次查询(共17页).pdf 数据库开发 Oracle数据库 SQL开发教程 第11章 数据操作与事务控制(共52页).pdf 数据库开发 Oracle数据库 SQL开发教程 第12章 Oracle数据库网络连接(共39页).pdf 数据库开发 Oracle数据库 SQL开发教程 第13章 创建和维护表(共37页).pdf 数据库开发 Oracle数据库 SQL开发教程 第14章 约束(共33页).pdf 数据库开发 Oracle数据库 SQL开发教程 第15章 视图(共23页).pdf 数据库开发 Oracle数据库 SQL开发教程 第16章 序列、索引、同义词(共34页).pdf 数据库开发 Oracle数据库 SQL开发教程 第17章 用户、权限和角色(共28页).pdf

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值