数据库教程-Oracle右连接

跨零代码为大家提供高品质的解决方案,请大家多多来访,跨零不胜感激,在此谢过。

在本教程中,您将学习如何使用Oracle中的RIGHT OUTER JOIN来连接两个或多个表。

Oracle RIGHT OUTER JOIN概述

假设有两个表T1T2,以下语句显示了如何使用Oracle中的RIGHT OUTER JOIN子句连接这两个表:

SELECT     column_list FROM     T1 RIGHT OUTER JOIN T2 ON     join_predicate; 

在这个语句中,T1T2分别是左表和右表。

OUTER关键字是可选的,因此RIGHT OUTER JOINRIGHT JOIN效果是相同的。

下面是RIGHT OUTER JOIN的工作原理。

T1表中的每行都与T2表中的行进行比较:

  • 如果一对行满足连接谓词,则将两行的列值合并,以生成结果行,然后将其包含在结果集中。
  • 如果T2表中的一行与T1表中的任何一行不匹配,则T2表中的行的列值将与T1表中的每行的每一列使用NULL值组合生成在结果集中。

换句话说,右外连接返回右表中的所有行,以及左表中的匹配行。

1. Oracle RIGHT OUTER JOIN示例

我们将使用示例数据库中的ordersemployees表进行演示:

Oracle右连接

在该ER图中,销售员负责一个或多个销售订单。 但是,一些销售订单可能不由任何销售人员负责。

以下示例检索所有销售员及其销售订单(如果有):

SELECT     first_name,     last_name,     order_id,     status FROM     orders RIGHT JOIN employees ON     employee_id = salesman_id WHERE     job_title = 'Sales Representative' ORDER BY     first_name,     last_name; 

执行上面查询语句,得到以下结果 –

Oracle右连接

结果包括职位名称为Sales Representative的所有员工及其订单。

如果销售员不负责任何销售订单(如Alice WellsCharlotte Webb),则order_idstatus列将填充NULL值。

2. Oracle RIGHT OUTER JOIN使用USING子句的示例

与其他连接(如INNER JOINLEFT JOIN)类似,可以使用USING子句指定在连接表时要测试哪个列的相等性。

下面说明RIGHT OUTER JOIN使用USING子句的语法:

SELECT     column_list FROM     T1 RIGHT OUTER JOIN T2 USING(c1,c2,c3); 

在此查询中,USING子句中列出的列必须出现在T1T2表中。

以下声明等同于上面的语句:

SELECT     column_list FROM     T1 RIGHT OUTER JOIN T2 ON     T1.c1 = T2.c1     AND T1.c2 = T2.c2     AND T1.c3 = T2.c3; 

以下语句演示如何使用USING子句中的RIGHT OUTER JOIN

SELECT     name,     order_id,     status FROM     orders RIGHT JOIN customers         USING(customer_id) ORDER BY     name; 

执行上面查询语句,得到以下结果 –

Oracle右连接

在此示例中,所有客户都包含在结果集中。 如果客户没有销售订单,则order_idstatus列将填充NULL值。

3. Oracle RIGHT JOIN:条件在ON与WHERE子句中

以下语句获取销售员ID为57的员工和订单数据。

SELECT     employee_id,     last_name,     first_name,     order_id,     status FROM     orders RIGHT JOIN employees ON     employee_id = salesman_id WHERE     employee_id = 57; 

执行上面示查询语句,得到以下结果 –

Oracle右连接

以下语句将条件放在WHERE子句中而不是ON子句中:

SELECT     employee_id,     last_name,     first_name,     order_id,     status FROM     orders RIGHT JOIN employees ON     employee_id = salesman_id     AND employee_id = 57; 

执行上面示查询语句,得到以下结果 –

Oracle右连接

查询返回所有员工,但只有员工ID为57有相关的订单数据。

在本教程中,您已经学习了如何使用Oracle中的RIGHT OUTER JOIN来查询多个表中的数据。

  

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 只为你绽放。

本文固定链接: http://kua0.com/2019/01/16/数据库教程-oracle右连接/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注