什么是多表查询
从多张表中联合查询出数据
为什么要使用多表查询
需要查询多张表中的数据,通过一张表查询是不完整的
最简单的方法为:
SELECT<selectList>
FROM 表名A,表名B
此时多表查询会产生笛卡尔积 : 没有连接条件的表关系返回的结果
两个集合的笛卡尔积为{(a,1)(a,2)(a,3)(a,4)(b,1)(b,2)(b,3)(b,4)(c,1)(c,2)(c,3)(c,4)}
明显的,笛卡尔积有很多是不符合实际的,不合理的错误联系
在实际运行环境下,应避免使用全笛卡尔积,需要使用等值连接.
解决方法:
在WHERE加入有效的链接条件
链接n张表,至少有n-1个链接条件
例:
SELECT * FROM t_student,t_course
WHERE t_student.cno=t_course.cno
此时,称t_student表中的cno为外键,t_course表中的cno为主键
通常的,需要对外键做约束来确保外键在实际有意义