2022年数据库表的连接 .pdf
《2022年数据库表的连接 .pdf》由会员分享,可在线阅读,更多相关《2022年数据库表的连接 .pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Left Join, Inner Join 的相关内容,非常实用,对于理解原理和具体应用都很有帮助!一. 先看一些最简单的例子例子Table Aaid adate 1 a1 2 a2 3 a3TableBbid bdate 1 b1 2 b2 4 b4 两个表 a,b 相连接, 要取出 id 相同的字段select * from a inner join b on a.aid = b.bid这是仅取出匹配的数据 . 此时的取出的是 : 1 a1 b1 2 a2 b2 那么 left join 指: select * from a left join b on a.aid = b.bid 首先取
2、出 a 表中所有数据 , 然后再加上与 a,b 匹配的的数据此时的取出的是 : 1 a1 b1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 2 a2 b2 3 a3 空字符同样的也有 right join 指的是首先取出 b 表中所有数据 , 然后再加上与 a,b 匹配的的数据此时的取出的是 : 1 a1 b1 2 a2 b2 4 空字符 b4LEFT JOIN 或 LEFT OUTER JOIN 。左向外联接的结果集包括
3、LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。 如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值二. left join/right join/inner join操作演示表 A记录如下:aID aNum1 a200501112 a200501123 a200501134 a200501145 a20050115表 B记录如下 :bID bName1 20060324012 2006032402名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -
4、- - - - - 第 2 页,共 9 页 - - - - - - - - - 3 20060324034 20060324048 2006032408实验如下 :1. left joinsql 语句如下 : SELECT * FROM ALEFT JOIN B ON A.aID = B.bID结果如下 :aID aNum bID bName1 a20050111 1 20060324012 a20050112 2 20060324023 a20050113 3 20060324034 a20050114 4 20060324045 a20050115 NULL NULL(所影响的行数为 5
5、行)结果说明 : left join是以 A表的记录为基础的 ,A 可以看成左表 ,B 可以看成右表,left join是以左表为准的 .换句话说 , 左表(A) 的记录将会全部表示出来, 而右表(B) 只会显示符合搜索条件的记录 ( 例子中为 : A.aID = B.bID).B表记录不足的地方均为NULL.2. right join名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - sql 语句如下 : SELECT * FRO
6、M ARIGHT JOIN B ON A.aID = B.bID结果如下 :aID aNum bID bName1 a20050111 1 20060324012 a20050112 2 20060324023 a20050113 3 20060324034 a20050114 4 2006032404NULL NULL 8 2006032408(所影响的行数为 5 行)结果说明 :仔细观察一下 , 就会发现 , 和 left join的结果刚好相反 , 这次是以右表(B) 为基础的 ,A 表不足的地方用 NULL填充.3.inner joinsql 语句如下 : SELECT * FROM
7、AINNERJOIN B ON A.aID = B.bID结果如下 :aID aNum bID bName1 a20050111 1 20060324012 a20050112 2 2006032402名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - 3 a20050113 3 20060324034 a20050114 4 2006032404结果说明 :很明显 , 这里只显示出了 A.aID = B.bID 的记录 . 这说明
8、 inner join并不以谁为基础 , 它只显示符合条件的记录.以下为网上的一点资料 LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。 使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2 说明:table1, table2参数用于指定要将记录组合的表的名称。field1, field2参数指定被联接的字段的名称。且这些字段
9、必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。compopr参数指定关系比较运算符: = , , = 或 。如果在 INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误。三. 相关的复杂的解释和实例简介: 外部连接和自联接 inner join(等值连接 ) 只返回两个表中联结字段相等的行 left join(左联接 ) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接 ) 返回包括右表中的所有记录和左表中联结字段相等的记录 on 指定表间联结字段及其关系的等号 = 表达式 , 返
10、回 true 或 false. 当表达式返回 true 时, 则查询中包含该记录 . ! 外部连接只能操作已存在于数据库中的数据update (ctarticle as a left join ctclass as c on a.classid = c.classid) left join cttag as b on a.articleid = b.articleid 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - set ta
11、g=tag+ , b.articleid=a.articleid, b.classid=a.classid, b.nclassid=a.nclassid where a.classid=23 and a.nclassid=0 and tagid is not null update (ctarticle as a left join (ctnclass as c left join ctclass as d on c.classid = d.classid) on a.nclassid = c.nclassid and a.classid = c.classid) left join ctta
12、g as b on a.articleid = b.articleid set tag=d.class+ +c.nclass, b.articleid=a.articleid, b.classid=a.classid, b.nclassid=a.nclassid where a.classid=23 and a.nclassid=197; 更新操作左连接中数据的筛选insert into cttag(articleid,classid,nclassid) select a.articleid,a.classid,a.nclassid from ctarticle a left join ctt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据库表的连接 2022 数据库 连接
限制150内