数据库表间连接讲解.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库表间连接讲解

大多数人一般写多表查询会这样写select * from tbA ,tbB ?没有用到JOIN关键字,太Low了,官网标准建议是用JOIN明确表间的关系,下面具体来讲。 连接类型: 交叉联接?得到所连接表的所有组合 (笛卡儿集)cross join 内联接得到连接表的满足条件的记录组合inner join? on 外联接(左、右)得到一个表的所有行,及其余表满 足连接条件的行?full | left | right? outer join? on 交叉联接 在这类联接的结果集内,两个表中每两个可能成对的行占一行。 但是如果在交叉联接中加入where 子句就相当与是内联接 例: MySQL 1 2 3 4 5SELECT title, pub_name ? ?????? FROM titles Cross JOIN publishers ? ?????? Where titles.pub_id = publishers.pub_id这就相当于我们一最开始的写法:SELECT title, pub_name ?FROM titles ,?publishers Where?titles.pub_id = publishers.pub_id 执行过程: 内联接 仅显示两个联接表中的匹配行的联接。(这是查询设计器中的默认联接类型。) 例: MySQL 1 2 3 4 5SELECT title, pub_name ? ?????? FROM titles INNER JOIN publishers ? ?????? ON titles.pub_id = publishers.pub_id执行过程: 左向外联接 包括第一个命名表(”左”表,出现在 JOIN 子句的最左边)中的所有行。不包括右表中的不匹配行。 例: MySQL 1 2 3 4 5SELECT titles.title_id,titles.title,publishers.pub_name ? ????????FROM titles LEFT OUTER JOIN publishers ? ????????ON titles.pub_id = publishers.pub_id右向外联接 包括第二个命名表(”右”表,出现在 JOIN 子句的最右边)中的所有行。不包括左表中的不匹配行。 例: MySQL 1 2 3 4 5SELECT titles.title_id, titles.title,publishers.pub_name ? ??FROM titles RIGHT OUTER JOIN publishers ? ????????ON titles.pub_id = publishers.pub_id执行过程: 完整外部联接 包括所有联接表中的所有行,不论它们是否匹配。 例: MySQL 1 2 3 4 5SELECT titles.title_id, titles.title,??publishers.pub_name ? ????????FROM titles FULL OUTER JOIN publishers ? ????????ON titles.pub_id = publishers.pub_id练习: 此后用到的用例数据库是SQL2008里面的 用例数据库文件:链接: HYPERLINK /s/1qW1QxA0 \t _blank /s/1qW1QxA0?密码:dqxx MySQL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36/*返回值2007年2月12日下过订单的客户,以及他们的订单。同时也返回在2007年2月12日没有下过订单的客户。 涉及到表:Sales.Customers表和Sales.Orders表。 期望的输出(按简略格式显示): */ custid??????companyname???? orderid???? orderdate ----------- --------------- ----------- ----------------------- ???????? Customer AHPOP??NULL????????NULL ???????? Customer AHXHT??NULL????????NULL ???????? Customer AZJED??NULL????????NULL ???????? Customer BSVAR??NULL????????NULL ???????? Customer CCFIZ??NULL????

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档