`
sangei
  • 浏览: 336339 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

(转)Oracle中的Join

阅读更多

1、概述

1.1、所有的join连接,都可以加上类似where a.id='1000'的条件,达到同样的效果。

1.2、除了cross join不可以加on外,其它join连接都必须加上on关键字,后都可加where条件。

1.3、虽然都可以加where条件,但是他们只在标准连接的结果集上查找where条件。比如左外连接的结果没有class的三班,所以如果加 where class.id='C003'虽然在表中有,但在左连接结果集中没有,所以查询后,是没有记录的。

2、实例,标准的join连接,(不加where条件的)

2.1、设有表如下:

学生表

      

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

2.2、自连接:join ,inner join

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

自连接结果:

2.3、笛卡儿乘积:cross join

1 --笛卡儿乘积连接 :即不加任何条件,达到 M*N 的结果集。
2 --以下两种查询结果一样。
3 select * from student s cross join class c;
4 select * from student,class;

笛卡尔结果:

注意:如果cross join加上where s.classid=c.id条件,会产生跟自连接一样的结果:

1 --加上条件,产生跟自连接一样的结果。
2 select * from student s cross join class c where s.classid=c.id;

自连接结果集的cross join连接结果

2.3、左外连接:left join 

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

左连接结果:

2.4、右外连接:right join

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

右连接结果

2.5、全连接:full join

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

全连接结果集

 

分享到:
评论

相关推荐

    oracle-join用法

    在Oracle SQL中,Join主要分为几个类型,包括INNER JOIN、LEFT JOIN (LEFT OUTER JOIN)、RIGHT JOIN (RIGHT OUTER JOIN)以及FULL JOIN (FULL OUTER JOIN)。这些类型在Java编程中同样可以使用,通过SQL查询语句来实现...

    SqlServer转换Oracle.docx

    ### SQL Server 转 Oracle 的核心知识点 #### 一、概述 从SQL Server迁移到Oracle数据库涉及诸多细节差异,这不仅包括SQL语法上的变化,还包括数据类型、函数、存储过程等多方面的调整。本文将围绕《SqlServer转换...

    Sql语法转换为Oracle语法

    7. 连接操作:SQL Server使用 `JOIN ON`,Oracle也支持这种写法,但更常见的Oracle风格是 `USING` 关键字。 8. 事务处理:SQL Server使用 `BEGIN TRANSACTION`,`COMMIT` 和 `ROLLBACK`,Oracle也有对应的 `BEGIN`...

    Oracle CBO 学习笔记之(1) : 深入理解Oracle Hash Join的代价模型及其执行流程

    在这个学习笔记中,我们将深入探讨Oracle中的Hash Join操作,这是一种重要的联接(JOIN)类型,尤其在处理大数据量时能展现高效的性能。 Hash Join的基本原理是通过构建一个哈希表来实现两个表的连接。首先,Oracle...

    oracle 连接 join at

    在Oracle数据库中,连接(JOIN)是用于合并两个或多个表的数据的关键操作。当我们需要从相关的表中获取信息时,JOIN语句就显得尤为重要。在本文中,我们将深入探讨Oracle JOIN的操作及其在实际应用中的重要性。 ...

    SQL转Oracle的方法

    - Oracle 支持两种 JOIN 方式:等值连接(使用逗号分隔表名)和显式的 `JOIN` 语法。 3. **LEFT JOIN**: - SQL Server:`SELECT * FROM t1 LEFT JOIN t2 ON t1.c1 = t2.c1;` - Oracle:`SELECT * FROM t1, t2 ...

    Oracle Sql语句转换成Mysql Sql语句

    3. **连接查询**:Oracle的JOIN语法允许在ON条件中使用子查询,而在MySQL中,子查询通常需要移到FROM或WHERE子句中。 4. **游标**:Oracle SQL支持游标,MySQL则不直接支持,需要使用存储过程或临时表来实现类似...

    oracle性能优化技巧

    在Oracle数据库中,优化器是决定查询执行计划的关键组件,其目标是最小化资源消耗并最大化查询性能。Oracle提供了三种主要的优化器模式:基于规则(RULE)、基于成本(COST)以及选择性(CHOOSE)。 1. **基于规则...

    mysql数据库转oracle数据库工具

    转换工具需要将MySQL的SQL语句转换为Oracle兼容的版本,例如,JOIN语句、子查询、存储过程等。 4. 序列和自增ID处理:MySQL使用AUTO_INCREMENT关键字为表字段生成自增ID,而Oracle则通过序列(SEQUENCE)实现类似...

    python+oracle join

    python+oracle join

    韩顺平玩转oracle课件.pdf

    Oracle还包含许多高级特性,如分区、物质化视图、物化join、实时应用集群(RAC)和数据仓库等,这些特性在大型企业和复杂系统中尤为关键。 通过韩顺平老师的“玩转Oracle”课件,学习者可以逐步深入Oracle的世界,...

    Oracle中hash join研究.pdf

    哈希连接(Hash Join)是Oracle数据库中的一种高效连接方法,主要针对等值连接操作,其引入旨在解决嵌套循环连接(Nested Loop Join)中的大量随机读取问题以及排序合并连接(Sort-Merge Join)中的排序成本过高问题...

    oracle中left join和right join的区别浅谈

    在Oracle数据库中,JOIN操作是用于合并两个或更多表中的数据行,以便基于它们之间的相关列获取结果集。LEFT JOIN(也称为LEFT OUTER JOIN)和RIGHT JOIN(也称为RIGHT OUTER JOIN)是两种特殊的JOIN类型,它们在处理...

    深入Oracle的left join中on和where的区别详解

    在LEFT JOIN中,ON条件用于确定哪些左表的记录与右表的记录相关联。例如,假设我们有两张表,表1(tab1)和表2(tab2),我们可以执行以下查询: 1. `SELECT * FROM tab1 LEFT JOIN tab2 ON (tab1.size = tab2.size...

    从Sql Server迁移到 Oracle 过程中代码需要调整的地方

    - SQL Server中的跨表更新可以使用JOIN,而在Oracle中,通常需要将子查询放在`WHERE`子句中,如`WHERE product_id IN (SELECT ...)`。 6. **操作符**: - 字符串连接符:SQL Server使用`+`,Oracle使用`||`。 7...

    理解oracle中的外连接

    在Oracle数据库系统中,外连接(Outer Join)是一种高级的SQL联接操作,它扩展了标准的内连接(Inner Join)概念,允许我们查询不匹配的数据。外连接分为三种类型:左外连接(Left Outer Join)、右外连接(Right ...

    left-right-join.zip_join_oracle

    本主题主要聚焦于Oracle中的两种特殊连接方式:左外连接(LEFT JOIN)和右外连接(RIGHT JOIN)。通过深入理解这两种连接类型,我们可以更好地进行数据融合,获取更全面的信息。 首先,让我们从基本概念出发。在SQL...

    ORACLE转DB2对照全解

    ### ORACLE转DB2对照全解 #### 一、Oracle SQL PL与DB2 inline SQL PL对比 本章节主要介绍Oracle SQL PL与DB2 inline SQL PL之间的对比,包括但不限于存储过程、触发器、用户定义函数(UDF)、条件语句及流程控制...

Global site tag (gtag.js) - Google Analytics