美文网首页
MySQL之联结表 JOIN

MySQL之联结表 JOIN

作者: wenmingxing | 来源:发表于2018-06-05 20:35 被阅读14次

    本文主要说明MySQL中对表进行联结的方法,其中主要包括INNER JOINLEFT JOINRIGHT JOINFULL JOIN几个关键字的讲解。

    I、上帝视角看联结

    1、联结就是将来自两个或多个表的行结合起来,这就要求需要联结的表拥有相同的列,这引出了外键的概念:

    外键为某个表中的一列,它包含另一个表的主键值,定义了两个表的关系。

    2、表的基本联结可以采用以下几种方式:

    ·使用WHERE ...=...的方式;
    ·使用JOIN关键字(其中包括INNER JOINLEFT JOINRIGHT JOIN);

    II、WHERE ...=...

    2.1 使用WHERE ...=...联结两个表

    如下面例子,我们利用外键vend_id来联结vendors表与products表:

    # test1 WHERE ...=...  
    > SELECT vend_name, prod_name, prod_price FROM vendors, products 
       WHERE vendors.vend_id = products.vend_id;  
    
    2.2 使用WHERE ...=... AND ...=...联结多个表

    如下面例子,利用不同的外键可以联结不同的表:

    # test2 
    > SELECT prod_name, vend_name, prod_price, quantity FROM orderitems, products, vendors
       WHERE products.vend_id = vendors.vend_id
       AND orderitems.prod_id = products.prod_id
    

    III、INNER JOIN

    1、INNER JOIN称为内部联结,其返回的是两个表中的公有部分:

    2、其语法为:

    # INNER JOIN
    > SELECT column_name(s) FROM table1 INNER JOIN table2 
       ON table1.column_name = table2.column_name;  
    

    3、例题

    牛客网SQL使用WHERE或INNER JOIN例题1

    牛客网SQL使用WHERE或INNER JOIN例题2

    牛客网SQL使用WHERE或INNER JOIN例题3

    IV、LEFT JOIN

    1、LEFT JOIN关键字从左表返回所有的行,即使右表中没有匹配,如果右表中没有匹配,则返回NULL:

    2、其语法为:

    # LEFT JOIN  
    > SELECT columns_name(s) FROM table1 LEFT JOIN table2  
       ON table1.columns_name = table2.columns_name;  
    

    3、例题:

    牛客网SQL_使用LEFT JOIN_例题1

    牛客网SQL_会使用LEFT JOIN_例题2

    牛客网SQL_LEFT JOIIN_例题3

    V、 RIGHT JOIN

    1、RIGHT JOINLEFT JOIN类似,从右表返回所有的行,即使左表中没有匹配。如果左表中没有匹配,则结果为NULL:

    2、其语法为:

    # RIGHT JOIN  
    > SELECT column_name(s) FROM table1 RIGHT JOIN table2
       ON table1.column_name = table2.column_name;  
    

    VI、FULL OUTER JOIN

    1、FULL OUTER JOIN关键字只要左表和右表其中一个行中存在匹配,则返回行,相当于集合了LEFT JOINRIGHT JOIN的结果:

    2、其语法为:

    # FULL OUTER JOIN  
    > SELECT column_name(s) FROM table1 FULL OUTER JOIN table2
       ON table1.column_name = column_name;  
    

    【参考】
    [1] 《MySQL必知必会》
    [2] 菜鸟教程SQL

    相关文章

      网友评论

          本文标题:MySQL之联结表 JOIN

          本文链接:https://www.haomeiwen.com/subject/xtrmsftx.html