- Oracle数据库是什么?
- Oracle 11g安装教程
- Oracle 12C安装
- Oracle数据库和实例
- 连接到Oracle数据库
- Oracle示例数据库
- 导入Oracle示例数据库
- Oracle基础入门
- Oracle数据定义
- Oracle数据类型
- Oracle修改数据
- Oracle查询数据
- Oracle连接表
- Oracle操作符
- Oracle约束
- Oracle高级部分
Oracle右连接
在本教程中,您将学习如何使用Oracle中的RIGHT OUTER JOIN
来连接两个或多个表。
Oracle RIGHT OUTER JOIN概述
假设有两个表T1
和T2
,以下语句显示了如何使用Oracle中的RIGHT OUTER JOIN
子句连接这两个表:
SELECT column_list FROM T1 RIGHT OUTER JOIN T2 ON join_predicate;
在这个语句中,T1
和T2
分别是左表和右表。
OUTER
关键字是可选的,因此RIGHT OUTER JOIN
和RIGHT JOIN
效果是相同的。
下面是RIGHT OUTER JOIN
的工作原理。
T1
表中的每行都与T2
表中的行进行比较:
- 如果一对行满足连接谓词,则将两行的列值合并,以生成结果行,然后将其包含在结果集中。
- 如果
T2
表中的一行与T1
表中的任何一行不匹配,则T2
表中的行的列值将与T1
表中的每行的每一列使用NULL
值组合生成在结果集中。
换句话说,右外连接返回右表中的所有行,以及左表中的匹配行。
1. Oracle RIGHT OUTER JOIN示例
我们将使用示例数据库中的orders
和employees
表进行演示:
在该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;
执行上面查询语句,得到以下结果 -
结果包括职位名称为Sales Representative
的所有员工及其订单。
如果销售员不负责任何销售订单(如Alice Wells
,Charlotte Webb
),则order_id
和status
列将填充NULL
值。
2. Oracle RIGHT OUTER JOIN使用USING子句的示例
与其他连接(如INNER JOIN,LEFT JOIN)类似,可以使用USING
子句指定在连接表时要测试哪个列的相等性。
下面说明RIGHT OUTER JOIN
使用USING
子句的语法:
SELECT column_list FROM T1 RIGHT OUTER JOIN T2 USING(c1,c2,c3);
在此查询中,USING
子句中列出的列必须出现在T1
和T2
表中。
以下声明等同于上面的语句:
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;
执行上面查询语句,得到以下结果 -
在此示例中,所有客户都包含在结果集中。 如果客户没有销售订单,则order_id
和status
列将填充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;
执行上面示查询语句,得到以下结果 -
以下语句将条件放在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;
执行上面示查询语句,得到以下结果 -
查询返回所有员工,但只有员工ID为57
有相关的订单数据。
注意:有关INNER JOIN的注意事项是,条件放在
ON
子句中与放在WHERE
子句中具有相同的效果。
在本教程中,您已经学习了如何使用Oracle中的RIGHT OUTER JOIN
来查询多个表中的数据。
上一篇:Oracle左连接
下一篇:Oracle笛卡尔连接
扫描二维码
程序员编程王