数据库教程-Oracle笛卡尔连接

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

在本教程中,您将学习如何使用Oracle CROSS JOIN创建连接表的笛卡尔积。

Oracle CROSS JOIN子句简介

在数学中,给定两个集合ABA x B的笛卡尔乘积是所有有序对(ab)的集合,属于Ab属于B

要在Oracle中创建表的笛卡尔乘积,可以使用CROSS JOIN子句。 以下说明了CROSS JOIN子句的语法:

SELECT     column_list FROM     T1  CROSS JOIN T2; 

与其他连接(如INNER JOINLEFT JOIN)不同,CROSS JOIN没有连接谓词的ON子句。

当执行两个没有关系的表的交叉连接时,将得到两个表的行和列的笛卡尔乘积。

当您想要生成大量的行进行测试时,交叉连接非常有用。假设我们有两个有mn行的表,这些表的笛卡尔乘积就有m × n行。

Oracle Cross Join示例

请参阅示例数据库中的以下库存表 – inventories, 其表结构如下图所示 –

Oracle笛卡尔连接

inventories表中的每一行都需要product_idwarehouse_idquantity的数据。

要生成用于插入inventories表的测试数据,可以使用CROSS JOIN子句,如以下语句所示:

SELECT     product_id,     warehouse_id,     ROUND( dbms_random.value( 10, 100 )) quantity FROM     products  CROSS JOIN warehouses; 

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

Oracle笛卡尔连接

在此示例中,交叉联接从products表和warehouses表中创建了product_idwarehouse_id的笛卡尔乘积。products表有288行和warehouses表有9行,因此这些表的交叉连接后返回2592行(288×9)记录。

在本教程中,您学习了如何使用Oracle CROSS JOIN创建连接表的笛卡尔积。

  

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

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

为您推荐

发表评论

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