概念:
- 多表联合查询:你想要的数据不在一个表中,而是多个表中查询获取,就需要把表 联合起来查询,但是必须加条件进行筛选,如果不加条件筛选,会出现大量错误数据。
- 条件,连接条件:先分析了表跟表之间的关系,分析数据和数据之间的关系,把关 系变成 SQL写出来(条件)。多数情况下,表和表之间的关系是主外键关系,但是 有特殊,有例外。
- 一个连接条件,只能连接2个表,如果需要连接N个 表,就至少需要 N-1个连接 条件
- 特殊情况:有的表不是主外键关系,并且列名也不一致,但是仍然可以写多表联合 查询
语法:SELECT * FROM 表名1,表名2,表名3,... WHERE 1个或者多个连接条件 [AND查询条件];
查询内容:全部信息 、部分列(,间隔);某个表的全部列 : 表名.*;
查询涉及的表多,表名长,可以给表起别名; 表名 别名 ,注意查询的内容,查询条件中确定属于哪个表的列,都需要使用别名。
例如:查询学生的姓名,性别,以及学生所在院系的名称和院系编号
SELECT * FROM student;
SELECT * FROM DEPARTMENT; # 分析发现,所需要的数据在两张表
第一步:
SELECT * FROM student,department WHERE STUDENT.did=DEPARTMENT.did; (查询出所有信息)
第二步:
SELECT sname,ssex,dname, STUDENT.did FROM student,department WHERE STUDENT.did=DEPARTMENT.did; (将*替换成要查询的列名)
例如:查询学生的姓名,年龄,这个学生的课程名称,以及这门功课的考试成绩
分析:分析发现,所需要的数据在三张表
SELECT * FROM student,course,score WHERE student.sid=score.sid AND score.cid=course.`CID`
SELECT sname,sage,cname,grade
FROM student,course,score
WHERE student.sid=score.sid AND score.cid=course.`CID`;