一、交叉联接(纯粹的联接查询)
     只进行笛卡尔积操作

     Customers表中的原始数据:

      联接查询

     Employees表中的原始数据:

      联接查询

     进行交叉联接:

1 use edisondb;
2  select C.custid as '顾客号', E.empid as '售货员号'
3  from customers as C
4 CROSS JOIN employees as E
5 ;

     查询结果如下:

     联接查询

重要习惯:在使用联接查询时,尽可能使用“表别名.列名”的形式,这样可有效区分不同表中列名相同的列

二、内联接=交叉联接+条件过滤  

 1.简单内联接

1 use edisondb;
2  select C.custid as '顾客号', E.empid as '售货号'
3 from customers as C
4 JOIN employees as E
5 ON C.age=E.age
6 ;

   查询结果如下:

   联接查询

   执行步骤:a)进行交叉联接操作,得到如下“中间数据集”:

                      联接查询

                  b)对以上“中间数据集”进行条件过滤,选出C.age=E.age的行,按适当形式输出

                      联接查询

 2.组合联接

    实际上就是有多个行过滤条件

1 use edisondb;
2 select C.custid as '顾客号', E.empid as '售货号'
3 from customers as C
4 JOIN employees as E
5 ON C.age=E.age and C.country=E.country
6 ;

   查询结果如下:

   联接查询

  执行步骤:a)进行交叉联接操作,得到如下“中间数据集”:

                    联接查询

                 b)对以上“中间数据集”进行条件过滤,选出C.age=E.age 且 C.country=E.country 的行,按适当形式输出

                    联接查询

 3.多表联接

   新增一张Region表中数据如下:

   联接查询

   进行多表联接查询:

1 use edisondb;
2 select C.custid as '顾客号', E.empid as '售货员号',R.country as '售货员号有效国家'
3 from customers as C
4 JOIN employees as E
5 ON C.age=E.age
6 JOIN region as R
7 ON E.country=R.country
8 ;
   查询结果如下:

   联接查询

  执行步骤:1)先对前面两张表进行简单内联接操作,得到数据集如下(省略一步“中间数据集”):

                     联接查询

                    注:可以将其视作一张新的表,再与第三张表进行简单内联接操作

                  2)将上面得到的数据集与第Region表进行简单内联接操作

                     步骤:a)进行交叉联接操作,得到如下“中间数据集”:

                               联接查询

                              b) 对以上“中间数据集”进行条件过滤,选出E.country=R.country的行,按适当形式输出

                               联接查询

三、外联接=交叉联接+条件过滤+添加外部行 

1.左联接(添加左边表中未出现在“中间数据集”中的行)
进行左联接查询:
1 use edisondb;
2 select *
3 from customers as C
4 LEFT OUTER JOIN employees as E
5 ON C.age=E.age and C.country=E.country
6 ;
查询结果如下:
联接查询

执行步骤:1)先进行简单内联接操作,得到数据集如下(省略一步“中间数据集”):
联接查询

2)对照左边表Employee表,找到未出现在“中间数据集”中的行,添加进“中间数据集”,空列用NULL填充
联接查询

2.右联接(添加右边表中未出现在“中间数据集”中的行)
   略,和左联接相似


相关文章:

  • 2021-09-26
  • 2021-06-01
  • 2022-12-23
  • 2022-12-23
  • 2021-04-08
  • 2022-02-09
  • 2022-12-23
  • 2022-03-05
猜你喜欢
  • 2021-07-10
  • 2022-12-23
  • 2022-02-08
  • 2021-11-17
  • 2022-02-12
  • 2021-10-05
相关资源
相似解决方案