收藏 分享(赏)

从实践中学习 Oracle-SQL.docx

上传人:oceanpvg 文档编号:3508585 上传时间:2018-11-09 格式:DOCX 页数:434 大小:1.75MB
下载 相关 举报
从实践中学习 Oracle-SQL.docx_第1页
第1页 / 共434页
从实践中学习 Oracle-SQL.docx_第2页
第2页 / 共434页
从实践中学习 Oracle-SQL.docx_第3页
第3页 / 共434页
从实践中学习 Oracle-SQL.docx_第4页
第4页 / 共434页
从实践中学习 Oracle-SQL.docx_第5页
第5页 / 共434页
点击查看更多>>
资源描述

1、从实践中学习从实践中学习 Oracle/SQL 何 明 编 著清 华 大 学 出 版 社北 京内 容 简 介 本书是一本 Oracle SQL 的入门教材,它适合于初级到中级的读者。本书使用生动而简单的生活中的 例子来解释复杂的计算机和数据库概念, 避免用计算机的例子来解释计算机和数据库的概念。 读者可以在 没有任何计算机专业知识的情况下从头开始阅读此书。本书是一本 Oracle SQL 的 实 用 教 材 。 虽 然 它 覆 盖 了 OCP( Oracle 认 证 专 家 ) 这 部 分 考 试 的 几 乎 全 部 内容, 但重点放在实际工作能力的训练。 因此本书中的每章都附有大量的例题,

2、而且每道题都给出了答案。 为了帮助读者理解, 许多概念和例题都给出了商业应用背景, 很多例题可以不加修改或略加修改后应用于 实际工作中。本书中的绝大多数例题都可以在 Oracle8 或以上版本上运行。版权所有,翻印必究。 本书封面贴有清华大学出版社激光防伪标签,无标签者不得销售。图 书 在 版 编 目 CCIP) 数 据从实践中学习 Oracle/SQL /何 明 编 著 . 北 京 : 清 华 大 学 出 版 社 , 2004 ISBN 7-302-07951-X . 从 . 何 . 关 系 数 据 库 -数 据 库 管 理 系 统 , Oracle . TP311.138中国版本图书馆 C

3、IP 数据核字(2004 )第 001611 号出 版 者:清华大学出版社 地 址:北京清华大学学研大厦http:/ 邮 编:100084社 总 几:010-62770175 客户服务:010-62776969责任编辑:刘利民 封面设计:秦 铭 版式设计:张红英 印 刷 者:装 订 者:发 行 者:新华书店总店北京发行所开 本:185260 印张:27.25 字 数 : 602 千字版 次:2004 年 2 月第 1 版 2004 年 2 月第 1 次印刷书 号:ISBN 7 -302-07951-X/TP5774印 数:15000 定 价 : 34.00 元 。 言SQL( Structur

4、ed Query Language) 是 标 准的关系数据 库 ( Relational Database Management Systems) 操 作 语 言 。 它 是 一 种 非 过 程 化 的 第 四 代 高 级 语 言 , 其 语 法 与 英 语 非 常 相 似 。 因 此 它是一种比较容易学习的计算机语言。对初学者几乎没有任何要求,换句话说初学者可以 不具备任何计算机的背景。Oracle 是 一 个 适 合 于 大 中 型 企 业 的 数 据 库 管 理 系 统 , 其 市 场 占 有 率 是 所 有 的 数 据 库 管 理系统中最高的。它主要的用户为:银行、电信、移动通信、航空

5、、保险、金融、跨国公 司、电子商务等。根据 WTO 的有关协议,我国在以上领域要逐年开放市场,因此,随着 这 些 领 域 外 资 的 大 量 涌 入 , 在 不 远 的 将 来 对 Oracle 数 据 库 管 理 员 和 开 发 人 员 的 需 求 将 急 剧 地增加。Oracle SQL 是 Oracle 数 据 库 管 理 系 统 上 的 SQL 语言。无论是 Oracle 数 据 库 管 理 员( DBA) 、 开 发 人 员 ( Developer) , 还 是 一 般 用 户 , 熟 练 地 使 用 Oracle SQL 都是最基本的 要 求 。 其 实 , OCP( Oracle

6、 Certified Professional) 认 证 考 试 将 Oracle SQL 作为 Oracle 数据 库 管 理 员 ( DBA) 和 开 发 人 员 ( Developer) 的 第 一 门 必 考 的 课 程 。Oracle SQL 是美国国家标准化委员 会 ( American National Standards Institute - ANSI) 和 国际标准化组 织 ( International Standards Organization - ISO) 颁布的 SQL 标准的超集 。 也就 是说,如果读者学会了 Oracle SQL, 就 很 容 易 掌 握 其

7、 他 数 据 库 管 理 系 统 上 的 SQL 语言。目。国内己出版的 Oracle 教材以翻 译 书为主 。 许多是瞄准 OCP 考试的 , 其内容的编排 多 是 以 总 复 习 的 形 式 出 现 的 。 这 些 教 材 应 付 OCP 考 试 有 用 , 但 不 完 全 适 合 做 培 训 教 材 , 更 不 适 于 自 学 。 Oracle Student Guide ( 英 文 ) 虽 然 是 一 套 很 好 的 培 训 教 材 , 但 这 套 书 是 不 外 卖的,只有参加 Oracle 公司培训才能得到,而它的培训费之高是一般人很难负担得起的。 Oracle Student G

8、uide 的 另 一 问 题 是 : 它 的 练 习 题 对 系 统 资 源 要 求 很 高 , 例 如 , 它 要 求 学生创建的表或表空间常常是以百兆字节为单位。还有它的许多练习题,必须使用 Oracle 提 供 的 脚 本 文 件 才 能 运 行 。 也 就 是 说 , 如 果 不 参 加 Oracle 公 司 的 培 训 , 许 多 练 习 题 学 生 是很难实现的。这本书是源于我在新西兰 GZ Comtech( NZ) LTD( 现为 : New Zealand Institute of Science and Technology Ltd - 新 西 兰 科 学 技 术 学 院 )

9、 从 事 Oracle 数 据 库 管 理 员 ( DBA) 培 训 课 程 的 讲稿和为学生编写的上机题。当时为了使学生能有足够的上机练习的机会,我为几乎每一 讲都设计了大量的上机练习题。为了使学生能在家里练习这些上机题,每一道题都进行了 精心的设计 , 使其对系统的资源消耗都限制在一般 PC 机允许的范 围 (当时的 PC 机一般硬 件 配 置 : CPU 300 MHz 左 右 , 内 存 64MB, 硬 盘 8GB 左 右 ) 。 而 且 这 些 上 机 题 完 全 是 自 封 闭的,即学生不需要任何 CD, 不 需 要 运 行 任 何 脚 本 文 件 , 除 Oracle 系 统 外

10、 也 不 需 要 安 装 任何其他的软件。之 后 , 这 些 讲 稿 和 上 机 练 习 题 曾 在 多 个 培 训 机 构 的 多 种 Oracle 培 训 课 程 上 使 用 。 其 中2包括:中国计算机软件与技术服务总公司培训中心(北京)、昆仑瑞通高级技术培训中心(北京)、中国 UNIX 协会、 Oracle 大学( Etake Technology Inc) 等 。 部 分 讲 稿 也 在 新 西 兰的 Unitec Institute of Technology - 新 西兰奥克兰技术学 院 (公立 ) 为大学本科生讲授数据 库概论时使用过多次。从学生和同事们那里得到了大量有益的反馈

11、。许多学生本身就是工作在电信、移动通 信和航空等大型企业的数据库管理员或数据库开发人员,他们提出了很多在工作中遇到的 实际问题,许多实际问题和它们的解决方案后来也都加到了讲稿或上机题中。一些我做信 息 系 统 管 理 员 、 分 析 员 、 IT 顾问中所遇到的实际问题和解决方案也逐步地加到了该讲稿或 上机题中。考虑到参加培训的许多学生正在工作,而且一些学生基本上没有计算机背景,他们或 者是没时间或者是没能力来理解难懂而乏味的学术术语,本书使用生动而简单的生活中的 例子来解释复杂的计算机和数据库概念,避免用计算机的例子来解释计算机和数据库的概 念。由于以上的设计,本书对学生的计算机专业知识几乎

12、是没有任何要求。对以。培训的 学生的跟踪表明,这样的设计是合理的。许多概念和例题都给出了商业应用背景。许多例题是用场景或故事的形式出现的。不 少例题和它们的解决方案是企业中的数据库管理员或数据库开发人员在实际工作中经常遇 到或可能遇到的。因此,很多例题可以不加修改或略加修改后应用于实际工作中。本书的内容和例题设计由浅入深,为了消除初学者对计算机教材常有的畏惧感,本书 把那些难懂而且又不常用的内容尽量放在书的后面章节里或放在附录中,井去掉了个别非 常难懂而且一般的 Oracle 工 作 人 员 都 很 少 听 到 的 内 容 。 根 据 我 多 年 的 IT 工作和教学经验, 一个人在某个系统中

13、所使用的功能是很少的,相信还不到一半。因为绝大多数难懂的操作 可以通过其他操作的组合来实现 。 因此 , 没有必要为了解释清楚 5%非常 难 懂的内容吓跑了 95%的读者。本书是一本 Oracle SQL 的 实 用 教 材 。 虽 然 它 覆 盖 了 OCP 这部分考试的几乎全部内容, 但重点放在实际工作能力的训练 。 该书全面而详细地介绍了关系数据 库 ( Relational Database Management Systems) 的 标 准 操 作 语 言 , SQL( Structured Query Language) 语 言 。 它 包 括 了 数 据 查 询 语 言 、 DM

14、L( 数 据 操 作 语 言 ) 、 DDL( 数 据 定 义 语 言 ) 、 DCL( 数 据 控 制 语 言 ) 和 事 务 处 理 。 该 书 也 详 细 地 介 绍 了 常 用 的 SQL 函 数 , 及 Oracle8i 和 Oracle9i 所 提 供 的 一 些 高级功能。在刚开始写这本书时,我曾经想为读者构造一个小型的订单系统井以光盘的形式随书 分发给读者 。 但是经过了仔细地权衡利弊之后终于打消了这个念头 。 因为如果这样做的话, 就要求读者在开始做练习之。先学会安装光盘的内容 , 这样势必增加读者开始学习的难度。 考 虑 到 不 少 读 者 可 能 是 初 学 者 这 一

15、事 实 , 最 后 还 是 决 定 在 开 始 时 使 用 Oracle 系 统 自 带 的 几 个表。而随着学习的深入,再教读者们自己构造一些所需要的表和其他的对象。因为学习这门课的许多人可能是第一次接触 Oracle, 对 如 何 设 置 Oracle 的环境是一无 所 知 , 因 此 在 计 算 机 上 配 置 Oracle 的 运 行 环 境 的 操 作 越 简 单 越 好 。 这 正 是 本 书 为 什 么 选 用 在 Windows 环境下运行 Oracle 数 据 库 管 理 系 统 的 主 要 原 因 。 因 为 Windows 环境下运行的3Oracle 数 据 库 管 理

16、系 统 可 能 是 最 容 易 安 装 的 一 种 。选用 Windows 作为学习环境的另一个原因是学习的成本。因为 Windows 是一个相对 很便宜的操作系统,而且它很容易得到。绝大多数人对这一操作系统都有所了解,因此在 学习 Oracle 之。不需要再学习操作系统了。因为 Oracle 数据库管理系统是独立于任何 IT 平台的 , 所以当您在一个操作系统上学会 了 Oracle 的 SQL 语言使用之后,您就可以在任何操作系统上使用 Oracle 的 SQL 了 。 您 也 可以把 SQL 语 句 或 脚 本 文 件 几 乎 不 做 任 何 修 改 地 从 一 个 操 作 系 统 移

17、植 到 另 一 个 操 作 系 统 上。另外,许多大型的 Oracle 数 据 库 系 统 , 尽 管 它 们 的 服 务 器 是 安 装 在 Unix 或 其 他 的 操 作系统上,但是用户的。台终端还是使用 Windows 操作系统。本书的每一章中都配有大量的例题。从我的工作和教学实践中得来的经验表明:通过 自己亲自上机作练习是一种很好的学习方法。这样做往往比只看书效果好。数据库是一门 实 践 性 很 强 的 课 程 , 只 有 通 过 大 量 的 上 机 操 作 实 践 ( 练 习 ) 才 能 悟 出 SQL 语 言 的 真 谛 , 才 能上到一个新的层次。正像毛主席说的那样: “要在游

18、泳中学会游泳。 ”如果不跳到水中 就 永 远 学 不 会 游 泳 , 如 果 不 坐 在 计 算 机 。 真 正 地 操 作 Oracle 数 据 库 系 统 , 是 很 难 真 的 学 会 使用 Oracle 数 据 库 系 统 。 因 此 建 议 , 如 果 读 者 有 条 件 的 话 , 最 好 把 本 书 中 的 例 题 在 自 己 的 计算机上重做一遍或多遍。本书中几乎每一道例题都给出了显示结果 。 其目的有两个 。 第一 , 当 读 者重做例题后, 这个显示结果可以帮助读者检查所做的是否正确。第二,如果读者手头很紧,根本就没有 能力买一台计算机的话,这些显示结果可以帮助读者更好地理

19、解书中的内容。当阅读本书时,会发现本书没有指定的练习题。这是因为每一章有很多例题的缘故。 读者只要把这些例题重做一两遍也就达到了练习的目的。另外,本书在每章的结尾处井未 给出思考题,而使用了 “您应该掌握的内容 ”这样的句子。其实与思考题差不多。之所以 没有使用思考题这个词是为了避免束缚读者的想象力。使用 “您应该掌握的内容 ”这样比 较宽松的句子的好处是:当思考所列出的内容时只要己经理解了它们就可以了,至于如何 解释和回答它们己经变得不重要了。在我的教学实践中经常遇到这样的情况:有的学生看到书中的讨论或解释时就觉得很 吃力,有时甚至想睡觉,但是上机做练习时他们马上就精神起来,而且做得还挺好。

20、如果 这种情况有时也适合您的话,请不用担心,只要能理解书中所介绍的内容就达到了目的。 至于是通过上机做练习还是通过阅读书中的解释学会的井不重要。还是那句话: “不管臼 猫黑猫,抓住老鼠就是好猫 ”。科学己经证明:文字作为一种交流的工具,它的承载能力 要比声音和图像小。这可能也是为什么提倡多媒体教学的原因之一吧!所以当您看书时, 有些内容看一遍看不懂是很正常的。如果真的有一段的内容看了几遍都不能完全理解,您也用不着害怕,可以先把这段的 内容放过去,继续下面的学习。因为本书的编排不是严格的一环扣一环的。等看完了几章 之后,回过头来再看这段的内容可能就比较容易理解了。书作为一种古老的单向交流工具,它

21、的承载能力是很有限的,因此产生二义性几乎是4不可避免的。为了减少二义性的产生,我曾把本书中许多章的初稿分别发给了多个培训机 构的学生们,井根据他们阅读后反馈回来的意见对相关的章节做了相应的修改。其中有些 章节几乎是全部重写。尽管作了这些努力,但也很难保证该书像武侠或爱情小说那样容易 理解,因为它毕竟不是一本消遣的书。记得我在做硕士论文时,我的导师一再嘱咐在论文中要避免使用第一人称(我)和第 二人称(您),要尽量避免口语化,最好使用被动语态。我在写论文时确实是那样做的。 不是我喜欢,因为不那样做就可能毕不了业。但是这本书却使用了不少口语,因为这本书的读者不少是初学者而不是专家。使用口 语的目的主

22、要是为了减少初学者学习的难度 。 本书在解释 SQL 语句或概念时没有追求学术 上的完美,而只是给出了实用的解释。在本书中甚至几乎没有使用语法这个词。在本书中有不少虚构的故事,在这些故事中使用了不少夸张性的语言。其目的只是增 加读者的兴趣。因为我深知看有用的书时多数人都很容易产生睡意,使用这些夸张性的语 言可能会使读者在阅读时不至于睡着了。本书中使用 的 “您 ”井 不 是指读者 。 这样的写法是想让读者在阅读此书时尽量地投入。 读者可以把书中所讲的故事看成一出戏,而您正是这出戏中的一个主角。这样或许对您理 解书中所介绍的内容会有所帮助。书中常提到的 “您的老板 ”, “您的经理 ”和 “您的

23、上 司 ”等都不是现实中的人。相信现实中的他们可能都是大好人、大善人、灰衣天使、黑衣 天使 许多人认为学习 IT, 特别是学习 Oracle 数据库管理系统是一件既枯燥又令人生畏的事。 一些人即使下了决心去学 Oracle, 他 们 可 能 用 几 个 月 的 时 间 拼 命 地 学 完 了 Oracle 公司所要 求的课程井通过了考试,在这一段时间里没有什么娱乐。等拿到证书后就把所有的书都丢 到一边,痛痛快快地放松一下一直绷紧的神经。希望这本书的写法能在枯燥的 Oracle 学 习 与 娱 乐 之 间 达 到 某 种 程 度 的 平 衡 , 从 而 不 至 于使读者在整个的学习过程中神经一直

24、绷得很紧。参加应试培训可能出现的另一个问题是:有些学生拿到了证书之后还不能进行熟练地 上机操作。有的培训中心的课程基本上只进行应试培训,只教学生如何做考题。这样,学 生的动手能力就比较差,在应聘或面对实际工作时就将处在一种不利的位子。因为没有哪 个公司愿意请一个只会说而不会干的人,最后检验学生能力的还是市场而不是考场。这本书对以上的这些人会有很大的帮助。因为这本书的重点是放在了能力的培养,即 教您怎样干活的。一个人既会说又会干一定是市场上最需要的人才。本书既可作为企业或培训机构的 Oracle SQL 课 程 的 培 训 教 材 也 可 作 为 自 学 教 材 。 这本书的目的有 3 个: 把

25、那些没有计算机或 Oracle 背 景 但 想 加 入 IT 产 业 的 人 带 入 Oracle 这 个 就 业 市 场 中来。 为那些有计算机或 Oracle 经 验 但 没 受 过 Oracle 正 规 培 训 的 人 提 供 一 套 系 统 而 完 整 的 Oracle 培 训 教 材 。 为 那 些 非 计 算 机 人 员 , 如 管 理 或 行 政 人 员 , 了 解 和 使 用 Oracle 提 供 一 套 完 整 易 学5的培训教材。本书中的绝大多数例题都分别在 Oracle 的 8.0.4, 8.0.5, 8.1.5 和 8.1.7 等 版 本上测试 过 。 最后,所有的例题

26、都在 Oracle 的 9.0.1 版 本 上 测 试 过 。 所 以 对 您 所 使 用 的 Oracle 版 本 几 乎 没什么要求。如果您需要安装 Oracle 数 据 库 管 理 系 统 , 可 以 参 考 本 书 的 附 录 。 另 外 , 如 果 这 是 您 第 一次使用 SQL*PLUS, 或 Oracle 数 据 库管理系统 , 或您井不熟悉 Oracle 数据库系统的一些 术语和约定的话,也应该先阅读一下本书的附录。如果读者对本书有任何意见或要求,欢迎来信提出。我的电子邮箱为:sql_最后,预祝读者 Oracle SQL 的学习之旅轻松而愉快!编 者2004 年 3 月目 录

27、导读 .1第 1 章 简 单 查 询 语 句 41.1 最 简 单 的 查 询 语 句 .41.2 在 查 询 语 句 中 如 何 选 择 特 定 的 列 .51.3 如 何 书 写 查 询 语 句 .71.4 列 标 题 和 数 据 的 默 认 显 示 格 式 .91.5 如 何 在 SQL 语句中使用算术表达式 101.6 怎 样 在 SQL 语句中使用列的别名 121.7 连 接 运 算 符 .131.8 DISTINCT 运算符 151.9 基 本 查 询 语 句 的 格 式 .171.10 应 该 掌 握 的 内 容 .17第 2 章 限 制 性 查 询 和 数 据 的 排 序 18

28、2.1 如 何 限 制 所 选 择 的 数 据 行 .182.2 比 较 运 算 符 ( operators)192.3 如 何 使 用 BETWEEN AND 比 较 运 算 符 ( operators).192.4 在 SQL 语句中使用字符串和日期 212.5 使 用 IN 比较运算符(operators )222.6 使 用 LIKE 比 较 运 算 符 ( operators).232.7 如 何 使 用 转 义 ( escape)操 作 符 252.8 ORDER BY 子句 272.9 在 ORDER BY 子 句 中 使 用 别 名 或 表 达 式 .282.10 在 ORDE

29、R BY 子句中使用列号 .302.11 在 ORDER BY 子句中使用多列 .312.12 在 ORDER BY 子句中使用在 SELECT 列 表 中 没 有 的 列 312.13 扩 充 后 的 查 询 语 句 的 格 式 .322.14 应 该 掌 握 的 内 容 .33第 3 章 常 用 的 SQL*PLUS 命令 343.1 DESCRIBE命 令 .343.2 SET LINESIZE80| n命 令 .353.3 L( LIST)命 令 和 n text 命令 . 3683.4 /( RUN)命 令 383.5 n( 设 置 当 前 行 )命 令 和 APPEND( 附 加

30、)命 令 .383.6 del 命令 .413.7 CHANGE命 令 423.8 如 何 生 成 脚 本 文 件 .453.9 如 何 编 辑 脚 本 文 件 .473.10 如 何 直 接 运 行 脚 本 文 件 .493.11 SPOOL 命令 .493.12 应 该 掌 握 的 内 容 .50第 4 章 单 行 函 数 .524.1 什 么 是 函 数 .524.2 单 行 函 数 简 介 .524.3 单 行 字 符 型 函 数 .534.4 使 用 单 行 字 符 型 函 数 的 实 例 .584.5 数 字 型 函 数 .594.6 日 期 型 数 据 的 处 理 .624.7

31、日 期 函 数 .654.8 ROUND 和 TRUNC 函 数 用 于 日 期 型 数 据 684.9 不 同 数 据 类 型 之 间 的 隐 含 转 换 .714.10 不 同 数 据 类 型 之 间 的 显 式 转 换 .714.11 应 该 掌 握 的 内 容 .79第 5 章 NULL 值的处理、逻辑操作和函数嵌套 .805.1 什 么 是 空 值 ( NULL) 805.2 含 有 空 值 ( NULL)的 表 达 式 的 运 算 815.3 空 值 ( NULL)的 排 序 835.4 逻 辑 表 达 式 和 逻 辑 运 算 符 .855.5 运 算 符 的 优 先 级 .885

32、.6 用 AND 和 OR 替代 BETWEEN AND 和 IN 运算符 .895.7 NVL 函 数 .915.8 DECODE 函数 935.9 单 值 函 数 的 嵌 套 .945.10 Oracle9i 新 增 加 的 单 值 函 数 和 表 达 式 965.11 应 该 掌 握 的 内 容 .101第 6 章 综 合 数 据 和 分 组 函 数 .1026.1 五 个 常 用 的 分 组 函 数 .10296.2 COUNT 函数 1026.3 AVE 和 SUM 函数 .1036.4 MIN 和 MAX 函数 .1046.5 GROUP BY 子句的应用 1056.6 改 变 G

33、ROUP BY 子句的排序次序 .1056.7 GROUP BY 子句的特殊用法 1066.8 分 组 函 数 与 GROUP BY 子句的非法操作 .1076.9 HAVING 子句的使用 1086.10 分 组 函 数 的 嵌 套 .1106.11 分 组 函 数 的 空 值 问 题 .1106.12 NVL 函数在分组函数中的使用 1116.13 是 否 在 分 组 函 数 中 使 用 NVL 函数的商业背景 .1126.14 其 他 的 分 组 函 数 和 分 组 函 数 的 小 结 .1136.15 应 该 掌 握 的 内 容 .113第 7 章 多 表 查 询 .1147.1 数

34、据 库 的 规 范 化 ( Normalization)1147.2 主 键 ( Primary Key)和 实 体 完 整 性 ( Entity Integrity)1157.3 第 一 范 式 ( 1NF) .1157.4 消 除 部 分 依 赖 .1167.5 外 键 ( Foreign Key)和 引 用 完 整 性 ( Referential Integrity) 1177.6 第 二 范 式 ( 2NF) .1187.7 第 三 范 式 ( 3NF) .1187.8 规 范 化 过 程 小 结 .1207.9 多 表 连 接 .1207.10 相 等 连 接 .1207.11 连

35、接 中 表 别 名 的 使 用 .1227.12 笛 卡 尔 乘 积 ( 乘 积 连 接 ).1237.13 自 连 接 ( Self join).1257.14 两 个 以 上 的 表 的 连 接 .1267.15 不 等 连 接 .1277.16 外连接 .1297.17 SQL:1999 语 法 的 连 接 .1307.18 SQL:1999 语 法 的 自 然 连 接 .1307.19 使用 USING 子句的连接 .131107.20 使用 ON 子句的连接 .1327.21 使用 ON 子句的多表连接和附加条件 .1327.22 左 外 连 接 .1347.23 右 外 连 接 .

36、1357.24 全 外 连 接 .1367.25 应 该 掌 握 的 内 容 .139第 8 章 子 查 询 .1408.1 为 什 么 引 入 单 行 子 查 询 .1408.2 WHERE 子句中的单行子查询 1418.3 HAVING 子句中的单行子查询 1448.4 FROM 子句中的单行子查询 .1458.5 多 行 子 查 询 .1458.6 使 用 IN 操作符的多行子查询 .1468.7 使 用 ALL 操作符的多行子查询 .1478.8 使 用 ANY 操作符的多行子查询 .1488.9 子 查 询 中 的 空 值 ( NULL)问 题 1508.10 多 列 子 查 询 .

37、1528.11 成 对 比 较 ( Pairwise Comparison)的 多 列 子 查 询 1528.12 非 成 对 比 较 ( Nonpairwise Comparison)的 多 列 子 查 询 1538.13 小结 .1548.14 应 该 掌 握 的 内 容 .155第 9 章 控 制 SQL*PLUS 的 环 境 和 数 据 字 典 简 介 1569.1 控 制 SQL*PLUS 的环境 1569.2 SQL*PLUS 的环境变量 ECHO .1569.3 SQL*PLUS 的环境变量 FEEDBACK.1599.4 SQL*PLUS 其他常用的环境变量 .1609.5 S

38、QL*PLUS 的 COLUMN 格式化命令 1609.6 SQL*PLUS 的其他格式化命令 .1669.7 数 据 字 典 和 数 据 字 典 视 图 .1699.8 格 式 化 数 据 字 典 视 图 的 输 出 .1719.9 如 何 使 用 数 据 字 典 视 图 .1739.10 小结 .1779.11 应 该 掌 握 的 内 容 .177第 10 章 创 建 表 .1791110.1 创 建 表 的 语 句 和 例 子 .17910.2 命 名 和 引 用 规 则 .18010.3 列 的 数 据 类 型 和 默 认 值 .18310.4 创 建 表 的 例 子 .18510.5

39、 利 用 子 查 询 来 创 建 表 .18610.6 修 改 表 的 结 构 .18810.7 改 变 对 象 的 名 字 .19510.8 为 表 和 列 加 注 释 .19710.9 截 断 表 和 删 除 表 .19910.10 小结 .20210.11 应 该 掌 握 的 内 容 .206第 11 章 替 代 变 量 .20711.1 替 代 变 量 引 入 的 原 因 .20711.2 以 例 1-1 结果EMPNO ENAME JOB MGR HIREDATE- - - - SAL COMM DEPTNO- - -7369 SMITH CLERK 7902 17-12? -808

40、00 207499 ALLEN SALESMAN 7698 20-2? -811600 300 307521 WARD SALESMAN 7698 22-2? -811250 500 30 注意: 在本书中采用如下的约定: 没有阴影的内容为输入的 SQL 语句或 SQL*PLUS 命令。 阴影中的内容为系统显示(输出)的结果。这里的 * 号 表 示 所 有 的 列 , 它 与 在 SELECT 之 后 列 出 所 有 的 列 名 是 一 样 的 。 查 询 语 句 以 分 号 ( ; ) 结 束 。 emp( employee) 是 一 个 员 工 表 。 显 示 结 果 后 的 ( ) 表

41、示 在 其 后 还 有显示被省略了。Oracle 有 许 多 Unix 和 C 的 影 子 , 在 对 表 和 列 命 名 时 大 量 地 使 用 缩 写 形 式 , 例 如 salary( 工 资 ) 一 一 sal。 可 能 您 已 经 注 意 到 了 HIREDATE 那一列的显示有些怪。这是因为 emp表中存的是英文数据,而我所使用的是中文操作系统。以后我再介绍转换的方法。1.2 在查询语句中如何选择特定的列您也许觉得上面的显示有些乱。在许多情况下,我们只想知道若干个列的信息,使用 SELECT 语句很容易做到。在现实生活当中也是这样,例如您到超市去买东西,当然不会 买下超市中的所有的

42、东西。例如:买 羊肉,兔肉 从 大灰狼超市;又 如 公 司 的 会 计 在 每 次 发 工 资 时 , 她 可 能 需 要 确 定 每 个 员 工 的 工 号 ( empno) 、 名 字( ename) 和 工 资 ( sal) 。 可 以 使 用 例 1-2 的 查 询 语 句 来 实 现 她 的 这 一 要 求 。例 1-261600 ALLEN 74991250 WARD 75212975 JONES 75661250 MARTIN 76542850 BLAKE 76982450 CLARK 77823000 SCOTT 7788SQL SELECT empno, ename, sal

43、2 FROM emp;例 1-2 结果EMPNO ENAME SAL- - - 7369 SMITH 8007499 ALLEN 16007521 WARD 12507566 JONES 29757654 MARTIN 12507698 BLAKE 28507782 CLARK 24507788 SCOTT 30007839 KING 50007844 TURNER 15007876 ADAMS 11007900 JAMES 9507902 FORD 30007934 MILLER 1300已选择 14 行。在查询语句中选择指定的列就是关系数据库中所称的投影(Project)。可以在 SELE

44、CT 之 后 选 择 任 意 列 , 列 与 列 之 间 以 逗 号 隔 开 , 而 且 可 以 根 据 需 要 来 指 定 列的显示次序,如例 1-3。例 1-3SQL SELECT sal,ename,empno2 FROM emp;例 1-3 结果SAL ENAME EMPNO- - - 800 SMITH 736975000 KING 78391500 TURNER 78441100 ADAMS 7876已选择 14 行。其实例 1-3 的 显 示 结 果 与 例 1-2 显 示 的 完 全 相 同 , 只 是 列 的 显 示 次 序 不 同 而 已 。1.3 如何书写查询语句到目前为

45、止我们只学习了两个关键字 (K eyword) : SELECT 和 FROM。 Oracle 规定组 成 SQL 语句的关键字是不能缩写的,也就是您不能在查询语句中将 SELECT 写成 SEL 或 SELEC 等,不能把 FROM 写成 FRO 或 FR 等,也不能把一个关键字分开书写,即关键字 必须原样书写。可以用大写,或小写,或大小写混写来书写 SQL 语句,如例 1-4。例 1-4SQL select Sal, EName, EMPNO2 From Emp;例 1-4SAL ENAME EMPNO- - - 800 SMITH 73691600 ALLEN 74991250 WARD

46、 75212975 JONES 75661250 MARTIN 76542850 BLAKE 76982450 CLARK 77823000 SCOTT 77885000 KING 78391500 TURNER 78441100 ADAMS 7876已选择 14 行。可以看出:例 1-4 显 示 的 结 果 与 例 1-3 显示的完全相同。 为了增加可读性,本书所有的关键字尽量采用大写英文字母,其他的部分用小写。这也是 Oracle 公司推荐的。既可以像例 1-3 那样把一个 SQL 语句 放在多行上, 也可以把一个 SQL 语句 写在一行上, 如例 1-5。8SQL select sal,

47、 ename, empno from emp;例 1-5 结果SAL ENAME EMPNO- - - 800 SMITH 73691600 ALLEN 74991250 WARD 75212975 JONES 75661250 MARTIN 76542850 BLAKE 76982450 CLARK 77823000 SCOTT 77885000 KING 78391500 TURNER 78441100 ADAMS 7876已选择 14 行。可以看出:例 1-5 显 示 的 结 果 也 与 例 1-3 显 示 的 完 全 相 同 。 只 是 易 读 性 不 如 例 1-3。 因此, 为了增

48、加可读性应该把 SQL 语句中的每一个子句写在一行上, 且最好以缩进法来书写如例 1-6 的 SQL 语句。注意: 一个完整的 SQL 命令叫语 句 ( statement) , 每一个关键字和后面跟着的选项叫子句( clause) , 例如, “SELECT * FROM emp;”叫语句, 而 “SELECT *”叫子句, “FROM emp” 也叫子句。例 1-6SQL SELECT empno, ename, sal,2 deptno, job3 FROM emp;例 1-6 结果EMPNO ENAME SAL DEPTNO JOB- - - - -7369 SMITH 800 20 CLERK7499 ALLEN 1600 30 SALESMAN7521 WARD 1250 30 SALESMAN7566 JONES 2975 20 MANAGER7654 MARTIN 1250 30 SALESMAN7698 BLAKE 2850 30 MANAGER7782 CLARK 2450 10 MANAGER7788 SCOTT 3000 20 ANALYST9例 1-57839 KING 5000 10 P

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 金融证券 > 金融资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报