连接查询
若一个查询同时涉及两个或两个以上的表,则称之为连接查询。连接查询是数据库中最最要的查询,
包括:
1、等值连接查询
2、自然连接查询
3、非等值连接查询
4、自身连接查询
5、外连接查询
6、复合条件查询
等值与非等值连接查询:
比较运算符主要有=、>、<、>=、<=、!=(或<>)等。
下面来看一个例子:
假设有一个学生数据库,其中有三张表,即学生信息表(Student)、课程表(Course)、选课表(Study),三张表中的信息如下:
例1:要求查询选修了课程的学生的信息
很显然,需要用连接查询,学生的情况存放在student表中,学生的选课情况存放在Study表中,所以查询实际涉及Student和Study这两个表。这两个表之间的联系是通过公共属性Sno实现的。
考虑下列等值连接查询语句
SELECT Student.*,Study.* FEOM Student,Study WHERE Student.Sno=Study.Sno /*将Student与Study中同一学生的元祖连接起来*/
得到的结果:
我们发现,上述查询语句按照把两个表中学号相等的元祖连接起来。
系统执行的连接过程:首先在表Student中找到一个元祖,然后从头开始扫描Study表,逐一查找与Student第一个元祖的Sno相等的元祖,找到后就将Student表中的第一个元祖与该元祖拼接起来,形成结果表中的一个元祖,Stdudy表全部查找完后,再找Student中的第二个元祖,重复上述过程,直至Student表中的全部元祖处理完。
自然连接:在等值连接中把目标中重复的属性列去掉的连接查询
下面考虑用自然连接实现上述例子: