问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

说明数据库内联接和外链接的区别

发布网友 发布时间:2022-04-30 05:32

我来回答

2个回答

懂视网 时间:2022-04-30 09:53

例子:

表TESTA,TESTC,TESTD各有A, B两列

TESTB有A,C两列


技术分享

首先做个全表查询(笛卡尔积) 
SELECT * FROM TESTA,TESTB;

技术分享

一、自然连接

SELECT * FROM TESTA NATURAL JOIN TESTB;

技术分享

二、内连接:这边我们演示的是等值连接

方式一:SELECT * FROM TESTA a ,TESTC c WHERE a.A=c.A;

方式二:SELECT * FROM TESTA a INNER JOIN TESTC c ON (a.A=c.A);

结果表如下:

技术分享

三、外连接:

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

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

写法一:SELECT * FROM TESTA a LEFT OUTER JOIN TESTC c ON (a.A=c.A);

写法二:SELECT * FROM TESTA a LEFT JOIN TESTC c ON (a.A=c.A);

ORACLE特有写法:SELECT * FROM TESTA a,TESTC c WHERE a.A=c.A(+);

结果表如下:

技术分享

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

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

写法一:SELECT * FROM TESTA a RIGHT OUTER JOIN TESTC c ON (a.A=c.A);

写法二:SELECT * FROM TESTA a RIGHT JOIN TESTC c ON (a.A=c.A);

ORACLE特有写法:SELECT * FROM TESTA a,TESTC c WHERE a.A(+)=c.A;

结果表如下:

技术分享

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

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

写法一:SELECT * FROM TESTA a FUll OUTER JOIN TESTC c ON (a.A=c.A);

写法二:SELECT * FROM TESTA a FUll  JOIN TESTC c ON (a.A=c.A);

等价写法:

SELECT * FROM TESTA a LEFT JOIN TESTC c ON (a.A=c.A)

UNION

SELECT * FROM TESTA a RIGHT JOIN TESTC c ON (a.A=c.A);

结果表如下:

技术分享

技术分享

数据库连接之内连接、自然连接、外连接区分

标签:

热心网友 时间:2022-04-30 07:01

关键字: 左右连接

数据表的连接有:

1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现

2、外连接: 包括

(1)左外连接(左边的表不加*)

(2)右外连接(右边的表不加*)

(3)全外连接(左右两表都不加*)

3、自连接(连接发生在一张基表内)

select a.studentno, a.studentname, b.classname

from students a, classes b

where a.classid(+) = b.classid;

STUDENTNO STUDENTNAM CLASSNAME

---------- ---------- ------------------------------

1 A 一年级一班

2 B 一年级二班

一年级三班

以上语句是右连接:

即"(+)"所在位置的另一侧为连接的方向,右连接说明等号右侧的所有

记录均会被显示,无论其在左侧是否得到匹配。也就是说上例中,无

论会不会出现某个班级没有一个学生的情况,这个班级的名字都会在

查询结构中出现。

反之:

select a.studentno, a.studentname, b.classname

from students a, classes b

where a.classid = b.classid(+);

STUDENTNO STUDENTNAM CLASSNAME

---------- ---------- ------------------------------

1 A 一年级一班

2 B 一年级二班

3 C

则是左连接,无论这个学生有没有一个能在一个班级中得到匹配的部门号,

这个学生的记录都会被显示。

select a.studentno, a.studentname, b.classname

from students a, classes b

where a.classid = b.classid;

这个则是通常用到的内连接,显示两表都符合条件的记录

总之,

左连接显示左边全部的和右边与左边相同的

右连接显示右边全部的和左边与右边相同的

内连接是只显示满足条件的!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2198香辣虾是什么意思 虾什么梗 肖战 刻纸制作需要哪些步骤 好玩的生存游戏手游(好玩的生存游戏手游推荐) 北京电脑职业培训学校都有哪些北京电脑培训班都有哪些 欧盟商标注册需要提供什么资料? 怎么注册欧盟商标?需要准备哪些材料? 5g手机有什么好处 5g手机大概多少钱 口水臭是什么原因呢? 口水臭是什么原因 口水臭怎么改善 塑钢门窗玻璃碎了怎么换 感冒流鼻涕怎么办?有没有什么土方法有效? 老是感冒流鼻涕用土办法如何治 治流鼻涕的土方法,有效的都行 数控980车平面2刀怎么编程 感冒流鼻涕有什么土方法可以治? 鼻塞流鼻涕两个月啦 药吃啦不少效果不大 有没有简单实用的土方法 数控车床一个刀号装两把平面车刀同时一起车产品的两面平面怎样编程? 有个软件可以用来买电影票?怎么用? 手机QQ阅读中心里面的小说如何下架? 梦见女儿从路边的地方掉下来,摔了很长一坡,却没事? 最新版的QQ阅读怎么删除已经下载的小说 和查看已经下载的小说呢。求... 梦见7岁女儿从楼上摔下去了但没有死 梦见女儿很高地方掉下去但是没事? QQ阅读老久没用的账号在不知情的情况下被永封了,客服说是因为发广告,可是我找不到广告的书评。怎么办 梦见自己女儿从几十米掉下去完好无损 qq阅读怎么批量解锁? qq阅读账号被封禁了怎么办 我的一本小说在QQ阅读上完结了,想把所有的章节删掉重新写,删了一些之... qq阅读的封禁怎样解除 2020年徐州新沂中考成绩全市排名如何查? 新沂市小升初的分数,怎样查询? 发现自己账号正在被申诉怎么办 我号被别人申诉走了,怎么办啊 买的号被人申诉回去了怎么办 被恶意申诉怎么办? QQ被别人申诉了怎么办? 打喷涕,流鼻涕有什么土方子见奇效的? Q空间被人申诉怎么办? 请问,感冒了嗓子很疼、流鼻涕,用什么土方法可以缓解啊?比方说喝姜汤之类的土方法??? 感昌流鼻涕有什么土方法? 对方是企业微信好友,想验证他是不是屏蔽你发给他的微信 怎么判断我微信好友里的客户经理是不是企业? 企业微信会显示在微信好友吗 我可以看到微信里好友在哪家企业微信里吗? 创建企业微信的能被好友看到企业标识吗? 企业微信好友和微信好友怎么区别和区分 微信好友是企业微信,怎样才知道是不是被对方删除或拉黑 12306里买到的没有票 是不是和窗口是同步的,没有就是没有了?? 12306和火车站卖票是同步的吗?