Mysql----关于内联,左联,右联,全联的使用和理解

准备工作:新建两张表

     表一:student

        

       填充内容:编号,姓名,班级

         

      表二:school

        

        填充内容:编号,班级,专业

         

      这两张表建好了,意为班级选课表,两张表没有任何主外键的关系,下面进行内联,左联,右联,全联的实验

一, 内联接.

    关键字:INNER JOIN

      语法:SELECT * from 表一  INNER JOIN 表二 on 表一.属性=表二.属性

      使用上面的语法来试一下:SELECT * from student  INNER JOIN school on student.class=school.class

      输出结果:

        

     这条sql语句用了内连接的关键字,并将两表中的class属性进行了链接,得出了以上的结果,发现结果的得出是有后面具体链接属性来控制的,我下面将数据修改看下得到什么结果

    修改数据:school,student没有更改

        

     继续执行上面的语句:

      

     现在得出的数据结果可以看出通过内联接,只有后面属性值对应时,才会显示出两表对应的数据,如果没有对应的属性值,其他数据就不会被显示,也就是student与school内联接,只会取出class相同的字段,而不会取出其他数据!

二, 左联接.

  关键字:LEFT JOIN

   语法:SELECT * From 表一 LEFT JOIN 表二 ON 表一.属性=表二.属性

   测试:SELECT * from student LEFT JOIN school on student.class=school.class

   结果:

     

   可以看出左联接就是以左表为主,会显示出左表的全部数据,而与其连接的表会根据字段的匹配显示对应数据,也就是说首先取出student表中所有数据,然后再加上与student与school表class字段匹配的数据!

三,右联接.

  关键字:RIGHT JOIN

   语法:SELECT * FROM 表一 RIGHT JOIN 表二 ON 表一.属性=表二.属性

   测试:SELECT * FROM student RIGHT JOIN school ON student.class=school.class

   结果

       

    可以看出,右链接与左联接雷同,会取出school中的全部数据,再取出与其class字段相匹配的数据,关于右链接不多解释!

四,全联接.

  MySQL不支持完全链接,在这里可以通过 UNION ALL 将左联和右联的结果合并实现全联接

  测试:SELECT * from student LEFT JOIN school on student.class=school.class

     UNION ALL 

     SELECT * FROM student RIGHT JOIN school ON student.class=school.class

  结果:

    

    也就是说完全链接就是左联接和右连接的合并,两边都会通过字段匹配一遍获取数据,通过union all将结果和合并,这就是完全链接状态!

    关于建表,和sql语句已经在随笔中写出了,实验的话直接copy使用,谢谢!

  

  

  

    

         

      

        

  

原文地址:https://www.cnblogs.com/mmmmyblog/p/8043280.html