mysql数据库的四种连接的区别和具体实现,有图有真相

 1.测试环境说明

   (1)mysql:mysql-5.5.53-winx64;          

   (2)可视化操作工具:Navicat_V11.0.10_XiTongZhiJia;

2.建表

     数据表有三user ,jme,sms

                                           表1_user

            

                                            表2_jme

            

                                              表3_sms

            

3.测试

   (1)自连接,顾名思义,自己和自己多次连接,最终得到自己需要的列。(不做过多讨论)

   (2)left join 或者left outer join 

           select * from user a left outer join sms  b on a.id = b.id

           select * from user a left  join sms  b on a.id = b.id

           

   (3)right join 或者rigth outer join

            select * from user a right outer join sms  b on a.id = b.id

            select * from user a right join sms  b on a.id = b.id

           

    (4)full outer join或者full join

            注意:mysql不支持这种连接的写法!!

            练习:select * from user,jme,sms

            结果:从左往右一行一行的依次连接

             

   (5)交叉连接 cross join 

                 select * from user a cross join jme b     笛卡尔积

             

 

 4.概念

    (1)内连接——最常用 (INNER JOIN )
             定义:仅将两个表中满足连接条件的行组合起来作为结果集。

    (2)外连接 
             左(外)连接 
                    定义:在内连接的基础上,还包含左表中所有不符合条件的数据行,并在其中的右表列填写NULL 
             关键字:LEFT JOIN     

             右(外)连接 
                   
定义:在内连接的基础上,还包含右表中所有不符合条件的数据行,并在其中的左表列填写NULL 
             关键字:RIGHT JOIN 
      (3)完全连接 
                    定义:
在内连接的基础上,还包含两个表中所有不符合条件的数据行,并在其中的左表、和右表列填写NULL 
              关键字:FULL JOIN

       (4)交叉连接 
                       定义:
将两个表的所有行进行组合,连接后的行数为两个表的乘积数。(笛卡尔积) 
               关键词:CROSS JOIN 

        注意:完全连接和交叉连接的区别。主要体现在空行,交叉连接没有条件限制。
    

 

版权声明:本文为bug-mark原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/bug-mark/p/7909339.html