MYSQL学习笔记 (三)JOIN用法

  数据库的操作分开增删改查,其中查询操作基本占系统的90%,大家所说的优化SQL语句基本是优化查询语句。接下来将学习JOIN的用法,JOIN包括:INNER JOIN(内连接)、LEFT JOIN(左外连接)、RIGHT JOIN(右外连接)、FULL JOIN(全外连接)、CROSS JOIN(交叉连接)。在说明之前,先创建user、schoolMap、school三个表以便实验需要。

    

    

    

1、INNER JOIN

  1)、INNER JOIN返回两个表中联结字段相等的行,即两个表中联结字段都存在并且相等。

  2)、INNER 连接二个数据表的语法:

      SELECT * FROM 表A INNER JOIN 表B ON 表A.字段 = 表B.字段;

  3)、示例:

    

 

  4)、INNER JOIN 连接三个数据表的用法:

    SELECT * FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号

    连接多个表以此类推

 

  5)、INNER JOIN使用的时候若不加ON条件等价于FULL JOIN不不加ON条件 、CROSS JOIN

    

    

    

    6、INNER INTO 后面的查询的条件加在ON后面和WHERE效果是一样的

    

2、LEFT JOIN(左外连接) 

  1)、LEFT JOIN返回包括左表中的所有记录和右表中联结字段相等的记录。

  2)、LEFT JOIN连接二个数据表的语法:

      SELECT * FROM 表A LEFT JOIN 表B ON 表A.字段 = 表B.字段;

  3)、LEFT JOIN示例:

    

  4)、LEFT JOIN 连接三个数据表的用法:

    SELECT * FROM (表1 LEFT JOIN 表2 ON 表1.字段号=表2.字段号) LEFT JOIN 表3 ON 表1.字段号=表3.字段号

    连接多个表以此类推

3、RIGHT JOIN(右外连接) 

  1)、RIGHT JOIN返回包括右表中的所有记录和左边表中联结字段相等的记录。

  2)、RIGHT JOIN连接二个数据表的语法:

      SELECT * FROM 表A RIGHT JOIN 表B ON 表A.字段 = 表B.字段;

  3)、RIGHT JOIN示例:

    

 

  4)、RIGHT JOIN 连接三个数据表的用法:

 

    SELECT * FROM (表1  RIGHT JOIN 表2 ON 表1.字段号=表2.字段号) RIGHT JOIN 表3 ON 表1.字段号=表3.字段号

 

    连接多个表以此类推

4、FULL JOIN

  MYSQL 不支持FULL JOIN 通过LEFT JOIN 与 RIGHT JOIN 来实现

  用法:

    select * from A left join B on A.id = B.id (where 条件)
    union
    select * from A right join B on A.id = B.id (where条件);

 

posted on 2016-05-08 13:08  会学习的猪  阅读(438)  评论(0编辑  收藏  举报

导航