是否需要INNER JOIN和OUTER JOIN?

Gzo*_*org 1 sql database join

我知道任何连接都可以使用CROSS join和WHERE子句完成.

我做了一些实验,看起来好像将等式谓词放在where子句中,或者作为内连接的参数产生相同性能的相同结果.

此外,使用内部联接不会保存任何键入,因为仍必须指定联接谓词.

我想对于各种外连接也是如此.只需指定值可以为null或不为null.

我可以只使用交叉连接吗?

Dee*_*kha 10

不能使用CROSS连接和WHERE子句进行任何连接.每个连接cross,inner和outer都有自己的逻辑意义.

  1. 交叉连接仅适用于一个阶段 - 笛卡尔积.
  2. 内连接应用两个阶段 - 笛卡尔积和滤波器.
  3. 外连接应用三个阶段 - 笛卡尔积,过滤器和添加外行.

包含OUTER JOIN子句的查询的一个令人困惑的方面是在ON过滤器或WHERE过滤器中指定逻辑表达式.两者之间的主要区别在于,在添加外部行之前应用ON,而之后应用WHERE.ON过滤器从保留表中删除一行(指定为左外或右外)不是最终的,因为它将被添加回来; 相反,WHERE过滤器消除行是最终的.

ON和WHERE子句之间的逻辑差异仅在使用外连接时存在.使用内连接时,在使用内连接表运算符的ON子句中或在带有交叉连接表运算符的Where子句中指定逻辑表达式的位置无关紧要.

希望这可以帮助!!!