当前位置:首页 > SQL数据库知识点 > 正文内容

SQL课程复习(十三)

poppy-jun9个月前 (05-22)SQL数据库知识点272

第七章

        连接查询

           有两个联合表在查询表时,另外一张表是不会被查询出来的。要想查询时显示两张表的情况要用到连接查询。

       子查询和联合查询的区别: 子查询是根据已经条件到其他的表去将数据查出来;联合查询是实实在在的将数据都查询出来

           联接查询的作用和分类:通过联接查询可以将多个表作为一个表进行处理。当检索数据时,通过联接查询可检索出源于不同表的信息,提高用户操作的灵活性。

            联接查询分为:交叉联接、内联接和外联接。(内链接,外链接,左右连接

            我们用到联接查询一般是在两张表都有一个主外键,这两个表有一个主外键相连的时候;如果没有也可以联合查询,当时那样联合查询就没有意义了。

        交叉连接:产生笛卡尔积

             含义:两个集合中的每一个成员,都与对方集合中的任意一个成员有关联。即第一个表的行数乘以第二个表的行数等于笛卡尔积大小。(t1有三行数据 1 2 3 ,t2有两行数据 4 5,他们的笛卡尔积会成一个新的t214 15 24 25 34 35“就是这六条数据”)

      select  * from Employee  cross join Rank (出来的就是笛卡尔积,两张表都会被显示;但是有些数据没有价值)

联合查询.png

    笛卡尔积的数据很多但不一定有效

重复数据.png

    红色区域是笛卡尔积的数据

    select  * from Employee   cross join Rank  where Employee.RankID=Rank.RankID  (加一个限制条件,这样出来的结果是有效的)

有效数据.png

            select e.Name,e.Birthday,e.Address,e.RankID,r.RankName from Employee e  cross join Rank r where e.RankID=r.RankID  (如果我不想要那些有null值的列就准确查询,就是有些表的字段我不查询)

         注 :我在整理写的e和r是两张表的名字的简写,可以用这种方法去简写表名

    联合查询的特点就是会将两张表的数据都显示出来,最终汇总到一张临时表中,再加上一个限制条件where <限制条件表达式>,就可以联合两张表,得到我们想要的信息。“不加where条件限制的话他就是一个笛卡尔积而已。where是在查询出来的笛卡尔积表中再来查询的”

        内联接:

            在进行两张表的联接查询中,仅返回匹配数据的联接方式称为内联接。

            select * from Employee e  inner  join Rank r  on  e.RankID=r.RankID  =select * from Employee e cross join  Rank r where e.RankID=r.RankID (inner可以省略不写的,这两个语句功能相同)

        内联接查询是联接查询中用的最多的联接查询

        要多个表联接查询,直接用join+表名 on 有关联的主外键,通常这个on都是主外键。这样查询出来的数据才是有意义的数据。* 可以换成你想要任意字段,只要在你加入的表中的列名即可。

    (同样可以加where来筛选数据)

    另一种写法:

        select * from Employee e , Rank r (就这样查询出来的结果就是笛卡尔积) where  e.RankID=r.RankID 

           select * from Employee e , Rank r where  e.RankID=r.RankID (这样的才是有效数据,表名是可以取别名的,取别名之后要找表中的列时要用 别名+ . +列名,才能找到准确的列名)

        联接查询是可以用group by 分组,也可以用order by 来排序的

      如果使用了聚合函数或者是分组,它是对于这个联合查询后的整张表再继续分组。

            两个条件并列用and

         外链接查询:

            在内连接查询中,只有满足连接条件的记录才能出现在查询结果中。但在实际应用中,如果希望不满足连接条件的记录也在查询结果中出现,这时需要使用外连接查询。

根据不同的外连接形式,外连接所生成的结果集中不仅包含符合条件的数据记录,而且还包含左表或右表或左右表中所有的数据记录。

        外链接分为左外链接和右外链接 :(用左连接就是以左边为基准,右链接就是以右边为基准)

            (左外链接是将左边的那个表的信息都显示出来,然后去与另外一张表相比。如果右边表格有满足连接的记录就显示,如果没有满足连接的记录就显示为null值。)

            (右外链接是将右边的那个表的信息都显示出来,然后去与另外一张表相比。如果左边表格有满足连接的记录就显示,如果没有满足连接的记录就显示为null值。)

         语句写法:

            select 字段名称 from  表名1 left/right/ 表名2 on 表名1.某个列=表名2.某个列

        内链接和外链接的区别:

            “内链接只会查询出有主外键相连接的数据,而外链接是将两张表放到一起来看。”

        全外连接:(就是将左右连接都整和到一起)

            select * from 表名1 full join 表名2 on 表名1.某个列=表名2.某个列

版权声明:本文为原创文章,版权归 Jun所有!

转载请注明出处:https://cranek.cn/?id=20

分享给朋友:

相关文章

SQL课程复习(十)

SQL课程复习(十)

第四章        SELECT定制查询(select定制查询,准确的在数据库中查找数据)  &n...

SQL 课程复习(六)

SQL 课程复习(六)

第二章        管理数据表       &n...

SQL课程复习(十一)

SQL课程复习(十一)

第五章        函数的使用       &n...

SQL课程复习(十二)

SQL课程复习(十二)

第六章        聚合函数和分组查询      &nbs...

SQL 课程复习(三)

SQL 课程复习(三)

第一章        数据库基础       &n...

SQL 课程复习(五)

SQL 课程复习(五)

第二章        管理数据表       &n...