天天看点

SQL JOIN1、什么是JOIN?2、怎么使用JOIN?3、结束语

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

SQL JOIN1、什么是JOIN?2、怎么使用JOIN?3、结束语

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

SQL JOIN1、什么是JOIN?2、怎么使用JOIN?3、结束语

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

SQL JOIN1、什么是JOIN?2、怎么使用JOIN?3、结束语
SQL JOIN1、什么是JOIN?2、怎么使用JOIN?3、结束语

  sql语句

结果如下

SQL JOIN1、什么是JOIN?2、怎么使用JOIN?3、结束语
SQL JOIN1、什么是JOIN?2、怎么使用JOIN?3、结束语

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

   sql语句

运行结果

  left:

SQL JOIN1、什么是JOIN?2、怎么使用JOIN?3、结束语
SQL JOIN1、什么是JOIN?2、怎么使用JOIN?3、结束语

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

  right:

SQL JOIN1、什么是JOIN?2、怎么使用JOIN?3、结束语

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

运行结果:

SQL JOIN1、什么是JOIN?2、怎么使用JOIN?3、结束语
SQL JOIN1、什么是JOIN?2、怎么使用JOIN?3、结束语

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

 sql语句

SQL JOIN1、什么是JOIN?2、怎么使用JOIN?3、结束语

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

 本文章所讲的联接语句都是将不同表的列进行纵向拼接,因为在做机房收费系统个人重构的时候,只涉及到纵向拼接表的查询,有纵向,那么肯定也有横向,横向拼接也有多种方式:not

in,union和intersect,这里只做简单介绍,not in是去两个结果集的差集。union是两个集合的并集,会自动删除重复的记录,也可以用union all来保留所有记录行。intersect是两个集合的交集,即同时存在于两个集合中的记录。

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