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

oracle中什么时候用 相等连接 什么时候用 不等连接 什么时候用 自连接 什么时候用 外连接……………求解释

发布网友 发布时间:2022-04-09 08:37

我来回答

3个回答

懂视网 时间:2022-04-09 12:58

  内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。 

  1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复属性。 (区别于自然连接)

  2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的 列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。 

teacher 和 student 表 技术分享   技术分享 eg1:等值连接:
SELECT S.*, T.* FROM STUDENT S INNER JOIN TEACHER T ON S.TEACHERID = T.ID; //注意oracle重命名table 不能加as只需加空格即可,as可用于重命名列

结果:(注意结果中包含重复属性,重复的属性结果中重命名了)

技术分享

eg2:

SELECT * FROM STUDENT JOIN TEACHER ON STUDENT.DEPTNO= TEACHER.DEPTNO;

技术分享


2)自然连接(natural join)

  自然连接是在广义笛卡尔积R×S中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系。即自然连接是在两张表中寻找那些数据类型和列名都相同的字段,然后自动地将他们连接起来,并返回所有符合条件按的结果。

 eg1:
SELECT STUDNET.CLASSID,TEACHER.DEPTNO FROM STUDENT NATURAL JOIN TEACHER;

报错:(不能加限定条件)

SQL 错误: ORA-25155: NATURAL 联接中使用的列不能有限定词
25155. 00000 - "column used in NATURAL join cannot have qualifier"
*Cause: Columns that are used for a named-join (either a NATURAL join
  or a join with a USING clause) cannot have an explicit qualifier.
*Action: Remove the qualifier.

eg2:

SELECT * FROM STUDENT NATURAL JOIN TEACHER;

分析:两个表中有两个相同属性,TEACHERID和DEPTNO,不用加限定条件即按照这两个字段连接

结果:(注意deptno属性只有一个)

技术分享

下面对比使用inner join的结果:(包含重复属性,并且连接方式区别于自然连接)

SELECT * FROM STUDENT JOIN TEACHER ON STUDENT.DEPTNO= TEACHER.DEPTNO;

技术分享

 

3) 外连接 (outer join)

 外连接,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接或左连接))、右表(右外连接或右连接)或两个边接表(全外连接)中的所有数据行。

 1.left join(左联接)等价于(left outer join)  返回包括左表中的所有记录和右表中联结字段相等的记录;

 2.right join(右联接)等价于(right outer join)返回包括右表中的所有记录和左表中联结字段相等的记录;

 3. full join (全连接)等价于(full outer join)查询结果等于左外连接和右外连接的和

eg1:

 

SELECT S.*, T.* FROM STUDENT S LEFT JOIN TEACHER T ON S.CLASSNO = T.CLASS;

 

输出结果:(包含student中的所有记录和满足条件的记录)

技术分享

eg2:

SELECT S.*, T.* FROM STUDENT S RIGHT JOIN TEACHER T ON S.CLASSNO = T.CLASS;

结果:

技术分享

eg3:
SELECT S.*, T.* FROM STUDENT S FULL JOIN TEACHER T ON S.CLASSNO = T.CLASS;
输出:(因为teacher中有的对应student中都有,所以结果和left join相同) 技术分享     4) 交叉连接(cross join)

  交叉连接不带ON子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到 结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查 询条件的数据行数。 

eg1:
SELECT S.*, T.* FROM STUDENT S CROSS JOIN TEACHER T ;

等价于:

SELECT S.*, T.* FROM STUDENT S , TEACHER T ;

输出结果:

技术分享

 

5)自连接

连接的表是同一张表,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。

用途举例:计算公交链路换乘问题(见eg2)

eg1:

SELECT S1.*, S2.* FROM STUDENT S1 , STUDENT S2 WHERE S1.DEPTNO=S2.DEPTNO AND S1.CLASSNO=S2.CLASSNO;

结果:

技术分享

eg2:

table route(num, company, pos, stop)
SELECT * FROM route R1, route R2 WHERE R1.stop=R2.stop;

可查询公用同一公交车站的所有路线

 

3.总结

1)即使是在连接条件不满足的情况下,外部连接也会在结果集内返回行,而内部连接不会在结果集类返回行 当外部连接不满足连接条件时,通常返回一个表中的列,但是第二个表中没有返回值--为null

2)自然连接不包含重复的属性

3)交叉连接是两个表数据笛卡尔积(相当于不加连接条件)

 

 

oracle连接总结(内连接、外连接、自然连接,交叉连接,自连接)

标签:

热心网友 时间:2022-04-09 10:06

假如现在有两张表,A表和B表
如果需要查询两张表有相同的数据的时候用等值连接。
如果要查询A表中的内容不能等于B表的内容时,用不等连接。
如果要查询A表中相关的信息,可以用自连接。
如果要查询A表中的所有数据,但是又想找到B表中相同的数据的时候,可以用外连接。

热心网友 时间:2022-04-09 11:24

相等连接和不等连接其实都是查询条件,自连接顾名思义就是一张表连接自身查询
左、右、内连接
左连接是第一张表的所有和第二张表满足条件的数据,右连接和左连接相反
内连接就是两张表都满足条件的数据
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
雄安 为什么涨 中国对沙特,中国入球了吗 国足vs沙特首发是什么时候? 中国对沙特谁进的球 中国沙特阵容 河北雄县为什么这么火 河北雄县为什么火了 雄县 为什么突然这么火 为什么雄安新区这么火 总是听说好白菜都让猪拱了,到底是什么意思 征信机构查询次数太多需要养几个月啊? 猪肉、豆腐、西红柿、辣椒加鸡蛋,这些怎么做菜 番茄豆腐酿怎么做 西红柿,猪肉,青辣椒,以及卤豆腐,求怎么做菜? 中国购买美国国债后得到的利息是什么形式? 西红柿豆腐炒肉怎么做好吃,西红柿豆腐炒肉 猪肉豆腐西红柿怎么煮 中国买美国国债的意义 海尔43寸电视比42寸大多少 美国差中国的2.5万亿美元钱,国债有利息有多少一年? 43寸 海尔液晶 平板电视机多长多宽 微软surface pro3有翻新的吗 1999中国买了,美国多少国债 海尔电视是43寸 微软618认证翻新机能够享受退换不? 中国持有美债每年利息是多少? 做指甲是第一层涂的是什么? 海康威视恢复密码怎么不生成二维码,需要恢复缺省密码? 微软618认证翻新机值得入手吗? 韩文翻译成罗马音!!! 猪肉西红柿怎么做好吃 我和你飞呀飞,飞过千山和万水,这首是什么歌曲呀? VIVO手机键盘变成这样怎么解决? 你和我跨过千山和万水。一句歌词。出自那首歌 vivox21a的手机键盘变成这样怎么办 小说《隐杀》主角有几个老婆? 《隐杀》里面的人物实力排名是怎么样的? 小说《隐杀》主角有几个老婆! 小说《隐杀》中主角一共推倒了几个女主? 炸鸡软了以后可以用烤箱 无意间遇到了“叶灵静”,但和她在一起的却并非“顾家明”,她不幸福,我该庆幸还是惋惜呢。[有知友明白 隐杀的人物形象 炸鸡颜色深怎么解决,炸鸡凉了表皮变软怎么解决 找一本小说看到一半,男主重生,有两个女主,一个女主好像叫莎莎。还有个叫静什么的。 隐杀好看吗主角有几个老婆都有谁 幽暗天琴女皇是不是自然进化者 IE11的问题? 隐杀里面的月池薰最后怎么了 rs232和ch340分别是什么,有什么功能 姓叶女孩取名要带金的50分谢谢!