SQL多表联接详解.ppt

上传人:牧羊曲112 文档编号:6520917 上传时间:2023-11-08 格式:PPT 页数:30 大小:595KB
返回 下载 相关 举报
SQL多表联接详解.ppt_第1页
第1页 / 共30页
SQL多表联接详解.ppt_第2页
第2页 / 共30页
SQL多表联接详解.ppt_第3页
第3页 / 共30页
SQL多表联接详解.ppt_第4页
第4页 / 共30页
SQL多表联接详解.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《SQL多表联接详解.ppt》由会员分享,可在线阅读,更多相关《SQL多表联接详解.ppt(30页珍藏版)》请在三一办公上搜索。

1、第9章 多表联接,使用表的别名组合多个表中的数据合并多个结果集,使用表的别名,两种方式给字段起名 使用多表联接时,必须慎重地指定字段名,任何数据库对象名称包含四个标识:服务器名、数据库名、主人名称、对象名,SELECT*FROM server.database.schema.table AS 别名,SELECT*FROM server.database.schema.table 别名,使用表的别名(续),举例从订单详细表中查询单价高于100的订单号、产品号、单价,SELECT od.orderid,od.productid,od.unitprice FROM order details AS

2、odWhere od.unitprice 100,表的别名,第9章 多表联接,使用表的别名组合多个表中的数据合并多个结果集,组合多个表中的数据,联接概述使用内联接使用外联接 使用交叉联接联接两个以上的表自联接(Self-Join),联接概述,从多个表中选择指定的字段关键字 JOIN 指定要联接的表,以及这些表联接的方式关键字 ON 指定联接条件查询两个或多个表并生成单个结果集所有联接的表必须共同拥有某些字段,这些字段必须有相同的或兼容的数据类型如果联接的表有相同字段,则引用这些字段时必须指定表名,联接概述(续),连接类型交叉连接:Cross Join(不太用)内连接:Inner Join(最常

3、用)外连接:左外连接:Left Outer Join右外连接:Right Outer Join完全连接:Full Outer Join 自连接:Self Join,使用内联接,内联接通过比较被联接的表所共同拥有的字段,把多个表联接起来语法SELECT 列名列表FROM 表名1 INNER JOIN 表名2ON 表名1.列名 表名2.列名注意INNER可以省略。包括=、等。,使用内联接(续),USE joindbSELECT buyer_name,sales.buyer_id,qtyFROM buyers INNER JOIN salesON buyers.buyer_id=sales.buye

4、r_idGO,sales,列出购买产品的顾客信息,使用内联接(续),USE joindbSELECT buyer_name,sales.buyer_id,qtyFROM buyers,salesWHERE buyers.buyer_id=sales.buyer_idGO,USE joindbSELECT buyer_name,sales.buyer_id,qtyFROM buyers INNER JOIN salesON buyers.buyer_id=sales.buyer_idGO,示例,比较之一,使用内联接(续),USE joindbSELECT buyer_name,sales.buy

5、er_id,qtyFROM buyers INNER JOIN salesON buyers.buyer_id=sales.buyer_idGO,USE joindbSELECT*FROM buyers INNER JOIN salesON buyers.buyer_id=sales.buyer_idGO,比较之二,使用外联接,左外联接的结果表中除了满足连接条件的行,还包括左表中的所有剩余行,但不包括右表中的不匹配行使用左外联接时,请注意不满足联接条件的记录将显示空值左联接可以显示左表中所有记录可以把 LEFT OUTER JOIN 简写为 LEFT JOIN,使用外联接(左联接),USE j

6、oindbSELECT buyer_name,sales.buyer_id,qty FROM buyers LEFT OUTER JOIN sales ON buyers.buyer_id=sales.buyer_idGO,查询所有购买者的购买情况,使用外联接(右联接),右外联接结果表中除了满足连接条件的行,还包括右表中的所有剩余行,但不包括左表中的不匹配行使用右外联接时,请注意不满足联接条件的记录将显示空值右联接可以显示右表中所有记录可以把 RIGHT OUTER JOIN 简写为 RIGHT JOIN,使用外联接(右联接),USE joindbSELECT buyer_name,sales

7、.buyer_id,qty FROM buyers RIGHT OUTER JOIN sales ON buyers.buyer_id=sales.buyer_idGO,示例,使用交叉联接,交叉联接将从被联接的表中返回所有可能的记录组合为什么使用交叉联接在规范化的数据库中,很少使用交叉联接可以为数据库生成测试数据为清单及企业模板生成所有可能的组合数据,使用交叉联接(续),示例,select R.*,S.*from R inner join S on R.C=S.C,R,S,select R.*,S.*from R,Swhere R.C=S.C,内连接,内连接与几种外连接的对比,select*f

8、rom R left outer join S on R.C=S.C,select R.A,R.B,S.*from R right outer join Son R.C=S.C,左外连接,右外连接,R,S,select R.*,S.*from R full outer join S on R.C=S.C,全外连接,R,S,联接两个以上的表,联接任意数目的表都有可能,通过使用共同拥有的字段,任何一个表都可以和其他表联接为什么要联接两个以上的表 使用多重联接可以从多个表中得到彼此相关的信息至少有一个表具有外键,把要联接的表按一定关系联系起来组合键中的每一字段都必须由一个相应的 ON 子句引用可以使

9、用 WHERE 子句限制结果集所返回的记录,联接两个以上的表(续),SELECT buyer_name,prod_name,qty FROM buyers INNER JOIN sales ON buyers.buyer_id=sales.buyer_id INNER JOIN products ON sales.prod_id=products.prod_idGO,products,buyers,sales,什么顾客购买了什么产品,多少数量?,自联接(Self-Join),使用自联接,可以查询一个表中各记录之间的关系使用自联接时,应注意引用表的两份副本时,必须使用表的别名生成自联接时,表中每

10、一行都和自身比较一下,并生成重复的记录,使用 WHERE 子句来消除这些重复记录,自联接(Self-Join)(续),USE joindbSELECT a.buyer_id AS buyer1,a.prod_id,b.buyer_id AS buyer2 FROM sales AS a JOIN sales AS b ON a.prod_id=b.prod_idWHERE a.buyer_id b.buyer_idGO,sales b,sales a,显示拥有相同产品的顾客列表。,第9章 多表联接,使用表的别名组合多个表中的数据合并多个结果集,合并多个结果集,使用 UNION 操作符可以将多个

11、查询产生的结果集合并成一个结果集每一个查询必须有类似的数据、相同的字段数目,并且在选择列表中字段顺序相同UNION 与UNION ALL的区别UNION在进行表联接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。UNION ALL只是简单的将两个结果合并后就返回。如果需要排序,则要在最后一个有 UNION 的子句中使用 ORDER BY,以 指定排序方式。,合并多个结果集(续),select*from studentwhere id 2 and id 6,结果将是1 Aaron 782 Bill 763 Cindy 894 Damon 905 Ella 73,合并多个结果集(续),如果换成Union All连接两个结果集,则返回结果是:1 Aaron 782 Bill 763 Cindy 893 Cindy 894 Damon905 Ella 73,合并多个结果集(续),UNION 和 JOIN 的区别使用操作符 UNION,要求所引用的表必须具有相似的数据类型、相同的字段数,每个查询中的选择列表必须具有相同的顺序。使用操作符 JOIN,只要求联接的表共同拥有某些字段。用 UNION 分解复杂的查询会提高查询速度,而JOIN联接表越多,查询速度越慢。,回顾,学习完本章后,将能够:使用表的别名组合多个表中的数据合并多个结果集,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号