美文网首页
T-SQL数据库萌新学习日志-----超级好用的Join

T-SQL数据库萌新学习日志-----超级好用的Join

作者: 夜雨_声烦 | 来源:发表于2017-07-18 21:11 被阅读0次

        关于之前的数据库学习,总结了下新的大致可以说要注意的有以下几点:

    1.多实用SQL语句替代后台或是前台语句去实现数据的分页处理。这样有利于提高效率

    2.注重使用SQL的基本筛选和去重的关键字替代前台或是后台的语句实现去重等功能

         那么,接下来进入正题。

        为什么说Join非常非常非常好用呢!

        先引入一个生活中常见的场景吧!

        场景A:

           员工A是某电商公司的一个普通程序猿,这一天公司boss说让A看下公司里面许许多多的销售员中,哪些销售员的在这个季度是有不错的销售量(额。。不知道这个形容的对不对啊,见谅见谅),并且要求将这些员工的季度销售额,他们的联系方式和工资卡号都总结到一块给boss看。于是乎A就得开始去各种数据表里面找啊找啊。有什么办法能快速而且不失效率地帮A解决老板这个紧急的需求呢?  

            答案显然就是今天要说的这个join 。先解释下,JOIN是什么吧!

    SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

             有时我们为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。也就是说,我们可以通过Join连接两张数据表,同时获得至少两方面的数据。A可以用Join既得到员工的基本信息,又得到员工的销售额,然后还能把这两部分信息整合到一张临时表中,可谓是一石二鸟呀。

             那么这个Join究竟怎么用呢?

             join 大致分为两种join,一种我们可以用数学上的交集来理解,称为inner join ,还有一种可能需要图片才能更好的理解(如图1,所示的为Left outer join),这种我们称之为outer join。

    left outer join示意图

            inner join大部分适用于当我们需要获取多张表格数据的交集部分(如:我们可以通过引用两个表的方式,从两个表中获取数据,了解谁订购了产品,并且他们订购了什么产品?)

    给个实例代码:

    SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo

    FROM Persons

    INNER JOIN Orders

    ON Persons.Id_P = Orders.Id_P

    ORDER BY Persons.LastName

     

    获取的结果如图所示:

    inner join 结果数据

    这里要注意的几点:

    1.如果多表中有出现重复的列名,列名需要指明它的域(也就是指明它是哪张表的)

    2.在表名很长的时候,join是支持使用别名替代的

            ok,说完inner join 接着说 outer join 。 outer join 一般适用于取具有多表中具有差异性数据的场景(不知道说的准不准确啊,就是个人理解,见谅见谅!)还是拿A来说,如果此时boss说,A得尽快得整理出一份当前销售员中哪些销售员是没有销售额的。此时我们的A可以通过使用outer join 关联用户基本信息的表格和用户销售的表格。关联后,我们会得到信息表全部的字段以及部分销售表中的字段的一个临时表,在表中,有的销售员的销售额会显示为null,这就代表着这个销售员最近都没有销售东西。然后通过SQL进而筛选我们就能很快的得到这部分数据了。

    同样给个实例代码吧:

    SELECT * FROM TableA

    LEFT OUTER JOIN TableB 

    ON TableA.name = TableB.name

    返回的结果为:

    outer join的示例图

    所以说 JOIN是不是非常的好用啊!

    相关文章

      网友评论

          本文标题:T-SQL数据库萌新学习日志-----超级好用的Join

          本文链接:https://www.haomeiwen.com/subject/repbcxtx.html