中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > 数据库综合
多表连接中的各种连接的区别和联系
作者:未知 时间:2005-07-27 23:35 出处:CSDN 责编:chinaitpower
              摘要:多表连接中的各种连接的区别和联系

知识点:
      1、各种连接的定义和用途
          内连接:
                 同等连接、非同等连接(常用就不讲了)
                 自然连接,自己找相同的字段,不用给出两个表之间拿哪一列进行比较。所谓自然(不常用)
                 交叉连接,选出来之后,进行笛卡乘积。如果要列出所有的组合时,这个有用。(不常用)
          外连接:
                 左右外连接 (常用就不讲了)
                 全外连接 FULL JOIN(不常用)。
                  合并连接(一般不用),是选出不匹配的记录  等于全连接减去内连接的集合。
      2、关键是弄清楚它们之间的区别。
                 1)Full OUTER JOIN 和cross join 有什么区别?
                   答:交叉连接是属于内连接中的一种特殊的连接。根本不存在任何条件连接,应该说是范围最大的连接。就是
                       笛卡尔乘积。   而 全外连接是首先进行内连接,然后将所有没匹配上的记录也选出来,但不在对不匹配的进行笛卡尔乘积
                       只是加进来。  而交叉连接是会将没匹配上的也要进行乘积的。
相关题目:
You are a database developer for an automobile dealership. You are designing a database to support a 
web site that will be used for purchasing automobiles. A person purchasing an automobile from the web 
site will be able to customize his or her order by selecting the model and color. 
The manufacturer makes four different models of automobiles. The models can be ordered in any one of 
five colors. A default color is assigned to each model. 
The models are stored in a table named Models, and the colors are stored in a table named Colors. These 
tables are shown in the exhibit. 
You need to create a list of all possible model and color combinations. Which script should you use? 
 

 (分析,这里是要列出车型和颜色的所有组合,而根本不涉及条件,)
   A            SELECT m.ModelName, c.ColorName 
FROM Colors AS c FULL OUTER JOIN Models AS m 
   ON c.ColorID = m.ColorID 
ORDER BY m.ModelName, c.ColorName  (分析,这里是全外连接,因为车型表里只有一个颜色ID(缺省),那么这里就只有8(4+4)条记录选出来了)
 
   B            SELECT m.ModelName, c.ColorName  
FROM Colors AS c CROSS JOIN Models AS m 
ORDER BY m.ModelName, c.ColorName       (答案在此,交叉连接就是列出所有的可能组合20(5*4)条记录,根本不用条件)
 
   C            SELECT m.ModelName, c.ColorName 
FROM Colors AS m INNER JOIN Colors AS c 
ON m.ColorID = c.ColorID 
ORDER BY m.ModelName, c.ColorName  (分析,内连接,缺省的情况下只能查出4条记录)
 
   D            SELECT m.ModelName, c.ColorName 
FROM Colors AS c LEFT OUTER JOIN Models AS m (分析,左外连接,缺省情况下只能查出5条记录) 
ON c.ColorID = m.ColorID 
UNION 
SELECT m.ModelName, c.ColorName 
FROM Colors AS c RIGHT OUTER JOIN Models AS m  (分析,右外连接,缺省情况下只能查处4条记录)
ON c.ColorID = m.ColorID 
ORDER BY m.ModelName, c.ColorName
 
   E            SELECT m.ModelName 
FROM Models AS m 
UNION 
SELECT c.ColorName     (分析,这个是合并连接,是查询不匹配的行。 应该是   8-4=4 条记录,就是车型表里不存在的颜色) 
FROM Colors AS c 
ORDER BY m.ModelName


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有