《MySQL 教程》JOIN 表连接( 二 )

  • c.* 表示 course 表所有字段数据;
  • t.* 表示 teacher 表字段所有数据;
  • ON 后面跟着的条件是连接表的条件;
  • course c 表示将 course 简写为 c, teacher t 表示将 teacher 简写为 t;
  • LEFT JOIN 为左连接,是以左边的表为’基准’,若右表没有对应的值,用 NULL 来填补 。
  • 3.INNER JOIN 内连接同样以表 course 和 teacher 内连接为例:
    SELECT c.id AS course_id,c.*,t.* FROM course c INNER JOIN teacher t ON c.teacher_id=t.id;执行结果如下图:
    《MySQL 教程》JOIN 表连接

    文章插图
     
    Tips:INNER JOIN 为内连接,展示的是左右两表都有对应的数据 。
    4.RIGHT JOIN 右连接同样以表 course 和 teacher 右连接为例:
    SELECT c.id AS course_id,c.*,t.* FROM course c RIGHT JOIN teacher t ON c.teacher_id=t.id;执行结果如下图:
    《MySQL 教程》JOIN 表连接

    文章插图
     
    Tips:RIGHT JOIN 为右连接,是以右边的表为’基准’,若左表没有对应的值,用 NULL 来填补 。
    5. 多表混合连接以本小节所有数据全部连接查询为例:
    SELECT * FROM student a LEFT JOIN student_course b ON a.id=b.student_id RIGHT JOIN course c ON b.course_id=c.id INNER JOIN teacher d ON c.teacher_id=d.id;执行结果如下图:
    《MySQL 教程》JOIN 表连接

    文章插图
     
    Tips:多表混合连接查询时,后面可以把前面执行的结果集整体当成一个表,例如 SELECT * FROM student a LEFT JOIN student_course b ON a.id=b.student_id RIGHT JOIN course c ON b.course_id=c.id 可以理解为 student 和 student_course 左连接查询之后的结果集再对 course 右连接查询 。
    6. 小结本小节介绍了如何使用 LEFT JOIN、INNER JOIN、RIGHT JOIN 对表数据进行连接查询,需要注意的是,ON 后面的表示对连表条件,并且还能对表连接查询的结果集用 WHERE 进行筛选,例如:
    SELECT * FROM student a LEFT JOIN student_course b ON a.id=b.student_id RIGHT JOIN course c ON b.course_id=c.id INNER JOIN teacher d ON c.teacher_id=d.idWHERE a.age > 18 AND d.age < 55;代码块1234567891011以上 sql 语句后面使用了 WHERE 条件筛选,表示学生年龄大于 18,教师年龄小于 55 。




    推荐阅读