交叉产品和natura连接之间的区别

Aam*_*ega 4 sql natural-join cartesian-product cross-join

我正在研究自然连接,我很困惑,在用SQL编写时,我怎么知道我应该使用交叉产品还是自然连接.

Bil*_*win 8

CROSS JOIN从两个表创建所有可能的行对,无论它们是否匹配.您不对交叉产品使用任何连接条件,因为对于任何配对,条件始终为真.

使用的一个例子CROSS JOIN:你有ShoeColors和ShoeSizes表,你想知道有多少种可能的组合.SELECT COUNT(*) FROM ShoeColors CROSS JOIN ShoeSizes;

NATURAL JOIN就像一个INNER JOIN,但它假设条件是相等的,并适用于两个表中出现的所有列名称.我从不使用NATURAL JOIN,因为我不能认为只是因为列具有相同的名称,它们应该是相关的.这需要一个非常严格的列命名约定,实际上没有真正的项目有这样的规则.