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

SQL 语法 小结--多表关联举例(JOIN)_第1张图片
心有猛虎,细嗅蔷薇! <天蝎王>

关键字: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))