具体描述
本书是由Oracle授权的专业人员撰写的SQL和PL/SQL入门书籍。全书用通俗易懂的语言介绍了与SQL和PL/SQL相关的各种Oracle概念。内容包括:数据库基础知识简介,数据的存储、检索和操纵,SQL*PLus的控制,SQL函数的建立和使用,PL/SQL程序的编写,利用触发器对复杂的业务规则和安全措施进行强制实施等。本书内容深入浅出、分析透彻、概念清楚、实例丰富,有助于Oracle初学者快速掌握Oracle及PL/SQL程序设计方法。
作者简介
目录信息
前言
第一部分 数据库基础
第1章 数据库介绍 1
1.1 是什么数据库 1
1.1.1 表 1
1.1.2 行/记录 2
1.1.3 列/字段 2
1.2 数据库与电子表格有何不同 3
1.2.1 行数多 3
1.2.2 允许许多用户同时使用 3
1.2.3 安全 4
1.2.4 关系能力 4
1.2.5 保证数据质量的约束条件 5
1.3 怎样知道本书是否对你有用 6
1.3.1 在作为数据库管理员时 6
1.3.2 在开发软件时 6
1.3.3 在进行业务分析时 6
1.3.4 如果只想知道怎样更好地利用数据库 6
.1.4 sql的历史 7
1.5 sql命令种类 7
1.5.1 数据定义命令 8
1.5.2 数据操纵命令 8
1.5.3 数据控制命令 8
1.5.4 数据检索命令 8
1.5.5 事务处理控制命令 8
1.6 小结 9
1.7 习题 10
1.8 习题答案 11
第2章 数据存储和检索基础 12
2.1 一个快速的练习 12
2.1.1 建立一个表 12
2.1.2 插入记录 13
2.1.3 选择记录 14
2.1.4 删除表 14
2.2 建立表 16
2.2.1 表和列的命名准则 16
2.2.2 建立更复杂的表 20
2.2.3 显示表的结构 26
2.2.4 null和not null列 27
2.3 插入数据 28
2.3.1 怎样插入包含null值的记录 29
2.3.2 怎样插入包含单引号的数据 31
2.4 查看数据 32
2.4.1 选择特定的列 32
2.4.2 改变列的次序 33
2.4.3 利用表中数据进行计算 34
2.4.4 将两个或多个文本连接在一起 36
2.4.5 对列指定别名 37
2.5 小结 37
2.6 习题 39
2.7 习题答案 41
第3章 高级数据操纵 42
3.1 限定所选择的记录 42
3.1.1 基于数值过滤记录 42
3.1.2 基于文本过滤记录 46
3.1.3 基于日期过滤记录 48
3.2 改变记录顺序 49
3.3 显示唯一值 52
3.4 从dual中选择 54
3.5 更改表中的数据 55
3.6 删除表中的记录 56
3.6.1 删除匹配指定条件的行 56
3.6.2 删除所有的行 57
3.7 事务处理控制 57
3.7.1 撤消dml事务处理 57
3.7.2 使数据为其他人所用 61
3.7.3 隐式和显式的commit 62
3.8 小结 62
3.9 习题 63
3.10 习题答案 64
第4章 控制sql*plus 65
4.1 编辑命令 65
4.1.1 使用文本编辑器 65
4.1.2 行编辑 67
4.2 复制和粘贴 69
4.3 清除sql*plus屏幕 71
4.4 定制sql*plus环境 71
4.4.1 用sql*plus菜单进行定制 71
4.4.2 使用命令进行定制 73
4.5 保存环境定制值 73
4.6 产生更可读的输出 74
4.6.1 在sql*plus中格式化数值 74
4.6.2 sql*plus中的格式化文本 76
4.6.3 格式化sql*plus的列标题 76
4.7 将输出结果假脱机到磁盘 78
4.8 sql脚本文件 78
4.8.1 建立脚本文件 79
4.8.2 运行脚本文件 79
4.8.3 在脚本文件中使用变量 80
4.9 小结 82
4.10 习题 82
4.11 习题答案 83
第二部分 高级sql
第5章 sql函数 85
5.1 常用的单行函数 86
5.1.1 系统变量函数 86
5.1.2 数值函数 88
5.1.3 文本函数 90
5.1.4 日期函数 100
5.1.5 数据转换函数 105
5.1.6 其他函数 112
5.2 常用的分组函数 119
5.2.1 利用group by子句分组数据 121
5.2.2 利用having子句包含和排除分组
的行 123
5.3 小结 124
5.4 习题 124
5.5 习题答案 125
第6章 使用索引和约束条件 127
6.1 索引 129
6.1.1 数据库的索引 129
6.1.2 索引何时有用 130
6.1.3 如何建立索引 131
6.1.4 各种索引类型 132
6.2 保持数据的完整性:约束条件 134
6.2.1 什么是约束条件 134
6.2.2 怎样建立约束条件 134
6.2.3 启用和禁止已有的约束条件 141
6.2.4 更改和删除已有的约束条件 143
6.2.5 约束条件使用范围 144
6.3 表之间的关系 145
6.3.1 数据模型介绍 145
6.3.2 使用约束条件加强表之间的关系 146
6.3.3 编写select语句显示多个表中的
数据 151
6.3.4 外部连接 154
6.3.5 连接运算符 155
6.4 编写子查询 158
6.4.1 什么是子查询 158
6.4.2 子查询可以解决的问题类型 158
6.4.3 单行子查询 158
6.4.4 多行子查询 160
6.4.5 多列子查询 161
6.5 小结 162
6.6 习题 163
6.7 习题答案 164
第7章 其他有用的oracle技术 165
7.1 在表之间传输数据 168
7.1.1 利用insert传输数据 169
7.1.2 基于已有的表建立新表 170
7.2 重新命名表 171
7.3 更改表的结构 172
7.3.1 增加列 172
7.3.2 更改列的数据类型 173
7.3.3 更改空值选项 173
7.4 视图 174
7.4.1 建立视图 175
7.4.2 删除视图 176
7.4.3 更改视图的定义 177
7.4.4 top n分析 177
7.5 其他数据库对象 178
7.5.1 序列 178
7.5.2 同义词 181
7.5.3 oracle数据字典 183
7.6 小结 183
7.7 习题 185
7.8 习题答案 186
第三部分 用pl/sql编程
第8章 pl/sql 187
8.1 pl/sql介绍 187
8.1.1 pl/sql描述 191
8.1.2 pl/sql、sql和sql*plus之间的
关系 191
8.1.3 存储过程、函数和触发器 191
8.1.4 存储过程和sql脚本 193
8.2 pl/sql块的结构 193
8.2.1 标题部分 194
8.2.2 定义部分 195
8.2.3 执行部分 195
8.2.4 异常部分 195
8.3 建立一个简单的pl/sql过程 196
8.4 pl/sql变量和常量 198
8.4.1 定义pl/sql变量 199
8.4.2 定义pl/sql常量 199
8.4.3 给变量赋值 199
8.4.4 使用变量 201
8.5 pl/sql中的控制结构 201
8.5.1 if语句 202
8.5.2 循环 204
8.5.3 游标 207
8.5.4 嵌套循环与游标例子 210
8.6 错误处理 213
8.6.1 异常 213
8.6.2 系统定义异常 213
8.6.3 程序员定义的异常 215
8.7 小结 216
8.8 习题 216
8.9 习题答案 217
第9章 其他pl/sql工具 219
9.1 编码约定 223
9.2 关于pl/sql和oracle服务器的更多
知识 224
9.2.1 定义动态变量和pl/sql记录 224
9.2.2 pl/sql中的dml或隐式游标 228
9.2.3 隐式游标与显式游标 232
9.3 计时操作 232
9.3.1 用一个程序来度量时间 233
9.3.2 使用timing命令记录实际的时间 235
9.4 pl/sql程序包 236
9.5 触发器 241
9.5.1 触发器类型 243
9.5.2 触发器举例 243
9.5.3 修改触发器 246
9.5.4 关于触发器的要点 247
9.6 odbc 247
9.6.1 建立odbc连接 248
9.6.2 odbc连接的应用 252
9.7 小结 256
9.8 习题 257
9.9 习题答案 257
术语 259
· · · · · · (收起)
读后感
用户评价
这本书在介绍Oracle特有的PL/SQL特性方面做得还算到位,特别是对于异常处理机制的讲解,细致入微,教会了我们如何区分系统预定义的异常和如何自定义用户异常。这部分内容对于构建健壮的数据库应用程序至关重要。我个人特别喜欢它在讲解“包”(Packages)那一章的结构划分,清晰地分离了规范(Specification)和主体(Body),让“封装”的概念不再是空中楼阁。但是,这本书在性能优化这一“生命线”问题上的处理,简直是灾难性的。书中提到了“避免SQL语句中出现过多循环”,但对于**“SQL与PL/SQL上下文切换的性能损耗”**这一核心问题,几乎没有涉及深入的分析和优化建议。读完后,我依然不知道如何有效地利用BULK COLLECT和FORALL来大幅提升数据处理速度。它似乎停在了“能用”的阶段,而没有迈向“用得好”的境界。对于追求极致效率的DBA或资深开发者来说,这本书的价值可能仅限于基础知识的快速回顾。
我花了整整两个周末啃完了这本《Oracle PL/SQL程序设计基础教程》,说实话,阅读体验非常**“教科书式”**。它的优点在于其严谨的逻辑编排,从SQL基础回顾到存储过程、函数、包的构建,每一步都像是精心设计的教学步骤,确保读者不会漏掉任何一个知识点。然而,这种过度严谨也带来了副作用——阅读过程稍显枯燥乏味。书中的语言风格非常学术化,缺乏那种能让人产生共鸣的“实战叙事”。举个例子,在讲解游标的使用时,虽然把静态游标和动态游标的原理讲明白了,但缺少了“为什么要用游标”以及“在什么场景下使用游标效率更高”的对比分析。很多理论知识点需要我自己去翻阅其他博客或文档来验证其在真实数据库环境中的性能表现。对于一个习惯了“边做边学”的动手型读者来说,这本书的理论堆砌感略强,实操环节的趣味性和挑战性不足,让人很难保持长时间的专注度。
作为一名非科班出身的数据库爱好者,我本意是想找一本能让我快速上手数据库编程的书,但《Oracle PL/SQL程序设计基础教程》给我的感觉是,它假设了读者已经对关系型数据库理论有相当的了解。书一开始并没有花足够的时间来夯实SQL的基础,而是直接切入PL/SQL的程序结构。这使得我在理解像“触发器”这种与底层数据操作紧密绑定的概念时,需要频繁地回翻到前面关于SQL DML操作的章节进行查阅和巩固。这种知识点的跳跃性,对零基础用户不太友好。另外,书中对于**“版本兼容性”**的探讨近乎于零。我们目前使用的Oracle数据库版本相对较新,书中很多示例代码和函数可能在我们的环境中已经有了更优的替代方案(比如分析函数的使用),但这本书似乎固守着一个旧有的编程范式,缺乏与时俱进的更新,这在快速迭代的技术领域是个硬伤。
从排版和注释的角度来看,《Oracle PL/SQL程序设计基础教程》的表现中规中矩,但远称不上优秀。代码块的字体大小和行间距尚可接受,便于阅读。然而,美中不足的是,书中出现的**错误和不一致性**让我感到非常困扰。有几次,书中给出的一个PL/SQL代码片段在实际运行环境中会抛出我从未见过的语法错误,经过反复比对,才发现是书本上的某个关键字拼写错误或者忘记了结束符号。在技术书籍中,这种低级的错误是极度影响阅读信心的。它让你时刻都在怀疑:“我现在学的这个知识点,是不是也是过时的或者有瑕疵的?”一本优秀的教程应该尽可能减少读者的“调试时间”,将精力集中在理解概念上,而不是去纠正作者的笔误。希望后续再版时,能够对所有的代码示例进行彻底的实测和校对,这将极大地提升这本书的专业度和读者的信赖感。
这本《Oracle PL/SQL程序设计基础教程》真是让人又爱又恨。书本的装帧设计挺朴实的,一看就是那种技术类书籍的风格,内容上,它确实是把基础概念讲得比较透彻,对于初学者来说,搭建一个扎实的知识框架很有帮助。作者在讲解PL/SQL的语法结构时,用了很多清晰的例子,这一点我很欣赏。比如,在变量声明和基本控制结构(IF/THEN/ELSE, LOOP)的处理上,书中的示例代码干净利落,很容易让人理解逻辑走向。但是,随着阅读深入,我发现这本书在深入探讨一些高级主题时,显得有些力不从心。例如,在涉及事务管理和并发控制的部分,讲解深度远远不够,很多实际开发中会遇到的锁机制、死锁问题,书里只是蜻蜓点水地带过,没有提供足够的实战指导。感觉这更像是一本“入门手册”,而不是一本能指导你完成复杂项目开发的“工具书”。如果你是那种希望快速上手并解决实际问题的开发者,可能会在进阶内容上感到有些失落,需要另寻高明的参考资料来补充。总而言之,打地基不错,但盖高楼的图纸就不太够用了。