多表连接中的各种连接的区别和联系

区别

知识点:
      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

时间: 2025-01-19 10:00:04

多表连接中的各种连接的区别和联系的相关文章

SQL Server连接中三个最常见错误原因分析

server|错误 一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性: 1,SQL Server名称或IP地址拼写有误2,服务器端网络配置有误3,客户端网络配置有误 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. 首先,检查网络物理连接 ping <服务器IP地址/服务器名称> 如果 ping <服务器IP地址> 不成功,说明物理连接有问题,这时候要

SQL Server连接中的三个最常见错误:

server|错误 SQL Server连接中的三个最常见错误: 一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性: 1,SQL Server名称或IP地址拼写有误2,服务器端网络配置有误3,客户端网络配置有误 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. ============= 首先,检查网络物理连接 =============ping <服务器IP地址/服务

SQL Server连接中的四个最常见错误

server|错误 SQL Server连接中的四个最常见错误: 一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性: 1,SQL Server名称或IP地址拼写有误 2,服务器端网络配置有误 3,客户端网络配置有误 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. ============= 首先,检查网络物理连接 ============= ping <服务器IP地址

SQL Server 连接中四种最常见错误

server|错误 一."SQL   Server   不存在或访问被拒绝"         这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多.         一般说来,有以下几种可能性:         1,SQL   Server名称或IP地址拼写有误     2,服务器端网络配置有误     3,客户端网络配置有误         要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因.             =============   首先,检查

用注册表 删除多余网卡本地连接

在网卡出了问题并重新安装了网卡驱动程序后,系统将会自动创建连接,而且这个连接将会由原来的"本地连接"变成"本地连接2".而"本地连接"的相关信息仍然存在于系统中.   当你在"本地连接2"中设置IP等相关信息时,如果这些参数与以前的"本地连接"中设置的相同,系统将会提示被其它网卡占用的信息,此时你可以手工将以前的连接信息删除,将"本地连接2"转换成"本地连接",问题即

mysql中关于左连接,取出来的数据顺序和主表不一样

问题描述 mysql中关于左连接,取出来的数据顺序和主表不一样 如题,楼主最近在跟着视频学习SQL语句,发送自己做出来的效果和老师不一样 如图 这时两张表,学生表和班级表 要求是查询班级一样的学生信息,查出左连接显示是这样的: 右连接显示这样 请问一下为什么左连接查询出来显示数据的顺序不是按照学生表的顺序来啊?学生表不是主表么?为什么我显示出来的itcast顺序完全乱了,而是按照后面右表的id顺序来排? 求求求,急求大神解疑 解决方案 这个结果就是这样的.因为你的左连接写的是pr_student

SQL Server连接中三个常见的错误分析(转)

一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性: 1.SQL Server名称或IP地址拼写有误 2.服务器端网络配置有误 3.客户端网络配置有误 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. 首先,检查网络物理连接 ping <服务器IP地址/服务器名称> 如果 ping <服务器IP地址> 不成功,说明物理连接有问题,这时候要检查硬件设备,如

hibernate全外连接-hibernate中在一对多关系中全外连接语句怎么写,求大神

问题描述 hibernate中在一对多关系中全外连接语句怎么写,求大神 Employee 类与 Department类是多对一关系,分别对应于表s_emp 和 s_dept表 其中s_emp表中外键 dept_id, Employee中有dept成员,Department中有Set集合 hibernate.hbm.xml都配置好了,不知道怎么写 全外连接语句 String hql="select E.id,D.id from Employee E full join Department D&q

SQL Server连接中三个常见的错误分析_MsSql

SQL Server连接中三个常见的错误分析 一."SQL Server 不存在或访问被拒绝"  这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性: 1.SQL Server名称或IP地址拼写有误 2.服务器端网络配置有误 3.客户端网络配置有误 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. 首先,检查网络物理连接  ping <服务器IP地址/服务器名称> 如果 ping <服务器IP地址> 不