SQL JOIN

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

1、什么是JOIN?

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

2、怎么使用JOIN?

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

●INNER JOIN

  SQL语句

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语句

select * from T_NumA left outer join T_NumB on T_NumA.aID=T_NumB.bID
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语句

select * from T_NumA full outer join T_NumB on T_NumA.aID=T_NumB.bID

运行结果:

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

●CROSS JOIN

SQL语句

select * from T_NumA cross join T_NumB 

运行结果:

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

3、结束语

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 令仔学多线程系列(二)----自定义Queue队列

    之前做了一个新的需求,需要从每一次search请求返回中获取相关的数据,然后把这些获取到的数据做异步处理,写入缓存并同步到数据库中。如何做异步在这就想到了用队...

    令仔很忙
  • LinQ To Objects 高级查询方法

         由此可以看出,LinQ To Objects是一种新的处理集合的方法,相对于旧方法中必须编写指定如何从集合检索数据的复杂的foreach循环,而Lin...

    令仔很忙
  • SQL server 2008 无法连接Local服务器的解决办法

     SQL server 2008 中连接local服务器时,显示无法找到local

    令仔很忙
  • Go源码编译

    This is a part of a larger effort that I’m calling GopherSource, and our goal is...

    李海彬
  • SQL(结构化查询语言)注入

    SQL注入(也称为SQLI)是一种常见的攻击媒介,它使用恶意SQL代码用于后端数据库操作,以访问不打算显示的信息。此信息可能包括任何数量的项目,包括敏感的公司数...

    周俊辉
  • iOS常用代码段

    控制器中代码设置 > storybord设置 > 全局设置 优先级高的会覆盖优先级低的配置,比如storybord中的设置了navigationbar的样式 那...

    剑行者
  • centos mysql 安装及配置

    安装Mysql 1 Centos 6.6下安装Mysql很简单, yum list mysql-server ? 2 当只有一个时候就可...

    庞小明
  • CentOS修改IP、DNS、网关

    修改IP,我装的机器是戴尔的(双网卡):vi /etc/sysconfig/network-scripts/ifcfg-eth0

    meteoric
  • duilib基本流程

    duilib的基本流程如上图,通过解析一个xml文件,将文件中的内容渲染为窗口界面,这个解析过程由WindowImplBase类来完成。 基本框架如下...

    Masimaro
  • CSS3 animation属性 实现地球转动

    用户5997198

扫码关注云+社区

领取腾讯云代金券