第三节 查 询 (1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(13)
连接字段——连接谓词中的列名称为连接字段。连接条件中的各连接字段类型必须是可比的,但不必是
相同的。连接操作的执行过程:嵌套循环法(NESTED-LOOP),首先在表1中找到第一个元组,然后从头开始扫
描表2,逐一查找满足连接件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个
元组。表2全部查找完后,再找表1中第二个元组,然后再从头开始扫描表2,逐一查找满足连接条件的元组,
找到后就将表1中的第二个元组与该元组拼接起来,形成结果表中一个元组。重复上述操作,直到表1中的全
部元组都处理完毕。排序合并法(SORT-MERGE),常用于=连接。首先按连接属性对表1和表2排序,对表1的第
一个元组,从头开始扫描表2,顺序查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接
起来,形成结果表中一个元组。当遇到表2中第一条大于表1连接字段值的元组时,对表2的查询不再继续。找
到表1的第二条元组,然后从刚才的中断点处继续顺序扫描表2,查找满足连接条件的元组,找到后就将表1中
的第一个元组与该元组拼接起来,形成结果表中一个元组。直接遇到表2中大于表1连接字段值的元组时,对
表2的查询不再继续。重复上述操作,直到表1或表2中的全部元组都处理完毕为止。索引连接(INDEX-JOIN),
对表2按连接字段建立索引。对表1中的每个元组,依次根据其连接字段值查询表2的索引,从中找到满足条件
的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。
SQL中连接查询的主要类型:广义笛卡尔积;等值连接(含自然连接);非等值连接查询;自身连接查询;
外连接查询;复合条件连接查询。
一、广义笛卡尔积,不带连接谓词的连接,很少使用。
例:SELECT Student.* , SC.*
FROM Student, SC
二、等值与非等值连接查询:等值连接、自然连接、非等值连接。
[例] 查询每个学生及其选修课程的情况。
SELECT Student.*,SC.*
FROM Student,SC
WHERE Student.Sno = SC.Sno;
|