美文网首页程序员数据库收藏
SQL 语法 小结--多表关联举例(JOIN)

SQL 语法 小结--多表关联举例(JOIN)

作者: 云之君兮鹏 | 来源:发表于2016-12-11 15:42 被阅读696次
心有猛虎,细嗅蔷薇! <天蝎王>

<b><big>“不要因为走得太远,而忘了为什么出发” </big> </b>


关键字:JOIN

  • 主要就是把两个或者多个表根据条件(表之间的字段关系)关联起来;
  • INNER JOIN: 满足条件的行才会被返回(返回结果肯定小于或者等于行数最少的表);
  • LEFT JOIN: 会返回左边表所有的行数,就算是左右表关联字段值不匹配。如果右表中没有匹配,则结果为 NULL。
  • RIGHT JOIN:会返回右边表所有的行数,就算是左右表关联字段值不匹配。如果左表中没有匹配,则结果为 NULL。
举例说明:

1、首先创建一个班级学生表(student_table),并插入几条数据。

name student_ID class_ID
詹姆斯 23 1
保罗 3 1
韦德 6 1
安东尼 7 1

2、再创建一个成绩表(score_table),也插入几条数据。

student_ID math history
23 90 90
3 90 90
24 91 87
35 92 86
30 93 85

3、INNER JOIN
代码部分:

SELECT  *  a.name 姓名,a.student_ID 学号,b.math 数学,b.history 历史
FROM
    student_table a
INNER JOIN score_table b ON a.student_ID = b.student_ID;

结果:

姓名 学号 数学 历史
詹姆斯 23 90 90
保罗 3 90 90

4、LEFT JOIN(左表原来有四行结果,最终查询也为4行结果,没有匹配就是NULL)

SELECT  a.name 姓名,a.student_ID 学号,b.math 数学,b.history 历史
FROM
    student_table a
LEFT  JOIN score_table b ON a.student_ID = b.student_ID;

姓名 学号 数学 历史
詹姆斯 23 90 90
保罗 3 90 90
韦德 Null Null
安东尼 7 Null Null

5、RIGHT JION (右表原来有5行结果,最终查询也为5行结果,没有匹配就是NULL)

SELECT  a.name 姓名,a.student_ID 学号,b.math 数学,b.history 历史
FROM
    student_table a
RIGHT  JOIN score_table b ON a.student_ID = b.student_ID;
姓名 学号 数学 历史
詹姆斯 23 90 90
Null Null 91 87
保罗 3 90 90
Null Null 92 86
Null Null 92 86

相关文章

网友评论

    本文标题:SQL 语法 小结--多表关联举例(JOIN)

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