SQL Server 联接详解:交叉联接与内部联接的基础应用

0 下载量 41 浏览量 更新于2024-08-30 1 收藏 109KB PDF 举报
本篇内容主要讲解了SQL Server中的两种基本联接方式:交叉联接(CROSS JOIN)和内部联接。首先,我们将关注交叉联接。它是一种简单但可能产生大量结果的联接方法。在SQL Server 2012示例中,通过以下查询: ```sql SELECT C.custid, E.empid FROM Sales.Customers AS C CROSS JOIN HR.Employees AS E ORDER BY E.empid ``` 在这个例子中,如果`Sales.Customers`表有91行,而`HR.Employees`表有9行,交叉联接的结果将会有91 * 9 = 819行,生成的是两个表所有行的笛卡尔积。交叉联接常用于生成虚拟表或数据扩展,如创建一个包含100万条数字的`Nums`表: ```sql INSERT INTO dbo.Nums(n) SELECT D6.digit*100000 + D5.digit*10000 + D4.digit*1000 + D3.digit*100 + D2.digit*10 + D1.digit + 1 AS n FROM dbo.Digits AS D1 CROSS JOIN dbo.Digits AS D2 CROSS JOIN dbo.Digits AS D3 CROSS JOIN dbo.Digits AS D4 CROSS JOIN dbo.Digits AS D5 CROSS JOIN dbo.Digits AS D6 ``` 通过这种方式,可以快速创建出一个包含100万位数字的表,每个数字由五个独立的`Digits`表中的数字组合而成。 接下来,我们会讨论内部联接(INNER JOIN),这是一种更常见的联接类型,它只返回两个表中匹配的行。内部联接通常基于共享的键或标识符进行匹配,限制结果集只包含源表中符合条件的行。这与交叉联接形成鲜明对比,后者不考虑匹配条件,只生成所有可能的组合。 在实际应用中,理解这两种联接方式的优缺点以及何时选择它们至关重要。对于大数据量和性能优化,内部联接通常更高效,而交叉联接在需要生成所有可能组合时才有其用武之地。通过深入理解这两种基本的联接类型,开发人员能够更好地构建复杂的数据查询和报表。