`
danielhjd
  • 浏览: 246353 次
  • 性别: 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经典笔记

    文档可能包含了SQL的基本语法,如SELECT语句、JOIN操作、聚合函数和子查询,以及更高级的主题如视图和索引的使用,这些都是数据查询和分析的核心技能。 《Oracle_02.pdf》至《Oracle_04.pdf》可能进一步深入到...

    学习笔记 testOracle

    【标签】"源码"和"工具"暗示这份笔记可能包含了关于Oracle数据库的编程实践,比如PL/SQL(Oracle的数据库编程语言)的源代码示例,或者是使用Oracle开发工具如SQL Developer进行数据库管理和开发的技巧。源码可能...

    数据库SQL oracle的笔记,比较全面的

    数据库SQL Oracle笔记全面解析 在IT领域,数据库是存储、管理与检索数据的核心工具,而Oracle作为世界...这个笔记和练习集正是为了帮助你系统地掌握这些知识,祝你在学习过程中不断进步,成为Oracle数据库领域的专家。

    Oracle 超强学习笔记

    通过"Oracle超强学习笔记"的深入学习,你将能够全面掌握Oracle数据库的使用和管理,无论你是初学者还是经验丰富的专业人士,都能从中受益匪浅。在实际操作中不断实践,逐步提升你的Oracle技术水平,成为一名优秀的...

    oracle-MySQL笔记整理资料 适合初学者

    通过这份“Oracle-MySQL笔记整理资料”,初学者将能够逐步掌握这两种数据库的基础知识,为后续的数据库管理、开发和运维工作奠定坚实基础。实践中不断操作、实验和解决问题,将是加深理解和提高技能的关键。

    oracle 韩顺平笔记 传智播客

    1. SQL查询语言使用,包括SELECT语句、WHERE子句、JOIN操作等,实现数据检索和分析。 #### 第五章:Oracle的事务和函数 1. **事务管理**:理解事务的概念、ACID属性,学会使用BEGIN、COMMIT和ROLLBACK语句管理...

    Oracle笔记整理

    本文将基于"Oracle笔记整理"的主题,详细讲解Oracle数据库的关键知识点,包括与PL/SQL编程语言的结合、数据库的启动操作以及表结构设计。 1. PL/SQL编程语言: PL/SQL(Procedural Language/Structured Query ...

    Oracle电子教案、Oracle课堂笔记.rar

    2. Oracle体系结构:Oracle数据库的架构包括了数据库实例、数据库文件、控制文件、重做日志文件、参数文件等,这些元素如何协同工作来确保数据的持久性和一致性。 3. 表和索引:详细讲解如何创建、修改和删除表,...

    李兴华—oracle课堂笔记(全)、及sql代码

    Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,尤其在企业级应用中占据主导地位。李兴华的Oracle课堂笔记...通过深入学习和实践这些笔记中的内容,你可以提升自己在Oracle数据库管理和SQL编程方面的技能。

    Oracle数据库PPT和课堂笔记

    2. **第1章 Oracle数据库基础**:本章会讲解数据库的基本概念,如数据库管理系统(DBMS)、关系模型、数据表结构、字段和记录等。还会介绍Oracle数据库的安装、启动和关闭过程,以及SQL*Plus的使用,这是与Oracle...

    涂抹Oracle—三思笔记之一步一步学Oracle

    首先,书中会详细介绍Oracle数据库的基础知识,包括数据库体系结构、表空间和数据文件的概念,以及如何创建和管理数据库实例。读者将了解到Oracle的数据存储方式,如数据块、区和段的结构,这有助于理解数据在磁盘上...

    oracle 初学者笔记

    6. **数据库架构**:了解Oracle数据库的逻辑结构,如表空间、段、区和块,以及物理结构,包括数据文件、控制文件、重做日志文件等。 7. **PL/SQL编程**:学习Oracle的Procedural Language/SQL,用于编写存储过程、...

    Oracle笔记

    连接查询允许从多个表中提取相关数据,如`INNER JOIN`、`LEFT JOIN`、`RIGHT JOIN`和`FULL OUTER JOIN`。理解不同类型的连接有助于处理复杂的数据关系。同时,`GROUP BY`和聚合函数(如`MAX`、`MIN`、`AVG`、`SUM`、...

    传至播客oracle学习笔记

    在Oracle SQL中,可以使用PL/SQL(Procedural Language/Structured Query Language)进行编程,包括定义循环(如FOR、WHILE循环)和判断(如IF-THEN-ELSIF结构)。这使得我们能够编写复杂的业务逻辑,比如根据特定...

    oracle学习笔记

    在Oracle数据库中,索引通常是B树结构,可以极大地提高查询性能。 #### 1.2.1.1 索引的创建语法 创建索引的基本语法如下: ```sql CREATE INDEX index_name ON table_name (column1 [ASC|DESC], column2 [ASC|...

    oracle数据库培训笔记

    Oracle数据库的基本结构主要包括表空间、段、区和块,这些是存储数据的主要单位,理解它们的工作原理对于管理数据库至关重要。 描述中提到的“常用的例子”可能涵盖创建数据库对象,如表、索引、视图、存储过程等。...

    最牛逼的Oracle DBA基础笔记 菜鸟必备

    Oracle DBA,即Oracle数据库管理员,是IT领域中负责管理和维护Oracle数据库系统的关键角色。这份“最牛逼的Oracle DBA基础笔记”显然是为初学者准备的,旨在帮助菜鸟快速掌握Oracle数据库管理的基础知识。Oracle...

    oracle笔记

    这篇“Oracle笔记”涵盖了多个Oracle数据库的重要概念和技术,旨在帮助读者深入理解和掌握Oracle的相关知识。 1. **Oracle数据库架构** Oracle数据库采用多层架构,包括用户接口层、应用服务器层和数据库服务器层...

Global site tag (gtag.js) - Google Analytics