SqlServer 表连接教程(问题解析)
分类:彩世界开奖-数据库

1.2 本篇小说内容概要

1.3 本篇小说内容归纳

在SQL语句中,关于表连接,若遵照表的多少来划分,能够分开为单表连接、两表连接和两表以上连接,在本篇小说中,首要传授两表连接,其余多表连接原理同样。

关于表连接有广大类型,本文首要教授交叉连接,内延续,外接连,自连接。

1.4 本章测量检验样表和Sql

业务场景:有两张表,分为为客户表Customers和客户订单表Orders,SQL语句分别如下:

创设Customes并伊始化

--CREATE TABLE CustomersCREATE TABLE Customers( CustID VARCHAR(50) NOT NULL, --顾客ID CustName VARCHAR(50),--顾客姓名 CustCompany VARCHAR(50) --顾客公司)--Initial CustomersINSERT INTO Customers VALUES('SXN-DD-01','赵武','A')INSERT INTO Customers VALUES('SXN-DD-02','刘杨','B')INSERT INTO Customers VALUES('SXN-DD-03','张永为','C')INSERT INTO Customers VALUES('SXN-DD-04','李龙飞','D')INSERT INTO Customers VALUES('SXN-FF-01','邓华','E')INSERT INTO Customers VALUES('SXN-HH-01','张涛明','F')

查询结果为:

始建Order表并开头化

CREATE TABLE Orders( CustID VARCHAR(50) NOT NULL, --顾客ID OrdetID VARCHAR(50) --订单ID)--Initial OrdersINSERT INTO Orders VALUES('SXN-DD-01','SCCCCFFFFFSSOX002')INSERT INTO Orders VALUES('SXN-DD-02','SCCCCFFFFFSSOX0X2')INSERT INTO Orders VALUES('SXN-DD-03','')INSERT INTO Orders VALUES('SXN-DD-04','')INSERT INTO Orders VALUES('SXN-DD-05','SCCCCFFFFFSSOX0H2')INSERT INTO Orders VALUES('SXN-DD-06','')

查询结果为:

2 难点引进

Q1:写三个询问,生成从1到1000的莫西干发型体系。

3 交叉连接

3.1 SQL示例及示范结果

 SELECT C.CustID,C.CustName,C.CustCompany,O.CustID,O.OrdetIDFROM Customers AS CCROSS JOIN Orders AS O

结果:

3.2 示例结果解析

陆陆续续连接使用首要字CROSS JOIN进行查询,查询的结果为笛卡儿积,从如上结果能够看来,查询出的结果共有36行数据,因为Customers表和Orders表分别有6条记下,6X6=36;

3.3 小结

a.在逻辑上,交叉连接是一种最简易的连结;b.交叉连接只兑现八个逻辑管理步骤———笛卡儿积;c.操作:对输入的四个表实行操作,把它们连接起来,生成两个的笛卡儿积,就要三个输入表的每行与另多个表的所以行举办相称,假若三个表有m行,而另贰个表有n行,将获取m x n行的接果集;d.结构: SELECT tb1.tb1ConumName,tb2.tb2ConumName FROM table1 AS tb1 CROSS JOIN table2 AS tb2e.交叉连接使用的基本点字:CROSS JOIN ;f.交叉连接生成的接果集是三个虚构表,设想表中的各列直接来自参加连接的三个表;

4 内连接

4.1 SQL示例及示范结果

SELECT C.CustID,C.CustName,C.CustCompany,O.CustID,O.OrdetID FROM Customers AS C INNER JOIN Orders AS O ON C.CustID=O.CustID

结果:

4.2 示例结果解析

内接连在交叉连接的底子上附加过滤条件ON,如上例子中用Customers.CustID=Orders.CustID作为过滤条件,结决断定。

4.3 小结

内连接法规为笛Carl积+客户谓词过滤:它首先像交叉连接相通,对多少个输入表实行笛Carl积运算,然后根据客户钦定的谓词对结果开展过滤;

5 外连接

5.1 SQL示例及示范结果(只解析左外界连接,因为右连接和全连接原理也是同样的卡塔尔(قطر‎

SELECT C.CustID,C.CustName,C.CustCompany,O.CustID,O.OrdetID FROM Customers AS C LEFT OUTER JOIN Orders AS O ON C.CustID=O.CustID

结果:

5.2 示例结果深入分析

如上以Cutomers表作为左保留表,连接右表Orders列CustID紧缺SXN-FF-01和SXN-HH-01,为了以左保留表为法规,用NULL占位符来填充。

5.3 小结

a.外连接:笛卡儿积+ON过滤+外界行;b.在外连接中,要把一个表标识为“保留的”表,可以在表名之间利用主要字LEFT OUTEHighlander JOIN、HavalIGHT OUTE汉兰达 JOIN、FULL OUTEENVISIONJOIN,当中OUTECRUISER关键字是可选的。LEFT关键字表示右边表的行是保留的,OdysseyIGHT关键字表示侧边表的行是保留的,而FULL关键字则意味着左右两侧表的行都以保存的;c.外连接的第两个逻辑查询管理步骤就是要识别保留表中依据ON条件在另三个表找不到与之协作的那个行,再把那个行增多到连年的前三个步骤生成的结果中。对于来自连接的非保留表的那三个列,追加的外不行中的那个列则用NULL作为占位符;d.从外接连保留表的角度来看,能够感觉外接连结果中的数据行蕴涵二种内部行和外界行。内部行是指依据ON子句中的条件能在三番一遍的另一方面找到匹配的这一个行;而外界行则是指找不到特别的那多少个行。内一连只回去内部行,外接连同期重返内部行和表面行;e.使用外接连时,到底是在询问的ON子句中,依旧在WHERE子句中钦点连结条件?从外接连保留表中的行来思考该难点,ON子句中的过滤条件不是终极的,换句话说,ON子句中的条件并无法最终决定保留表中的部分行是还是不是会在结果中现身,而只是推断是还是不是能够包容另四只表中的一些行。所以,当须求表达三个非最终的规范时,就在ON子句中钦点连接条件,当在更换外界行现在,要运用过滤器,况且希望过滤条件是最后的,就应当在WHERE子句中钦赐条件;

6自连接

6.1 SQL示例及示范结果

SELECT C1.CustID AS C1CustID,C1.CustName AS C1CustName,C1.CustCompany AS C1CustCompany,C2.CustID,C2.CustName,C2.CustCompany FROM Customers AS C1 JOIN Customers AS C2 ON C1.CustID=C2.CustID

结果:

6.2 示例结果深入分析

如上例子为自连接在内连接中的运用,在其它总是中的运用就不如如子了,比较轻便。

6.3 小结

a.自连接为单个表取分裂的外号,通过小名来连接;b.自连接能够用来别的连接;b.自连接能够作为交叉连接、内连接、外接连等连续的多少个特例;

7难题答案

Q1:KEY

CREATE TABLE Digits( digit int not null primary key)--Initial testing data for DigitsINSERT INTO Digits VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)--QuerySELECT D3.digit*100+D2.digit*10+D1.digit+1 AS nFROM Digits AS D1CROSS JOIN Digits AS D2CROSS JOIN Digits AS D3ORDER BY n

8参考文献

Microsoft SqlServer 二〇一〇本领内部情形:T-SQL语言根基

Microsoft SqlServer 二零零六技能底细:T-SQL查询

总结

如上所述是笔者给我们介绍的SqlServer 表连接教程,希望对大家享有助于,如若我们有任何疑问请给自己留言,小编会及时复苏大家的。在这里也极其多谢大家对台本之家网址的支撑!如若你以为本文对你有救助,接待转发,烦请阐明出处,感谢!

本文由彩世界开奖发布于彩世界开奖-数据库,转载请注明出处:SqlServer 表连接教程(问题解析)

上一篇:Azure SQL数据仓库 下一篇:没有了
猜你喜欢
热门排行
精彩图文