关系数据库的操作
众所周知,关系数据库常见的关系操作有:查询,插入,删除,修改这四种操作,而这四种操作有可以分为两大类
- 数据查询:选择,投影,连接,除,并,交,差,笛卡儿积
- 数据更新:插入,删除,修改
在查询操作中,选择,投影,并,差,笛卡儿积是5种基本操作,其他操作可以由这几种操作导出,就比如乘法可以用加法来定义和导出一样。
在详细讲述之前,我要着重说明的是,关系模型的操作具有一个非常鲜明的特点,即它操作的对象和结果都是集合,而不像层次模型和网状模型操作的对象和结果都是一次一条记录。
下面我们来讲一下数据查询下面的一些关系运算。
传统的集合运算
1、 并(union) A并B = 在A中或者在B中
2、 差(except) A-B=在A中而不再B中
3、 交(intersection) A交B = 既在A中又在B中
4、 笛卡尔积
这里的笛卡尔积是广义的笛卡尔积,操作的基本单位为一个元组。
所谓笛卡尔积其实就是一个全排列,所有元组各种方式的组合。
专门的关系运算
专门的关系运算包括:选择、投影、连接、除运算
1、 选择(selection)
选择又称为限制(restriction),它是在关系R中选择满足给定条件的诸元组。
它里面可以出现一些逻辑表达式,逻辑表达式形如:
A x B
这个x不是乘号,它在这里表示比较运算符,比如>,<,=
等等,A和B在这里要么是常量,要么是一个属性名,亦或是简单函数。
同时多个逻辑表达式之间可以用逻辑运算符连接,比如:交、并、非
2、 投影(projection)
投影就是从一个表中选择若干属性列组成一个新的关系
比如:
学生(学号,姓名)
可以将它的学号投影出来,即
投影名(学号)
3、 连接(join)
连接是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
根据连接所选取的条件的不同,可以将连接细分成一些比较特殊的连接情况。
举个例子:假如下面的连接都是表A和表B的连接
- 等值连接(inner join): 选取的条件为A中某元素 = B中某元素。总之这个条件使用的比较运算符为
“=”
- 自然连接:自然连接是一种特殊的等值连接,它要求A中和B中“=”的两边必须是同名的属性组,并且在结果中把重复的属性列去掉。
关于自然连接,又出现了几个概念:
- 悬浮元组:在进行自然连接的时候,有的元组被舍弃掉了(因为不满足等于的条件),这时候被舍弃的元组就叫悬浮元组
- 如果把悬浮元组也保存在结果关系中,其他属性上填空值(null),那么这种连接就叫外连接
- 如果只保留左边关系中的悬浮元组,就叫左外连接(left join),如果只保留右边悬浮元组,就叫右外连接(right join)
4、 除运算(division)
设关系R除以关系S的结果为T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。
听起来比较复杂,确实也不是一两句话能讲清楚,那么这个就请大家自行百度把~~~