操作 描述
INNER JOIN 如果表中至少有一个匹配,就返回行
LEFT JOIN 会从左表返回所有的值,即使右表中没有匹配
right JOIN 会从右表返回所有的值,即使左表中没有匹配

[

](https://www.yuque.com/u12234643/srf92e/hpfww6?inner=vWjsT)

内连接(inner join)

把两个表相匹配的全部展示

使用内连接,查询年级表,学生表,成绩表,科目表

  1. 1方式一:
  2. SELECT
  3. st.studentno,
  4. st.`studentname`,
  5. r.`studentresult`,
  6. g.`gradeid`,
  7. g.`gradename`,
  8. su.`subjectno`,
  9. su.`subjectname`
  10. FROM
  11. `grade` g
  12. INNER JOIN `student` st ON st.gradeid = g.gradeid
  13. INNER JOIN `result` r ON r.studentno = st.studentno
  14. INNER JOIN `subject` su ON su.subjectno = r.subjectno;
  15. 2 方式二:
  16. SELECT
  17. st.studentno,
  18. st.`studentname`,
  19. r.`studentresult`,
  20. g.`gradeid`,
  21. g.`gradename`,
  22. su.`subjectno`,
  23. su.`subjectname`
  24. FROM
  25. `grade` g
  26. INNER JOIN `subject` su ON su.gradeid = g.gradeid
  27. INNER JOIN `student` st ON st.gradeid = su.gradeid
  28. INNER JOIN `result` r ON r.studentno = st.studentno;

左连接

是从左表查询信息并全部展示,即使右表里没有

使用左连接,查询学生的学号、名字、年级

SELECT
studentno,
studentname,
gradename
FROM                --  from后左表
student s
LEFT JOIN grade g ON s.gradeid = g.gradeid;     --  join后右表

右连接( right jon)

是从右表查询信息并全部展示,即使左表里没有

使用右连接,查询学生的学号、名字、年级

SELECT
studentno,
studentname,
gradename
FROM                --  from后左表
student s
right JOIN grade g ON s.gradeid = g.gradeid;     --  join后右表