SQL 外部连接和内部链接(练习)

 

SQL Server 开发人员必须了解两件事情:首先,内部连接和外部连接的差异;其次,NULLS对两种连接操作的影响。

让我们一步步来分析问题。首先,内部连接和外部连接的差异,然后,查询中NULLS的影响。

为了研究内部连接和外部连接的差异,我们需要一些样例数据。


假设我们有两个数据表T1和T2,每个表中都含有数据列Testjoin。

在数据表T1中,Testjoin列的数据值是1,2,3。

在T2中,Testjoin列的数据值是NULL,2,3。

基于Testjoin列的内部查询将只会返回两行,其中数值1和NULL无法连接。然而当为外部连接时,数值1和NULL却可以连接。

例如,下面查询语句的返回值就是那些下了订单的客户所在的行。


SELECT CustomerID, OrderID FROM Customers Inner Join Orders On Customers.CustomerID = Orders.CustomerID

(在许多商务交易中,这么做是有根据的,一些商务交易中,甚至规定了客户必须至少下一个订单。在我看来,数据库的定义阶段就应该反映这些商务交易规则,而是在某些中间阶段。当然,也存在着一些不同的情况。)


下面是一个外部连接:
SELECT CustomerID, OrderID FROM Customers LEFT OUTER JOIN Orders On Orders.CustomerID = Customers.CustomerID

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

posted @ 2009-09-01 18:20  Sissynong  阅读(844)  评论(0编辑  收藏  举报