资源描述
数据库原理第二章:关系数据库授 课 教 师 : 王 哲 本 次 课 学 习 内 容v关 系 代 数 关 系 运 算 ( 选 择 、 投 影 、 连 接 , 除 运 算 )v* 关 系 演 算 是 以 数 理 逻 辑 中 的 谓 词 演 算 为 基 础 的 。 可 分 为 : 元 组 关 系 演 算 语 言 ( get, put等 6条 语 句 ) 域 关 系 演 算 语 言 QBE 一 、 关 系 代 数v1、 除 运 算v2、 除 运 算 示 例v3、 除 运 算 练 习 1、 除 运 算 ( Division, 亦 称 商 )v用 途 : 除 法 运 算 同 时 从 行 和 列 的 角 度 进 行 运 算 , 在 表 达 某些 查 询 时 有 用 , 适 合 于 包 含 “ 全 部 ” 之 类 的 短 语 的 查 询 ,例 如 “ 查 询 已 注 册 选 修 了 所 有 课 程 的 学 生 名 字 ” 。v定 义 : 给 定 关 系 R( X, Y) , S( Y, Z) , X, Y, Z为 属性 列 , 关 系 R和 关 系 S中 的 Y出 自 相 同 域 集 , 则 :R S=t rX|tr R y(S)Yx其 中 , Yx为 x在 R中 的 象 集 , x= trX。 象 集 Zx 给 定 一 个 X和 关 系 R( X, Z) , Z为 属 性 组 。 当 tX=x时 , x在 R中 的 象 集 ( Images Set) 为 : Zx=tZ|t R, tX=x 它 表 示 R中 属 性 组 X上 值 为 x的 诸 元 组 在 Z上 分 量 的 集 合v x 1在 R中 的 象 集 Zx1 =Z1, Z2, Z3,v x2在 R中 的 象 集 Zx2 =Z2, Z3,v x3在 R中 的 象 集 Zx3=Z1, Z3 例 1: 设 关 系 R、 S分 别 为 下 图 的 (a)和 (b), R S的 结 果 为 图 (c) 2、 除 运 算 示 例 分 析v 在 关 系 R中 , A可 以 取 四 个 值 a1, a2, a3, a4a1的 象 集 为 (b1, c2), (b2, c3), (b2, c1)a2的 象 集 为 (b3, c7), (b2, c3)a3的 象 集 为 (b4, c6)a4的 象 集 为 (b6, c6)v S在 (B, C)上 的 投 影 为 (b1, c2), (b2, c1), (b2, c3) v 只 有 a 1的 象 集 包 含 了 S在 (B, C)属 性 组 上 的 投 影 所 以 R S =a1 写 出 R S=A B C Da1 2 4 6a3 8 2 3a1 2 3 5a4 7 7 8 C D3 54 6 A Ba1 2R S R S 例 2: 有 关 系 A、 B1、 B2和 B3, 请 分 别 计 算 A/B1、 A/B2及 A/B3。分 析 : 在 关 系 中 , sno可 以 取 四 个 值 s1, s2, s3, s4s1的 象 集 为 p1, p2, p3, p4s2的 象 集 为 p1, p2s3的 象 集 为 p2s4的 象 集 为 p2,p4 R sid cid 3 101 3 102 3 103 3 104 5 101 5 102 8 102 10 102 10 104 cid S 1 102 S 2 102 104 S 3 101 102 104 sid R /S 1 3 5 8 10 R /S 2 3 10 R /S 3 3 商 操 作 示 意 图 R sid cid 3 1 0 1 3 1 0 2 3 1 0 3 3 1 0 4 5 1 0 1 5 1 0 2 8 1 0 2 1 0 1 0 2 1 0 1 0 4 cid S 1 1 0 2 S 2 1 0 2 1 0 4 S 3 1 0 1 1 0 2 1 0 4 sid R /S 1 3 5 8 1 0 R /S 2 3 1 0 R /S 3 3 商 操 作 示 意 图 例 3: 有 关 系 R、 S1、 S2和 S3, 请 分 别 计 算 R/S1、 R/S2及 R/S3。分 析 : 在 R关 系 中 , sid可 以 取 四 个 值 s1, s2, s3, s4s1的 象 集 为 p1, p2, p3, p4, s2的 象 集 为 p1, p2s3的 象 集 为 p2, s4的 象 集 为 p2,p4 例 4: 查 询 至 少 选 修 1号 课 程 和 3号 课 程 的 学 生 号 码解 题 思 路 : 首 先 建 立 一 个 临 时 关 系 K,然 后 求 Sno,Cno(SC) K200215121象 集 1, 2, 3200215122象 集 2, 3 K=1, 3 于 是 : Sno,Cno(SC) K=200215121 Cno 1 3 Sno Cno200215121 1200215121 2200215121 3200215122 2200215122 3 v 关 系 除 法 运 算 的 步 骤 :1) 将 被 除 关 系 属 性 分 为 象 集 属 性 和 结 果 属 性2) 对 象 集 属 性 进 行 投 影 目 标 数 据 集3) 将 被 除 关 系 分 组 : 结 果 属 性 值 一 样 的 元 组 分 为 一 组4) 找 出 结 果 集 3、 除 运 算 练 习1、 已 知 关 系 r、 s、 w如 图 所 示 , 计 算 T= (r s) w) Sr关 系 s关系 w关 系 A B C1 b 22 a 21 b 1 3 a 3 A B C2 b 13 b 13 b 23 a 2 B Ca 2b 1解 : T= A B C2 b 13 b 13 b 23 a 2 2、 检 索 学 习 全 部 课 程 的 学 生 学 号3、 检 索 学 习 全 部 课 程 的 学 生 学 号 和 姓 名 4、 检 索 所 学 课 程 包 含 学 生 S3所 学 课 程 的 学 生 学 号 Sno, Cno( SC) Cno( Course)Sno, Cno( SC) Cno( Course) Sno, Sname( Student) 或 : Sno, Sname( Student Sno, Cno( SC) Cno( Course) )Sno, Cno( SC) Cno( sno=S3( SC) ) 关 系 代 数 小 结v传 统 的 集 合 运 算 并 、 差 、 交 、 笛 卡 尔 积v专 门 的 关 系 运 算 选 择 、 投 影 、 连 接 、 除v5种 基 本 运 算 并 、 差 、 笛 卡 尔 积 、 投 影 、 选 择 二 、 关 系 演 算v关 系 演 算 是 以 数 理 逻 辑 中 的 谓 词 演 算 为 基 础 的 , 通 过 谓 词形 式 来 表 示 查 询 表 达 式 。v根 据 谓 词 变 元 的 不 同 , 可 将 关 系 演 算 分 为 元 组 关 系 演 算 和域 关 系 演 算 。 前 者 以 元 组 为 变 量 , 简 称 元 组 演 算 ; 后 者 以域 为 变 量 , 简 称 域 演 算 。 v元 组 关 系 演 算 Tuple Relational Calculus , 简 称 TRC 元 组 关 系 演 算 语 言 ALPHA 元 组 关 系 表 达 式v域 关 系 运 算 Domain Relational Calculus , 简 称 DRC 域 关 系 演 算 语 言 QUE 1、 元 组 关 系 演 算v元 组 关 系 演 算 是 以 元 组 变 量 作 为 谓 词 变 元 的 基 本 对 象 。v元 组 关 系 演 算 语 言 的 典 型 代 表 是 E.F.Codd提 出 的 ALPHA语 言 , 这 种 语 言 虽 然 没 有 实 际 实 现 , 但 较 有 名 气 ,INGRES关 系 数 据 库 上 使 用 的 QUEL语 言 , 就 是 在 ALPHA语 言 的 基 础 上 研 制 的 。v这 里 主 要 介 绍 ALPHA语 言 。 ALPHA语 言v基 本 格 式 是 : (): 操 作 符 有 GET、 PUT、 HOLD、 UPDATE、 DELETE, DROP等 6条 语 句 。 工 作 空 间 是 指 内 存 空 间 , 通 常 用 W表 示 , 也 可 以 用 别 的 字 母 表 示 。 工作 空 间 是 用 户 与 系 统 的 通 信 区 。 目 标 表 用 于 指 定 操 作 ( 如 查 询 、 更 新 等 ) 出 来 的 结 果 , 它 可 以 是 关 系名 或 属 性 名 , 一 条 语 句 可 以 同 时 对 多 个 关 系 或 多 个 属 性 进 行 操 作 。 只 有 满 足 操 作 条 件 的 元 组 才 能 进 行 , 操 作 操 作 条 件 可 以 为 空 。 除 此 之 外 , 还 可 以 在 基 本 格 式 上 加 上 排 序 要 求 , 定 额 要 求 等 。 1) 简 单 查 询v 下 面 以 学 生 课 程 数 据 库 ( P56) 为 例 , 说 明 ALPHA语 言 的 使 用 。例 1: 查 询 所 有 学 生 的 数 据GET W (Student) GET语 句 的 作 用 是 把 数 据 库 中 的 数 据 读 入 内 存 空 间 W, 目 标 表 为 学生 关 系 S, 代 表 查 询 出 来 的 结 果 , 即 所 有 的 学 生 。 冒 号 后 面 的 操 作 条 件 缺 省 , 表 示 无 条 件 查 询 。例 2: 查 询 所 有 被 选 修 的 课 程 号 码 。GET W (SC.Cno) 目 标 表 为 选 课 关 系 SC中 的 属 性 CNO, 代 表 所 有 被 选 修 的 课 程 号 码 , 查 询 结 果 自 动 消 去 重 复 行 。 v 由 冒 号 后 面 的 逻 辑 表 达 式 给 出 查 询 条 件 , 在 表 达 式 中 可 以 使 用如 下 三 类 运 算 符 : 比 较 运 算 符 : , , , , =等 于 , ; 逻 辑 运 算 符 : ( 与 ) , ( 或 ) , ( 非 ) 表 示 执 行 次 序 的 括 号 : ( )v 其 中 , 比 较 运 算 符 的 优 先 级 高 于 逻 辑 运 算 符 , 可 以 使 用 ( ) 改变 它 们 的 优 先 级 。2) 条 件 查 询 例 1: 查 询 所 有 男 学 生 的 姓 名 。GET W (Student.Sname) : Student. Ssex = 男 例 2: 查 询 信 息 系 (IS)中 年 龄 小 于 20岁 的 学 生 的 学 号 和 年 龄GET W (Student.Sno, Student.Sage): Student.Sdept=IS Student.Sage20例 3: 查 询 信 息 系 (IS)或 计 算 机 系 (CS)的 男 学 生GET W (Student): (Student.Sdept=IS V Student.Sdept=CS) Student. Ssex = 男 3) 排 序 检 索例 1: 查 询 S3同 学 所 选 课 程 号 及 成 绩 , 并 按 成 绩 降 序 排 列 。GET W (SC.CNO,SC.SCORE):SC.SNO=S3 DOWN SC.SCORE例 2: 查 询 计 算 机 科 学 系 (CS)学 生 , 按 年 龄 升 序 排 序GET W (Student):Student.Sdept=CS up Student.Sage DOWN表 示 降 序 , 后 面 紧 跟 排 序 的 属 性 名 。 升 序 排 列 时 使 用 UP。 4) 限 额 检 索例 1: 查 询 查 询 一 名 男 同 学 。GET W (1) (Student) : Student. Ssex = 男 例 2: 查 询 一 名 男 同 学 的 教 师 号 和 姓 名 , 并 使 他 的 年 龄 最 小 。GET W (1) (Student) : Student. Ssex = 男 up Student.Sage 所 谓 的 定 额 查 询 就 是 通 过 在 W后 面 的 括 号 中 加 上 定 额 数 量 ,限 定 查 询 出 元 组 的 个 数 。 这 里 (1)表 示 查 询 结 果 中 男 同 学 的 个 数 , 取 出 学 生 表 中 第 一个 男 同 学 的 学 号 和 姓 名 。 5) 带 元 组 变 量 的 查 询v 元 组 关 系 演 算 就 是 以 元 组 变 量 作 为 谓 词 变 元 的 基 本 对 象 , 元 组 变量 是 在 所 定 义 的 关 系 范 围 内 变 化 , 所 以 也 称 作 范 围 变 量 Range Variable,一 个 关 系 可 以 设 多 个 元 组 变 量 。例 1: 查 询 S3同 学 所 选 课 程 号 。RANGE SC XGET W (X.CNO):X.SNO= S3 使 用 RANGE来 说 明 元 组 变 量 , X为 关 系 SC上 的 元 组 变 量 。 如 果 关 系 的 名 字 很 长 , 使 用 起 来 不 方 便 , 这 时 可 以 设 一 个 名 字 较 短的 元 组 变 量 来 代 替 关 系 名 , 简 化 关 系 名 , 使 操 作 更 加 方 便 。 例 2: 查 询 所 有 男 学 生 的 姓 名 。RANGE Student XGET W (X.Sname) : X. Ssex = 男 例 3: 查 询 信 息 系 (IS)中 年 龄 小 于 20岁 的 学 生 的 学 号 和 年 龄RANGE Student XGET W (X.Sno, X.Sage): X.Sdept=IS X.Sage, , 18Student Sno Sname Ssex Sage Sdept P.赵 亦 女 P.赵 亦 18 例 3: 查 询 年 龄 大 于 18岁 或 者 女 学 生 的 姓 名 。v在 QBE中 , 表 示 两 个 条 件 的 “ 或 ” , 要 把 两 个 条 件 写 在 不同 行 上 , 且 必 须 使 用 不 同 的 示 例 元 素 。Student Sno Sname Ssex Sage Sdept P.赵 亦 女 P.李 亦 18 例 4: 查 询 选 修 C1号 课 程 学 生 的 姓 名 。本 查 询 涉 及 两 个 关 系 : Student和 SC, 这 两 个 关 系 具 有 公共 的 属 性 Sno, Sno作 为 连 接 属 性 , 把 具 有 相 同 的 SNO值 的 两个 关 系 连 接 起 来 , Sno在 两 个 表 中 的 值 要 相 同 。Student Sno Sname Ssex Sage Sdept S1 P.赵 亦SC Sno Cno Grade S1 C1 例 5: 查 询 未 选 修 C1号 课 程 学 生 的 姓 名 。v 查 询 条 件 中 的 “ 未 选 修 ” 需 使 用 逻 辑 非 来 表 示 。 QBE中 的 逻 辑 非 运 算符 为 , 填 写 在 关 系 名 下 方 。v 如 果 S1同 学 选 修 C1号 课 程 的 情 况 为 假 , 则 符 合 查 询 的 条 件 , 显 示 S1同 学 的 学 号 , 然 后 再 查 询 其 他 同 学 。 Student Sno Sname Ssex Sage Sdept S1 P.赵 亦SC Sno Cno Grade S1 C1 3) 排 序 查 询例 1: 查 询 全 体 女 同 学 的 学 号 和 姓 名 , 要 求 查 询 结 果 按 年 龄降 序 排 列 。v 对 查 询 结 果 按 照 某 个 属 性 值 升 序 排 列 时 , 则 在 相 应 的 属 性 下 方 填 入“ AO” , 降 序 排 列 时 , 填 入 “ DO” 。v 如 果 按 照 多 个 属 性 值 同 时 排 序 , 则 用 “ AO(i)” 或 “ DO(i)” 表 示 , 其中 I为 排 序 的 优 先 级 , I值 越 小 , 优 先 级 越 高 。Student Sno Sname Ssex Sage Sdept P.95001 P.赵 亦 DO v例 2: 查 全 体 男 生 的 姓 名 , 要 求 查 询 结 果 按 所 在 系 升 序 排序 , 对 相 同 系 的 学 生 按 年 龄 降 序 排 序 。Student Sno Sname Ssex Sage SdeptP.李 勇 男 DO( 2) . AO( 1) . 4) 使 用 聚 集 函 数v同 ALPHA语 言 类 似 , QBE语 言 也 提 供 了 一 些 有 关 运算 的 标 准 函 数 , 以 方 便 用 户 。函 数 名 称 功 能AVG 按 列 计 算 平 均 值SUM 按 列 计 算 值 的 总 和MAX 求 一 列 中 的 最 大 值MIN 求 一 列 中 的 最 小 值 CNT 按 列 值 计 算 元 组 个 数QBE常 用 的 库 函 数 及 其 功 能 v例 1: 求 学 号 为 S1学 生 的 平 均 分 。v例 2: 求 信 息 ( IS) 系 学 生 的 平 均 年 龄 。SC Sno Cno GradeS1 P.AVG.ALLStudent Sno Sname Ssex Sage SdeptS1 P.AVG.ALL 数 据 更 新v修 改 : 修 改 的 命 令 为 U. v插 入 : 插 入 的 命 令 为 I.v删 除 : 删 除 的 命 令 为 D. 1) 修 改 操 作v例 1: 把 刘 伟 同 学 转 到 信 息 系 。v例 2: 把 刘 伟 同 学 年 龄 改 为 18岁 。Student Sno Sname Ssex Sage SdeptU. 刘 伟 ISStudent Sno Sname Ssex Sage Sdept 刘 伟 U.18 例 3: 把 200215121学 生 的 年 龄 增 加 1岁例 4: 将 所 有 学 生 年 龄 增 加 1岁Student Sno Sname Ssex Sage SdeptU. 200215121200215121 1717+1Student Sno Sname Ssex Sage SdeptU. 200215121200215121 1818+1 2) 插 入 操 作例 1: 在 SC表 中 插 入 一 条 选 课 记 录 ( S6, C1)注 意 : 新 插 入 的 元 组 必 须 具 有 主 码 值 , 其 他 属 性 值 可 以为 空 , 如 本 例 中 的 Grade为 空 。SC Sno Cno G radeI. S6 C1 3) 删 除 操 作v例 1: 删 除 S1同 学 选 修 C1课 程 的 信 息 。v例 2: 删 除 删 除 学 生 200215089同 学 的 信 息 。SC Sno Cno G radeD. S1 C1 Student Sno Sname Ssex Sage Sdept D. 200215089 第 二 章 关 系 数 据 库 小 结v关 系 数 据 结 构 关 系 ( 域 , 笛 卡 尔 积 , 关 系 ) 关 系 , 属 性 , 元 组 , 候 选 码 , 主 码 , 主 属 性 , 基 本 关 系 的 性质 关 系 模 式 , 关 系 数 据 库v关 系 操 作 查 询 ( 选 择 、 投 影 、 连 接 、 除 、 并 、 交 、 差 ) 数 据 更 新 ( 插 入 、 删 除 、 修 改 ) v关 系 的 完 整 性 约 束 实 体 完 整 性 参 照 完 整 性 ( 外 码 ) 用 户 定 义 的 完 整 性v关 系 数 据 语 言 关 系 代 数 语 言 关 系 演 算 语 言元 组 关 系 演 算 语 言 ALPHA域 关 系 演 算 语 言 QBE 练 习 题v 例 : 数 据 库 中 有 三 个 关 系S(S#,SNAME,AGE,SEX)C(C#,CNAME,TEACHER)SC(S#,C#,GRADE)请 用 ALPHA语 言 、 QBE语 言 完 成 如 下 操 作v 检 索 学 习 课 程 号 为 C2的 学 生 学 号 与 成 绩v 检 索 学 习 课 程 号 为 C2的 学 生 学 号 与 姓 名v 检 索 选 修 课 程 名 为 Maths的 学 生 学 号 与 姓 名v 检 索 选 修 课 程 号 为 C2或 C4的 学 生 学 号 v 检 索 至 少 选 修 课 程 号 C2和 C4的 学 生 学 号v 检 索 不 学 C2课 的 学 生 姓 名 与 年 龄
展开阅读全文