幻灯片 1



Similar documents
第2章 数据类型、常量与变量

修改版-操作手册.doc

HSK( 一 级 ) 考 查 考 生 的 日 常 汉 语 应 用 能 力, 它 对 应 于 国 际 汉 语 能 力 标 准 一 级 欧 洲 语 言 共 同 参 考 框 架 (CEF) A1 级 通 过 HSK( 一 级 ) 的 考 生 可 以 理 解 并 使 用 一 些 非 常 简 单 的 汉 语

I

说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度, 对 2015 年 春 季 期 教 运 行 基

深圳市新亚电子制程股份有限公司

<433A5C446F63756D656E E E67735C41646D696E F725CD7C0C3E65CC2DBCEC4CFB5CDB3CAB9D3C3D6B8C4CFA3A8BCF2BBAFA3A95CCAB9D3C3D6B8C4CF31302D31392E646F63>

《C语言基础入门》课程教学大纲

教师上报成绩流程图

<4D F736F F D C3E6CFF2B6D4CFF3A3A8B5DAC8FDD5C220C0E0CCD8D0D4A3A92E646F63>

 编号:


龚 亚 夫 在 重 新 思 考 基 础 教 育 英 语 教 学 的 理 念 一 文 中 援 引 的 观 点 认 为 当 跳 出 本 族 语 主 义 的 思 维 定 式 后 需 要 重 新 思 考 许 多 相 连 带 的 问 题 比 如 许 多 发 音 的 细 微 区 别 并 不 影 响 理 解 和

金 不 少 于 800 万 元, 净 资 产 不 少 于 960 万 元 ; (3) 近 五 年 独 立 承 担 过 单 项 合 同 额 不 少 于 1000 万 元 的 智 能 化 工 程 ( 设 计 或 施 工 或 设 计 施 工 一 体 ) 不 少 于 2 项 ; (4) 近 三 年 每 年

Microsoft Word - 第7章 图表反转形态.doc

目 录 关 于 图 标... 3 登 陆 主 界 面... 3 工 单 管 理... 5 工 单 列 表... 5 搜 索 工 单... 5 工 单 详 情... 6 创 建 工 单... 9 设 备 管 理 巡 检 计 划 查 询 详 情 销 售 管

珠江钢琴股东大会

导 数 和 微 分 的 概 念 导 数 的 几 何 意 义 和 物 理 意 义 函 数 的 可 导 性 与 连 续 性 之 间 的 关 系 平 面 曲 线 的 切 线 和 法 线 导 数 和 微 分 的 四 则 运 算 基 本 初 等 函 数 的 导 数 复 合 函 数 反 函 数 隐 函 数 以

证券代码: 证券简称:长城电脑 公告编号:

3 月 30 日 在 中 国 证 券 报 上 海 证 券 报 证 券 时 报 证 券 日 报 和 上 海 证 券 交 易 所 网 站 上 发 出 召 开 本 次 股 东 大 会 公 告, 该 公 告 中 载 明 了 召 开 股 东 大 会 的 日 期 网 络 投 票 的 方 式 时 间 以 及 审

何 秋 琳 张 立 春 视 觉 学 习 研 究 进 展 视 觉 注 意 视 觉 感 知

目 录 一 激 活 账 号... 2 二 忘 记 密 码 后 如 何 找 回 密 码?... 3 三 如 何 管 理 学 校 信 息 及 球 队 学 生 教 师 等 信 息... 6 四 如 何 发 布 本 校 校 园 文 化? 五 如 何 向 教 师 发 送 通 知? 六

( ) 信 号 与 系 统 Ⅰ 学 科 基 础 必 修 课 教 周 2016 年 06 月 13 日 (08:00-09:35) ( )

<4D F736F F D20B9D8D3DAB0BABBAAA3A8C9CFBAA3A3A9D7D4B6AFBBAFB9A4B3CCB9C9B7DDD3D0CFDEB9ABCBBE C4EAC4EAB6C8B9C9B6ABB4F3BBE1B7A8C2C9D2E2BCFBCAE92E646F6378>

2006年顺德区高中阶段学校招生录取分数线

类 似 地, 又 可 定 义 变 下 限 的 定 积 分 : ( ). 与 ψ 统 称 为 变 限 积 分. f ( ) d f ( t) dt,, 注 在 变 限 积 分 (1) 与 () 中, 不 可 再 把 积 分 变 量 写 成 的 形 式 ( 例 如 ) 以 免 与 积 分 上 下 限 的

18 上 报 该 学 期 新 生 数 据 至 阳 光 平 台 第 一 学 期 第 四 周 至 第 六 周 19 督 促 学 习 中 心 提 交 新 增 专 业 申 请 第 一 学 期 第 四 周 至 第 八 周 20 编 制 全 国 网 络 统 考 十 二 月 批 次 考 前 模 拟 题 第 一 学

评 委 : 李 炎 斌 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

0 年 上 半 年 评 价 与 考 核 细 则 序 号 部 门 要 素 值 考 核 内 容 考 核 方 式 考 核 标 准 考 核 ( 扣 原 因 ) 考 评 得 3 安 全 生 产 目 30 无 同 等 责 任 以 上 道 路 交 通 亡 人 事 故 无 轻 伤 责 任 事 故 无 重 大 质 量

世华财讯模拟操作手册

<4D F736F F D C4EAB9A4B3CCCBB6CABFCAFDD1A7D7A8D2B5BFCEBFBCCAD4B4F3B8D9D3EBD2AAC7F3>

¹ º ¹ º 农 业 流 动 人 口 是 指 户 口 性 质 为 农 业 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个 月 及 以 上 的 流 动 人 口 非 农 流 动 人 口 是 指 户 口 性 质 为 非 农 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个

工 程 勘 察 资 质 标 准 根 据 建 设 工 程 勘 察 设 计 管 理 条 例 和 建 设 工 程 勘 察 设 计 资 质 管 理 规 定, 制 定 本 标 准 一 总 则 ( 一 ) 本 标 准 包 括 工 程 勘 察 相 应 专 业 类 型 主 要 专 业 技 术 人 员 配 备 技 术


登录、注册功能的测试用例设计.doc

全国教师资格认定管理信息系统

用节点法和网孔法进行电路分析

ETF、分级基金规模、份额变化统计

Template BR_Rec_2005.dot

目 录 一 系 统 访 问... 1 二 门 户 首 页 申 报 用 户 审 核 用 户... 2 三 系 统 登 录 用 户 名 密 码 登 录 新 用 户 注 册 用 户 登 录 已 注 册 用

上证指数

合 并 计 算 配 售 对 象 持 有 多 个 证 券 账 户 的, 多 个 证 券 账 户 市 值 合 并 计 算 确 认 多 个 证 券 账 户 为 同 一 配 售 对 象 持 有 的 原 则 为 证 券 账 户 注 册 资 料 中 的 账 户 持 有 人 名 称 有 效 身 份 证 明 文 件

4 进 入 交 互 区 设 置 的 组 件 管 理, 在 组 件 管 理 中, 教 师 可 以 选 择 课 程 空 间 中 的 所 有 组 件, 并 通 过 点 击 启 用 或 不 启 用 选 定 组 件 在 课 程 空 间 中 的 显 示 5 进 入 工 作 室 管 理 的 工 作 室 首 页,

生产支援功能 使用说明书(IP-110 篇)

附 件 : 上 海 市 建 筑 施 工 企 业 施 工 现 场 项 目 管 理 机 构 关 键 岗 位 人 员 配 备 指 南 二 一 四 年 九 月 十 一 日 2

,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,, ( ),,,, (, : ),, :,

评 委 : 徐 岩 宇 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

<443A5C6D B5C30312EB9A4D7F7CEC4B5B55C30322EBACFCDACCEC4B5B55C C30342EC8CBC9E7CCFC5C31332ECFEEC4BFC5E0D1B55C E30385C322EB2D9D7F7CAD6B2E12E646F63>

随着执业中医师资格考试制度的不断完善,本着为我校中医学专业认证服务的目的,本文通过对我校中医类毕业生参加2012年和2013年的中医执业医师考试成绩及通过率、掌握率进行分析,并与全国的平均水平进行差异比较分析,以此了解我校执业中医师考试的现状,进而反映我校中医类课程总体教学水平,发现考核知识模块教学中存在的不足,反馈给相关学院和教学管理部门,以此提高教学和管理水平。

全国建筑市场注册执业人员不良行为记录认定标准(试行).doc

一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创 新 能 力, 综 合 运 用 所 学 知 识 发 现 问 题, 分 析 问 题 和 解 决

Microsoft Word - 第3章.doc

Microsoft Word - 文件汇编.doc

定 位 和 描 述 : 程 序 设 计 / 办 公 软 件 高 级 应 用 级 考 核 内 容 包 括 计 算 机 语 言 与 基 础 程 序 设 计 能 力, 要 求 参 试 者 掌 握 一 门 计 算 机 语 言, 可 选 类 别 有 高 级 语 言 程 序 设 计 类 数 据 库 编 程 类

抗 战 时 期 国 民 政 府 的 银 行 监 理 体 制 探 析 % # % % % ) % % # # + #, ) +, % % % % % % % %

采 取 行 动 的 机 会 90% 开 拓 成 功 的 道 路 2

( 二 ) 现 行 统 一 高 考 制 度 不 利 于 培 养 人 的 创 新 精 神,,,,,,,,,,,,, [ ],,,,,,,,,,, :, ;,,,,,,? ( 三 ) 现 行 统 一 高 考 制 度 不 利 于 全 体 学 生 都 获 得 全 面 发 展,, [ ],,,,,,,,,,,

精 勤 求 学 自 强 不 息 Born to win! 解 析 : 由 极 限 的 保 号 性 知 存 在 U ( a) 当 a 时 f ( ) f ( a) 故 f ( ) 在 点 a 不 取 极 值 f ( ) f ( a) f ( ) f ( a) lim lim a a a a ( a)

第二讲 数列

现 场 会 议 时 间 为 :2016 年 5 月 19 日 网 络 投 票 时 间 为 :2016 年 5 月 18 日 年 5 月 19 日 其 中 通 过 深 圳 证 券 交 易 所 交 易 系 统 进 行 网 络 投 票 的 时 间 为 2016 年 5 月 19 日 9:30-

操作手册

Cybozu Garoon 3 管理员手册

目 录 第 一 章 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 硬 件 使 用 介 绍... 3 第 二 章 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 管 理 员 端 功 能 使 用 介 绍 系 统 管 理 员 登 陆 班

第 期 李 伟 等 用 方 法 对 中 国 历 史 气 温 数 据 插 值 可 行 性 讨 论

第 六 章 债 券 股 票 价 值 评 估 1 考 点 一 : 债 券 价 值 的 影 响 因 素 2

一 从 分 封 制 到 郡 县 制 一 从 打 虎 亭 汉 墓 说 起

一 六 年 级 下 册 教 科 书 总 体 说 明 ( 一 ) 教 学 内 容 本 册 教 科 书 一 共 安 排 了 5 个 教 学 单 元, 其 中 前 4 个 单 元 为 新 知 识, 第 五 单 元 是 对 整 个 小 学 阶 段 所 学 数 学 知 识 系 统 的 整 理 和 复 习

Microsoft Word - 资料分析练习题09.doc

微软用户

公 开 刊 物 须 有 国 内 统 一 刊 (CN), 发 表 文 章 的 刊 物 需 要 在 国 家 新 闻 出 版 广 电 总 局 ( 办 事 服 务 便 民 查 询 新 闻 出 版 机 构 查 询 ) 上 能 够 查 到 刊 凡 在 有 中 国 标 准 书 公 开

境 外 上 市 外 资 股 股 东 持 有 股 份 总 数 (H 股 ) 489,157,907 3 出 席 会 议 的 股 东 所 持 有 表 决 权 股 份 数 占 公 司 有 表 决 权 股 份 总 数 的 其 中 :A 股 股 东 持 股 占 股 份 总 数 的

马 克 思 主 义 公 正 观 的 基 本 向 度 及 方 法 论 原 则!! # #

第二部分 阅读理解(Part II Reabing Comprehension)

Transcription:

幻 灯 片 1 从 多 表 中 显 示 数 据 Copyright Oracle Corporation, 2001. All rights reserved. 进 度 表 : 时 间 主 题 55 分 钟 讲 演 55 分 钟 练 习 110 分 钟 总 共

幻 灯 片 2 目 标 完 成 本 课 后, 您 应 当 能 够 执 行 下 列 操 作 : 写 SELECT 语 句 使 用 等 值 和 非 等 值 连 接 从 多 个 表 中 访 问 数 据 使 用 外 连 接 查 看 不 满 足 连 接 条 件 的 数 据 使 用 一 个 自 连 接, 连 接 一 个 表 到 它 自 己 4-2 Copyright Oracle Corporation, 2001. All rights reserved. 课 程 目 标 本 课 学 习 怎 样 从 多 个 表 中 获 得 数 据

幻 灯 片 3 从 多 表 中 获 得 数 据 EMPLOYEES DEPARTMENTS 4-3 Copyright Oracle Corporation, 2001. All rights reserved. 来 自 多 表 的 数 据 有 时 你 需 要 使 用 来 自 多 表 的 数 据 在 幻 灯 片 中, 报 告 显 示 了 来 自 单 独 的 两 个 表 的 数 据 数 据 Employee ID 在 EMPLOYEES 表 中 Department ID 在 EMPLOYEES 和 DEPARTMENTS 表 中 都 有 Location IDs 在 DEPARTMENTS 表 中 为 了 生 成 报 告, 你 需 要 连 接 EMPLOYEES 和 DEPARTMENTS 表, 并 从 两 个 表 中 访 问

幻 灯 片 4 笛 卡 尔 乘 积 笛 卡 尔 乘 积 的 形 成, 当 : 一 个 连 接 条 件 被 遗 漏 时 一 个 连 接 条 件 不 正 确 时 在 第 一 个 表 中 的 所 有 行 被 连 接 到 第 二 个 表 的 所 有 行 时 为 了 避 免 笛 卡 尔 乘 积 的 形 成, 在 WHERE 子 句 中 应 当 总 是 包 含 正 确 的 连 接 条 件 4-4 Copyright Oracle Corporation, 2001. All rights reserved. 笛 卡 尔 乘 积 当 一 个 连 接 条 件 无 效 或 被 遗 漏 时, 其 结 果 是 一 个 笛 卡 尔 乘 积 (Cartesian product), 其 中 所 有 行 的 组 合 都 被 显 示 第 一 个 表 中 的 所 有 行 连 接 到 第 二 个 表 中 的 所 有 行 一 个 笛 卡 尔 乘 积 会 产 生 大 量 的 行, 其 结 果 没 有 什 么 用 你 应 该 在 WHERE 子 句 中 始 终 包 含 一 个 有 效 的 连 接 条 件, 除 非 你 有 特 殊 的 需 求, 需 要 从 所 有 表 中 组 合 所 有 的 行 对 于 一 些 测 试 笛 卡 尔 乘 积 是 有 用 的, 例 如 你 需 要 产 生 大 量 的 行 来 模 拟 一 个 相 当 大 的 数 据 量

幻 灯 片 5 笛 卡 尔 乘 积 的 产 生 EMPLOYEES (20 行 ) DEPARTMENTS (8 行 ) 笛 卡 尔 乘 积 : 20x8=160 行 4-5 Copyright Oracle Corporation, 2001. All rights reserved. 笛 卡 尔 乘 积 ( 续 ) 如 果 连 接 条 件 被 遗 漏, 就 会 产 生 笛 卡 尔 乘 积 幻 灯 片 中 的 例 子 从 EMPLOYEES 和 DEPARTMENTS 表 中 显 示 雇 员 的 名 字 和 部 门 名 字 因 为 无 WHERE 子 句 被 指 定, EMPLOYEES 表 中 所 有 的 行 (20 行 ) 被 与 DEPARTMENTS 表 中 的 所 有 行 (8 行 ) 连 接, 因 此 产 生 160 行 的 输 出 SELECT last_name, department_name dept_name FROM employees, departments;

幻 灯 片 6 连 接 的 类 型 Oracle 所 有 的 连 接 (8i 以 前 ): Equijoin 等 值 Non-equijoin 非 等 值 Outer join 外 连 接 Self join 自 连 接 SQL: 1999 适 应 连 接 : Cross joins 交 叉 连 接 Natural joins 自 然 连 接 Using clause 使 用 子 句 Full or two sided outer joins 全 连 接 或 双 向 外 连 接 Arbitrary join conditions for outer joins 对 于 外 连 接 的 任 意 连 接 条 件 4-6 Copyright Oracle Corporation, 2001. All rights reserved. 连 接 的 类 型 Oracle9i 数 据 库 提 供 SQL: 1999 兼 容 的 连 接 语 法 在 9i 发 布 以 前, 连 接 语 法 不 同 于 ANSI 标 准 新 的 SQL: 1999 兼 容 连 接 语 法 不 提 供 任 何 对 Oracle 以 前 发 布 的 版 本 中 私 有 连 接 语 法 性 能 的 改 进

幻 灯 片 7 用 Oracle 语 法 连 接 表 使 用 一 个 连 接 从 多 个 表 中 查 询 数 据 SELECT FROM WHERE table1.column, table2.column table1, table2 table1.column1 = table2.column2; 在 WHERE 子 句 中 写 连 接 条 件 当 多 个 表 中 有 相 同 的 列 名 时, 将 表 名 作 为 列 名 的 前 缀 4-7 Copyright Oracle Corporation, 2001. All rights reserved. 定 义 连 接 当 数 据 从 多 表 中 查 询 时, 要 使 用 连 接 (join) 条 件 一 个 表 中 的 行 按 照 存 在 于 相 应 列 中 的 公 值 被 连 接 到 另 一 个 表 中 的 行, 即, 通 常 所 说 的 主 键 和 外 键 列 从 多 个 表 中 显 示 数 据, 在 WHERE 子 句 中 写 一 个 简 单 的 连 接 条 件 在 语 法 中 : table1.column 指 示 获 取 数 据 的 表 和 列 table1.column1 = 是 连 接 表 的 条 件 table2.column2 原 则 在 写 一 个 连 接 表 的 SELECT 语 句 时, 在 列 名 前 面 用 表 名 可 以 使 语 义 清 楚, 并 且 加 快 数 据 库 访 问 如 果 相 同 的 列 名 出 现 在 多 个 表 中, 列 名 必 须 前 缀 表 名 为 了 连 接 n 个 表 在 一 起, 你 最 少 需 要 n-1 个 连 接 条 件 例 如, 为 了 连 接 4 个 表, 最 少 需 要 3 个 连 接 条 件 如 果 表 中 有 一 个 连 接 主 键, 该 规 则 可 能 不 适 用, 其 中 可 能 有 多 行 用 来 唯 一 地 标 识 每 一 行 更 多 信 息, 见 Oracle9i SQL Reference, SELECT

幻 灯 片 8 什 么 是 等 值 连 接? EMPLOYEES DEPARTMENTS 外 键 FK 主 键 PK 4-8 Copyright Oracle Corporation, 2001. All rights reserved. 等 值 连 接 为 了 确 定 一 个 雇 员 的 部 门 名, 需 要 比 较 EMPLOYEES 表 中 的 DEPARTMENT_ID 列 与 DEPARTMENTS 表 中 的 DEPARTMENT_ID 列 的 值 在 EMPLOYEES 和 DEPARTMENTS 表 之 间 的 关 系 是 一 个 相 等 (equijoin) 关 系, 即, 两 个 表 中 DEPARTMENT_ID 列 的 值 必 须 相 等 通 常, 这 种 连 接 类 型 包 括 主 键 和 外 键 注 : 等 值 连 接 也 被 称 为 简 单 连 接 (simple joins) 或 内 连 接 (inner joins) 教 师 注 释 解 释 抉 择 矩 阵 (decision matrix) 用 于 简 化 写 连 接 的 使 用, 例 如, 如 果 你 想 显 示 同 一 个 部 门 中 所 有 姓 Goyal 的 雇 员 的 名 字 和 部 门 号, 可 以 写 出 下 面 的 决 策 矩 阵 : 显 示 列 源 表 条 件 last_name employees last_name='goyal' department_name departments employees.department_id = departments.department_id 现 在 看 着 上 面 的 抉 择 矩 阵,SQL 语 句 可 以 容 易 地 写 出 第 一 列 给 出 SELECT 语 句 的 字 段 列 表, 第 二 列 给 出 FROM 子 句, 第 三 列 给 出 WHERE 子 句 的 条 件

幻 灯 片 9 用 等 值 连 接 返 回 记 录 SELECT employees.employee_id, employees.last_name, employees.department_id, departments.department_id, departments.location_id FROM employees, departments WHERE employees.department_id = departments.department_id; 4-9 Copyright Oracle Corporation, 2001. All rights reserved. 用 等 值 连 接 返 回 记 录 在 幻 灯 片 的 例 子 中 : SELECT 子 句 指 定 要 返 回 的 列 名 : employee last name employee number 和 department number, 这 些 是 EMPLOYEES 表 中 的 列 department number department name 和 location ID, 这 些 是 DEPARTMENTS 表 中 的 列 FROM 子 句 指 定 数 据 库 必 须 访 问 的 两 个 表 : EMPLOYEES 表 DEPARTMENTS 表 WHERE 子 句 指 定 表 怎 样 被 连 接 : EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID 因 为 DEPARTMENT_ID 列 是 两 个 表 的 公 共 列, 它 必 须 用 表 名 做 前 缀 以 避 免 混 淆

幻 灯 片 10 使 用 AND 操 作 符 附 加 搜 索 条 件 EMPLOYEES DEPARTMENTS 4-10 Copyright Oracle Corporation, 2001. All rights reserved. 添 加 查 询 条 件 除 连 接 之 外, 你 可 能 还 要 求 用 WHERE 子 句 在 连 接 中 限 制 一 个 或 多 个 表 中 的 行 例 如, 为 了 显 示 雇 员 Matos 的 部 门 号 和 部 门 名, 你 需 要 添 加 条 件 到 WHERE 子 句 中 SELECT last_name, employees.department_id, department_name FROM employees, departments WHERE employees.department_id = departments.department_id AND last_name = 'Matos';

幻 灯 片 11 限 制 不 明 确 的 列 名 在 多 表 中 使 用 表 前 缀 限 制 修 饰 列 名 用 表 前 缀 改 善 性 能 用 列 别 名 区 别 有 相 同 名 称, 但 在 不 同 表 中 的 列 4-11 Copyright Oracle Corporation, 2001. All rights reserved. 限 制 不 明 确 的 列 名 你 需 要 在 WHERE 子 句 中 用 表 的 名 字 限 制 列 的 名 字 以 避 免 含 糊 不 清 没 有 表 前 缀, DEPARTMENT_ID 列 可 能 来 自 DEPARTMENTS 表, 也 可 能 来 自 EMPLOYEES 表, 这 种 情 况 下 需 要 添 加 表 前 缀 来 执 行 查 询 如 果 列 名 在 两 个 表 之 间 不 相 同, 就 不 需 要 限 定 列 但 是, 使 用 表 前 缀 可 以 改 善 性 能, 因 为 你 确 切 地 告 诉 Oracle 服 务 器 在 那 里 找 到 列 必 须 限 定 不 明 确 的 列 名 也 适 用 于 在 其 它 子 句 中 可 能 引 起 混 淆 的 那 些 列, 例 如 SELECT 子 句 或 ORDER BY 子 句

幻 灯 片 12 使 用 表 别 名 使 用 表 别 名 简 化 查 询 使 用 表 别 名 改 善 性 能 SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id FROM employees e, departments d WHERE e.department_id = d.department_id; 4-12 Copyright Oracle Corporation, 2001. All rights reserved. 表 别 名 用 表 名 限 制 列 名 可 能 是 非 常 耗 时 的, 特 别 是 当 表 名 字 很 长 时, 你 可 以 使 用 表 别 名 代 替 表 名 就 象 列 别 名 给 列 另 一 个 名 字 一 样, 表 别 名 给 表 另 一 个 名 字 表 别 名 有 助 于 保 持 SQL 代 码 较 小, 因 此 使 用 的 存 储 器 也 少 注 意 在 例 子 中 表 的 FROM 子 句 中 怎 样 定 义 表 别 名 表 名 完 全 指 定, 然 后 跟 着 别 名 EMPLOYEES 表 被 给 予 别 名 e,departments 表 被 给 予 别 名 d 原 则 表 别 名 最 多 可 以 有 30 个 字 符, 但 短 一 些 更 好 如 果 在 FROM 子 句 中 表 别 名 被 用 于 指 定 的 表, 那 么 在 整 个 SELECT 语 句 中 都 要 使 用 表 别 名 表 别 名 应 该 是 有 意 义 的 表 别 名 只 对 当 前 的 SELECT 语 句 有 效

幻 灯 片 13 EMPLOYEES 多 于 两 个 表 的 连 接 DEPARTMENTS LOCATIONS 为 了 连 接 n 个 表, 你 最 少 需 要 n-1 个 连 接 条 件 例 如, 为 了 连 接 3 个 表, 最 少 需 要 两 个 连 接 4-13 Copyright Oracle Corporation, 2001. All rights reserved. 添 加 查 询 条 件 有 时 你 可 能 需 要 连 接 两 个 以 上 的 表 例 如, 为 了 显 示 每 个 雇 员 的 last name department name 和 city, 你 必 须 连 接 EMPLOYEES DEPARTMENTS 和 LOCATIONS 表 SELECT e.last_name, d.department_name, l.city FROM employees e, departments d, locations l WHERE e.department_id = d.department_id AND d.location_id = l.location_id;

幻 灯 片 14 非 等 值 连 接 EMPLOYEES JOB_GRADES 在 EMPLOYEES 表 中 的 工 资 必 须 在 JOB_GRADES 表 中 的 最 低 工 资 和 最 高 工 资 之 间 4-14 Copyright Oracle Corporation, 2001. All rights reserved. 非 等 值 连 接 一 个 非 等 值 连 接 是 一 种 不 同 于 等 值 操 作 的 连 接 条 件 EMPLOYEES 表 和 JOB_GRADES A 表 之 间 的 关 系 有 一 个 非 等 值 连 接 例 子 在 两 个 表 之 间 的 关 系 是 EMPLOYEES 表 中 的 SALARY 列 必 须 是 JOB_GRADES 表 的 LOWEST_SALARY 和 HIGHEST_SALARY 列 之 间 的 值 使 用 不 同 于 等 于 (=) 的 操 作 符 获 得 关 系

幻 灯 片 15 用 非 等 值 连 接 返 回 记 录 SELECT e.last_name, e.salary, j.grade_level FROM employees e, job_grades j WHERE e.salary BETWEEN j.lowest_sal AND j.highest_sal; 4-15 Copyright Oracle Corporation, 2001. All rights reserved. 非 等 值 连 接 ( 续 ) 幻 灯 片 的 例 子 创 建 一 个 非 等 值 连 接 来 求 一 个 雇 员 的 薪 水 级 别 薪 水 必 须 在 任 何 一 对 最 低 和 最 高 薪 水 范 围 内 要 注 意 的 是 当 查 询 被 执 行 时, 所 有 雇 员 只 出 现 一 次 是 重 要 的 没 有 雇 员 在 列 表 中 重 复 对 此 有 两 个 理 由 : 在 工 作 等 级 表 中, 没 有 行 是 交 迭 的, 即, 一 个 雇 员 的 薪 水 值 只 能 位 于 薪 水 级 别 表 的 最 低 和 最 高 薪 水 值 之 间 所 有 雇 员 的 薪 水 位 于 由 工 作 级 别 表 提 供 的 限 制 中 即, 没 有 雇 员 的 收 入 少 于 LOWEST_SAL 列 所 包 含 的 最 低 值, 或 高 于 HIGHEST_SAL 列 所 包 含 的 最 高 值 注 : 其 它 条 件, 例 如 <= 和 >= 可 以 被 使 用, 但 BETWEEN 是 最 简 单 的 在 使 用 BETWEEN 时 先 指 定 最 低 值 后 指 定 最 高 值 在 幻 灯 片 的 例 子 中 指 定 表 别 名 是 因 为 性 能 的 原 因, 而 不 是 因 为 可 能 产 生 含 糊 教 师 注 释 解 释 BETWEEN AND 实 际 上 被 Oeacle 服 务 器 转 换 为 一 对 AND 条 件 (a >= 最 小 值 ) and (a <= 最 大 值 ),IN ( ) 被 Oracle 服 务 器 转 换 为 一 组 OR 条 件 (a = value1 OR a = value2 OR a = value3 ) 所 以 用 BETWEEN AND IN() 并 没 有 性 能 上 的 提 高 ; 好 处 是 逻 辑 上 简 单

幻 灯 片 16 外 连 接 DEPARTMENTS EMPLOYEES 在 部 门 190 中 无 雇 员 4-16 Copyright Oracle Corporation, 2001. All rights reserved. 用 外 连 接 返 回 不 直 接 匹 配 的 记 录 如 果 一 个 行 不 满 足 连 接 条 件, 该 行 将 不 出 现 在 查 询 结 果 中 例 如, 在 EMPLOYEES 和 DEPARTMENTS 表 的 等 值 连 接 条 件 中, 雇 员 Grant 不 出 现, 因 为 在 EMPLOYEES 表 中 没 有 她 的 department ID 记 录 在 结 果 集 中 有 20 个 雇 员, 你 只 看 得 见 19 个 记 录 SELECT e.last_name, e.department_id, d.department_name FROM employees e, departments d WHERE e.department_id = d.department_id;

幻 灯 片 17 外 连 接 语 法 你 可 以 用 一 个 外 连 接 查 看 那 些 不 满 足 连 接 条 件 的 行 外 连 接 运 算 符 是 加 号 (+) SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column(+) = table2.column; SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column = table2.column(+); 4-17 Copyright Oracle Corporation, 2001. All rights reserved. 用 外 连 接 返 回 不 直 接 匹 配 的 记 录 如 果 在 连 接 条 件 中 使 用 外 连 接 操 作, 缺 少 的 行 就 可 以 被 返 回 操 作 符 是 一 个 在 圆 括 号 中 的 加 号 (+), 它 被 放 置 在 连 接 的 缺 少 信 息 的 一 侧 为 了 使 来 自 不 完 善 表 的 一 行 或 多 行 能 够 被 连 接, 该 操 作 符 有 产 生 一 个 或 多 个 空 行 的 作 用 在 语 法 中 : table1.column = 是 连 接 表 在 一 起 的 条 件 table2.column (+) 是 外 连 接 符 号, 它 可 以 放 在 WHERE 子 句 的 条 件 的 任 一 边, 但 不 能 两 边 都 放 ( 跟 着 没 有 匹 配 行 的 表 中 列 的 名 字 放 置 外 连 接 符 号 )

幻 灯 片 18 使 用 外 连 接 SELECT e.last_name, e.department_id, d.department_name FROM employees e, departments d WHERE e.department_id(+) = d.department_id ; 4-18 Copyright Oracle Corporation, 2001. All rights reserved. 使 用 外 连 接 返 回 不 直 接 匹 配 的 记 录 ( 续 ) 幻 灯 片 的 例 子 显 示 雇 员 的 last name department ID 和 department names Contracting 部 门 还 没 有 雇 员 空 值 被 显 示 在 输 出 中 外 连 接 约 束 外 连 接 操 作 符 只 能 出 现 在 表 达 式 一 侧 缺 少 信 息 的 一 侧 它 从 一 个 表 中 返 回 那 些 在 另 一 个 表 中 没 有 直 接 匹 配 的 行 包 括 一 个 外 连 接 的 条 件 不 能 用 IN 操 作 符 或 连 接 到 另 一 个 用 OR 操 作 符 的 条 件

幻 灯 片 19 自 连 接 EMPLOYEES ( 工 人 ) EMPLOYEES ( 经 理 ) 在 WORKER 表 中 的 MANAGER_ID 等 于 MANAGER 表 中 的 EMPLOYEE_ID 4-19 Copyright Oracle Corporation, 2001. All rights reserved. 连 接 一 个 表 到 它 自 己 有 时 你 需 要 连 接 一 个 表 到 它 自 己 为 了 找 到 每 个 雇 员 的 经 理 的 名 字, 你 需 要 连 接 EMPLOYEES 表 到 它 自 己, 或 执 行 一 个 自 连 接 例 如, 为 了 找 到 Whalen 的 经 理 的 名 字, 你 需 要 : 在 EMPLOYEES 的 LAST_NAME 列 找 到 Whalen 在 MANAGER_ID 列 找 到 Whalen 的 经 理 号 Whalen 的 经 理 号 是 101 用 EMPLOYEE_ID 101 在 LAST_NAME 列 找 到 经 理 的 名 字 Kochhar 的 雇 员 号 是 101, 所 以 Kochhar 是 Whalen 的 经 理 在 这 个 过 程 中, 你 要 查 找 表 两 次, 第 一 次 你 在 LAST_NAME 列 中 查 找 Whalen 并 且 在 找 到 对 应 的 MANAGER_ID 列 的 值 101 第 二 次 你 在 EMPLOYEE_ID 列 查 找 101 并 且 在 LAST_NAME 列 找 到 Kochhar 教 师 注 释 从 EMPLOYEES 表 显 示 数 据 并 且 指 出 每 个 经 理 同 时 也 是 雇 员

幻 灯 片 20 连 接 一 个 表 到 它 本 身 SELECT worker.last_name ' works for ' manager.last_name FROM employees worker, employees manager WHERE worker.manager_id = manager.employee_id ; 4-20 Copyright Oracle Corporation, 2001. All rights reserved. 连 接 一 个 表 到 它 自 己 ( 续 ) 幻 灯 片 的 例 子 连 接 EMPLOYEES 表 到 它 自 己 为 了 在 FROM 子 句 中 模 拟 两 个 表, 对 于 相 同 的 表 EMPLOYEES, 用 两 个 别 名, 分 别 为 w 和 m 在 该 例 中,WHERE 子 句 包 含 的 连 接 意 味 着 一 个 工 人 的 经 理 号 匹 配 该 经 理 的 雇 员 号 教 师 注 释 给 学 生 指 出 : 在 幻 灯 片 中, 查 询 结 果 中 的 列 标 题 似 乎 不 重 要 应 该 用 一 个 有 意 义 的 列 别 名 在 输 出 中 只 有 19 行, 但 在 EMPLOYEES 表 中 有 20 行 产 生 这 个 结 果 是 因 为 雇 员 King, 他 是 总 经 理, 他 上 面 没 有 经 理

幻 灯 片 21 练 习 4, 第 一 部 分 : 概 览 这 部 分 练 习 包 括 用 Oracle 语 法 写 将 表 连 接 在 一 起 的 查 询 4-21 Copyright Oracle Corporation, 2001. All rights reserved. 练 习 4, 第 一 部 分 该 练 习 设 计 了 多 种 到 目 前 为 止 在 课 程 中 学 过 的 Oracle 的 将 连 接 表 在 一 起 的 语 法 的 习 题 完 成 本 课 后 面 的 练 习 1-4

幻 灯 片 22 用 SQL 连 接 表 : 1999 语 法 用 一 个 连 接 从 多 个 表 中 查 询 数 据 SELECT table1.column, table2.column FROM table1 [CROSS JOIN table2] [NATURAL JOIN table2] [JOIN table2 USING (column_name)] [JOIN table2 ON(table1.column_name = table2.column_name)] [LEFT RIGHT FULL OUTER JOIN table2 ON ON (table1.column_name = table2.column_name)]; 4-22 Copyright Oracle Corporation, 2001. All rights reserved. 定 义 连 接 用 SQL: 1999 语 法, 你 可 以 获 得 与 用 前 面 讲 述 的 Oracle 语 法 同 样 的 结 果 在 语 法 中 : table1.column 表 示 要 从 其 中 返 回 数 据 的 表 和 列 CROSS JOIN 从 两 个 表 中 返 回 笛 卡 尔 乘 积 NATURAL JOIN 基 于 相 同 的 列 名 连 接 两 个 表 JOIN table USING column_name JOIN table ON 执 行 一 个 基 于 列 名 的 等 值 连 接 table1.column_name 执 行 一 个 基 于 在 ON 子 句 中 的 条 件 的 等 值 连 接 = table2.column_name LEFT/RIGHT/FULL OUTER 更 多 信 息, 见 Oracle9i SQL Reference, SELECT

幻 灯 片 23 创 建 交 叉 连 接 CROSS JOIN 子 句 导 致 两 个 表 的 交 叉 乘 积 该 连 接 和 两 个 表 之 间 的 笛 卡 尔 乘 积 是 一 样 的 SELECT last_name, department_name FROM employees CROSS JOIN departments ; 4-23 Copyright Oracle Corporation, 2001. All rights reserved. 创 建 交 叉 连 接 幻 灯 片 中 例 子 给 出 与 下 面 语 句 相 同 的 结 果 : SELECT last_name, department_name FROM employees, departments;

幻 灯 片 24 创 建 自 然 连 接 NATURAL JOIN 子 句 基 于 两 个 表 之 间 有 相 同 名 字 的 所 有 列 它 从 两 个 表 中 选 择 在 所 有 的 匹 配 列 中 有 相 等 值 的 行 如 果 有 相 同 名 字 的 列 的 数 据 类 型 不 同, 返 回 一 个 错 误 4-24 Copyright Oracle Corporation, 2001. All rights reserved. 创 建 自 然 连 接 在 以 前 发 布 的 Oracle 中 做 一 个 在 相 应 表 中 无 明 确 指 定 的 列 的 连 接 是 不 可 能 的 在 Oracle9i 中, 让 连 接 完 全 自 动 基 于 有 匹 配 数 据 类 型 和 名 字 的 两 个 表 中 的 列 是 可 能 的, 使 用 NATURAL JOIN 关 键 字 注 : 连 接 只 能 发 生 在 两 个 表 中 有 相 同 名 字 和 数 据 类 型 的 列 上 如 果 列 有 相 同 的 名 字, 但 数 据 类 型 不 同,NATURAL JOIN 语 法 会 引 起 错 误

幻 灯 片 25 用 自 然 连 接 返 回 记 录 SELECT department_id, department_name, location_id, city FROM departments NATURAL JOIN locations ; 4-25 Copyright Oracle Corporation, 2001. All rights reserved. 用 自 然 连 接 返 回 记 录 在 幻 灯 片 的 例 子 中,LOCATIONS 表 被 用 LOCATION_ID 列 连 接 到 DEPARTMENT 表, 这 是 在 两 个 表 中 唯 一 名 字 相 同 的 列 如 果 存 在 其 它 的 公 共 列, 连 接 会 全 部 使 用 他 们 等 值 连 接 自 然 连 接 也 可 以 被 写 为 等 值 连 接 : SELECT department_id, department_name, departments.location_id, city FROM departments, locations WHERE departments.location_id = locations.location_id; 带 WHERE 子 句 的 自 然 连 接 可 以 用 WHERE 子 句 实 现 在 一 个 自 然 连 接 中 添 加 约 束 下 面 的 例 子 限 制 部 门 号 department ID 等 于 20 或 50 那 些 输 出 的 行 SELECT department_id, department_name, location_id, city FROM departments NATURAL JOIN locations WHERE department_id IN (20, 50);

幻 灯 片 26 用 USING 子 句 创 建 连 接 如 果 一 些 列 有 相 同 的 名 字, 但 数 据 类 型 不 匹 配, NATURAL JOIN 子 句 能 够 用 USING 子 句 修 改 以 指 定 将 被 用 于 一 个 等 值 连 接 的 列 当 有 多 个 列 匹 配 时, 用 USING 子 句 匹 配 唯 一 的 列 在 引 用 列 不 要 使 用 表 名 或 者 别 名 NATURAL JOIN 和 USING 子 句 是 相 互 排 斥 的 4-26 Copyright Oracle Corporation, 2001. All rights reserved. USING 子 句 自 然 连 接 (Natural joins) 用 具 有 相 匹 配 的 名 字 和 数 据 类 型 的 所 有 列 来 连 接 表 USING 子 句 可 以 被 用 来 指 定 那 些 将 被 用 语 一 个 等 值 连 接 的 列 中 的 唯 一 列 在 USING 子 句 中 引 用 的 列 不 应 该 在 SQL 语 句 的 任 何 地 方 用 表 名 或 表 别 名 限 制 ( 前 缀 ) 例 如, 该 语 句 是 有 效 的 : SELECT l.city, d.department_name FROM locations l JOIN departments d USING (location_id) WHERE location_id = 1400; 该 语 句 是 无 效 的, 因 为 LOCATION_ID 在 WHERE 子 句 中 被 限 制 了 : SELECT l.city, d.department_name FROM locations l JOIN departments d USING (location_id) WHERE d.location_id = 1400; ORA-25154: column part of USING clause cannot have qualifier 同 样 的 限 制 也 用 于 NATURAL 连 接 因 此, 那 些 在 两 个 表 中 有 相 同 名 字 的 列 不 能 没 有 任 何 限 定 词

幻 灯 片 27 用 USING 子 句 返 回 记 录 SELECT e.employee_id, e.last_name, d.location_id FROM employees e JOIN departments d USING (department_id) ; 4-27 Copyright Oracle Corporation, 2001. All rights reserved. USING 子 句 ( 续 ) 该 例 子 示 范 连 接 EMPLOYEES 和 DEPARTMENTS 表 中 的 DEPARTMENT_ID 列, 并 以 此 显 示 雇 员 工 作 的 场 所 编 号 该 例 子 也 写 成 一 个 等 值 连 接 : SELECT employee_id, last_name, employees.department_id, location_id FROM employees, departments WHERE employees.department_id = departments.department_id;

幻 灯 片 28 用 ON 子 句 创 建 连 接 对 于 自 然 连 接 的 连 接 条 件, 基 本 上 是 带 有 相 同 名 字 的 所 有 列 的 等 值 连 接 为 了 指 定 任 意 条 件, 或 者 指 定 要 连 接 的 列, 可 以 使 用 ON 子 句 连 接 条 件 从 另 一 个 搜 索 条 件 中 被 分 开 ON 子 句 使 得 代 码 易 懂 4-28 Copyright Oracle Corporation, 2001. All rights reserved. ON 条 件 用 ON 子 句 指 定 一 个 连 接 条 件 这 让 你 从 在 WHERE 子 句 中 的 查 找 或 过 滤 条 件 中 分 离 指 定 的 连 接 条 件

幻 灯 片 29 用 ON 子 句 返 回 记 录 SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id FROM employees e JOIN departments d ON (e.department_id = d.department_id); 4-29 Copyright Oracle Corporation, 2001. All rights reserved. 创 建 带 ON 子 句 的 连 接 ON 子 句 也 可 以 象 下 面 一 样 被 用 于 有 不 同 名 字 的 连 接 列 : SELECT e.last_name emp, m.last_name mgr FROM employees e JOIN employees m ON (e.manager_id = m.employee_id); 前 面 的 例 子 是 EMPLOYEE 表 基 于 EMPLOYEE_ID 和 MANAGER_ID 列 的 到 它 自 己 的 自 连 接

幻 灯 片 30 用 ON 子 句 创 建 三 向 连 接 SELECT employee_id, city, department_name FROM employees e JOIN departments d ON d.department_id = e.department_id JOIN locations l ON d.location_id = l.location_id; 4-30 Copyright Oracle Corporation, 2001. All rights reserved. 三 向 连 接 三 向 连 接 是 三 个 表 的 连 接 在 SQL: 1999 兼 容 语 法 中, 连 接 被 从 左 到 右 执 行, 所 以 第 一 个 连 接 执 行 EMPLOYEES JOIN DEPARTMENTS 第 一 个 连 接 条 件 可 以 引 用 在 EMPLOYEES 和 DEPARTMENTS 中 的 列, 但 不 能 引 用 在 LOCATIONS 中 的 列 第 二 个 条 件 可 以 引 用 所 有 三 个 表 中 的 列 这 也 可 以 被 写 为 三 个 等 值 连 接 : SELECT employee_id, city, department_name FROM employees, departments, locations WHERE employees.department_id = departments.department_id AND departments.location_id = locations.location_id; 教 师 注 释 下 面 的 例 子 显 示 也 可 以 用 USING 子 句 完 成 同 样 的 连 接 : SELECT e.employee_id, l.city, d.department_name FROM employees e JOIN departments d USING (department_id) JOIN locations l USING (location_id);

幻 灯 片 31 内 与 外 连 接 在 SQL: 1999 中, 连 接 两 个 表, 仅 返 回 匹 配 的 行 的 连 接, 称 为 内 连 接 在 两 个 表 之 间 的 连 接, 返 回 内 连 接 的 结 果, 同 时 还 返 回 不 匹 配 行 的 左 ( 或 右 ) 表 的 连 接, 称 为 左 ( 或 右 ) 连 接 在 两 个 表 之 间 的 连 接, 返 回 内 连 接 的 结 果, 同 时 还 返 回 左 和 右 连 接, 称 为 全 连 接 4-31 Copyright Oracle Corporation, 2001. All rights reserved. 连 接 比 较 SQL: 1999 和 Oracle 语 法 Oracle SQL: 1999 Equijoin Natural or Inner Join Outerjoin Left Outer Join Selfjoin Join ON Nonequijoin Join USING Cartesian Product Cross Join

幻 灯 片 32 左 外 连 接 SELECT e.last_name, e.department_id, d.department_name FROM employees e LEFT OUTER JOIN departments d ON (e.department_id = d.department_id) ; 4-32 Copyright Oracle Corporation, 2001. All rights reserved. 左 外 连 接 的 例 子 左 边 的 表 (EMPLOYEES) 中 即 使 没 有 与 DEPARTMENTS 表 中 匹 配 的 行, 该 查 询 也 会 取 回 EMPLOYEES 表 中 所 有 的 行 该 查 询 可 以 用 如 下 的 更 容 易 的 语 句 完 成 : SELECT e.last_name, e.department_id, d.department_name FROM employees e, departments d WHERE d.department_id (+) = e.department_id;

幻 灯 片 33 右 外 连 接 SELECT e.last_name, e.department_id, d.department_name FROM employees e RIGHT OUTER JOIN departments d ON (e.department_id = d.department_id) ; 4-33 Copyright Oracle Corporation, 2001. All rights reserved. 右 外 连 接 右 边 的 表 (DEPARTMENTS ) 中 即 使 没 有 与 EMPLOYEES 表 中 匹 配 的 行, 该 查 询 也 会 取 回 DEPARTMENTS 表 中 所 有 的 行 该 查 询 可 以 用 如 下 的 更 容 易 的 语 句 完 成 : SELECT e.last_name, e.department_id, d.department_name FROM employees e, departments d WHERE d.department_id = e.department_id (+);

幻 灯 片 34 全 外 连 接 SELECT e.last_name, e.department_id, d.department_name FROM employees e FULL OUTER JOIN departments d ON (e.department_id = d.department_id) ; 4-34 Copyright Oracle Corporation, 2001. All rights reserved. 全 外 连 接 的 例 子 该 查 询 取 回 EMPLOYEES 表 中 所 有 的 行, 即 使 在 DEPARTMENTS 表 中 没 有 相 匹 配 的 行 它 也 取 回 DEPARTMENTS 表 中 所 有 的 行, 即 使 EMPLOYEES 表 中 没 有 相 匹 配 的 行 教 师 注 释 可 以 更 容 易 的 完 成 全 外 连 接, 你 可 以 用 UNION 操 作 符 得 到 相 同 的 结 果 SELECT e.last_name, e.department_id, d.department_name FROM employees e, departments d WHERE e.department_id (+) = d.department_id UNION SELECT e.last_name, e.department_id, d.department_name FROM employees e, departments d WHERE e.department_id = d.department_id (+);

幻 灯 片 35 附 加 条 件 SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id FROM employees e JOIN departments d ON (e.department_id = d.department_id) AND e.manager_id = 149 ; 4-35 Copyright Oracle Corporation, 2001. All rights reserved. 应 用 附 加 条 件 你 可 以 在 WHERE 子 句 中 应 用 附 加 条 件 该 例 子 显 示 在 EMPLOYEES 和 DEPARTMENTS 表 上 执 行 一 个 连 接, 并 且 附 加 条 件, 只 显 示 经 理 ID 等 于 149 的 雇 员

幻 灯 片 36 小 结 在 本 课 中, 您 应 该 已 经 学 会 如 何 使 用 连 接 从 多 表 中 显 示 数 据 : Oracle 8i 和 早 期 版 本 的 私 有 语 法 9i 以 后 版 本 的 SQL: 1999 兼 容 语 法 4-36 Copyright Oracle Corporation, 2001. All rights reserved. 小 结 有 多 种 方 法 连 接 表 连 接 类 型 等 值 Equijoins 非 等 值 Non-equijoins 外 连 接 Outer joins 自 连 接 Self joins 交 叉 连 接 Cross joins 自 然 连 接 Natural joins 全 外 连 接 Full or outer joins 笛 卡 尔 乘 积 一 个 笛 卡 尔 乘 积 导 致 所 有 行 的 组 合 被 显 示 其 原 因 可 能 是 忽 略 了 WHERE 子 句 或 指 定 了 CROSS JOIN 子 句 表 别 名 使 用 表 别 名 加 速 数 据 库 的 访 问 表 别 名 有 助 于 保 持 SQL 代 码 较 小, 并 节 省 存 储 器

幻 灯 片 37 练 习 4, 第 二 部 分 Part Two: 概 览 本 练 习 包 括 下 面 的 主 题 : 用 等 值 连 接 来 连 接 表 演 示 外 连 接 和 自 连 接 附 加 条 件 4-37 Copyright Oracle Corporation, 2001. All rights reserved. 练 习 4, 第 二 部 分 该 练 习 有 意 给 你 从 多 表 中 提 取 数 据 的 实 际 的 经 验 试 用 Oracle 专 用 语 法 和 SQL: 1999 兼 容 语 法 在 第 二 部 分 中, 问 题 5-8, 试 写 出 使 用 ANSI 语 法 的 连 接 语 句 在 第 二 部 分 中, 问 题 9-11, 用 Oracle 语 法 和 ANSI 语 法 试 写 出 连 接 语 句

练 习 4 第 一 部 分 1. 写 一 个 查 询 显 示 所 有 雇 员 的 last name department number and department name SELECT e.last_name, e.department_id, d.department_name FROM employees e, departments d WHERE e.department_id = d.department_id; 2. 创 建 一 个 在 部 门 80 中 的 所 有 工 作 岗 位 的 唯 一 列 表, 在 输 出 中 包 括 部 门 的 地 点 SELECT DISTINCT job_id, location_id FROM employees, departments WHERE employees.department_id = departments.department_id AND employees.department_id = 80; 3. 写 一 个 查 询 显 示 所 有 有 佣 金 的 雇 员 的 last name department name location ID 和 城 市 SELECT e.last_name, d.department_name, d.location_id, l.c ity FROM employees e, departments d, locations l

WHERE e.department_id = d.department_id AND d.location_id = l.location_id AND e.commission_pct IS NOT NULL; 4. 显 示 所 有 在 其 last names 中 有 一 个 小 写 a 的 雇 员 的 last name 和 department name 请 将 你 的 SQL 语 句 用 文 件 名 lab4_4.sql 存 为 脚 本 文 件 SELECT last_name, department_name FROM employees, departments WHERE employees.department_id = departments.department_id AND last_name LIKE '%a%'; 练 习 4 第 二 部 分 5. 写 一 个 查 询 显 示 那 些 工 作 在 Toronto 的 所 有 雇 员 的 last name job department number 和 department name SELECT e.last_name, e.job_id, e.department_id, d.department_name FROM employees e JOIN departments d ON (e.department_id = d.department_id) JOIN locations l ON (d.location_id = l.location_id) WHERE LOWER(l.city) = 'toronto'; 6. 显 示 雇 员 的 last name 和 employee number 连 同 他 们 的 经 理 的 last name 和

manager number 列 标 签 分 别 为 Employee Emp# Manager 和 Mgr# 将 你 的 SQL 语 句 存 放 在 名 为 lab4_6.sql 的 文 本 文 件 中 SELECT w.last_name "Employee", w.employee_id "EMP#", m.last_name "Manager", m.employee_id "Mgr#" FROM employees w join employees m ON (w.manager_id = m.employee_id); 7. 修 改 lab4_6.sql 显 示 所 有 雇 员 包 括 King, 他 没 有 经 理 用 雇 员 号 排 序 结 果 将 你 的 SQL 语 句 存 放 在 名 为 lab4_7.sql 的 文 本 文 件 中 运 行 lab4_7.sql 中 的 查 询 SELECT w.last_name "Employee", w.employee_id "EMP#", m.last_name "Manager", m.employee_id "Mgr#" FROM employees w LEFT OUTER JOIN employees m ON (w.manager_id = m.employee_id);

如 果 你 有 时 间, 完 成 下 面 的 习 题 : 8. 创 建 一 个 查 询 显 示 所 有 与 被 指 定 雇 员 工 作 在 同 一 部 门 的 雇 员 ( 同 事 ) 的 last names department numbers 给 每 列 一 个 适 当 的 标 签 SELECT e.department_id department, e.last_name employee, c.last_name colleague FROM employees e JOIN employees c ON (e.department_id = c.department_id) WHERE e.employee_id <> c.employee_id ORDER BY e.department_id, e.last_name, c.last_name; 9. 显 示 JOB_GRADES 表 的 结 构 创 建 一 个 查 询 显 示 所 有 雇 员 的 name job department name salary 和 grade

DESC JOB_GRADES SELECT e.last_name, e.job_id, d.department_name, e.salary, j.grade_level FROM employees e, departments d, job_grades j WHERE e.department_id = d.department_id AND e.salary BETWEEN j.lowest_sal AND j.highest_sal; -- OR SELECT e.last_name, e.job_id, d.department_name, e.salary, j.grade_level FROM employees e JOIN departments d ON (e.department_id = d.department_id) JOIN job_grades j ON (e.salary BETWEEN j.lowest_sal AND j.highest_sal); 如 果 你 想 要 接 受 额 外 的 挑 战, 完 成 下 面 的 习 题 : 10. 创 建 一 个 查 询 显 示 那 些 在 雇 员 Davies 之 后 入 本 公 司 工 作 的 雇 员 的 name 和 hire date SELECT e.last_name, e.hire_date FROM employees e, employees davies WHERE davies.last_name = 'Davies' AND davies.hire_date < e.hire_date -- OR SELECT e.last_name, e.hire_date FROM employees e JOIN employees davies ON (davies.last_name = 'Davies') WHERE davies.hire_date < e.hire_date;

11. 显 示 所 有 雇 员 的 names 和 hire dates, 他 们 在 他 们 的 经 理 之 前 进 入 本 公 司, 连 同 他 们 的 经 理 的 名 字 和 受 雇 日 期 一 起 显 示 列 标 签 分 别 为 Employee Emp Hired Manager 和 Mgr Hired SELECT w.last_name, w.hire_date, m.last_name, m.hire_date FROM employees w, employees m WHERE w.manager_id = m.employee_id AND w.hire_date < m.hire_date; -- OR SELECT w.last_name, w.hire_date, m.last_name, m.hire_date FROM employees w JOIN employees m ON (w.manager_id = m.employee_id) WHERE w.hire_date < m.hire_date;