Oracle Database 11g SQL开发指南

Oracle Database 11g SQL开发指南 pdf epub mobi txt 电子书 下载 2026

出版者:清华大学出版社
作者:皮拉斯
出品人:
页数:600
译者:
出版时间:2008-11
价格:78.00元
装帧:平装
isbn号码:9787302185895
丛书系列:
图书标签:
  • oracle
  • 数据库
  • SQL
  • Database
  • 11g
  • sql
  • 开发
  • 计算机
  • Oracle数据库
  • SQL
  • 开发
  • 指南
  • 11g
  • SQL语言
想要找书就要到 小美书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

《Oracle Database 11g SQL开发指南》深入浅出、全面细致地讲解了如何读取和修改数据库信息,如何使用SQL Plus和SQL Developer,如何使用数据库对象,如何编写PL/SQL程序等内容。随着对《Oracle Database 11g SQL开发指南》学习的深入,读者将循序渐进地掌握最新的SQL特性和工具、性能优化技术、高级查询、Java支持以及XML应用。《Oracle Database 11g SQL开发指南》主要内容:解读SQL Plus和SQL Developer

使用SQL SELECT、INSERT、UPDATE和DELETE语句。编写PL/SQL程序。创建表、序列、索引、视图和触发器。编写包含复杂分析功能的高级查询。创建用于处理抽象数据的数据库对象和集合。编写Java程序并使用JDBC访问。racle数据库。使用大对象处理音频、视频等多媒体文件。优化SQL语句以提高其执行效率。探究Oracle数据库处理XML的能力。掌握Oracle Database 11g的最新特性,如PIVOT、UNPIVOT和闪回数据存档等。

《Oracle Database 11g SQL开发指南》:一份面向开发者的深度解析 本书旨在为Oracle Database 11g环境中进行SQL开发及优化的专业人士提供一份全面而深入的指导。我们专注于SQL语言的核心功能、高级特性及其在实际数据库开发中的应用,力求帮助读者构建高效、稳定且可维护的数据库解决方案。 一、 SQL语言基础与核心概念重温 即使是有经验的开发者,对SQL基础的牢固掌握也是一切高效开发的前提。本书将首先回顾SQL的核心概念,包括: 数据定义语言 (DDL): 深入解析`CREATE`、`ALTER`、`DROP`等DDL语句在表、视图、索引、序列、同义词、约束等数据库对象的创建、修改和删除中的细致用法。我们将特别关注对象创建的语法细节、参数选项以及它们对数据库性能和结构的影响。例如,在创建表时,我们会详细讨论数据类型选择的考量(如`VARCHAR2` vs `NVARCHAR2`,`NUMBER`的精度与标度),分区策略的初步介绍,以及如何利用约束(主键、外键、唯一、检查)来保证数据完整性。 数据操作语言 (DML): 详细阐述`INSERT`、`UPDATE`、`DELETE`、`MERGE`等DML语句的各项功能。我们将重点讲解`INSERT ALL`、`INSERT FIRST`的多表插入,`UPDATE`的条件控制,`DELETE`的事务安全性,以及`MERGE`语句在合并数据时的强大能力,特别是其与`WHEN MATCHED THEN`和`WHEN NOT MATCHED THEN`子句的组合应用。 数据查询语言 (DQL): `SELECT`语句是SQL的核心。本书将从基础的单表查询、多表连接(内连接、左连接、右连接、全外连接)、子查询(相关子查询、非相关子查询)、集合操作(`UNION`、`UNION ALL`、`INTERSECT`、`MINUS`)到聚合函数、分组、排序等一一剖析。我们将深入探讨连接的不同类型及其性能影响,子查询的优化技巧,以及如何利用`ROWNUM`、`ROW_NUMBER()`、`RANK()`、`DENSE_RANK()`等分析函数实现复杂的数据排序和分组。 二、 高级SQL特性与性能优化 掌握了基础,进阶则在于深入理解Oracle的独特功能以及如何优化SQL的执行效率。 高级连接技术: 除了标准的SQL连接,Oracle提供了更灵活的连接方式,如`CROSS JOIN`、`NATURAL JOIN`、`JOIN ON`。我们将重点分析`OUTER JOIN`的各种场景,并介绍`HIERARCHICAL QUERIES`(层次查询),使用`CONNECT BY`子句处理树形结构数据,这在构建组织架构、物料清单等场景中至关重要。 窗口函数 (Analytic Functions): 窗口函数是SQL 2003标准的重要组成部分,Oracle Database 11g提供了丰富的窗口函数。本书将详尽介绍如何使用`OVER()`子句配合各种窗口函数(如`LAG`、`LEAD`、`FIRST_VALUE`、`LAST_VALUE`、`NTH_VALUE`、`ROW_NUMBER`、`RANK`、`DENSE_RANK`、`SUM`、`AVG`、`COUNT`等),实现比传统分组聚合更灵活的计算。我们将通过大量实例演示如何在行集内进行计算,例如计算同比、环比增长,排名,滑动平均值等。 SQL优化基础: 性能是数据库开发的关键。本书将提供一套系统性的SQL优化方法论,包括: 理解执行计划 (Execution Plans): 学习如何使用`EXPLAIN PLAN`、`AUTOTRACE`等工具分析SQL语句的执行过程,识别瓶颈,如全表扫描、低效的连接方式、不必要的排序等。 索引的有效使用: 深入探讨不同类型的索引(B-tree、位图、函数基索引、复合索引、反向键索引)及其适用场景。我们将分析索引是如何被SQL查询利用的,以及创建和维护索引的策略,包括哪些情况不适合使用索引,以及如何避免索引失效。 SQL调优技巧: 介绍优化SQL语句的常见策略,如避免`SELECT `,使用`EXISTS`代替`IN`(在某些情况下),合并子查询,利用`UNION ALL`代替`UNION`(当不需要去重时),合理使用`CASE`表达式,以及对`NULL`值的处理。 物化视图 (Materialized Views): 讲解物化视图的创建、刷新机制,以及它们如何通过预计算复杂查询的结果来提升性能。 三、 PL/SQL与SQL的结合 Oracle的强大之处在于其过程化SQL扩展——PL/SQL。本书将探讨如何将SQL语句集成到PL/SQL块中,实现更复杂的逻辑控制和数据处理。 PL/SQL中的SQL: 介绍在PL/SQL中执行SQL语句的语法,包括`SELECT INTO`、`INSERT`、`UPDATE`、`DELETE`、`MERGE`语句,以及如何处理返回多行结果的查询(使用`BULK COLLECT INTO`)。 游标 (Cursors): 详细讲解显式游标和隐式游标,以及如何在PL/SQL中遍历查询结果集,进行逐行处理。我们将重点介绍`FOR`循环游标和`BULK COLLECT`结合`LIMIT`子句进行批量处理的性能优势。 异常处理: 学习如何在PL/SQL中捕获和处理SQL执行过程中可能发生的各种异常,保证程序的健壮性。 四、 实用场景与进阶应用 为了使读者能更好地将所学知识应用于实际工作中,本书还包含一些实用的场景和进阶应用。 数据加载与导出: 介绍Oracle提供的数据泵(Data Pump)工具(`expdp`/`impdp`),以及SQLLoader等工具,用于高效地导入和导出大量数据。 SQL注入防护: 讨论SQL注入的风险,并提供防止SQL注入的实践方法,如使用绑定变量。 Oracle 11g特有功能: 适当提及Oracle 11g版本中的一些增强特性,例如SQL优化相关的增强(如SQL Tuning Advisor的改进),以及一些新的SQL函数或语法糖,以确保内容的针对性。 通过对以上内容的深入讲解和丰富的示例,本书旨在成为Oracle Database 11g环境下SQL开发人员的必备参考。无论是数据库初学者还是经验丰富的开发者,都能从中受益,提升SQL开发技能和数据库性能调优能力。

作者简介

Jason Price是职业咨询专家,Oracle公司前产品经理,拥有英国Bristol大学的物理学科学荣誉学士学位。他对Oracle的众多产品,如数据库、应用服务器和CRM应用程序都做出了卓越的贡献。Jason是一位经Oracle认证的数据库管理员和应用程序开发人员,在软件行业具有15年以上的从业经验,并执笔撰写了多本关于Oracle、Java和.NET的优秀图书。

目录信息

第1章 简介 1
1.1 关系数据库简介 2
1.2 结构化查询语言(SQL)简介 2
1.3 使用SQL*Plus 4
1.3.1 启动SQL*Plus 4
1.3.2 从命令行启动SQL*Plus 5
1.3.3 使用SQL*Plus执行SELECT语句 6
1.4 SQL Developer 7
1.5 创建store模式 9
1.5.1 运行SQL*Plus脚本创建store模式 9
1.5.2 用来创建store模式的DDL语句 10
1.6 添加、修改、删除行 18
1.6.1 向表中添加行 18
1.6.2 修改表中的现有行 19
1.6.3 从表中删除行 20
1.7 BINARY_FLOAT和BINARY_ DOUBLE数据类型 21
1.7.1 BINARY_FLOAT和BINARY_DOUBLE的优点 21
1.7.2 在表中使用BINARY_FLOAT和BINARY_DOUBLE 21
1.7.3 特殊值 22
1.8 退出SQL*Plus 23
1.9 Oracle PL/SQL简介 23
1.10 小结 24
第2章 从数据库表中检索信息 25
2.1 对单表执行SELECT语句 25
2.2 选择一个表中的所有列 26
2.3 使用WHERE子句过滤行 27
2.4 理解行标识符 27
2.5 理解行号 28
2.6 执行算术运算 28
2.6.1 日期运算 29
2.6.2 列运算 30
2.7 使用列别名 31
2.8 使用连接操作合并列的输出结果 32
2.9 理解空值 33
2.10 禁止显示重复行 34
2.11 比较值 35
2.12 使用SQL操作符 37
2.12.1 使用LIKE操作符 37
2.12.2 使用IN操作符 38
2.12.3 使用BETWEEN操作符 39
2.13 使用逻辑操作符 40
2.14 理解操作符的优先级 41
2.15 使用ORDER BY子句对行进行排序 41
2.16 执行使用两个表的SELECT语句 42
2.17 使用表别名 44
2.18 笛卡尔积 45
2.19 执行使用多于两个表的SELECT语句 46
2.20 连接条件和连接类型 47
2.20.1 不等连接 47
2.20.2 外连接 48
2.20.3 自连接 51
2.21 使用SQL/92语法执行连接 52
2.21.1 使用SQL/92标准语法执行两个表的内连接 53
2.21.2 使用USING关键字简化连接 53
2.21.3 使用SQL/92执行多于两个表的内连接 54
2.21.4 使用SQL/92执行多列的内连接 55
2.21.5 使用SQL/92执行外连接 55
2.21.6 使用SQL/92执行自连接 56
2.21.7 使用SQL/92执行交叉
连接 57
2.22 小结 57
第3章 使用SQL*Plus 59
3.1 查看表结构 60
3.2 编辑SQL语句 60
3.3 保存、检索并运行文件 62
3.4 格式化列 65
3.5 设置页面大小 67
3.6 设置行大小 68
3.7 清除列格式 68
3.8 使用变量 69
3.8.1 临时变量 69
3.8.2 已定义变量 72
3.9 创建简单报表 74
3.9.1 在脚本中使用临时变量 74
3.9.2 在脚本中使用已定义变量 75
3.9.3 向脚本中的变量传递值 75
3.9.4 添加页眉和页脚 76
3.9.5 计算小计 78
3.10 从SQL*Plus获取帮助信息 79
3.11 自动生成SQL语句 80
3.12 断开数据库连接并退出SQL*Plus 81
3.13 小结 81
第4章 使用简单函数 83
4.1 使用单行函数 84
4.1.1 字符函数 84
4.1.2 数字函数 92
4.1.3 转换函数 96
4.1.4 正则表达式函数 102
4.2 使用聚合函数 108
4.2.1 AVG函数 109
4.2.2 COUNT函数 110
4.2.3 MAX和MIN函数 110
4.2.4 STDDEV函数 111
4.2.5 SUM函数 111
4.2.6 VARIANCE函数 112
4.3 对行进行分组 112
4.3.1 使用GROUP BY子句对行进行分组 112
4.3.2 调用聚合函数的错误用法 115
4.3.3 使用HAVING子句过滤行组 116
4.3.4 组合使用WHERE和GROUP BY子句 117
4.3.5 组合使用WHERE、GROUP
BY和HAVING子句 117
4.4 小结 118
第5章 日期和时间的存储与处理 119
5.1 几个简单的存储和检索日期的例子 120
5.2 使用TO_CHAR()和
TO_DATE()转换时间值 121
5.2.1 使用TO_CHAR()将时间值转换为字符串 121
5.2.2 使用TO_DATE()将字符串转换为时间值 125
5.3 设置默认的日期格式 128
5.4 Oracle对2位年份的处理 129
5.4.1 使用YY格式 129
5.4.2 使用RR格式 130
5.5 使用时间值函数 131
5.5.1 ADD_MONTHS函数 131
5.5.2 LAST_DAY函数 132
5.5.3 MONTHS_BETWEEN函数 133
5.5.4 NEXT_DAY函数 133
5.5.5 ROUND函数 133
5.5.6 SYSDATE 134
5.5.7 TRUNC函数 134
5.6 理解时区 135
5.6.1 与时区有关的函数 136
5.6.2 数据库时区和会话时区 136
5.6.3 获取时区的时差 137
5.6.4 获取时区名 138
5.6.5 将时间值从一个时区转换为另一个时区 138
5.7 使用时间戳 139
5.7.1 使用时间戳类型 139
5.7.2 与时间戳有关的函数 143
5.8 使用时间间隔 148
5.8.1 使用INTERVAL YEAR TO MONTH类型 149
5.8.2 使用INTERVAL DAY TO
SECOND类型 150
5.8.3 与时间间隔有关的函数 152
5.9 小结 153
第6章 子查询 155
6.1 子查询的类型 155
6.2 编写单行子查询 156
6.2.1 在WHERE子句中使用子查询 156
6.2.2 使用其他单行操作符 157
6.2.3 在HAVING子句中使用子查询 157
6.2.4 在FROM子句中使用子查询(内联视图) 159
6.2.5 可能碰到的错误 159
6.3 编写多行子查询 160
6.3.1 在多行子查询中使用IN操作符 161
6.3.2 在多行子查询中使用ANY操作符 162
6.3.3 在多行子查询中使用ALL操作符 162
6.4 编写多列子查询 162
6.5 编写关联子查询 163
6.5.1 关联子查询的例子 163
6.5.2 在关联子查询中使用EXISTS和NOT EXISTS 164
6.6 编写嵌套子查询 166
6.7 编写包含子查询的UPDATE和DELETE语句 168
6.7.1 编写包含子查询的UPDATE语句 168
6.7.2 编写包含子查询的DELETE语句 168
6.8 小结 169
第7章 高级查询 171
7.1 使用集合操作符 172
7.1.1 示例表 172
7.1.2 使用UNION ALL操作符 173
7.1.3 使用UNION操作符 174
7.1.4 使用INTERSECT操作符 175
7.1.5 使用MINUS操作符 175
7.1.6 组合使用集合操作符 176
7.2 使用TRANSLATE函数 178
7.3 使用DECODE()函数 179
7.4 使用CASE表达式 181
7.4.1 使用简单CASE表达式 181
7.4.2 使用搜索CASE表达式 182
7.5 层次化查询 183
7.5.1 示例数据 183
7.5.2 使用CONNECT BY和
START WITH子句 185
7.5.3 使用伪列LEVEL 185
7.5.4 格式化层次化查询的结果 186
7.5.5 从非根节点开始遍历 187
7.5.6 在START WITH子句中使用子查询 187
7.5.7 从下向上遍历树 188
7.5.8 从层次查询中删除节点和分支 188
7.5.9 在层次化查询中加入其他条件 189
7.6 使用扩展的GROUP BY子句 190
7.7 使用ROLLUP子句 192
7.7.1 使用CUBE子句 194
7.7.2 使用GROUPING函数 195
7.7.3 使用GROUPING SETS子句 198
7.7.4 使用GROUPING_ID函数 199
7.7.5 在GROUP BY子句中多次使用一个列 201
7.7.6 使用GROUP_ID函数 201
7.8 使用分析函数 203
7.8.1 示例表 203
7.8.2 使用评级函数 204
7.8.3 使用反百分点函数 211
7.8.4 使用窗口函数 211
7.8.5 使用报表函数 216
7.8.6 使用LAG和LEAD函数 218
7.8.7 使用FIRST和LAST函数 219
7.8.8 使用线性回归函数 219
7.8.9 使用假想评级与分布函数 221
7.9 使用MODEL子句 221
7.9.1 MODEL子句示例 222
7.9.2 用位置标记和符号标记访问数据单元 223
7.9.3 用BETWEEN和AND返回特定范围内的数据单元 224
7.9.4 用ANY和IS ANY访问所有的数据单元 224
7.9.5 用CURRENTV()获取某个维度的当前值 225
7.9.6 用FOR循环访问数据单元 226
7.9.7 处理空值和缺失值 227
7.9.8 更新已有的单元 229
7.10 使用PIVOT和UNPIVOT子句 230
7.10.1 PIVOT子句示例 230
7.10.2 转换多个列 231
7.10.3 在转换中使用多个聚合函数 232
7.10.4 使用UNPIVOT子句 233
7.11 小结 234
第8章 修改表的内容 237
8.1 使用INSERT语句添加行 237
8.1.1 省略列的列表 239
8.1.2 为列指定空值 239
8.1.3 在列值中使用单引号和双引号 239
8.1.4 从一个表向另外一个表复制行 239
8.2 使用UPDATE语句修改行 240
8.3 RETURNING子句 241
8.4 使用DELETE语句删除行 242
8.5 数据库的完整性 242
8.5.1 主键约束 242
8.5.2 外键约束 243
8.6 使用默认值 244
8.7 使用MERGE合并行 245
8.8 数据库事务 247
8.8.1 事务的提交和回滚 247
8.8.2 事务的开始与结束 248
8.8.3 保存点 249
8.8.4 事务的ACID特性 251
8.8.5 并发事务 251
8.8.6 事务锁 252
8.8.7 事务隔离级别 253
8.8.8 SERIALIZABLE事务的一个例子 254
8.9 查询闪回 254
8.9.1 使用闪回的授权 254
8.9.2 时间查询闪回 255
8.9.3 系统变更号查询闪回 256
8.10 小结 258
第9章 用户、特权和角色 259
9.1 用户 260
9.1.1 创建用户 260
9.1.2 修改用户密码 261
9.1.3 删除用户 261
9.2 系统特权 262
9.2.1 向用户授予系统特权 263
9.2.2 检查授予用户的系统特权 263
9.2.3 使用系统特权 264
9.2.4 撤消用户的系统特权 264
9.3 对象特权 265
9.3.1 向用户授予对象特权 265
9.3.2 检查已授予的对象特权 266
9.3.3 检查已接受的对象特权 267
9.3.4 使用对象特权 269
9.3.5 同名对象 269
9.3.6 公共同名对象 270
9.3.7 撤消用户的对象特权 271
9.4 角色 271
9.4.1 创建角色 271
9.4.2 为角色授权 272
9.4.3 将角色授予用户 272
9.4.4 检查授予用户的角色 273
9.4.5 检查授予角色的系统特权 274
9.4.6 检查授予角色的对象特权 274
9.4.7 使用授予角色的特权 276
9.4.8 默认角色 276
9.4.9 撤消角色 277
9.4.10 从角色中撤消特权 277
9.4.11 删除角色 277
9.5 审计 277
9.5.1 执行审计需要的特权 277
9.5.2 审计示例 278
9.5.3 审计跟踪视图 279
9.6 小结 280
第10章 创建表、序列、索引和视图 281
10.1 表 282
10.1.1 创建表 282
10.1.2 获得有关表的信息 283
10.1.3 获得表中列的信息 284
10.1.4 修改表 285
10.1.5 重命名表 294
10.1.6 向表中添加注释 294
10.1.7 截断表 295
10.1.8 删除表 295
10.2 序列 295
10.2.1 创建序列 295
10.2.2 获取有关序列的信息 297
10.2.3 使用序列 298
10.2.4 使用序列填充主键 299
10.2.5 修改序列 300
10.2.6 删除序列 301
10.3 索引 301
10.3.1 创建B-树索引 302
10.3.2 创建基于函数的索引 303
10.3.3 获取有关索引的信息 303
10.3.4 获取列索引的信息 304
10.3.5 修改索引 304
10.3.6 删除索引 305
10.3.7 创建位图索引 305
10.4 视图 305
10.4.1 创建并使用视图 306
10.4.2 修改视图 313
10.4.3 删除视图 314
10.5 闪回数据归档 314
10.6 小结 316
第11章 PL/SQL编程简介 317
11.1 块结构 318
11.2 变量和类型 319
11.3 条件逻辑 320
11.4 循环 320
11.4.1 简单循环 321
11.4.2 WHILE循环 322
11.4.3 FOR循环 322
11.5 游标 323
11.5.1 步骤1:声明用于保存列值的变量 323
11.5.2 步骤2:声明游标 323
11.5.3 步骤3:打开游标 324
11.5.4 步骤4:从游标中取得记录 324
11.5.5 步骤5:关闭游标 325
11.5.6 完整的示例:product_cursor.sql 325
11.5.7 游标与FOR循环 326
11.5.8 OPEN-FOR语句 327
11.5.9 无约束游标 329
11.6 异常 330
11.6.1 ZERO_DIVIDE异常 332
11.6.2 DUP_VAL_ON_INDEX异常 333
11.6.3 INVALID_NUMBER异常 333
11.6.4 OTHERS异常 333
11.7 过程 334
11.7.1 创建过程 334
11.7.2 调用过程 337
11.7.3 获取有关过程的信息 338
11.7.4 删除过程 338
11.7.5 查看过程中的错误 338
11.8 函数 339
11.8.1 创建函数 339
11.8.2 调用函数 340
11.8.3 获取有关函数的信息 341
11.8.4 删除函数 341
11.9 包 341
11.9.1 创建包规范 342
11.9.2 创建包体 342
11.9.3 调用包中的函数和过程 344
11.9.4 获取有关包中函数和过程的信息 344
11.9.5 删除包 345
11.10 触发器 345
11.10.1 触发器运行的时机 345
11.10.2 设置示例触发器 345
11.10.3 创建触发器 346
11.10.4 激活触发器 347
11.10.5 获取有关触发器的信息 348
11.10.6 禁用和启用触发器 350
11.10.7 删除触发器 350
11.11 Oracle Database 11g新增加的PL/SQL特性 350
11.11.1 SIMPLE_INTEGER类型 350
11.11.2 在PL/SQL中使用序列 351
11.11.3 PL/SQL本地机器代码生成 352
11.12 小结 353
第12章 数据库对象 355
12.1 对象简介 356
12.2 创建对象类型 356
12.3 使用DESCRIBE获取有关对象类型的信息 358
12.4 在数据库表中使用对象类型 359
12.4.1 列对象 359
12.4.2 对象表 361
12.4.3 对象标识符和对象引用 365
12.4.4 比较对象值 367
12.5 在PL/SQL中使用对象 369
12.5.1 get_products()函数 370
12.5.2 display_product()过程 371
12.5.3 insert_product()过程 372
12.5.4 update_product_price()过程 373
12.5.5 get_product()函数 373
12.5.6 update_product()过程 374
12.5.7 get_product_ref()函数 375
12.5.8 delete_product()过程 375
12.5.9 product_lifecycle()过程 376
12.5.10 product_lifecycle2()过程 377
12.6 类型继承 378
12.7 用子类型对象代替超类型对象 380
12.7.1 SQL例子 380
12.7.2 PL/SQL例子 381
12.7.3 NOT SUBSTITUTABLE对象 382
12.8 其他有用的对象函数 383
12.8.1 IS OF() 383
12.8.2 TREAT() 387
12.8.3 SYS_TYPEID() 391
12.9 NOT INSTANTIABLE对象类型 391
12.10 用户自定义的构造函数 393
12.11 重载方法 396
12.12 通用调用 398
12.13 小结 400
第13章 集合 401
13.1 集合简介 401
13.2 创建集合类型 402
13.2.1 创建变长数组类型 402
13.2.2 创建嵌套表类型 403
13.3 使用集合类型定义表列 403
13.3.1 使用变长数组类型定义表列 403
13.3.2 使用嵌套表类型定义表列 404
13.4 获取集合信息 404
13.4.1 获取变长数组信息 404
13.4.2 获得嵌套表信息 405
13.5 填充集合元素 407
13.5.1 填充变长数组元素 407
13.5.2 填充嵌套表元素 407
13.6 检索集合元素 408
13.6.1 检索变长数组元素 408
13.6.2 检索嵌套表元素 409
13.7 使用TABLE()将集合视为一系列行 409
13.7.1 将TABLE()用于变长数组 410
13.7.2 将TABLE()用于嵌套表 411
13.8 更改集合元素 411
13.8.1 更改变长数组元素 411
13.8.2 更改嵌套表元素 412
13.9 使用映射方法比较嵌套表的内容 413
13.10 使用CAST()将集合从一种类型转换为另一种类型 415
13.10.1 使用CAST()将变长数组转换为嵌套表 416
13.10.2 使用CAST()将嵌套表转换为变长数组 416
13.11 在PL/SQL中使用集合 417
13.11.1 操作变长数组 417
13.11.2 操作嵌套表 419
13.11.3 PL/SQL集合方法 421
13.12 多级集合类型 431
13.13 Oracle Database 10g对集合的增强 433
13.13.1 关联数组 434
13.13.2 更改元素类型的大小 435
13.13.3 增加变长数组的元素数目 435
13.13.4 在临时表中使用变长数组 435
13.13.5 为嵌套表的存储表使用不同的表空间 435
13.13.6 嵌套表对ANSI的支持 436
13.14 小结 444
第14章 大对象 447
14.1 大对象(LOB)简介 448
14.2 示例文件 448
14.3 理解大对象类型 449
14.4 创建包含大对象的表 449
14.5 在SQL中使用大对象 450
14.5.1 使用CLOB和BLOB 450
14.5.2 使用BFILE 452
14.6 在PL/SQL中使用大对象 454
14.6.1 APPEND() 456
14.6.2 CLOSE() 457
14.6.3 COMPARE() 457
14.6.4 COPY() 458
14.6.5 CREATETEMPORARY() 459
14.6.6 ERASE() 460
14.6.7 FILECLOSE() 460
14.6.8 FILECLOSEALL() 461
14.6.9 FILEEXISTS() 461
14.6.10 FILEGETNAME() 462
14.6.11 FILEISOPEN() 462
14.6.12 FILEOPEN() 463
14.6.13 FREETEMPORARY() 463
14.6.14 GETCHUNKSIZE() 464
14.6.15 GET_STORAGE_LIMIT() 464
14.6.16 GETLENGTH() 464
14.6.17 INSTR() 465
14.6.18 ISOPEN() 466
14.6.19 ISTEMPORARY() 467
14.6.20 LOADFROMFILE() 467
14.6.21 LOADBLOBFROMFILE() 468
14.6.22 LOADCLOBFROMFILE() 469
14.6.23 OPEN() 470
14.6.24 READ() 471
14.6.25 SUBSTR() 471
14.6.26 TRIM() 473
14.6.27 WRITE() 473
14.6.28 WRITEAPPEND() 474
14.6.29 PL/SQL示例过程 475
14.7 理解LONG和LONG RAW类型 492
14.7.1 示例表 492
14.7.2 向LONG和LONG RAW列添加数据 492
14.7.3 将LONG和LONG RAW列转换为LOB 493
14.8 Oracle Database 10g对大对象的增强 494
14.8.1 CLOB和NCLOB对象之间的隐式转换 494
14.8.2 在触发器中使用LOB时:new属性的用法 495
14.9 Oracle Database 11g对大对象的增强 495
14.9.1 加密LOB数据 496
14.9.2 压缩LOB数据 499
14.9.3 删除LOB重复数据 499
14.10 小结 500
第15章 在Java程序中运行SQL 501
15.1 准备工作 502
15.2 配置计算机 502
15.2.1 设置ORACLE_HOME环境变量 502
15.2.2 设置JAVA_HOME环境变量 503
15.2.3 设置PATH环境变量 503
15.2.4 设置CLASSPATH环境变量 504
15.2.5 设置LD_LIBRARY_PATH环境变量 504
15.3 Oracle JDBC驱动程序 505
15.3.1 Thin驱动程序 505
15.3.2 OCI驱动程序 505
15.3.3 服务器端内部驱动程序 505
15.3.4 服务器端Thin驱动程序 505
15.4 导入JDBC包 506
15.5 注册Oracle JDBC驱动程序 506
15.6 打开数据库连接 506
15.6.1 使用getConnection()方法连接数据库 507
15.6.2 数据库URL 507
15.6.3 使用Oracle数据源连接数据库 508
15.7 创建JDBC Statement对象 511
15.8 从数据库中检索行 511
15.8.1 步骤1:创建和填充ResultSet对象 511
15.8.2 步骤2:从ResultSet对象中读取列值 512
15.8.3 步骤3:关闭ResultSet对象 514
15.9 向数据库中添加行 514
15.10 更改数据库的行 515
15.11 删除数据库的行 516
15.12 处理数字 516
15.13 处理数据库Null值 517
15.14 控制数据库事务 519
15.15 执行DDL语句 519
15.16 处理异常 520
15.17 关闭JDBC对象 521
15.18 示例程序:BasicExample1.java 522
15.18.1 编译BasicExample1 527
15.18.2 运行BasicExample1 527
15.19 预备SQL语句 529
15.20 示例程序:BasicExample2.java 531
15.21 Oracle JDBC扩展 534
15.21.1 oracle.sql包 534
15.21.2 oracle.jdbc包 537
15.21.3 示例程序:
BasicExample3.java 540
15.22 小结 543
第16章 SQL优化 545
16.1 SQL优化简介 545
16.2 使用WHERE子句过滤行 546
16.3 使用表连接而不是多个查询 546
16.4 执行连接时使用完全限定的列引用 547
16.5 使用CASE表达式而不是多个查询 548
16.6 添加表索引 549
16.7 使用WHERE而不是HAVING 550
16.8 使用UNION ALL而不是UNION 550
16.9 使用EXISTS而不是IN 552
16.10 使用EXISTS而不是DISTINCT 552
16.11 使用GROUPING SETS而不是CUBE 553
16.12 使用绑定变量 553
16.12.1 不相同的SQL语句 554
16.12.2 使用绑定变量定义相同SQL语句 554
16.12.3 列出和输出绑定变量 555
16.12.4 使用绑定变量存储PL/SQL函数的返回值 555
16.12.5 使用绑定变量存储REFCURSOR的行 556
16.13 比较执行查询的成本 556
16.13.1 检查执行计划 557
16.13.2 比较执行计划 562
16.14 为优化器传递提示 563
16.15 其他优化工具 564
16.15.1 Oracle Enterprise Manager
Diagnostics Pack 565
16.15.2 Automatic Database
Diagnostic Monitor 565
16.16 小结 566
第17章 XML和Oracle数据库 567
17.1 XML简介 567
17.2 从关系数据生成XML 568
17.2.1 XMLELEMENT() 568
17.2.2 XMLATTRIBUTES() 571
17.2.3 XMLFOREST() 571
17.2.4 XMLAGG() 573
17.2.5 XMLCOLATTVAL() 575
17.2.6 XMLCONCAT() 576
17.2.7 XMLPARSE() 576
17.2.8 XMLPI() 577
17.2.9 XMLCOMMENT() 577
17.2.10 XMLSEQUENCE() 578
17.2.11 XMLSERIALIZE() 579
17.2.12 PL/SQL范例:将XML数据写入文件 579
17.2.13 XMLQUERY() 581
17.3 将XML保存到数据库中 585
17.3.1 范例XML文件 585
17.3.2 创建范例XML模式 586
17.3.3 从范例XML模式检索信息 588
17.3.4 更新范例XML模式中的信息 592
17.4 小结 595
附录A Oracle数据类型 597
· · · · · · (收起)

读后感

评分

适合初学者掌握oracle的sql语句,某些地方的讲解也谈得上细致。翻译也算说得过去。但本书在分析函数方面的讲解非常垃圾,你根本搞不清是怎么回事。还得到网上查资料学习这部分。

评分

适合初学者掌握oracle的sql语句,某些地方的讲解也谈得上细致。翻译也算说得过去。但本书在分析函数方面的讲解非常垃圾,你根本搞不清是怎么回事。还得到网上查资料学习这部分。

评分

适合初学者掌握oracle的sql语句,某些地方的讲解也谈得上细致。翻译也算说得过去。但本书在分析函数方面的讲解非常垃圾,你根本搞不清是怎么回事。还得到网上查资料学习这部分。

评分

适合初学者掌握oracle的sql语句,某些地方的讲解也谈得上细致。翻译也算说得过去。但本书在分析函数方面的讲解非常垃圾,你根本搞不清是怎么回事。还得到网上查资料学习这部分。

评分

适合初学者掌握oracle的sql语句,某些地方的讲解也谈得上细致。翻译也算说得过去。但本书在分析函数方面的讲解非常垃圾,你根本搞不清是怎么回事。还得到网上查资料学习这部分。

用户评价

评分

这本书简直是Oracle SQL开发的宝藏,我花了好几天的时间才勉强消化了里面的大部分内容。开篇就以一种非常扎实的方式介绍了SQL的基本语法,让我这个初学者一点点建立起对SQL的认知。它不像很多教程那样蜻蜓点水,而是深入讲解了SELECT语句的各个子句,从最基础的WHERE到更复杂的GROUP BY、HAVING,甚至是窗口函数,都给出了非常详尽的解释和大量的示例。每一个例子都经过精心设计,能够清晰地展示特定语法的用法和效果,并且会涉及到一些实际开发中经常遇到的场景,比如数据去重、排名计算、分组聚合等等。更让我惊喜的是,书中还花费了大量的篇幅来讲解SQL的优化技巧,这一点对于我这种希望写出高效SQL语句的开发者来说,简直是无价之宝。从执行计划的解读到索引的使用,再到子查询与JOIN的权衡,书中都提供了非常实用且具有操作性的建议。我特别喜欢它在讲解过程中,会时不时地穿插一些“陷阱”或者“常见错误”,提醒读者注意一些容易被忽略的细节,这大大减少了我自己在实践中踩坑的可能性。比如,在讲NULL值处理时,它就详细阐述了NULL与其他值的比较以及IS NULL和IS NOT NULL的用法,这在我之前学习SQL时常常感到困惑的地方找到了明确的答案。此外,书中对数据库事务的讲解也十分到位,ACID特性、隔离级别等概念的解释清晰易懂,并结合实际案例说明了事务的重要性以及如何避免并发问题。学习过程中,我发现书中提供的示例代码不仅规范,而且结构清晰,很容易理解和修改。即使是对SQL不太熟悉的读者,通过这本书的学习,也能够快速掌握编写高质量SQL语句的能力,为后续更深入的数据库开发打下坚实的基础。

评分

当我拿起这本书时,我抱着尝试的态度,因为我对SQL的掌握程度仅停留在“能写出来”的阶段。但很快,我被书中内容的深度和广度深深吸引住了。这本书不仅仅是语法层面的讲解,更重要的是它提供了一种“思考SQL”的方式。我尤其欣赏书中关于SQL优化部分的详尽阐述,它从根本上改变了我对SQL开发的认知。我曾经也为查询性能问题头疼不已,但通过学习书中的执行计划分析、索引策略选择、JOIN优化技巧等内容,我学会了如何“对症下药”,有效地提升了SQL的执行效率。书中对SQL中的一些高级特性,比如窗口函数、公用表表达式(CTE)以及递归查询的讲解,更是让我眼前一亮。这些特性极大地丰富了我的SQL工具箱,让我能够处理更加复杂的数据分析场景。例如,通过窗口函数,我可以轻松实现排名、移动平均等计算,而CTE则让我的复杂查询逻辑更加清晰易懂。书中还对SQL注入防护、视图、存储过程和触发器的应用进行了深入的探讨,这为我编写安全、高效、可维护的数据库应用打下了坚实的基础。每一次阅读,我都能从中发现新的知识点和实用技巧,这让我对这本书爱不释手,并且会经常翻阅,将其作为我日常开发中的重要参考。

评分

这本书简直是我Oracle SQL开发之路上的“灯塔”,为我指明了方向,也为我提供了强大的工具。我之前在处理大量数据时,经常会遇到查询缓慢的问题,甚至导致应用程序响应迟钝。这本书关于SQL性能优化的章节,简直是为我量身定制的。它不仅讲解了如何识别性能瓶颈,还提供了多种行之有效的解决方案。我特别喜欢它关于索引的讲解,从B-tree索引的原理到各种索引类型(如位图索引、函数索引)的优缺点,都讲得非常透彻,并且还详细说明了如何根据具体的数据特征和查询模式来选择最合适的索引策略。书中还重点讲解了SQL语句的执行计划分析,通过对执行计划中各个节点的理解,我学会了如何 pinpoint 导致性能问题的具体原因,比如全表扫描、不合理的连接顺序等。通过对书中提供的方法进行实践,我成功地将几个关键查询的响应时间缩短了数倍,这直接提升了用户体验,也为我赢得了同事的赞赏。除了性能优化,书中对SQL语言本身的应用也进行了深入的探讨。比如,它详细讲解了聚合函数(SUM, AVG, COUNT, MIN, MAX)的用法,以及如何结合GROUP BY和HAVING子句进行复杂的数据分组和过滤。它还介绍了窗口函数(ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD)的强大功能,这对于进行排名、计算累计值等场景非常有用,是我之前一直想掌握但不得其法的高级技巧。书中提供的案例场景非常贴近实际工作,让我能够学以致用,快速解决工作中遇到的各种SQL难题。

评分

在我的职业生涯中,我遇到过无数的技术书籍,但《Oracle Database 11g SQL开发指南》这本书无疑是其中最令人印象深刻的一本。它不仅仅是一本SQL教程,更是一份深入的Oracle SQL开发的“百科全书”。书中对SQL的讲解,可以说是从骨髓里挖出来了,每一个细节都抠得非常到位。我特别喜欢书中关于“SQL的本质”的探讨,它引导我理解SQL不仅仅是查询语言,更是一种声明式语言,是一种与数据库沟通的艺术。书中对SQL性能调优的讲解,更是让我醍醐灌顶。我之前总以为写出能跑的SQL就行,但这本书让我认识到,在处理海量数据时,性能是至关重要的。它详细讲解了如何分析SQL的执行计划,如何利用索引来加速查询,如何避免全表扫描,以及如何优化 JOIN 操作,这些技巧都直接作用于我日常的工作,让我写的SQL语句不再是“慢吞吞”的,而是“疾如雷霆”。书中还对SQL中的各种函数进行了详细的分类和讲解,从字符串函数、日期函数、数值函数到聚合函数和分析函数,每一个函数都配有清晰的解释和实用的例子,让我能够根据不同的需求选择最合适的函数来处理数据。另外,书中对于事务管理和并发控制的讲解也非常到位,让我能够更好地理解数据库的ACID特性,以及如何在多用户环境下保证数据的一致性和完整性。

评分

我对Oracle数据库的了解程度一直处于学习的初级阶段,接触到这本书的时候,我最大的感受就是它的系统性和全面性。书中对SQL语言的讲解,从最基础的SELECT、INSERT、UPDATE、DELETE语句,到更复杂的 JOIN、子查询、聚合函数,每一个部分都进行了细致的阐述。我特别欣赏书中在讲解JOIN时,不仅列举了各种JOIN的语法,还用生动的图示来解释了不同JOIN类型的工作原理,比如内连接、左外连接、右外连接和全外连接,这让我对它们之间的区别和应用场景有了非常清晰的认识。书中还对SQL中的集合操作,如UNION、UNION ALL、INTERSECT和MINUS进行了详细的说明,这对于处理来自多个表的数据非常有用。我之前在处理一些数据合并和去重的问题时,常常感到束手无策,而这本书提供的解决方法让我茅塞顿开。书中的一些高级主题,比如如何使用MERGE语句来简化INSERT和UPDATE操作,以及如何利用EXISTS和NOT EXISTS来提高查询效率,也让我受益匪浅。此外,书中还讲解了数据库视图(VIEW)的创建和使用,以及存储过程(STORED PROCEDURE)和函数(FUNCTION)的开发,这让我能够更好地利用数据库的存储逻辑来封装业务规则,提高代码的可维护性和复用性。

评分

这本书给我带来的最大震撼,在于它对于SQL语言的深入剖析和实际应用指导。我过去学习SQL,往往停留在表面的语法层面,而这本书则深入到了SQL的“灵魂”——如何用SQL来思考问题、解决问题,并且写出高效、优雅的代码。我特别喜欢书中关于SQL性能优化的章节,它不仅仅是理论的堆砌,而是提供了大量实用的技巧和工具,比如如何分析SQL的执行计划,如何选择合适的索引,如何优化JOIN操作,这些都直接帮助我提升了SQL的执行效率。我曾经也为一些查询缓慢的问题而烦恼,但通过学习书中提供的方法,我成功地将一些关键查询的响应时间缩短了数倍,这直接提升了用户体验。书中对SQL中一些高级特性,如窗口函数、公用表表达式(CTE)以及递归查询的讲解,更是让我眼前一亮。这些特性极大地丰富了我的SQL工具箱,让我能够处理更复杂的业务逻辑和数据分析场景。例如,通过窗口函数,我可以轻松实现排名、移动平均等计算,而CTE则让我的复杂查询逻辑更加清晰易懂。此外,书中还对SQL注入防护、视图、存储过程和触发器的应用进行了深入的探讨,这为我编写安全、高效、可维护的数据库应用打下了坚实的基础。每一次阅读,我都能从中发现新的知识点和实用技巧,这让我对这本书爱不释手,并且会经常翻阅,将其作为我日常开发中的重要参考。

评分

作为一名即将步入IT行业的学生,我一直在寻找一本能够系统学习SQL的书籍。这本书的内容广度和深度都让我印象深刻。它不仅仅是教授SQL的语法,更重要的是,它引导我思考如何用SQL来解决实际的业务问题。从数据查询的基本操作,到复杂的数据分析,书中都提供了详尽的指导。我特别喜欢书中对SQL中高级特性,比如公用表表达式(CTE)和递归查询的讲解。CTE提供了一种清晰的方式来组织复杂的SQL查询,而递归查询则能够处理层次结构数据,比如组织架构或产品目录。这些特性让我的SQL代码更加模块化、易读,也更强大。书中还详细讲解了如何使用SQL进行数据建模,包括实体-关系模型(ERM)的概念,以及如何将ERM转化为数据库表结构。这对于理解数据库设计的核心概念至关重要。此外,书中对于SQL注入的防范措施也进行了介绍,这对于保障应用程序的安全性非常重要。我还在书中学习到了如何有效地使用CASE语句来处理条件逻辑,这使得我的SQL查询能够更灵活地适应不同的业务规则。书中提供的示例代码都经过严格的测试,并且注释清晰,非常便于我进行学习和模仿。在学习过程中,我还会尝试修改书中的示例,加入自己的想法,这样更能加深我对SQL的理解。这本书为我打下了坚实的SQL基础,让我对接下来的数据库开发和数据分析工作充满了信心。

评分

我一直对Oracle数据库的SQL开发抱有浓厚的兴趣,但苦于没有一本能够系统指导我学习的书籍。直到我遇到《Oracle Database 11g SQL开发指南》,我才找到了我一直在寻找的“宝藏”。这本书的内容之丰富,讲解之深入,让我惊叹不已。它从SQL的基本语法入手,一步步引导我深入理解SQL的精髓。我尤其喜欢书中关于SQL优化部分的详尽讲解,这对于我这种追求高性能查询的开发者来说,简直是无价之宝。它详细介绍了如何分析SQL的执行计划,如何选择合适的索引策略,以及如何优化JOIN操作,这些技巧都直接帮助我提升了SQL的执行效率。书中对SQL中一些高级特性的讲解,如窗口函数、公用表表达式(CTE)以及递归查询,更是让我能够应对更复杂的业务场景。我曾尝试用传统方法解决一些层级数据查询的问题,但总是显得力不从心,而书中的递归查询讲解,让我茅塞顿开,能够轻松地解决这类问题。此外,书中还对视图、存储过程和触发器的使用进行了深入的探讨,这让我能够更好地封装业务逻辑,提高代码的可维护性和复用性。这本书不仅仅是一本技术书籍,更像是一位经验丰富的导师,在我学习Oracle SQL开发的道路上给予我无尽的指引和启发。

评分

我拿到这本书的时候,正直我项目中最棘手的一个SQL性能问题出现,急需找到解决方案。这本书就像及时雨一样,让我看到了希望。它并没有直接罗列SQL的各种函数和语法,而是从更宏观的角度,讲解了SQL在实际应用中的设计思路和优化原则。尤其是在数据查询方面,书中对于如何构建高效的查询语句,如何利用数据库自身的机制来提升性能,给出了非常系统性的指导。我印象最深刻的是关于子查询和JOIN的比较,它详细分析了不同类型JOIN(内连接、左连接、右连接、全连接)的适用场景,以及何时使用子查询、何时使用JOIN能够带来更好的性能。书中还提到了很多关于SQL语句编写的“最佳实践”,比如避免使用SELECT *,合理使用WHERE子句过滤数据,以及如何避免在WHERE子句中使用函数等,这些都是我在实际工作中常常遇到的问题,这本书都给出了清晰的解答。书中的图表和流程图也帮助我更好地理解了数据库查询的执行过程,比如,它用图示的方式展示了SQL语句是如何被解析、优化,最终生成执行计划的,这让我对数据库的工作原理有了更深的认识。对于一些高级主题,比如存储过程、触发器和视图的开发,书中也提供了详细的说明和示例,让我能够快速掌握这些用于提升数据库功能和管理效率的工具。这本书的编排也很有条理,从基础到进阶,循序渐进,不会让读者感到 overwhelmed。我特别欣赏的是,书中在讲解每个概念时,都会提供一些实际的业务场景作为例子,这让我能够更好地理解这些技术在实际开发中的应用价值,而不仅仅是停留在理论层面。

评分

这本书的内容对于我来说,简直就是Oracle SQL开发领域的“百科全书”。我尤其喜欢它在讲解SQL语法和函数时,并没有停留在枯燥的理论层面,而是结合了大量的实际应用场景和示例。这使得我可以非常直观地理解每一个知识点,并且能够快速地将所学到的内容应用到我的实际工作中。书中对SQL性能优化的讲解,更是让我受益匪浅。我曾经也为数据库查询的缓慢问题感到困扰,但通过学习书中关于执行计划分析、索引选择、 JOIN 优化等技巧,我学会了如何找到性能瓶颈,并采取有效的措施来提升查询效率。例如,书中关于如何避免在 WHERE 子句中使用函数来影响索引的讲解,就让我避免了很多不必要的性能损失。此外,书中对 SQL 中的高级特性,如窗口函数、 CTE 和递归查询的讲解,也让我能够处理更复杂的业务逻辑和数据分析需求。我特别欣赏书中对 SQL 注入防护的介绍,这让我能够更好地保障数据库应用程序的安全性。总而言之,这本书为我提供了一个全面、深入的 Oracle SQL 开发学习路径,让我从一个 SQL 的初学者,逐渐成长为一个熟练的 SQL 开发者。

评分

工作需要。

评分

适合初学者掌握oracle的sql语句。但本书在分析函数方面的讲解非常垃圾

评分

很适合初学者。都想把书卖掉了。

评分

系统过一遍,整理一下季总的传承

评分

需要实践 基本上属于初级读物

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 book.quotespace.org All Rights Reserved. 小美书屋 版权所有