前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL JOIN

SQL JOIN

作者头像
令仔很忙
发布2018-09-14 15:32:46
7400
发布2018-09-14 15:32:46
举报
文章被收录于专栏:令仔很忙令仔很忙

在机房收费系统个人重构的时候,很多的功能都需要根据数据库中的一个表中的信息,去查询另一个表中相匹配的信息,我们用到了视图,但是你有没有注意到下面的SQL语句呢?(SELECT...FROM...JOIN...ON...),接下来我们就一起来了解SQL中的JOIN.

1、什么是JOIN?

Join是关系型数据库系统的重要操作之一,SQL Server中包含的常用Join:内联接、外联接和交叉联接等,Join用于根据两个或者多个表中的列之间的关系,从这些表中查询数据。

2、怎么使用JOIN?

 新建两张表作为例子,表如下

●INNER JOIN

  SQL语句

代码语言:javascript
复制
select * from T_NumA inner join T_NumB on T_NumA.aID=T_NumB.bID

结果如下

  运行的结果是得到两个表之间的交集。用右边的图可以看出,Inner join符合交换律:“A inner join B”,“B inner join A”一样。

●OUTER JOIN

1)、LEFT(OUTER)JOIN和RIGHT(OUTER)JOIN

   SQL语句

代码语言:javascript
复制
select * from T_NumA left outer join T_NumB on T_NumA.aID=T_NumB.bID
代码语言:javascript
复制
select * from T_NumA right outer join T_NumB on T_NumA.aID=T_NumB.bID

运行结果

  LEFT:

  运行的结果:产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代。

  RIGHT:

  从运行的结果一眼就可以看出来,该联接产生表B的完全集,而A表中匹配的则有值,没有匹配的则以null值取代。

 2)、FULL(OUTER)JOIN

  SQL语句

代码语言:javascript
复制
select * from T_NumA full outer join T_NumB on T_NumA.aID=T_NumB.bID

运行结果:

 由结果可知:该联接产生A和B的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。

●CROSS JOIN

SQL语句

代码语言:javascript
复制
select * from T_NumA cross join T_NumB 

运行结果:

 由运行结果可知:交叉联接运行的结果就是咱们在数据库系统原理中学的笛卡尔积(Cartesian Product),产生一个6*6=36行记录的结果集。

3、结束语

本文章所讲的联接语句都是将不同表的列进行纵向拼接,因为在做机房收费系统个人重构的时候,只涉及到纵向拼接表的查询,有纵向,那么肯定也有横向,横向拼接也有多种方式:Not in,Union和Intersect,这里只做简单介绍,Not in是去两个结果集的差集。Union是两个集合的并集,会自动删除重复的记录,也可以用Union All来保留所有记录行。Intersect是两个集合的交集,即同时存在于两个集合中的记录。

如果有什么不妥的地方,欢迎各位博友斧正!!!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年08月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、什么是JOIN?
  • 2、怎么使用JOIN?
    • ●INNER JOIN
      • ●OUTER JOIN
        • 1)、LEFT(OUTER)JOIN和RIGHT(OUTER)JOIN
        •  2)、FULL(OUTER)JOIN
      • ●CROSS JOIN
      • 3、结束语
      相关产品与服务
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档