知识大全 内联接(INNER JOIN)(1)
Posted 知
篇首语:既然选择远方,就注定风雨兼程。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 内联接(INNER JOIN)(1)相关的知识,希望对你有一定的参考价值。
SQL实战新手入门:内联接(INNER JOIN)(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
内联接(INNER JOIN)( )
在RDBMS的世界里 INNER JOIN是最常见的联接形式 也是SQL武器库中最锋利的武器 INNER JOIN可以从多个表中组合数据 并将数据有重叠部分的子集返回 如图 所示
图
图 中的两个圆分别代表了两个表 阴影部分的区域代表了满足JOIN条件的数据集 两边的数据被水平地 粘合 在一起(与UNION操作符相反 本章后面还将介绍UNION操作符 它在水平方向上追加数据集)
在RDBMS中 数据是以最方便计算机理解的形式存储的 但查询的问题是由人来提出的 SQL就是连接两者的中介
在LIBRARY数据库的设计中 一个位置(书柜上的一个空间)只能放一本图书 但是一本图书可以具有多个存放位置(假如我们具有同一本图书的多个副本或多个不同的版本) 这样 如果需要生成书柜中每一个书架上的图书名称的列表 那么一部分数据可以从BOOKS表中查询到 另一部分数据则位于LOCATION表中 BOOKS表中的主键BK_ID和LOCATION表中的外键FK_BK_LOC将把这两个表联接起来 联接这两个表的SQL查询如下所示
SELECT
loc_bookcase AS bookcase
loc_shelf AS shelf
loc_position_left AS position
bk_title AS title
FROM location INNER JOIN books
ON location fk_bk_loc = books bk_id;
该查询的结果如表 所示
表 INNER JOIN的输出结果
INNER JOIN关键字指示数据库引擎根据这两个表来准备数据集 并按照指定的关系来JOIN这两个表 BOOKS表中的主键BK_ID与LOCATION表中的外键FK_BK_LOC相互匹配 在数据库的术语中 这称为 等值联接(equijoin) 即使用一个等于操作符来匹配键值的JOIN联接
等值联接是最常用的联接类型 根据等值联接的存在可以从逻辑上推断出必定还存在着非等值联接 事实上确实如此 SQL提供了非等值联接(non equijoin)类型的联接 它使用不相等操作符(大于 小于 不等于)将记录联接为单个数据集
尽管其中包含了一些我们需要的数据 但非等值联接将产生出乎意料的结果 例如 在上面的查询中 如果使用带有大于操作符的非等值联接来替换等值联接 将返回 行数据 如果使用不等于操作符 则将产生 行数据 深入地考察这些数据就可以分析出非等值联接背后的逻辑 这也许并不是我们所期望的联接结果 这种类型的联接有时是有用的 但在大多数时候可以使用更加简明的方法来获得相同的结果集 在熟练掌握SQL之前 你应该放弃使用非等值联接的方法
INNER限定符并不是必须使用的关键字部分 只使用一个简单的JOIN关键字也可以 但是强烈建议使用INNER JOIN作为关键字 使SQL代码具有更好的可维护性和更好的可读性 本章随后将讨论外联接(OUTER JOIN) 使用INNER JOIN这个关键字也可以为区分两者带来便利 某些RDBMS支持用NATURAL关键字来代替INNER或OUTER(NATURAL JOIN是等值联接的一种特殊形式 即用于联接的两个表的键值列具有相同的列名) 另外一些RDBMS则支持其他关键字 例如使用EQUI关键字 请坚持使用最常用的INNER JOIN语法 这样在跨不同的RDBMS时 INNER JOIN查询将更有可能被执行
在INNER JOIN的例子中 关键问题在于 如果数据库中有任何图书未放置在书柜中 或者任何书柜中有任何未被占用的书架空间 那么这些图书或书架将不会出现在查询结果中
下面逐步分析一下这个查询
SELECT loc_bookcase loc_shelf loc_position_left bk_title
下面是想要联接的数据项
FROM location INNER JOIN books ON location fk_bk_loc = books bk_id
返回目录 SQL实战新手入门
编辑推荐
Oracle索引技术
高性能MySQL
cha138/Article/program/SQL/201311/16474相关参考
SQL实战新手入门:N路INNERJOIN 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! N路I
SQL实战新手入门:交叉联接(CROSSJOIN) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
SQL实战新手入门:全联接(FULLJOIN) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 全
SQL实战新手入门:左联接(LEFTOUTERJOIN) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
SQL实战新手入门:右联接(RIGHTOUTERJOIN) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
某链形悬挂四跨电分段电联接处承力索烧断股,试分析其主要原因有哪些?
其主要原因多为该处电联接器运行状态不良引起: (1)电联接线夹安装不正确(如线夹内电连接线缠绑线、螺栓未紧固等),致使线夹内部与线索接触不良、有空隙。运行中由于该处经常放电,在线夹内生成氧化物,
某链形悬挂四跨电分段电联接处承力索烧断股,试分析其主要原因有哪些?
其主要原因多为该处电联接器运行状态不良引起: (1)电联接线夹安装不正确(如线夹内电连接线缠绑线、螺栓未紧固等),致使线夹内部与线索接触不良、有空隙。运行中由于该处经常放电,在线夹内生成氧化物,
SQL实战新手入门:再探JOIN 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 第章组合数据集
Java多线程初学者指南(5):join方法的使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
关于C#中Thread.Join()的一点理解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 今