名师讲坛:Oracle开发实战经典
大数据时代,Oracle 12c为云计算而改变。《名师讲坛——Oracle开发实战经典》以Oracle 11g、12c版本为基础,通过丰富的实例、通俗易懂的语言、简洁明快的图示、极为详尽的视频,讲述了数据库开发的主要内容。全书分为3个部分,第1部分:Oracle开发前奏,主要包括数据库系统概述、Oracle的安装与基本使用;第2部分:SQL基础语法,主要内容有简单查询、限定查询与排序显示、单行函数、多表查询、分组统计查询、子查询、更新及事务处理、替代变量、表的创建与管理、完整性约束、其他数据库对象、用户权限及角色管理、数据库设计;第3部分:数据库编程,主要内容有PL/SQL编程基础、集合、游标、子程序、包、触发器、动态SQL、面向对象编程。。《名师讲坛——Oracle开发实战经典》还有如下特点: 1.视频极为详尽:视频长达45小时,共126讲,力求将Oracle开发必备知识一网打尽。 2.实例案例教学:1200项各类实例案例,力求将Oracle开发必备知识彻底讲透。 3.全方位服务:论坛、网站、二维码、微信等多种服务力求解答本书所有疑问。 4.知名讲师编著:由有多年开发和授课经验、连续7年获得最受欢迎教师称号的知名讲师编著。 5.教师服务:高校教师还可以获得教学大纲、电子课件、学习笔记等多种资源。 本书适合Oracle开发入门者学习使用,也可以作为Oracle开发人员的参考书。
基本信息
- 书名
名师讲坛:Oracle开发实战经典
- 作者
李兴华 马云涛
- 类型
计算机与互联网
- 出版社
清华大学出版社
- 出版日期
2014年6月1日
基本介绍
内容简介
时间就是财富、效率就是竞争力,谁能够高效学习,谁就更有竞争力。看视频、跟着视频做练习、向高手在线请教、学会利用资源就是最高效的学习方式。 1.视频讲解极为详尽,容量达9G、2张DVD,讲解长达45小时、126讲,社会培训价格在1500元以上。 2.实例非常丰富,各类实例达1200个,达到实战水平一本书够了。 3.知名讲师心血之作,10年教学经验,多年被评为“最受欢迎的讲师”,北京某培训中心首席讲师李兴华的心血之作,品质绝对有保证。 4.最用心的服务,专门开辟的网站服务区,解疑答惑、网上互动、部分开发工具的下载。 5.配套资源丰富,特意为高校老师准备了教学大纲、PPT课件、学习笔记、习题等配套资源。 6.适合目前应用最广的Oracle 11g版本,以及最新的Oracle 12c。Oracle DBA及开发认证的读者也可以作为入门图书。
作者简介
李兴华,知名Java、Oracle、Android高级讲师,北京魔乐科技软件实训中心(MLDN)教学总监、首席讲师。8年软件开发经验,10年高端培训经验,先后为40多家大中型企业做过培训,在Java、Oracle、Android培训方面享有很高的知名度。 马云涛,计算机技术专业硕士,慧科教育集团副总裁,负责该集团合作院校的硕士层面的整体教学运营工作。该集团合作院校的硕士专业涵盖移动云计算、大数据技术、物联网、战略管理与互联网营销、互联网教育等多个领域。他还同时担任多个高校和企业的咨询顾问,组织并设计过多项基于B/S结构的大型项目系统构架。
媒体推荐
李兴华讲课一流,写东西好绝对好学实用,缺点是没有废话! ——中科软通CEO 王月清 图示多、看起来轻松,入门级好书! ——中科院软件研究所范国闯 视频足够详细,比单纯看书要快很多,作者没少费心思。 ——中烟科信息架构师 周艳军 视频、实例、服务做到了极致,看这本书再整不明白,就要考虑是不是该换行了 ——三星数据系统项目经理 马宁 想快速学Oracle开发的人,强烈推荐这本书,简单、容易。 ——中企动力 吴海斌
图书目录
第1部分 Oracle开发前奏 第1章数据库系统概述 2 (视频讲解:1小时10分钟) 1.1 数据库的产生动机 3 1.2 数据、数据库、数据库管理系统、数据库系统 4 1.3 数据管理与数据库系统的特点 6 1.4 数据模型 8 1.4.1 两类数据模型 8 1.4.2 概念模型 10 1.4.3 数据模型 14 1.4.4 关系模型基础 19 1.5 SQL概述 21 提示:关于NOSQL技术 22 1.6 本章小结 22 第2章 Oracle的安装与基本使用 23 (视频讲解:1小时40分钟) 2.1 Oracle简介 24 2.2 安装Oracle数据库 25 提示:关于CDB与PDB 29 注意:如果不进行口令配置,有可能某些用户为锁定状态 32 2.3 Oracle体系结构 33 提示:Oracle服务器、Oracle实例(instance)、Oracle数据库(database)的关系 34 2.3.1 Oracle实例体系 34 2.3.2 Oracle物理体系 38 2.4 Oracle监听服务 38 2.4.1 注册表被破坏导致监听无法启动 39 2.4.2 计算机名称修改导致监听无法启动 39 2.4.3 监听工具LSNRCTL 40 2.5 SQLPlus简介 41 2.6 SQLPlus常用命令 42 提示:关于sqlplus.exe工具的补充说明 42 提示:sqlplusw.exe的输入形式 44 提示:需要设置命令行格式 45 2.7 配置SQL Developer 48 2.8 c##scott用户表 51 2.8.1 部门表dept 51 2.8.2 雇员表emp 52 2.8.3 工资等级表salgrade 52 2.8.4 工资补贴表bonus 53 2.9 本章小结 53 第2部分 SQL基础语法 第3章简单查询 56 (视频讲解:35分钟) 3.1 简单查询语句 57 提示:关于null的问题 57 提示:关于SQL中的投影概念 59 3.2 其他简单查询 60 3.3 本章小结 65 第4章限定查询与排序显示 66 (视频讲解:1小时12分钟) 4.1 限定查询 67 4.1.1 认识限定查询 67 提示:一般在执行查询之前都先查看 一下表中的记录数 67 4.1.2 对数据进行限定查询 70 提示:阅读查询语句的小技巧 71 注意:在使用NOT IN操作符时列表不能有NULL 78 4.2 对结果排序:ORDER BY 82 提示:语句执行顺序 82 4.3 本章小结 84 第5章单行函数 85 (视频讲解:2小时6分钟) 5.1 单行函数简介 86 5.2 字符函数 87 5.3 数值函数 92 5.4 日期函数 94 提示:关于日期和数字的问题 95 5.5 转换函数 101 注意:建议保留前导0102 提示:关于数据的隐式转换操作 103 5.6 通用函数 106 5.7 本章小结 112 第6章多表查询 113 (视频讲解:1小时30分钟) 6.1 多表查询的基本语法 114 提示:关于笛卡尔积的代数表示 115 提示:关于笛卡尔积的消除 117 6.2 多表查询实例 117 6.3 表的连接操作 121 提示:左外连接与右外连接的操作 123 6.4 自身关联 125 6.5 SQL:1999语法 129 6.5.1 交叉连接 129 6.5.2 自然连接 130 提示:自然连接的操作 130 6.5.3 USING子句 131 6.5.4 ON子句 132 提示:关于θ连接 132 6.5.5 外连接 133 6.6 数据的集合运算 135 6.7 本章小结 138 第7章分组统计查询 139 (视频讲解:1小时20分钟) 7.1 统计函数 140 7.2 单字段分组统计 142 提示:分享一下个人的分组规律 145 7.3 多字段分组统计 149 7.4 HAVING子句 152 7.5 本章小结 156 第8章子查询 157 (视频讲解:4小时3分钟) 8.1 认识子查询 158 8.2 在WHERE子句中使用子查询 160 8.2.1 子查询返回单行单列数据 160 8.2.2 子查询返回单行多列数据 162 8.2.3 子查询返回多行单列数据 164 提示:关于SOME操作符 168 8.2.4 空数据判断 170 8.3 在HAVING子句中使用子查询 170 8.4 在FROM子句中使用子查询 172 8.5 在SELECT子句中使用子查询 180 8.6 WITH子句 181 8.7 分析函数 182 8.7.1 分析函数基本语法 183 提示:关于“分组”与“分区” 183 8.7.2 分析函数范例 191 8.8 行列转换 197 提示:使用XML与ANY 200 8.9 设置数据层次 205 8.10 本章小结 210 第9章更新及事务处理 211 (视频讲解:1小时32分钟) 9.1 更新操作前的准备 212 9.2 数据的增加操作 213 9.2.1 增加数据 213 9.2.2 增加子查询结果数据 215 9.3 数据的更新操作 215 9.3.1 由用户指定更新数据 216 9.3.2 使用已有数据更新数据表 217 9.4 数据的删除操作 217 9.5 事务处理 218 9.6 锁 225 9.6.1 行级锁定 227 9.6.2 表级锁定 227 9.6.3 解除锁定 228 9.7 本章小结 229 第10章替代变量 230 (视频讲解:43分钟) 10.1 替代变量的基本概念 231 10.2 替代变量的详细说明 233 10.3 定义替代变量 236 10.4 ACCEPT指令 237 10.5 本章小结 240 第11章表的创建与管理 241 (视频讲解:1小时48分钟) 11.1 数据表的基本概念 242 11.2 Oracle常用数据类型 242 11.3 表的创建 243 11.4 表的复制 246 11.5 数据表重命名 248 11.6 截断表 249 11.7 表的删除 250 11.8 闪回技术(FlashBack) 250 11.9 修改表结构 253 11.10 添加注释 257 11.11 设置可见/不可见字段 258 11.12 表空间 261 提示:关于数据库系统的三级 模式结构 261 提示:关于数据库、表空间、表的 简单理解 263 提示:关于非系统表空间的称呼 263 11.12.1 创建表空间 264 提示:Oracle中的默认表空间 265 11.12.2 使用表空间 266 11.13 本章小结 267 第12章完整性约束 268 (视频讲解:2小时20分钟) 12.1 数据库完整性约束简介 269 12.2 非空约束NK 270 12.3 唯一约束UK 270 12.4 主键约束PK 272 12.5 检查约束CK 274 12.6 主—外键约束FK 275 12.7 查看约束 283 12.8 修改约束 284 注意:在为表中添加约束时一定要保证表中的数据没有违反约束 285 12.9 数据库综合实战 288 12.9.1 建立数据表 288 12.9.2 为数据表增加数据 290 12.9.3 数据操作 293 12.10 本章小结 298 第13章其他数据库对象 299 (视频讲解:2小时46分钟) 13.1 视图 300 13.1.1 创建视图 301 提示:关于Oracle 12c创建视图时出现的权限不足的错误 302 13.1.2 在视图上执行DML操作 304 13.1.3 WITH CHECK OPTION 子句 308 13.1.4 WITH READ ONLY子句 310 13.1.5 删除视图 311 13.2 序列 312 13.2.1 序列的作用及创建 312 13.2.2 序列的删除 314 13.2.3 创建特殊功能的序列 315 提示:设置缓存有可能造成跳号的情况 316 13.2.4 修改序列 318 13.2.5 自动序列 319 注意:自动序列对象的删除 321 13.3 同义词 321 13.4 Oracle伪列 323 13.4.1 ROWID伪列 324 13.4.2 ROWNUM伪列 326 13.4.3 Oracle 12c新特性FETCH 332 13.5 索引 334 提示:关于索引深层次学习 334 13.5.1 B*Tree索引 334 提示:关于全表扫描 335 13.5.2 位图索引 340 13.5.3 删除索引 341 13.6 本章小结 341 第14章用户权限及角色管理 343 (视频讲解:1小时23分钟) 14.1 用户管理 344 14.1.1 创建用户 344 注意:Oracle 12c的新限制 345 14.1.2 概要文件(profiles) 346 14.1.3 维护用户 348 14.1.4 删除用户 350 注意:删除用户是一个危险操作 350 14.2 权限管理 350 14.2.1 系统权限 350 提示:SYSOPER和SYSDBA权限 352 提示:用户SESSION连接 353 14.2.2 对象权限 355 14.3 角色 357 14.3.1 创建角色 358 14.3.2 角色授权 359 14.3.3 为用户授予角色 359 14.3.4 修改角色及回收角色权限 360 14.3.5 删除角色 361 14.3.6 预定义角色 361 14.4 本章小结 362 第15章数据库设计 363 (视频讲解:1小时36分钟) 15.1 数据库设计概述 364 15.2 概念模型与E—R图概述 365 15.2.1 实体 365 15.2.2 属性 366 15.2.3 联系 366 15.2.4 E—R模型实例 367 15.3 数据库设计范式 370 15.3.1 第一范式(1NF) 371 15.3.2 第二范式(2NF) 372 提示:关于函数依赖的解释 372 15.3.3 第三范式(3NF) 377 15.3.4 鲍依斯—科得范式(BCNF) 379 15.4 Sybase PowerDesigner设计 工具 381 15.4.1 概念模型设计 381 15.4.2 物理数据模型设计 385 15.5 数据库设计案例 386 15.5.1 功能描述 387 15.5.2 概念模型 388 15.5.3 物理数据模型 389 15.6 本章小结 397 第3部分数据库编程 第16章 PL/SQL编程基础 400 (视频讲解:3小时) 16.1 PL/SQL简介 401 16.2 变量的声明与赋值 403 16.2.1 声明并使用变量 403 提示:关于Oracle关键字说明 403 注意:PL/SQL中的变量不区分大小写 404 16.2.2 使用%TYPE声明变量类型 405 16.2.3 使用%ROWTYPE声明变量类型 405 16.3 运算符 406 16.3.1 赋值运算符 407 16.3.2 连接运算符 407 16.3.3 关系运算符 408 16.3.4 逻辑运算符 408 16.4 数据类型划分 410 16.5 标量类型 410 16.5.1 数值型 411 提示:关于数据溢出问题 413 16.5.2 字符型 415 16.5.3 日期型 418 16.5.4 布尔型 421 16.5.5 子类型 421 16.6 程序结构 422 16.6.1 分支结构 423 提示:Oracle也支持正则验证 426 16.6.2 循环结构 431 16.6.3 循环控制 433 16.6.4 GOTO语句 435 16.7 内部程序块 435 16.8 异常处理 436 16.8.1 异常简介 437 16.8.2 使用EXCEPTION来处理异常 438 16.8.3 用户自定义异常 442 16.9 本章小结 447 第17章集合 448 (视频讲解:2小时52分钟) 17.1 记录类型 449 17.2 索引表 454 17.3 嵌套表 457 17.3.1 定义简单类型嵌套表 457 17.3.2 定义复合类型嵌套表 460 17.3.3 在PL/SQL中使用嵌套表 463 17.4 可变数组 468 17.4.1 定义简单类型的可变数组 468 17.4.2 定义复合类型的可变数组 470 17.4.3 在PL/SQL中使用可变数组 471 17.5 集合运算符 473 17.6 集合函数 476 17.7 处理集合异常 481 17.8 使用FORALL批量绑定 483 17.9 BULK COLLECT批量接数据 484 17.10 本章小结 485 第18章游标 486 (视频讲解:1小时19分钟) 18.1 游标简介 487 18.2 隐式游标 487 18.3 显式游标 489 18.4 修改游标数据 498 18.4.1 FOR UPDATE子句 499 18.4.2 WHERE CURRENT OF子句 500 18.5 游标变量 502 18.6 本章小结 505 第19章子程序 506 (视频讲解:2小时26分钟) 19.1 子程序定义 507 19.1.1 定义过程 507 19.1.2 定义函数 509 19.2 查询子程序 512 19.3 删除子程序 515 19.4 参数模式 516 提示:不再重复演示函数的参数模式 518 19.5 子程序嵌套 522 19.6 NOCOPY选项 527 19.7 自治事务 530 19.8 子程序权限 531 19.9 利用Java调用子程序 533 19.10 本章小结 535 第20章包 536 (视频讲解:1小时38分钟) 20.1 包的定义及使用 537 20.1.1 包的基本概念 537 20.1.2 重新编译包 541 20.1.3 包的作用域 541 20.1.4 重载包中的子程序 543 20.1.5 包的初始化 544 20.1.6 包的纯度级别 546 注意:关于公用函数的说明 548 20.2 系统工具包 548 20.2.1 DBMS_OUTPUT包 548 20.2.2 DBMS_JOB包与数据库作业 551 20.2.3 DBMS_ASSERT包 555 提示:利用DBMS_ASSERT可以解决SQL注入攻击 556 20.2.4 DBMS_LOB包 556 20.3 本章小结 559 第21章触发器 560 (视频讲解:3小时30分钟) 21.1 触发器简介 561 21.2 DML触发器 562 21.3 表级DML触发器 564 21.4 行级DML触发器 568 21.4.1 使用“:old.字段”和“:new.字段”标识符 568 注意:不能将“:new”或“:old”设置为ROWTYPE类型 571 21.4.2 使用REFERENCING子句设置别名 575 21.4.3 使用WHEN子句定义触发条件 575 21.4.4 触发器谓词 577 21.4.5 使用FOLLOWS子句 578 21.5 变异表 580 21.6 复合触发器 581 21.7 instead—of触发器 586 21.7.1 在视图上定义替代触发器 586 21.7.2 在嵌套表上定义替代触发器 591 21.8 DDL触发器 593 21.9 系统触发器 599 21.10 管理触发器 603 提示:Oracle 11g之后可以建立禁用触发器 604 21.11 触发器中调用子程序 605 21.12 本章小结 606 第22章动态SQL 607 (视频讲解:1小时17分钟) 22.1 动态SQL简介 608 提示:如果不使用EXECUTE IMMEDIATE,则程序会出现错误 609 提示:在get_table_count_fun()函数执行时可能出现“ORA—01031:权限不足”错误提示 610 22.2 EXECUTE IMMEDIATE语句 610 22.2.1 执行动态SQL 611 22.2.2 设置绑定变量 612 22.2.3 接收DML更新行数 614 提示:也可以使用RETURN接收影响数据行的数据 615 22.3 批量绑定 616 22.4 处理游标操作 618 22.5 DBMS_SQL包简介 620 22.6 本章小结 623 第23章面向对象编程 624 (视频讲解:2小时35分钟) 23.1 面向对象简介 625 23.2 类与对象 625 23.3 定义对象类型——类 626 23.4 操作类中的其他结构 630 23.4.1 定义函数 630 23.4.2 构造函数 632 提示:关于默认构造函数 632 23.4.3 定义MAP与ORDER函数 633 23.4.4 对象嵌套关系 637 23.4.5 继承性 639 23.4.6 函数覆写 641 23.4.7 对象多态性 642 23.4.8 使用FINAL关键字 644 23.4.9 定义抽象函数 645 23.5 对象表 646 23.5.1 创建对象表 648 23.5.2 维护对象表数据 649 23.6 对象视图 655 23.7 本章小结 656
序言
我们在用心做事,做最好的图书,做最好的教育。 ——北京魔乐科技软件实训中心李兴华 亲爱的读者朋友,首先,我代表所有参与编写此书的作者,感谢您选择了本书。我相信,这是一本可以“看得懂”、“学得会”、“用得上”的书,只要您去用心阅读,就一定可以快速踏上Oracle开发之路。 这本书是我在清华大学出版社出版的“名师讲坛”系列图书的一本。2009年《Java开发实战经典》出版后,常年在Java类图书销售中名列前茅,销售近4万册,而后又陆续推出了《Java Web开发实战经典(基础篇)》、《Android开发实战经典》,也都多次重印,后应出版社和读者朋友的邀请,又补充了这一本。 一、本书的编写感受 本书从最初的文字到最终成稿,历时近3年,数易其稿。我相信,您从字里行间能感受到我们对此书的认真负责,这本书浸透了我们的心血和汗水,我曾无数次为一个知识点究竟怎样表述才能好理解而又不失准确而陷入困惑,无数次为一个实例安排是否能很好体现相关知识而绞尽脑汁,无数次为内容的深浅是否合适、实用性是否最强而删改取舍……真诚感谢我之前三本书——《Java开发实战经典》、《Java Web开发实战经典(基础篇)》、《Android开发实战经典》的热心读者朋友,他们的热情鼓励、热情期待、不离不弃,让我坚持、再坚持,以至于本书的完成。 本书于2013年10月9日19时27分正式完稿,那一刻,我如释重负,心中是成就?是自豪?是历尽磨难而浴火重生的感觉?是经过千军万马的高考后首次踏进美丽大学校园时那般愉悦?都有吧,那段时间,在上下班的路上,都感觉脸上始终带着微笑,感觉路边的树和野花都在对我欢笑和祝贺,兴奋之情无法用语言来描述。 二、本书的编写理念 我从事教学工作已近10年,每天都要跟书打交道,感觉市场上同类图书很多语言晦涩,普通读者看不太懂,甚至望而生畏,一而再、再而三下去,会对学习失去信心,以至于最后半途而废,不了了之。 我觉得,一本书尤其是科技书,首先能够让读者“看得懂”,然后才能“学得会”、“用得上”。写这本书就特别注意这一点,有时候,为了验证一个概念的合理解释,不得不花费大量的时间查阅资料,为了方便读者理解,不得不一次次画图来帮助理解……为的只是让读者可以真正“看得懂”。希望由这许多小小的“看得懂”构成了一本让读者完全看得懂的书。 看得懂只是看在眼里,不代表记在心里,不代表真正学会了。要真正掌握必须要大量地实践和练习,必须亲自动手去做、去练、去思考,本书设置了大量实例和练习,读者朋友可以先跟着实例照猫画虎。对入门者而言,模仿练习是最快的学习方式。 当然,要学以致用,为了让读者学习到最前沿、最实用的技术,2013年Oracle 12c出来后,我把前期Oracle 11g的资料几乎全部推翻重来,并加入了Oracle 12c中出现的主要新特性。而且尽可能也选择开发中最常用的技术作为主要突破点,不厌其烦地讲清楚、讲透彻,力求实现内容与实际开发的无缝对接。 从2008年7月开始一直到现在,5年的时间里,我边讲课,边写书。很多朋友非常不理解,问我:“为什么你写一本书要花费一年甚至更长时间?如果像市面上其他书一样去摘抄和拼凑,岂不是只需要两三个月或者更短时间?”我说,作为北京魔乐科技实训中心的教学负责人,作为一名有数年教学经验的老师,我觉得有责任让魔乐科技不负众望,有责任让千里迢迢来魔乐科技学习的学员学有所成,有责任让购买此书的读者朋友学有所获,拼凑的知识不可能做到这一点。人各有活法,社会上总是有些人在努力、在奉献、在推动社会进步。相信读过我“名师讲坛”系列图书的读者可以感受到这一点,书中的实例案例都是原创的,不可能有与其他图书雷同的例子,这些内容都是我逐字逐句敲进去的,自然会花费较长的时间。此外,超大容量的教学视频的录制和反复修改,也花费了我很多时间。 三、本书的内容及架构 从实际的开发环境而言,企业平台大概可分为4个组成部分:操作系统、数据库、中间件和编程语言,随着移动技术的发展,移动客户端也成为了企业平台一个重要的组成部分。数据库是整个企业平台中最重要的数据载体,其设计的好与坏,直接影响到企业平台的性能与项目开发的进度,而合理的数据库设计就需要合理的业务设计。业务设计完成后,服务的发布需要中间件的支持,利用中间件的支持,可以减少部分代码的开发,编程也变得更加容易。编程语言是一个最重要的数据展现手段,目前Java是最优秀的编程语言之一。目前企业平台大部分需要采用如图0-1所示的架构形式。 四、本书的特色 本书以Oracle 12c版本为基础(也适合Oracle 11g版本),对12c的新功能做了详细讲述。本书在编写时,特别注意书的可读性、实用性,力求让读者朋友“看得懂”、“学得会”、“用得上”。 除此之外,本书还具有以下鲜明特点: 1.全套专业视频 (1)知名讲师讲解:讲解教师连续7年被评为最受欢迎讲师,讲课生动形象,深入浅出。 (2)内容超级详细:视频长达45小时,共126讲,Oracle开发必备知识一网打尽。 (3)与书完全同步:涵盖全书所有内容,高效学习就是竞争力! 2.实例案例教学 1200项各类实例案例,Oracle开发必备知识彻底讲透。 3.知名讲师编著 北京魔乐科技软件实训中心首席讲师,具有8年软件开发经验、10年授课经验,培训企业超过40家,学员近万人,在业内有很高的知名度。 五、本书的服务 为了解答读者朋友遇到的各类技术问题,读者朋友可以通过如下方式与我们联系。 (1)技术答疑:本书官方论坛,多位专家为您解疑答惑。 (2)信息发布:网站将及时发布本书有关的技术和勘误。 (3)教师服务:网站为教师提供完整的教学大纲、学习笔记、视频教学等一系列资料。 (4)更多服务:参见本书封面勒口1(封面折页)的二维码、微信等。 六、本书参与人员 本书主要由北京魔乐科技软件实训中心李兴华执笔完成,以下人员(排名不分先后)也参与了本书的编写,他们是:马云涛、董鸣楠、崔岚等。 七、衷心感谢 这本书编写过程中得到了很多人的支持和鼓励,有魔乐科技的同事们,有技术骨干的朋友,有过去的读者朋友,有本书策划编辑刘利民先生,当然,包括我至亲的父母。在此,我要向他们表达衷心的感谢。 八、寄语读者 亲爱的读者朋友,在茫茫书海中您找到了这本书,这是我们之间的缘分。作为一名老师和作者,我费了很多心血,目的就是把我对这些知识的理解最大程度、最高效地传达给您。相信您只要按照书中的要求反复去做,就一定能够掌握Oracle开发的必备知识,我的目的也就达到了。 最后,期望本书能成为您学习的铺路石,期望您轻松步入软件开发的殿堂,期望您在软件开发的领域大有作为。作为曾经的老师,我以你们为荣,我为你们自豪。 ——北京魔乐科技(MLDN)软件实训中心李兴华