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 SQL中,Join主要分为几个类型,包括INNER JOIN、LEFT JOIN (LEFT OUTER JOIN)、RIGHT JOIN (RIGHT OUTER JOIN)以及FULL JOIN (FULL OUTER JOIN)。这些类型在Java编程中同样可以使用,通过SQL查询语句来实现...
### SQL Server 转 Oracle 的核心知识点 #### 一、概述 从SQL Server迁移到Oracle数据库涉及诸多细节差异,这不仅包括SQL语法上的变化,还包括数据类型、函数、存储过程等多方面的调整。本文将围绕《SqlServer转换...
7. 连接操作:SQL Server使用 `JOIN ON`,Oracle也支持这种写法,但更常见的Oracle风格是 `USING` 关键字。 8. 事务处理:SQL Server使用 `BEGIN TRANSACTION`,`COMMIT` 和 `ROLLBACK`,Oracle也有对应的 `BEGIN`...
在这个学习笔记中,我们将深入探讨Oracle中的Hash Join操作,这是一种重要的联接(JOIN)类型,尤其在处理大数据量时能展现高效的性能。 Hash Join的基本原理是通过构建一个哈希表来实现两个表的连接。首先,Oracle...
在Oracle数据库中,连接(JOIN)是用于合并两个或多个表的数据的关键操作。当我们需要从相关的表中获取信息时,JOIN语句就显得尤为重要。在本文中,我们将深入探讨Oracle JOIN的操作及其在实际应用中的重要性。 ...
- Oracle 支持两种 JOIN 方式:等值连接(使用逗号分隔表名)和显式的 `JOIN` 语法。 3. **LEFT JOIN**: - SQL Server:`SELECT * FROM t1 LEFT JOIN t2 ON t1.c1 = t2.c1;` - Oracle:`SELECT * FROM t1, t2 ...
3. **连接查询**:Oracle的JOIN语法允许在ON条件中使用子查询,而在MySQL中,子查询通常需要移到FROM或WHERE子句中。 4. **游标**:Oracle SQL支持游标,MySQL则不直接支持,需要使用存储过程或临时表来实现类似...
在Oracle数据库中,优化器是决定查询执行计划的关键组件,其目标是最小化资源消耗并最大化查询性能。Oracle提供了三种主要的优化器模式:基于规则(RULE)、基于成本(COST)以及选择性(CHOOSE)。 1. **基于规则...
转换工具需要将MySQL的SQL语句转换为Oracle兼容的版本,例如,JOIN语句、子查询、存储过程等。 4. 序列和自增ID处理:MySQL使用AUTO_INCREMENT关键字为表字段生成自增ID,而Oracle则通过序列(SEQUENCE)实现类似...
python+oracle join
Oracle还包含许多高级特性,如分区、物质化视图、物化join、实时应用集群(RAC)和数据仓库等,这些特性在大型企业和复杂系统中尤为关键。 通过韩顺平老师的“玩转Oracle”课件,学习者可以逐步深入Oracle的世界,...
哈希连接(Hash Join)是Oracle数据库中的一种高效连接方法,主要针对等值连接操作,其引入旨在解决嵌套循环连接(Nested Loop Join)中的大量随机读取问题以及排序合并连接(Sort-Merge Join)中的排序成本过高问题...
在Oracle数据库中,JOIN操作是用于合并两个或更多表中的数据行,以便基于它们之间的相关列获取结果集。LEFT JOIN(也称为LEFT OUTER JOIN)和RIGHT JOIN(也称为RIGHT OUTER JOIN)是两种特殊的JOIN类型,它们在处理...
在LEFT JOIN中,ON条件用于确定哪些左表的记录与右表的记录相关联。例如,假设我们有两张表,表1(tab1)和表2(tab2),我们可以执行以下查询: 1. `SELECT * FROM tab1 LEFT JOIN tab2 ON (tab1.size = tab2.size...
- SQL Server中的跨表更新可以使用JOIN,而在Oracle中,通常需要将子查询放在`WHERE`子句中,如`WHERE product_id IN (SELECT ...)`。 6. **操作符**: - 字符串连接符:SQL Server使用`+`,Oracle使用`||`。 7...
在Oracle数据库系统中,外连接(Outer Join)是一种高级的SQL联接操作,它扩展了标准的内连接(Inner Join)概念,允许我们查询不匹配的数据。外连接分为三种类型:左外连接(Left Outer Join)、右外连接(Right ...
本主题主要聚焦于Oracle中的两种特殊连接方式:左外连接(LEFT JOIN)和右外连接(RIGHT JOIN)。通过深入理解这两种连接类型,我们可以更好地进行数据融合,获取更全面的信息。 首先,让我们从基本概念出发。在SQL...
### ORACLE转DB2对照全解 #### 一、Oracle SQL PL与DB2 inline SQL PL对比 本章节主要介绍Oracle SQL PL与DB2 inline SQL PL之间的对比,包括但不限于存储过程、触发器、用户定义函数(UDF)、条件语句及流程控制...