教据库系统概论 An Introduction to Database System 第三章关系数据库标准语言 sQL(续1) 中国人民大学信息学院计算机系 An Introduction to Database System
An Introduction to Database System 中国人民大学信息学院计算机系 数据库系统概论 An Introduction to Database System 第三章 关系数据库标准语言 SQL (续1)
33查询 3.3.1概述 3.32单表查询 3.3.3连接查询 3.34嵌套查询 3.35集合查询 3.36小结 An Introduction to Database System
An Introduction to Database System 3.3 查 询 ◼ 3.3.1 概述 ◼ 3.3.2 单表查询 ◼ 3.3.3 连接查询 ◼ 3.3.4 嵌套查询 ◼ 3.3.5 集合查询 ◼ 3.3.6 小结
333连接查询 同时涉及多个表的查询称为连接查询 用来连接两个表的条件称为连接条件或连接谓词 般格式: [][.]列名2> 比较运算符:=、>、=、] BETWEEN[] AND[] An Introduction to Database System
An Introduction to Database System 3.3.3 连接查询 同时涉及多个表的查询称为连接查询 用来连接两个表的条件称为连接条件或连接谓词 一般格式: ◼ [.] [.] 比较运算符:=、>、=、.] BETWEEN [.] AND [.]
连接查询(续) ■连接字段 ■连接谓词中的列名称为连接字段 ■连接条件中的各连接字段类型必须是可比的 但不必是相同的 An Introduction to Database System
An Introduction to Database System 连接查询 (续) ◼ 连接字段 ◼ 连接谓词中的列名称为连接字段 ◼ 连接条件中的各连接字段类型必须是可比的, 但不必是相同的
连接操作的执行过程 套循环法( NESTED-LOOP) 首先在表1中找到第一个元组,然后从头开始扫描表2, 逐一查找满足连接件的元组,找到后就将表1中的第 个元组与该元组拼接起来,形成结果表中一个元组 ■表2全部查找完后,再找表1中第二个元组,然后再从 头开始扫描表2,逐一査找满足连接条件的元组,找到 后就将表1中的第二个元组与该元组拼接起来,形成结 果表中一个元组。 ■重复上述操作,直到表1中的全部元组都处理完毕 An Introduction to Database System
An Introduction to Database System 连接操作的执行过程 ◼ 嵌套循环法(NESTED-LOOP) ◼ 首先在表1中找到第一个元组,然后从头开始扫描表2, 逐一查找满足连接件的元组,找到后就将表1中的第一 个元组与该元组拼接起来,形成结果表中一个元组。 ◼ 表2全部查找完后,再找表1中第二个元组,然后再从 头开始扫描表2,逐一查找满足连接条件的元组,找到 后就将表1中的第二个元组与该元组拼接起来,形成结 果表中一个元组。 ◼ 重复上述操作,直到表1中的全部元组都处理完毕
排序合并法(SORT- MERGE 常用于=连接 ■首先按连接属性对表1和表2排序 ■对表1的第一个元组,从头开始扫描表2,顺序查找 满足连接条件的元组,找到后就将表1中的第一个 元组与该元组拼接起来,形成结果表中一个元组 遇到表2中第一条大于表1连接字段值的元组时, 对表2的查询不再继续 An Introduction to Database System
An Introduction to Database System 排序合并法(SORT-MERGE) 常用于=连接 ◼ 首先按连接属性对表1和表2排序 ◼ 对表1的第一个元组,从头开始扫描表2,顺序查找 满足连接条件的元组,找到后就将表1中的第一个 元组与该元组拼接起来,形成结果表中一个元组。 当遇到表2中第一条大于表1连接字段值的元组时, 对表2的查询不再继续
排序合并法 ■找到表1的第二条元组,然后从刚才的中断点处继 续顺序扫描表2,查找满足连接条件的元组,找到 后就将表1中的第一个元组与该元组拼接起来,形 成结果表中一个元组。直接遇到表2中大于表1连接 字段值的元组时,对表2的查询不再继续 重复上述操作,直到表1或表2中的全部元组都处理 完毕为止 An Introduction to Database System
An Introduction to Database System 排序合并法 ◼ 找到表1的第二条元组,然后从刚才的中断点处继 续顺序扫描表2,查找满足连接条件的元组,找到 后就将表1中的第一个元组与该元组拼接起来,形 成结果表中一个元组。直接遇到表2中大于表1连接 字段值的元组时,对表2的查询不再继续 ◼ 重复上述操作,直到表1或表2中的全部元组都处理 完毕为止
索引连接( INDEX-JoIN) ■对表2按连接字段建立索引 ■对表1中的每个元组,依次根据其连接字段 值查询表2的索引,从中找到满足条件的元 组,找到后就将表1中的第一个元组与该元 组拼接起来,形成结果表中一个元组 An Introduction to Database System
An Introduction to Database System 索引连接(INDEX-JOIN) ◼ 对表2按连接字段建立索引 ◼ 对表1中的每个元组,依次根据其连接字段 值查询表2的索引,从中找到满足条件的元 组,找到后就将表1中的第一个元组与该元 组拼接起来,形成结果表中一个元组
连接查询(续) SQL中连接查询的主要类型 广义笛卡尔积 等值连接(含自然连接) ■非等值连接查询 自身连接查询 外连接查询 复合条件连接查询 An Introduction to Database System
An Introduction to Database System 连接查询 (续) SQL中连接查询的主要类型 ◼ 广义笛卡尔积 ◼ 等值连接(含自然连接) ◼ 非等值连接查询 ◼ 自身连接查询 ◼ 外连接查询 ◼ 复合条件连接查询
广义笛卡尔积 不带连接谓词的连接 很少使用 例 select Student sc x FROM Student sc An Introduction to Database System
An Introduction to Database System 一、广义笛卡尔积 ◼ 不带连接谓词的连接 ◼ 很少使用 例: SELECT Student.* , SC.* FROM Student, SC