数据库 连接基础知识 等值连接 自然连接

本文介绍了数据库连接中的等值连接和自然连接。等值连接分为内连接和外连接,包括左外连接、右外连接和全外连接。自然连接是一种特殊的等值连接,它比较相同属性列,去除重复列。通过示例详细解析了各种连接类型的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库连接:

一、等值连接

1.内连接:

即最常见的等值连接,指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。

2.外连接:

连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。

2.1左外连接:

左表数据行全部保留,右边表保留符合连接条件的行

2.2右外连接:

右表数据行全部保留,左边表保留符合连接条件的行

2.3全外连接:

左外连接 union 右外连接,即同一表先做左连接,然后右连接

二、自然连接

  自然连接是一种特殊的等值连接,他要求两个关系表中进行比较的必须是相同的属性列,无须添加连接条件,并且在结果中消除重复的属性列。

例子:

TESTA,TESTB,TESTC,各有A, B两列

A

B

001     

     10A 

002

     20A

 

A

B

001     

     10B

003

     30B

 

A

B

001     

10C

004

40C

 

连接分为两种:内连接与外连接。

 

A.内连接

SELECT * 

FROM TESTA,TESTB
WHERE TESTA.A=TESTB.A


结果

A

B

A

B

001    

10A    

001   

10B   

 

B.外连接

外连接分为左外连接,右外连接和全外连接。

1.  左外连接 left outer join 或者 left join

左外连接就是在等值连接的基础上加上主表中的未匹配数据,例:

SELECT *
FROM TESTA 
LEFT OUTER JOIN TESTB 
ON TESTA.A=TESTB.A

结果:

A

B

A

B

001    

10A    

001    

10B  

002

10B

 

 

 

三个表做左外连接

SELECT *
FROM TESTA 
LEFT OUTER JOIN TESTB 
ON TESTA.A=TESTB.A
LEFT OUTER JOIN TESTC
ON TESTA.A=TESTC.A 

结果:

A

B

A

B

A

B

001   

10A    

001   

10B   

001   

10C

002

20A

 

 

 

 

 

2. 右外连接 right outer join 或者 right join

右外连接是在等值连接的基础上加上被连接表的不匹配数据

SELECT *
FROM TESTA 
RIGHT OUTER JOIN TESTB 
ON TESTA.A=TESTB.A

结果:

A

B

A

B

001   

10A   

001   

10B

 

 

003

30B

 

3.全外连接 full outer join 或者 full join

全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上

 

SELECT * 
FROM TESTA 
FULL OUTER JOIN TESTB
ON TESTA.A=TESTB.A

 

全外连接的等价写法,对同一表先做左连接,然后右连接

 

SELECT  TESTA.*,TESTB.*
FROM TESTA
LEFT OUTER JOIN TESTB
ON TESTA.A=TESTB.A
UNION
SELECT
 TESTA.*,TESTB.*
FROM TESTB
LEFT OUTER JOIN TESTA
ON TESTA.A=TESTB.A

 

结果:

A

B

A

B

001   

10A   

001   

10B

002

20A

 

 

 

 

003

30B



自然连接:

e.g  S:  A   B               R:B  C

                1   2                       2  1

                3   3                       7  2

                5   9                       3  5

自然连接

一、第一步R×S结果是:
A B C D B E
1 a 3 2 c 7
1 a 3 3 d 5
1 a 3 1 a 3
2 b 6 2 c 7
2 b 6 3 d 5
2 b 6 1 a 3
3 c 7 2 c 7
3 c 7 3 d 5
3 c 7 1 a 3
就是用R表中的每一项乘以S表中的每一项。
二、选择R.B=S.B的记录:

R.A R.B R.C S.D S.B S.E
1 a 3 1 a 3
3 c 7 2 c 7

三、然后去掉相同且值也相同的B属性,最后R∞S的值为:
A B C D E
1 a 3 1 3
3 c 7 2 7

总结:1)等值连接必须要有等值的条件,当条件不同时连接的结果也不相同,两个关系可以没有相同的属性列

       2)自然连接必须要有相同的属性列才能进行,即等值连接之后要去除相同的属性列



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值