一、内连接和外连接
内连接用于返回满足连接条件的记录;而外连接则是内连接的扩展,它不仅会满足连接条件的记录,而且还会返回不满足连接条件的记录,语法如下:
Oracle代码
select table1.column,table2.column from table1 [inner|left|right|full]join table2 on table1.column=table2.column;
select table1.column,table2.column from table1 [inner|left|right|full]join table2 on table1.column=table2.column;
inner join表示内连接、left join表示左外连接、right join表示右外连接、full join表示全连接;on用于指定连接条件。
注意:如果使用form内、外连接,则必须使用on操作符指定连接条件;如果使用(+)操作符连接,则必须使用where指定连接条件。
1、内连接
内连接查询返回满足条件的所有记录,默认情况下没有指定任何连接则为内连接,例如:
Oracle代码
select t1.name,t2.name from cip_temps t1 inner join cip_tmp t2 on t1.ID=t2.id;
select t1.name,t2.name from cip_temps t1 inner join cip_tmp t2 on t1.ID=t2.id;
注意:连接多张表时from后只能是一张表
2、左外连接
左外连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符左边表的其他行,例如:
Oracle代码
select t1.name,t2.name from cip_temps t1 left join cip_tmp t2 on t1.ID=t2.id;
select t1.name,t2.name from cip_temps t1 left join cip_tmp t2 on t1.ID=t2.id;
3、右外连接
右外连接查询不仅返回满足调价的所有记录,而且还会返回不满足连接条件的连接操作符右边表的其他行,例如:
Oracle代码
select t1.name,t2.name from cip_temps t1 right join cip_tmp t2 on t1.ID=t2.id;
select t1.name,t2.name from cip_temps t1 right join cip_tmp t2 on t1.ID=t2.id;
4、全连接
全连接查询不仅返回满足调价的所有记录,而且还会返回不满足连接条件的其他行,例如:
Oracle代码
select t1.name,t2.name from cip_temps t1 full join cip_tmp t2 on t1.ID=t2.id;
select t1.name,t2.name from cip_temps t1 full join cip_tmp t2 on t1.ID=t2.id;
5、(+)操作符
在oracle9i之前,当执行外连接时,都是使用连接操作符(+)来完成的,尽管可以使用操作符(+)执行外连接操作,但是oracle9i开始oracle建议使用outer join执行外连接,使用(+)操作符执行外连接的语法如下:
Oracle代码
select table1.column,table2.column from table1,table2 where table1.column(+)=table2.column;
select table1.column,table2.column from table1,table2 where table1.column(+)=table2.column;
注意:
当使用(+)操作符执行外连接时,应当将该操作符放在显示较少行(完全满足连接条件行)一端。
(+)操作符只能出现在where子句中,并且不能与outer join语法同时使用。
当使用(+)操作符执行外连接时,如果在where语句中包含多个条件,则必须在所有的条件中都包含(+)操作符。
(+)操作符只能适用于列,而不能适用于表达式。
(+)操作符不能与or和in操作符一起使用。
(+)操作符只能用于左外连接和右外连接,不能用于实现完全连接。
(1)、使用(+)操作符执行左外连接
当使用左外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的左边边的其他行。因为(+)操作符要放到行数较少的一端,所以在where子句中应当将该操作符放到右边表的一端,示例如下:
Oracle代码
select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID=t2.id(+);
select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID=t2.id(+);
(2)、使用(+)操作符执行右外连接
当使用右外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的右边边的其他行。因为(+)操作符要放到行数较少的一端,所以在where子句中应当将该操作符放到左边表的一端,示例如下:
Oracle代码
select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID(+)=t2.id;
分享到:
相关推荐
SQL Join On 用法 SQL Join On 是一种常用的数据库连接方式,用于连接两个或多个表,通过指定的连接条件来筛选和组合数据。join on 语句的基本结构为: `SELECT * FROM table1 [LEFT/RIGHT/INNER] JOIN table2 ON ...
MySQL JOIN 语法说明与 INNER JOIN 语法用法实例 本文档详细介绍了 MySQL 中的 JOIN 语法,包括 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 等,并提供了实际的实例来说明 JOIN 的用法。 首先,MySQL 的 JOIN ...
根据给定的文件信息,我们可以从中提取出与MySQL中INNER JOIN ON子句的用法相关的知识点。以下是详细的知识点内容: ### MySQL INNER JOIN ON的基本概念 INNER JOIN用于根据两个或多个表中的相关列的匹配值来合并表...
SELECT * FROM t_institution i RIGHT OUTER JOIN t_teller t ON i.inst_no = t.inst_no WHERE i.inst_no = "5801" 全外连接(Full Outer Join) 全外连接是将左、右两个表的全部行连接起来,例如: SELECT * ...
本文将深入探讨Oracle的JOIN用法,包括内连接(INNER JOIN)、外连接(LEFT JOIN, RIGHT JOIN, FULL JOIN)以及自然连接(NATURAL JOIN),并结合实例进行说明。 1. **内连接(INNER JOIN)**: 内连接返回两个表中满足特定...
### (Left join , Right Join, Inner Join)用法详解 #### 一、基本概念与应用场景 在数据库查询语言SQL中,连接(Join)是一种非常重要的操作,它允许我们结合两个或多个表的数据来检索信息。根据不同的连接方式,...
### SQL语句中JOIN的用法详解 在SQL查询语言中,`JOIN`是一个非常重要的概念,它允许我们从两个或多个表中提取数据。通过使用不同类型的JOIN操作,我们可以根据表之间的关系来灵活地组织数据。下面我们将详细介绍几...
本篇文章将深入探讨LEFT JOIN、RIGHT JOIN以及INNER JOIN的用法,并通过实例进行对比,帮助理解它们之间的差异。 1. LEFT JOIN(左连接) LEFT JOIN返回所有左表(在本例中为A表)的记录,即使在右表(B表)中没有...
当SET ALL=ON时,INNER JOIN的结果保持不变,因为INNER JOIN仅返回匹配的记录,而参数对匹配的记录没有影响。同样,当将UNIQUE替换为MULTIPLE时,LEFT OUTER JOIN的结果仍然显示为NULL,而不是特定的值,这表明在...
### SQL语句中JOIN的用法与效率说明 #### 一、引言 在数据库管理与应用程序开发过程中,数据查询的效率对系统性能至关重要。在众多的查询操作中,JOIN作为连接不同表的一种手段,其使用频率非常高。本文将详细介绍...
在这个“SQL之JOIN用法完全版”中,我们将深入探讨JOIN的不同类型及其应用。 1. **INNER JOIN**: INNER JOIN返回两个表中匹配的行。这意味着只有当第一个表中的某行与第二个表中的某行在指定的列上具有相同的值时...
本文将深入探讨JOIN的四种基本类型:内连接(INNER JOIN)、左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)以及虽不常见但重要的全外连接(FULL OUTER JOIN)。 首先,我们要理解JOIN的原理,它允许我们合并两...
在优化数据库性能,特别是涉及多表连接查询时,理解JOIN的完全用法至关重要。 首先,JOIN操作主要分为三类:内联接(INNER JOIN)、外联接(OUTER JOIN)以及全外联接(FULL OUTER JOIN)。 1. **内联接(INNER JOIN)**:...
当我们涉及到LEFT JOIN时,可能会遇到使用ON和WHERE子句的情况,两者虽然都可以用来指定条件,但在语义上有所区别。 首先,ON子句是在生成联接结果集(临时表)时应用的条件。无论ON条件是否为真,都会返回左表的...
### SQL中JOIN的使用详解 在SQL查询语言中,`JOIN`操作是非常...理解这些`JOIN`类型的工作原理及其用法,可以帮助我们更有效地从数据库中提取所需的信息。在实际应用中,根据具体需求选择合适的`JOIN`类型至关重要。
以下是`join`在不同上下文中的详细用法: 1. **INNER JOIN**: 内连接只返回两个表中存在匹配的记录。当一个表的记录与另一个表的记录有对应关系时,这些记录才会出现在结果集中。 2. **LEFT JOIN (LEFT OUTER JOIN...
当我们设置LEFT JOIN的条件时,可以在ON和WHERE子句中指定,但它们之间存在一些关键区别。 首先,理解ON子句的作用至关重要。ON子句中的条件是在连接左右两表时使用的,它定义了两个表之间的关系。在这个例子中,`...
尽管每个系统可能略有不同,但JOIN的基本概念和用法在大多数SQL方言中是通用的。 综上所述,理解并熟练运用INNER JOIN和OUTER JOIN是提升SQL查询能力的关键步骤。在实际工作中,根据需求选择合适的JOIN类型,能帮助...