当前位置:首页 > 数据库 > Oracle

Oracle学习笔记(一)----------内、外连接

这么久终于可以静下来整理一下工作上学到的东西了(主要还是自己太懒了。。)

废话少说,正文开始

在公司里,数据库用的基本都是Oracle,所以就学了一下Oracle的一点知识,现在整理一下自己遇到的问题和学到的一些东西。

先说说自己经常搞混的内连接、外连接(大学里一直没搞懂。。)

数据表之间有很多种连接方式,如:内外连接等

 

一(内连接):

内连接就是我们经常说的等值连接或者自然连接。

内连接用连接 inner join(join)关键字连接表(或者直接用where和“=”号)。

直接上例子:

设有表如下:

学生表:

      

班级表,对应学生表中的classid:

            --
            自连接  :只返回两张表连接列的匹配项。
            
--
            以下三种查询结果一样。
            select
            *
            from student s innerjoin class c on s.classid=c.id; 
select*from student s join class c on s.classid=c.id;
select*from student s,class c where s.classid=c.id;

自然连接结果:

内连接(自然连接)只匹配了符合条件的记录。

 

二(外连接):

外连接分为左外连接、右外连接以及全外连接。

1、左外连接(左边的表不加限制),用left out join(left join)关键字

还是举例子,还是上述的表:

            --
            左连接 :列出左边表全部的,及右边表符合条件的,不符合条件的以空值代替。
            
--
            在(+)计算时,哪个带(+)哪个需要条件符合的,另一个全部的。即放左即右连接,放右即左连接。
            
--
            以下结果集相同。
            select
            *
            from student s leftjoin class c on s.classid=c.id;
select*from student s,class c where s.classid=c.id(+);

左外连接结果:

左外连接:列出右表符合条件的记录以及左表全部的记录,右表没有符合的用null表示。

Oracle可以用(+)表示外连接,当(+)跟在一个表的属性后面时,它表示哪个表需要符合条件。放在左边表示右外连接,放在右边表示左外连接。

 

2、右外连接(右边的表不加限制),用right out join(right join)关键字

看下面sql语句:

            --
            右外连接 :与左连接一样,列出右边表全部的,及左边表符合条件的,不符合条件
            
--
            的用 空值  替代。
            
--
            (+)一样,它的位置与连接相反。
            select
            *
            from student s rightjoin class c on s.classid=c.id;
select*from student s,class c where s.classid(+)=c.id;

右外连接结果:

右外连接跟左外连接相同,只是要求符合条件的表不同(右外连接要求列出左表符合条件的记录)。

右外连接:列出左表符合条件的记录以及右表全部的记录,左表没有符合的用null表示。

Oracle可以用(+)表示外连接,当(+)跟在一个表的属性后面时,它表示哪个表需要符合条件。放在左边表示右外连接,放在右边表示左外连接。

 

3、全外连接(左右两表都不加限制),用full out join(full join)关键字

还是举例子:

            --
            全连接 :产生M+N的结果集,列出两表全部的,不符合条件的,以空值代替。
            select
            *
            from student s fulljoin class c on s.classid=c.id;

全外连接结果:

全外连接对两边的表都不加限制,列出左右两表所有的记录,没有符合条件的用null替代。

 

原文:http://www.cnblogs.com/ada-tan/p/4019972.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐