Oracle知识点(五)--多表连接

一、什么是多表连接

1.定义
在多个表中通过一定的连接条件,使表之间发生关联,在多张表中获取数据。

2.语法

select A.column, B.column
from A, B
where A.column1 = B.column2;

二、为什么需要多表连接

三、笛卡尔积

1.定义
第一张表中的所有行和第二张表中的所有行都发生连接。

2.产生条件
①连接条件被省略
②连接条件无效

3.后果

4.解决方法
在where子句中包含一个有效的连接条件。

四、如何多表连接

1.写法
①分析要查询的数据来自哪些表,构成【from】子句。
②分析【关联关系】,存在直接关联关系的,使用"A.cc = B.cc"直接关联。不存在直接关联关系的,通过另外一个中间表关联。注意要在from子句中添加关联表。
③在【where】子句中补充表之间的关联关系,通常n个表连接需要n-1个关联关系。

--两张表连接
where A.cc = B.cc;
--三张表连接
--需要连接A、E表,A表与B表有直接关联,B表和E表有直接关联
where A.c1 = B.c1 and B.c2 = E.c2;

2.连接类型

按连接条件按其他连接方法
等值连接外部链接
非等值连接内部连接

前提:连接的表的列名和数据相同。

3.等值连接

①只有两张表需要关联时。
例:设A表中有name(姓名)和id(编号)列,B表中有id(编号)和location(家庭地址)列,查询所有人的编号、姓名和家庭地址信息。

select A.name, A.id, B.location 
from A, B
where A.id = B.id;

②当出现三张表及以上时,需要多添加一个表之间的关联条件。
例:设A表中有name(姓名)和id(编号)列,B表中有id(编号)和location(家庭地址)列,C表中有class(班级)和location(家庭地址)列,查询所有人的编号、姓名、班级和家庭地址信息。

select A.name, A.id, B.location, C.class
from A, B, C
where A.id = B.id and B.location = C.location;

4.非等值连接

5.外部链接
在多表连接时,可以使用外部连接查看哪些数据按照连接条件没有被匹配上。
外部连接的符号为(+)。

6.自身连接

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值