`
danielhjd
  • 浏览: 243262 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

(笔记)oracle中的join的整理和结构分析

阅读更多

在Oracle中的join主要分为:外连接(outter join),内连接(inner join),自身连接(self-join)

 

外连接(outter join)又分为左外连接(left outer join)、右外连接(right outer join)、全外连接(full outer join)。在sql语句(structured Query Language)是:table_1 left/right/full outer join table_2,通常我们省略outer。

    

下面利用一个例子说明数据库的外连接问题:

一:创建两张表out_join1 and out_join2并插入相应的数据:

create table out_join1(
id_1 varchar2(20),
name_1 varchar2(25)
)

create table out_join2(
id_2 varchar2(20),
name_2 varchar2(25)
)

 

insert into out_join1 values('1','daniel');
insert into out_join1 values('3','justin');
insert into out_join1 values('5','william');
insert into out_join1 values('6','demon');
insert into out_join1 values('7','david');

insert into out_join2 values('1','c_daniel');
insert into out_join2 values('2','irs');
insert into out_join2 values('3','c_justin');
insert into out_join2 values('4','linda');
insert into out_join2 values('5','c_william');

 

 out_join1 & out_join2的数据如下:



 

左外连接(left outer join)

select * from out_join1 left outer join out_join2 on out_join1.id_1=out_join2.id_2   -- 注意此处的on关键字
select * from out_join1,out_join2 where out_join1.id_1=out_join2.id_2(+)               --注意此处的where关键字和(+)符号 

结果如下:

 

 

 

详细解释:

第一条查询语句和第二条查询语句的的意义是一样的,只是表达方式不同。table_1 left outer join table_2 on table_1.id = table_2.id,是以table_1的id号的index基础进行连接,table_2中有与table_1中id相同的进行配对。table_2中没有配对到的则null表示;

 

注意:由于此处的id具有unique所以不会出现一对多的关系,如果出现一对多的关系则显示结果会怎么样了...

 

右外连接(right outer join)

select * from out_join1 right outer join out_join2 on out_join1.id_1=out_join2.id_2
select * from out_join1,out_join2 where out_join1.id_1(+)=out_join2.id_2

 结果如下:

第一个条件查询的结果:                                        第二个条件查询的结果:

 

详细解释:

第一条查询语句和第二条查询语句的的意义是一样的,只是表达方式不同。table_1 right outer join table_2 on table_1.id = table_2.id,是以table_2的id号的index基础进行连接,table_1中有与table_2中id相同的进行配对。table_1中没有配对到的则null表示; 当然最后你会发现显示的结果的结构不相同,那是因为他们的查询的机理不同。


 
 全外连接(full outer join)

select * from out_join1 full join out_join2 on out_join1.id_1=out_join2.id_2

 结果如下:

 
 

详细解释:

在full连接中按照以表table_1的id和table_2的id号为基础进行匹配....有的这连接在一起,没有的则null表示。table_1在前...

 

(+)的用法:

    1.+)操作符只能出现在where子句中,并且不能与outer join语法同时使用。
   2.
当使用(+)操作符执行外连接时,如果在where子句中包含多个条件,必须在所有条件中包含(+)操作符
   3.
+)操作符只适用于列,而不能用在表达式上。
   4.
+)操作符不能与orin操作符一起使用。
   5.
+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。

内连接(inner join)

select * from out_join1 inner join out_join2 on out_join1.id_1=out_join2.id_2

 结果:

 



 

详细解释:

相同的属性值才显示,这里指的是tabel_1.id = table_2.id相同的显示

 

自身连接(self join)

select * from out_join1 c1,out_join1 c2 where c1.id_1 = c2.id_1

 

结果如下:


 

自然连接(nature join)

select * from out_join2,out_join1 where out_join2.id_2=out_join1.id_1

 结果如下:


 

分析:同inner连接
 
 

  • 大小: 9.5 KB
  • 大小: 9.5 KB
  • 大小: 15.1 KB
  • 大小: 14.3 KB
  • 大小: 15 KB
  • 大小: 18 KB
  • 大小: 11.3 KB
  • 大小: 15.5 KB
分享到:
评论

相关推荐

    Oracle笔记Oracle笔记

    Oracle笔记Oracle笔记Oracle笔记Oracle笔记Oracle笔记Oracle笔记

    oracle学习笔记整理

    学习oracle知识笔记整理,包括pl/sql编程,过程、函数、游标开发等。

    oracle adg安装个人笔记

    oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记oracle adg安装个人笔记...

    oracle自学笔记-视频实例整理

    自学笔记--oracle自学笔记-视频实例整理

    Oracle学习笔记 Oracle学习笔记

    Oracle非常有用的笔记。。。。。。。。。。。Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记

    oracle rac安装个人笔记

    oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记oracle rac安装个人笔记...

    oracle笔记(韩顺平oracle视频教学整理)

    oracle笔记(韩顺平oracle视频教学整理)

    老方块 ORACLE 教学笔记 整理

    老方块 ORACLE 教学笔记 整理 第1堂体验课-SQL技巧篇(一) 第2堂体验课-SQL技巧篇(二) 第3堂体验课-ORACLE并发事务和锁机制 第4堂体验课-索引机制 第5堂体验课笔记 ORACLE体系结构(一) 第6堂体验课笔记 ORACLE...

    oracle存储过程笔记

    oracle存储过程笔记oracle存储过程笔记oracle存储过程笔记oracle存储过程笔记oracle存储过程笔记oracle存储过程笔记oracle存储过程笔记oracle存储过程笔记oracle存储过程笔记oracle存储过程笔记

    Oracle学习笔记

    Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记Oracle学习笔记

    oracle随手笔记oracle随手笔记

    oracle随手笔记oracle随手笔记oracle随手笔记oracle随手笔记

    oracle 个人学习笔记

    oracle 个人学习笔记oracle 个人学习笔记oracle 个人学习笔记oracle 个人学习笔记oracle 个人学习笔记oracle 个人学习笔记oracle 个人学习笔记oracle 个人学习笔记oracle 个人学习笔记oracle 个人学习笔记

    oracle学习笔记 oracle学习笔记

    oracle学习笔记 oracle学习笔记oracle学习笔记 oracle学习笔记

    李兴华Oracle笔记整理

    李兴华Oracle笔记整理,整理了Oracle的核心基础知识,方便大家日后的学习。

    Oracle知识点整理笔记(二)Oracle学习进阶

    该资源是系统学习Oracle后做的整理,方便后来学者更好,更快的学习Oracle知识,资源里面有Oracle学习资料,以及学习期间整理辅助学习资料,此资源内容是Oracle知识点整理笔记的下篇,Oracle的初学篇知识学习可以查看...

    oracle经典笔记

    oracle经典笔记oracle经典笔记oracle经典笔记oracle经典笔记oracle经典笔记oracle经典笔记

    oracle数据库学习笔记精心整理

    该资源是对应韩顺平老师关于JAVAEE培训课程中关于oracle数据库讲解部分的视频笔记,类容详细全面,针对深度学习oracle数据库的相关知识

    Oracle笔记

    这个是我学习网上的视频做的oracle笔记,对于oracle一窍不通的菜鸟可能有用吧,大家有需要可以看看

Global site tag (gtag.js) - Google Analytics