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

2018-06-18 00:38:09来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

准备工作:新建两张表

     表一: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使用,谢谢!

 

 

  

 

  

  

 

    

         

 

      

 

 

        

  

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:MYSQL问题解决方案:Access denied for user 'root'@&a

下一篇:mysql CONCAT用法