知识大全 内联接(INNER JOIN)(2)
Posted 语法
篇首语:不曾扬帆,何以至远方。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 内联接(INNER JOIN)(2)相关的知识,希望对你有一定的参考价值。
SQL实战新手入门:内联接(INNER JOIN)(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
内联接(INNER JOIN)( )
该查询从两个表(LOCATION表和BOOKS表)中获取数据 并且仅仅获取那些匹配的数据行 使用等于操作符的INNER JOIN表示 仅获取匹配的行 匹配的规则是 LOCATION表中数据行的FK_BK_LOC列值必须与BOOKS表中BK_ID列的值相同
试一试从RDBMS中提取联接的数据
下面将对LIBRARY数据库中的图书按照关键词进行查询 目前 SEARCHTAGS表中包含了所有类型的关键词 这些关键词是在将图书添加到数据库中时创建的 中间表SEARCH_BOOKS用于在BOOKS表和要搜索的关键词之间建立关系 使用一个JOIN查询可以搜索出LIBRARY数据库中以关键词SQL标记的所有图书 下面将使用Microsoft SQL Server数据库引擎来实现该功能 对于其他任何RDBMS也可以运行这些代码
( ) 打开Microsoft SQL Server Management Studio 使用Windows身份验证连接到数据库
( ) 单击位于左上角的New Query按钮 输入下面的SQL查询
SELECT
bk_title AS title
FROM books bk INNER JOIN search_books sb
ON bk bk_id = sb bk_id
INNER JOIN searchTags st
ON sb tag_id = st tag_id
WHERE st tag_value = SQL
( ) 单击工具栏上的Execute按钮 并观察返回的查询结果
title
SQL Bible
Wiley Pathways: Introduction to Database Management
Microsoft SQL Server Weekend Crash Course
SQL Functions: Programmers Reference
( row(s) affected)
示例说明
该查询具有两个JOIN语句 第一个JOIN语句从BOOKS表和SEARCH_BOOKS表联接数据 第二个JOIN语句从SEARCH_BOOKS表和SEARCHTAGS表联接数据
该查询将从所有表对中获取数据 并将其联接为一个单一的结果集 然后再对其应用筛选条件tag_value = SQL 最后 将所有满足条件的记录返回给客户端
可以采用多种办法来获得相同的结果集 下面是使用嵌套子查询的一个例子
SELECT bk_title as title FROM books where bk_id IN
(SELECT bk_id FROM search_books WHERE tag_id IN
(SELECT tag_id FROM searchTags where tag_value = SQL ))
读者可以自行判断哪一种代码更容易理解 是使用JOIN的代码 还是使用子查询的代码?笔者认为前者更好理解一些
在后面的小节中还将回到这一问题 并分析在结果集中包含空的书架或者包含未放置图书的情况 下面让我们来介绍使用相同的基本JOIN规则将更多的数据包含在最终的结果集中
JOIN语法相对较新 尽管RDBMS已经认可JOIN语法很多年了 但数据库章中使用的任何查询都可以使用WHERE子句重写 RDBMS依然能理解这样的查询 例如
SELECT
loc_bookcase
loc_shelf
loc_position_left
bk_title
FROM location
WHERE location fk_bk_loc = books bk_id
使用新语法的动机是什么呢?首先 新语法已经被SQL标准委员会批准 目前本书中讨论的所有RDBMS都支持JOIN语法 其次 RDBMS仅仅是为了向后兼容而提供了对旧语法的支持 在以后的版本中有可能废弃该语法 可以看到 新语法增强了代码的可读性 可以预防某些常见的SQL错误 例如无意间产生笛卡尔积的查询 这将在本章后面讨论
返回目录 SQL实战新手入门
编辑推荐
Oracle索引技术
高性能MySQL
cha138/Article/program/SQL/201311/16473相关参考
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)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
SQL实战新手入门:再探JOIN 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 第章组合数据集
Java多线程初学者指南(5):join方法的使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
某链形悬挂四跨电分段电联接处承力索烧断股,试分析其主要原因有哪些?
其主要原因多为该处电联接器运行状态不良引起: (1)电联接线夹安装不正确(如线夹内电连接线缠绑线、螺栓未紧固等),致使线夹内部与线索接触不良、有空隙。运行中由于该处经常放电,在线夹内生成氧化物,
某链形悬挂四跨电分段电联接处承力索烧断股,试分析其主要原因有哪些?
其主要原因多为该处电联接器运行状态不良引起: (1)电联接线夹安装不正确(如线夹内电连接线缠绑线、螺栓未紧固等),致使线夹内部与线索接触不良、有空隙。运行中由于该处经常放电,在线夹内生成氧化物,
关于C#中Thread.Join()的一点理解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 今