菜单

SQL Server 连接(内连接,外接连,完全连接,交叉连接,联合)

2019年4月19日 - MySQL

1.连接

  有时候要求将连个表的数码统10%3个结实集来展现。为了化解这几个难题,就须求选取JOIN连接。

 

在查询多少个表时,大家平日会用“连接查询”。连接是关周到据库模型的重大特征,也是它有别于于其余种类数据库管理体系的2个标明。

二.内部连接

  内部连接依照贰个或多少个一同的字段将记录相配到一齐。内部连接仅仅重返这么些存在字段相称的记录。

  图片 1

  例子:

       film表                                 Actors表

 

  图片 2                    图片 3

 

          图片 4图片 5

 

   内部连接的要害正是排他性,如下面的Actor表中歌手Bogart因为在Film表中绝非对应的ID,所以在结果集中就向来不显得。

  

3. 外部连接

   外部连接本质上是富含!!!

  图片 6

    

   
左外部连接:个人了然正是左表边的全保留(包括),假诺左边依照规则从不对应的行,则全是NULL,但要么会保留,不像内接连是直接不显示!

      
       Action表                        Film表

      图片 7 
 图片 8

                         内连接

       图片 9

 

        左外连接(左表Film表)                                右外接连(左表Film表)

图片 10 
           
  图片 11

哪些是接贰连3查询呢?

  

    概念:依照多个表或五个表的列之间的涉嫌,从那个表中查询数据。

    指标:完毕多少个表查询操作。

 

 4.一心连接

  顾名思义,将八个表的数据总体相配。约等于左外连接加右外接连!

图片 12

知情了连年查询的定义之后,曾几何时用延续查询呢?

     

   
1般是用作关联两张或两张以上的数额表时用的。看起来有点抽象,大家举个例子,做两张表:学生表(T_student)和班级表(T_class)。

 

                                            T_student                  
                                                  T_class

     
 图片 13 
   
  图片 14

 

伍.交叉连接

  交叉连接不使用ON运算符,使用CROSS关键字。将左手表与右手表全部的记录连接,重临全数记录的笛Carl积。

  图片 15

三番五次标准语法格式:

    

    SQL-九贰标准所定义的FROM子句的连接语法格式为:

    FROM  join_table join_type join_table[ON (join_condition)]

   
其中join_table建议参加连接操作的表名,连接能够对同一个表操作,也足以对多表操作,对同四个表操作的总是又称做自连接。join_type
建议连接类型。join_condition指接连条件。

 

6.联合

  联合(UNION)运算符,用于使五个或多个以上的查询产生八个结果集。

  把三个结果集拼到另多少个结果集的末尾。

  使用UNION的注意事项:一.七个结实集(表)的列数要一律

             二.UNION赶回结果集的列名以率先个SELECT为准

             叁.几个结实集对应列的总得能够隐式调换

             肆.UNION暗中认可消去重复行,能够采用首要字ALL来回到重复行

 

照例是后面包车型地铁两张表:第三个SELECT 起名字为File
之后无论起怎样名字都以File,以第一个为准。

图片 16  

 

延续类型:

   

    连接分为二种:内接连、外接连、交叉连接。

 

内连接(INNER JOIN)

   

   
使用相比运算符(包涵=、>、<、<>、>=、<=、!>和!<)进行表间的相比操作,查询与连接条件相相配的数量。依照比较运算符分化,内接二连三分为等值连接和分裂连接二种。

1、等值连接

   
 概念:在连接条件中采取分外号(=)运算符,其查询结果中列出被接连表中的全部列,包蕴内部的重复列。

 

        [sql] view
plain
 copy

 

  1. <span style=”font-size:18px;”><span style=”font-family:System;”>       
  2. select * from T_student s,T_class c where s.classId = c.classId   
  3.      等于  
  4. select * from T_student s inner join T_class c on s.classId = c.classId</span></span>  

       结果是:

               
 图片 17

                 

二、不等一而再

 

 
 概念:在连接条件中行使除等于号之外运算符(>、<、<>、>=、<=、!>和!<)

 

         [sql] view
plain
 copy

 

  1. <span style=”font-size:18px;”><span style=”font-family:System;”>       
  2.     select * from T_student s inner join T_class c on s.classId <> c.classId</span></span>  

       结果是:

 

             
  图片 18

 

外连接

 

   

    外连接分为左连接(LEFT JOIN)或左外连接(LEFT OUTEXC90JOIN)、右连接(大切诺基IGHT JOIN)或右外连接(安德拉IGHT OUTE途乐 JOIN)、全连接(FULL
JOIN)或全外连接(FULL OUTE猎豹CS陆JOIN)。我们就轻巧的叫:左连接、右连接和全连接。

 

1、左连接:

 

   
概念:重回左表中的全数行,假设左表中央银行在右表中绝非相配行,则结果中右表中的列重回空值。

 

         [sql] view
plain
 copy

 

  1. <span style=”font-size:18px;”><span style=”font-family:System;”>      
  2.     select * from  T_student s left join T_class c on s.classId = c.classId</span></span>  

  结果是:
             
  图片 19

 

  总括:左连接显示左表全体行,和右表与左表一样行。

 

2、右连接:

 

 
 概念:恰与左连接相反,再次来到右表中的全体行,假诺右表中央银行在左表中并未有相配行,则结果中左表中的列再次回到空值。

         [sql] view
plain
 copy

 

  1. <span style=”font-size:18px;”><span style=”font-family:System;”>     
  2.    select * from  T_student s right join T_class c on s.classId = c.classId</span></span>  

   结果是:

 

           
  图片 20

  总括:右连接恰与左连接相反,展现右表全体行,和左表与右表一样行。

 

3、全连接:

 

 
概念:再次来到左表和右表中的全数行。当某行在另一表中绝非匹配行,则另一表中的列再次回到空值

 

         [sql] view
plain
 copy

 

  1. <span style=”font-size:18px;”><span style=”font-family:System;”>      
  2.    select * from  T_student s full join T_class c on s.classId = c.classId</span></span>  

   结果是:

 

         
  图片 21

   计算:重临左表和右表中的全数行。

 

穿插连接(CROSS JOIN):也称迪Carl积

 

   
概念:不带WHERE条件子句,它将会回来被连续的三个表的笛Carl积,再次回到结果的行数等于四个表行数的乘积(例如:T_student和T_class,返回4*四=16条记下),假诺带where,重回或体现的是协作的行数。

 

1、不带where:

 

         [sql] view
plain
 copy

 

  1. <span style=”font-size:18px;”><span style=”font-family:System;”>     
  2.    select *from T_student cross join T_class  
  3.   ‘等于  
  4.    select *from T_student, T_class</span></span>  

    

结果是:

                         
 图片 22

       总括:1二分与笛Carl积,左表和右表组合。

 

二、有where子句,往往会先生成七个表行数乘积的数据表,然后才依照where条件从中挑选。

 

         [sql] view
plain
 copy

 

  1. select * from T_student s cross join T_class c where s.classId = c.classId   
  2.    (注:cross join后加条件只可以用where,不可能用on)  

 

 

      查询结果跟等值连接的询问结果是如出1辙。

 

 

      连接查询非凡简单,只要求在档次中多么施行,不断总括。

 

转载自:https://blog.csdn.net/jiuqiyuliang/article/details/10474221

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图