笛卡尔积、等值连接、自然连接的联系与区别
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
笛卡尔积、等值连接、自然连接的联系与区别虽然naturaljoin(自然连接)实际上的用的比较少,但实际上这个连接是非常有用的,若能经常使用一下,实际上是非常方便的。
自然连接是在两张表中寻找那些数据类型和列名都相同的字段,然后自动地将他们连接起来,并返回所有符合条件按的结果。
来看一下自然连接的例子。
Selectemp.ename,dept.dname
Fromempnaturaljoindept;
这里我们并没有指定连接的条件,实际上oracle为我们自作主张的将,emp 中的deptno和dept中的deptno做了连接。
也就是实际上相当于
Selectemp.ename,dept.dname
Fromempjoindeptonemp.deptno=dept.deptno;
因为这两张表的这两个字段deptno的类型个名称完全相同。所以使用naturaljoin时被自然的连接在一起了。
另外:
1.如果做自然连接的两个表的有多个字段都满足有相同名称个类型,那么他们会被作为自然连接的条件。
2.如果自然连接的两个表仅是字段名称相同,但数据类型不同,那么将会返回一个错误。
3.由于oracle中可以进行这种非常简单的naturaljoin,我们在设计表时,应该尽量在不同表中具有相同含义的字段使用相同的名字和数据类型。以方便以后使用naturaljoin
最后我们在前面举的例子都得到以下的结果:
SQL>Selectemp.ename,dept.dname
2Fromempnaturaljoindept;
ENAMEDNAME
——————–—————-
SMITHRESEARCH
ALLENSALES
WARDSALES
JONESRESEARCH
MARTINSALES
BLAKESALES
CLARKACCOUNTING
SCOTTRESEARCH
KINGACCOUNTING
TURNERSALES
ADAMSRESEARCH
JAMESSALES
FORDRESEARCH
MILLERACCOUNTING
内连接与等值连接是一回事情。
经常有人会问到selecta.id,froma,bwherea.id=b.pid
selecta.id,fromainnerjoinbona.id=b.pid.有什么区别,哪个效率更高一些。
实际上一回事情了。只是内连接是由SQL1999规则定的书写方式。两个说的是一码事。
等值连接
等值连接是条件连接在连接运算符为“=”号时的特例。
它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组
自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉
等值连接表示为RA=BS,自然连接表示为RS;自然连接是除去重复属性的等值连接。两者之间的区别和联系如下:
1、自然连接一定是等值连接,但等值连接不一定是自然连接。等值连接不把重复的属性除去;而自然连接要把重复的属性除去。
2、等值连接要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性。
3、等值连接不把重复的属性除去;而自然连接要把重复的属性除去。