`
deepnighttwo
  • 浏览: 50041 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【转】外连接&全连接的区别

 
阅读更多
惭愧啊………………学了这么久的数据库和sql语句,竟然没弄明白外连接和全连接的区别。引用文章一篇,文章说的很清楚。

计算机就是这样,不多读书就是不行,有些东西不是自己能能想出来的。

文章引用自:http://www.daima.com.cn/Info/70/Info26849/
请教专家terrypurcell:有关外连接的问题
db2dd 读者:感谢您对出现在 db2 开发者园地上的外连接的解释。我的问题是:当表很大(有许多行)时,我如何决定是应该使用内连接还是外(左或右)连接呢?

terry purcell:编码 inner(内)连接还是 outer(外)连接与行数无关,更多地是取决于被连接的每个表中的数据是否是必需的。

例如,假设我们有两个表:parts 和 suppliers。如果我们的业务规则规定:仅当在 suppliers 表中有相应的 supplier 时,才必须将 parts 存储在 parts 表中,那么我们将如下所示的编码内连接:

select p.part_num, p.part_desc, s.supplier_num
from parts p inner join supplier s
on p.part_num = s.part_num

然而,如果不管零件是否有供应商,都可以存储有关零件的信息(因而供应商详细信息是可选的),则需要编码 left join。如果我们编码了 inner join,那么将不会返回那些没有供应商的零件。left join 查询将是:

select p.part_num, p.part_desc, s.supplier_num
from parts p left join supplier s
on p.part_num = s.part_num

如果不管零件是否有供应商,都可以存储部件,并且不管供应商是否提供任何零件,也可以存储供应商,那么这将是 full join,如下所示:

select p.part_num, p.part_desc, s.supplier_num
from parts p full join supplier s
on p.part_num = s.part_num

因此,连接类型不是由每次查询返回的行数规定的;而是由您正在连接的每个表中出现的数据是必需的还是可选的决定的。

我希望上述内容能回答您的问题。
分享到:
评论

相关推荐

    数据库和ado知识

    SQL中表全连接 full join SQL中变量 SQL中的事务 创建存储过程 存储过程带输出参数 调用存储过程 触发器定义 触发器类型: 触发器触发条件: 什么是索引 索引类型 什么是填充因子 什么是临时表 什么是局部临时表 什么...

    SQL语法大全

    以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。 ------------------------------------------------------------- Recordset属性 adOpenForwardOnly adOpenKeyset ...

    CH340 USB转串口、USB转打印口、USB转IrDA解决方案-电路方案

    该设计方案CH340的USB转串口、USB转打印口、USB转IrDA的原理图和PCB,串口含DB9的RS232、低成本RS232、TTL的UART等各种版本,打印口含DB36连接器、DB25插孔两种版本,USB红外适配器、USB转IrDA含6脚、8脚红外收发器...

    JAVA面试题最全集

    使用StringBuffer类与String类进行字符串连接时有何区别? 57.调用Thread类的destroy()方法有什么后果? 58.多线程,用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用? 59.使用socket建立客户端...

    数据库系统之查询处理与优化.pdf

    查询树和查询执⾏计划之间的区别 查询树不是最优的,不包含实际执⾏时选择的算法,执⾏计划=优化后的查询树+选择的实际执⾏的算法(连接运算是⽤块连接还是散列连 接,是否⽤流⽔线等); 查询执⾏的时候是⽤的执⾏...

    单片机期末考试题目及答案详解

    1.80C51与8031的区别在于 内部ROM的容量不同 内部RAM的容量不同 内部ROM的类型不同 80C51使用EEPROM,而8031使用EPROM 2.PC的值是 A.当前指令前一条指令的地址 B.当前正在执行指令的地址 C.下一条指令的地址 ...

    网络信息扫描实验

    TCP全连接扫描方法是利用TCP的三次握手,与目标主机建立正常的TCP连接,以判断指定端口是否开放。这种方法的缺点是非常容易被记录或者被检测出来。 2)TCP SYN扫描 本地主机向目标主机发送SYN数据段,如果远端目标...

    LED照明中的隔离PK非隔离

    隔离非隔离有什么区别呢?主要从4个方面进行PK:  1.安全性  先介绍下什么是隔离吧,隔离电源是指输入和输出通过变压器实现电气连接的,变压器的转换过程是:电-磁-电,没有和大地连接,所以不会发生触电危险。而...

    Nucleo开发板方案设计—BLDC电机电调设计-电路方案

    直流无刷电机根据转子结构可分为内转子和外转子两种结构,主要区别在于转动部分处于内部还是外部。 无刷直流电机控制原理: 直流无刷电机绕组通电后,线圈内产生电流,在永磁体的磁场下产生洛伦兹力,产生力矩,从而...

    数据库系统与原理(目录).doc

    等值连接与自然连接的区别是什么? 38 . 代数的基本运算有哪些?如何用这些基本运算来表示其他的关系基本运算? 39 . 试述 SQL 的定义功能。 40 . 什么是基本表?什么是视图?两者的区别和联系是什么? 41 . 试述...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    因此你必须有办法将两者区别开来。以下就是你可以采用的几种方法。你可以选用其中一种你最适应的并且就这样坚持这种方法! 从HTML中分离 以下是可以使用的方法: <script language="php"> . . . 语句 与Perl...

    OTN原理、发展白皮书

    比较OptiX OSN 8800和OptiX OSN 6800的功能特性,所实现的功能基本一致,OptiX OSN 8800和OptiX OSN 6800的主要区别是交叉容量OptiX OSN 8800比OptiX OSN 6800大,OptiX OSN 8800提供槽位比OSN6800多,相应功耗也比...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例051 前置运算符和后置运算符的区别 82 实例052 使用位运算对数字进行加密和解密 83 2.3 包含语句 84 实例053 提高代码重用率 84 实例054 包含数据库连接文件 85 实例055 包含网站头文件 86 实例056 包含网站尾...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例051 前置运算符和后置运算符的区别 82 实例052 使用位运算对数字进行加密和解密 83 2.3 包含语句 84 实例053 提高代码重用率 84 实例054 包含数据库连接文件 85 实例055 包含网站头文件 86 实例056 包含网站尾...

    论文:计算机网络安全漏洞论文.doc

    1 计算机网络安全漏洞 1.1 成因 1.1.1 操作系统本身漏洞和链路的连接漏洞 计算机网络由于需要给用户提供各种便利,那么就需要它在操作系统上拥有一个统一 的用户交互平台,能够全方位多角度的支持各种所需功用。...

    asp.net知识库

    SQL Server数据库安全规划全攻略 .net通用数据库访问组件SQL Artisan应用简介1 在Framework1.0下同时连接SqlServer和Oracle的一些体会 XML XPath XPath最通俗的教程(ZZ) XPath中相对路径和绝对路径 XPath 简单语法...

    精易模块[源码] V5.15

    1、删除“IP_取外网IP”与 网页_取外网IP()功能重复命令,感谢易友【67564226】反馈。 2、修正“正则元字符转义”子程序,对应个别替换符错误的BUG,感谢易友【@墨雨千寻】反馈。 3、改善“进程_枚举”处理效率,由...

    flash shiti

    11. 全等(===)运算符和相同运算符基本相似,但是它们有一个很重要的区别 □ A. 全等(===)运算符执行数据类型的转换 □ B. 全等(===)运算符不执行数据类型的转换 □ C. 全等(===)运算符永远返回...

Global site tag (gtag.js) - Google Analytics