菜单

详解SQL Server连接(内接连、外接连、交叉连接)

2019年4月22日 - sqlite

1.连接

  有时候必要将连个表的数额统十分之一1个结出集来呈现。为了化解那个主题素材,就必要动用JOIN连接。

 

在查询七个表时,我们平时会用“连接查询”。连接是关全面据库模型的注重特点,也是它有别于于其余类型数据库管理体系的2个申明。

二.里边连接

  内部连接根据一个或多少个壹块的字段将记录相称到一同。内部连接仅仅再次回到那二个存在字段相称的笔录。

  图片 1

  例子:

       film表                                 Actors表

 

  图片 2                    图片 3

 

          图片 4图片 5

 

   内部连接的第二正是排他性,如上边的Actor表中扮演者Bogart因为在Film表中尚无相应的ID,所以在结果聚集就不曾出示。

  

三. 表面连接

   外部连接本质上是包蕴!!!

  图片 6

    

   
左外部连接:个人理解正是左表边的全保留(包含),假如左侧依照条件尚未对号入座的行,则全是NULL,但依然会保留,不像内连接是一向不显得!

      
       Action表                        Film表

      图片 7 
 图片 8

                         内连接

       图片 9

 

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

图片 10 
           
  图片 11

如何是接连查询呢?

  

    概念:根据三个表或五个表的列之间的关系,从那个表中查询数据。

    目的:完成多个表查询操作。

 

 四.一心连接

  顾名思义,将多少个表的数目总体十分。也正是左外连接加右外接连!

图片 12

清楚了连接查询的定义之后,何时用一连查询呢?

     

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

 

                                            T_student                  
                                                  T_class

     
 图片 13 
   
  图片 14

 

5.6续连接

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

  图片 15

连天规范语法格式:

    

    SQL-玖2标准所定义的FROM子句的连年语法格式为:

    FROM  join_table join_type join_table[ON (join_condition)]

   
其中join_table提出参预连接操作的表名,连接能够对同二个表操作,也足以对多表操作,对同贰个表操作的连日又称做自连接。join_type
提出连接类型。join_condition指接连条件。

 

6.联合

  联合(UNION)运算符,用于使八个或七个以上的询问产生三个结出集。

  把一个结出集拼到另2个结出集的末尾。

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

             二.UNION回来结果集的列名以第3个SELECT为准

             叁.三个结果集对应列的总得能够隐式转变

             4.UNION私下认可消去重复行,能够动用主要字ALL来回到重复行

 

照例是事先的两张表:第二个SELECT 起名称为File
之后无论起怎么着名字都以File,以第3个为准。

图片 16  

 

连年类型:

   

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

 

内连接(INNER JOIN)

   

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

一、等值连接

   
 概念:在连年条件中应用极度号(=)运算符,其询问结果中列出被三番五次表中的全数列,包含内部的重复列。

 

        [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 OUTELANDJOIN)、右连接(兰德奥迪Q3IGHT JOIN)或右外连接(PAJEROIGHT OUTEOdyssey JOIN)、全连接(FULL
JOIN)或全外连接(FULL OUTESportageJOIN)。我们就大致的叫:左连接、右连接和全连接。

 

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*四=1陆条记下),假设带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

       计算:十一分与笛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)  

 

 

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

 

 

      连接查询非常轻便,只须求在项目中多么实行,不断总括。

 

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

相关文章

发表评论

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

网站地图xml地图