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

这么久终于能够静下来整理一下工做上学到的东西了(主要仍是本身太懒了。。)sql

废话少说,正文开始数据库

在公司里,数据库用的基本都是Oracle,因此就学了一下Oracle的一点知识,如今整理一下本身遇到的问题和学到的一些东西。spa

先说说本身常常搞混的内链接、外链接(大学里一直没搞懂。。)3d

数据表之间有不少种链接方式,如:内外链接等code

 

一(内链接):blog

内链接就是咱们常常说的等值链接或者天然链接。class

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

直接上例子:sql语句

设有表以下:im

学生表:

      

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

--自链接  :只返回两张表链接列的匹配项。
--如下三种查询结果同样。
select * from student s inner join 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;

天然链接结果:

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

 

二(外链接):

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

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

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

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

左外链接结果:

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

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

 

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

看下面sql语句:

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

右外链接结果:

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

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

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

 

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

仍是举例子:

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

全外链接结果:

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

相关文章
相关标签/搜索