SQLServer应用技巧:内部连接和外部连接中NULLS的影响

SQLServer应用技巧:内部连接和外部连接中NULLS的影响,第1张

SQLServer应用技巧:内部连接和外部连接中NULLS的影响,第2张

SQL Server开发人员必须知道两件事:一是内部连接和外部连接的区别;第二,零对两个连接操作的影响。本文涵盖了这两个方面。

让我们一步步分析问题。首先是内部连接和外部连接的区别,然后是查询中NULLS的影响。我们需要一些样本数据来研究内部连接和外部连接的区别。

假设我们有两个数据表T1和T2,每个都包含数据列Testjoin。在数据表T1中,Testjoin列的数据值是1,2,3。在T2,Testjoin列的数据值是NULL,2,3。基于Testjoin列的内部查询将只返回两行,其中值1和NULL不能连接。但是,对于外部连接,值1和NULL可以连接。例如,以下查询语句的返回值是下订单的客户所在的行。

从客户的客户内部联接订单
中选择CustomerID,OrderID。CustomerID =订单。客户号

(在很多商业交易中,这是有道理的。在一些商业交易中,甚至规定客户必须至少下一次订单。在我看来,数据库的定义阶段就应该体现这些业务交易规则,而不是在一些中间阶段。当然也有一些不同的情况。)

以下是外部连接:

SELECT CustomerID,OrderID FROM Customers LEFT OUTER JOIN Orders
on Orders。CustomerID =客户。客户号

它的返回值是所有客户的列表,不管客户是否下了订单。

运行列表A中的脚本来创建一个测试表。

以下SQL语句比较了外部连接和内部连接:

选择内外部。T1.T1ID,内部外部。T1.NameAS Name1,
InnerOuter。T2。T2ID,内外。T2。name as name 2
FROM inner outer。T1左外部联接
InnerOuter。内外层的T2。T1.T1ID = InnerOuter。T2.T1ID

运行脚本中的两个查询后,您会发现内部连接返回两行,而外部连接返回三行。即使添加了第三个数据表,结果仍然是遵循相同的规则。如表B所示:

如果向选择查询中添加第三个表,仍然会得到相同的结果:内部联接返回两行,外部联接返回三行。如表C所示:

让我们来看看NULLS对不同聚合函数的影响。为了更好地理解,在表T2中添加一个货币列空,称为Amount。在T2中添加一些行数据,如下所示:

T2ID T1ID名称金额

1 1 T2Text1为空

2空T2Text2空

3 3 T2Text3 120.0000

4 1 T2Text4 123.0000

5 1 T2Text5 234.0000

6 3 T2Text6 345.0000

空空空空

有三行数据,T1ID列的值为1,一行的金额值为NULL。T1ID值为3的数据有两行,这两行数据的金额值不是空(可以多加几行,但要保证行数和空金额列数也不一样)。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » SQLServer应用技巧:内部连接和外部连接中NULLS的影响

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情