在本教程中,您将学习如何使用Oracle 子句来查询多个表中的数据。
以下语句说明连接两个表和时的子句的语法:
在这个查询中,是左表,是右表。查询将表中的每一行与表中的行进行比较。如果和表中的一对行满足连接谓词,查询将组合两个表中行的列值,并将结果行记录包含在结果集中。
如果表中的行在表中没有找到匹配的行,则查询将会将SELECT子句中出现在表的每个列的值设置为并与表的行记录组合作为结果集输出。
换句话说,左连接(Left join)返回左表中的所有行,并从右表中返回匹配的行。
请参阅示例数据库中的以下和表,其ER结构图如下所示 -

表存储销售订单标题数据。它的列引用表中的列。
列的值部分是无效的,这意味着并不是所有的订单都有负责订单的销售人员。
以下语句从表和表中检索所有订单和员工数据:
执行上面查询语句,得到以下结果 -

如上图中,结果包括订单表中的所有行。 对于在表中没有匹配行的表中的行记录时,使用值(红色线框内)。
Oracle LEFT JOIN 连接多个表
以下语句使用子句演示如何连接三个表:, 和 ,如下查询语句 -
执行上面查询语句,得到以下结果 -

Oracle LEFT与USING子句联接
子句指定在连接表时要测试哪个列的相等性。以下显示了如何在中使用子句的语法:
在这个语句中,子句中列出的列必须在和表中有存在。
上面查询语句使用子句改写后等同于使用子句的语句,以下所示:
以下语句演示如何在中使用子句:
执行上面查询语句,得到以下结果 -

上面语句检索所有客户及其订单。对于尚未下过任何订单的客户,子句使用设置在表的列,即:,和。
ON与WHERE子句中的条件
以下语句查询获得订单ID为的订单和销售员数据。
执行上面查询语句,得到以下结果 -

现在,如果将条件从WHERE子句移动到的子句:
执行上面查询语句,得到以下结果 -

在这种情况下,查询将返回所有订单,但只有订单具有与其关联的销售员数据。
请注意,对于内连接,置于中的条件与置于子句中的条件相同。
在本教程中,您已学习如何使用Oracle 子句从多个表中检索数据。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/3411.html