目录
贺词
序
译者的话
前言
第一部分 必备的数据库概念
第1章 共享知识与成功
1.1 协同开发技术
1.2每个人都拥有数据
1.3Oracle语言
1.3.1信息表
1.3.2结构查询语言(SQL)
1.3.3简单的Oracle查询
1.3.4 关系的含义
1.4 一些日常的例子
1.5一个具有百年历史的例子
第2章 关系数据库中的风险
2.1真像他们所说的那么容易吗?
2.2有什么风险?
2.3新思维的重要性
2.4代码、缩写和命名标准
2.4.1为什么使用代码而不是英语
2.4.2用户反馈的益处
2.5如何减少混乱?
2.5.1规范化
2.5.2表和列的英文名称
2.5.3数据的英文名称
2.6名称和数据的大小写
2.7规范化的名称
2.8把握机会
第二部分SQL: 从入门到精通
第3章 SQL基础
3.1约定
3.2使用SQL从表中提取数据
3.3select,from,where和orderby
3.4逻辑与值
3.5LIKE
3.5.1对值的列表进行简单测试
3.5.2组合逻辑
3.6where的另一个用途——子查询
3.6.1单值子查询
3.6.2值列表子查询
3.7组合表
3.8建立视图
第4章 对象—关系数据库基础
4.1必须使用对象吗?
4.2为什么要使用对象?
4.3每个人都拥有对象
4.3.1抽象数据类型
4.3.2嵌套表
4.3.3可变数组
4.3.4大型对象
4.3.5引用
4.3.6对象视图
4.3.7对象的命名约定
4.4 一个普通的对象例子
4.4.1一个简单对象的结构
4.4.2向CUSTOMER表中插入记录
4.4.3查询抽象数据类型
4.5面向对象的分析与设计
4.6小结
第5章 基本的SQLPLUS报表和命令
5.1一个简单报表的建立
5.1.1remark
5.1.2setheadsep
5.1.3ttitle和btitle
5.1.4co1umn
5.1.5breakon
5.1.6computesum
5.1.7setlinesize
5.1.8setpagesize
5.1.9setnewpage
5.1.10spool
5.1.11
5.1.12对列标题的进一步说明
5.2其它特性
5.2.1 命令行编辑器
5.2.2setpause(页间暂停)命令
5.2.3save(保存SQL查询)命令
5.2.4编辑
5.2.5host(将命令传送给主机操作系统)
命令
5.2.6 增加SQLPLUS命令
5.2.7start(启动.SQL文件)命令
5.3 检测SQLPLUS环境
5.4小结
第6章 提取和修改文本信息
6.1 数据类型
6.2什么是串?
6.3函数的表示法
6.4 ∥(并置运算符)
6.5如何剪切和粘贴串
6.5.1RPAD(右填充)和LPAD(左填充)
函数
6.5.2LTRIM(左截断)和RTRIM
(右截断)函数
6.5.3组合使用两个函数
6.5.4 增加多个函数
6.5.5LOWER(小写转换)、UPPER(大
写转换)和INITCAP(首字母大写
转换)函 数
6.5.6 LENGTH(计算串长)函数
6.5.7SUBSTR(子串)函数
6.5.8INSTR(串搜索)函数
6.6 带串函数的orderby和where命令子句
6.6.1SOUNDEX(同音串搜索)函数
6.6.2本地语言支持
6.7 小结
第7章 处理数字
7.1数字函数的三种类型
7.2函数的表示法
7.3单值函数
7.3.1加、减、乘、除
7.3.2NULL(空值)
7.3.3NVL(空值替换)函数
7.3.4ABS(绝对值)函数
7.3.5CEIL(求最小整数)函数
7.3.6FLOOR(求最大整数)函数
7.3.7MOD(取模)函数
7.3.8POWER(求幂)函数
7.3.9SQRT(平方根)函数
7.3.10EXP,LN和LOG函数
7.3.11ROUND和TRUNC函数
7.3.12SIGN函数
7.3.13SIN,SINH,COSCOSH,TAN
和TANH函数
7.4组值函数
7.4.1组值函数中的空值(NULL)
7.4.2单值和组值函数的例子
7.4.3 AVG,COUNT,MAX,MIN和
SUM函数
7.4.4组值函数和单值函数的组合
7.4.5STDDEV和VARIANCE函数
7.4.6组值函数中的DISTINCT
7.5列表函数
7.6通过MAX或MIN查找行
7.7优先级和圆括号
7.8小结
第8章 日期:过去、现在及其差值
8.1日期运算
8.1.1系统日期(SysDate)
8.1.2两个日期之间的差值
8.1.3增加月份
8.1.4减去月份
8.1.5GREATEST和LEAST函数
8.1.6NEXT_DAY函数
8.1.7LAST_DAY函数
8.1.8用MONTHS_BETWEEN
处理两个日期
8.1.9组合日期函数
8.2 日期计算中的ROUND和TRUNC
函数
8.3TO_DATE和TO_CHAR的格式转换
8.3.1使用TO_CHAR函数时最常见的
错误
8.3.2NEW_TIME函数——时区转换
8.3.3使用TO_DATE函数进行计算
8.4 where子句中的日期
8.52000年带来的问题
第9章 转换和变换函数
9.1基本的转换函数
9.1.1数据类型的自动转换
9.1.2数据类型自动转换的注意事项
9.2特殊的转换函数
9.3变换函数
9.3.1TRANSLATE函数
9.3.2DECODE函数
9.4 小结
第10章 分组聚合
10.1groupby和having子句的用法
10.1.1orderby子句
10.1.2执行的顺序
10.2聚组视图
10.3聚组视图功能
10.3.1having子句中的逻辑
10.3.2用列和组函数排序
10.3.3列的连接
10.4小结
第11章 查询间的依赖关系
11.1高级子查询
11.1.1 相关子查询
11.1.2对等逻辑测试
11.1.3EXISTS(存在性测试)及其
相关子查询
11.2 外连接
11.2.1用外连接替代“NOTIN”
11.2.2用NOTEXISTS代替NOTIN
11.3UNION、INTERSECT和
MINUS运算符
11.3.1IN子查询
11.3.2UNION运算符
11.3.3INTERSECT运算符
11.3.4 MINUS运算符
11.3.5小结(关于UNIONINTERSECT
和MINUS的限制)
第12章 几个复杂功能
12.1创建复杂的视图
12.1.1组视图
12.1.2合计视图
12.1.3组合视图
12.2家族树(familytree)和connectby
子句
12.2.1排除单一体及分枝
12.2.2遍历至根
12.2.3基本规则
12.3在from子句中使用视图
第13章 在SQLPLUS中建立报表
13.1高级格式
13.1.1数字的格式问题
13.1.2breakon命令
13.1.3breakon命令中列的顺序
13.1.4行中的breakon命令
13.1.5增加视图
13.1.6 使用ttitle和btitle命令的列
13.1.7关于break和compute命令的
进一步说明
13.2settermoutoff和settermouton
命令
13.3SQLPLUS中的变量
13.4数字格式
13.5使用mask.sql
13.6使用缓冲区保存SQLPLUS命令
13.7showall命令及转储
13.8折到新的一行
13.9其他报表控制
第14章 改变数据:插入 修改和删除
14.1insert命令
14.1.1插入时间
14.1.2 带select子句的插入
14.2rollback(转返),commit提交)和
autocommit(自动提交)命令
14.2.1隐式提交
14.2.2自动转返
14.3delete(删除)命令
14.4update(修改)命令
14.4.1嵌入select语句的update命令
14.4.2用NULL(空值)进行修改
第15章 函数和变量的高级用途
15.1orderby子句中的函数
15.2直方图和图形
15.3使用TRANSLATE函数
15.3.1消去字符
15.3.2清除美元符号和逗号
15.4复杂的剪切和粘贴
15.5统计串在更大串中的出现次数
15.6变量和转储代换
15.6.1关于变量的一些其他情况
15.6.2有关set命令
第16章 DECODE——一个有特异功能的
函数
16.1if,then和else
16.2实例:发票
16.3表的转置
16.4在DECODE函数中使用MOD函数
16.5orderby和RowNum
16.6在then和else子句中的列和计算
16.7DECODE函数中的大于(GreaterThan)
小于(LessThen)和等于(Equal)
第17章 创建 删除 修改表与视图
17.1创建 个表
17.1.1 字符型列的宽度和数值型列
的精度
17.1.2插入中的截取
17.1.3创建表时受到的限制
17.1.4 约束的命名
17.2删除表
17.3修改表的结构
17.4创建视图
17.4.1视图的稳定性
17.4.2视图中的orderby子句
17.4.3创建只读视图
17.5从表中创建表
17.6创建一个Index-Only表
17.7使用分区的表
17.7.1创建分区的表
17.7.2索引分区
17.7.3管理分区的表
17.7.4 从分区中直接查询
第18章 权限
18.1用户、角色和权限
18.1.1创建用户
18.1.2口令管理
18.1.3三种标准角色
18.1.4grant(授权)命令的格式
18.1.5撤消权限
18.2用户可授予什么?
18.2.1用connect命令连接到其他用户
18.2.2创建同义词
18.2.3使用未授予的权限
18.2.4 传递权限
18.2.5创建角色
18.2.6给角色授权
18.2.7将一个角色授予另一个角色
18.2.8给角色增加口令
18.2.9删除角色的口令
18.2.10启用和禁用角色
18.2.11从角色撤消权限
18.2.12删除角色
18.2.13授权修改指定的列
18.2.14撤消权限
18.2.15用户安全性
18.2.16对公众授予访问权
18.3授予有限的资源
第19章 改变Oracle环境
19.1索引
19.1.1创建索引
19.1.2强制唯
19.1.3建立位图索引
19.1.4何时建立索引
19.1.5何时忽略索引
19.1.6索引列数据的变化
19.1.7一个表可使用多少索引
19.1.8在数据库中放置索引
19.1.9重建索引
19.2表空间和数据库结构
19.3簇(cluster)
19.4序列
第20章 SQLPLUS
20.1生成查询代码
20.2装载变量
20.2.1改变变量值
20.2.2在ttitle命令中使用变量
20.2.3字符串和日期
20.3建立并嵌套启动文件和命令
20.4小结
第21章 访问远程数据
21.1数据库链接
21.1.1数据库链接是如何工作的
21.1.2对远程查询使用数据库链接
21.1.3对同义词和视图使用数据库
链接
21.1.4 使用数据库链接进行远程
更新
21.1.5 数据库链接语法
21.2为地点透明性而使用同义词
21.3在视图中使用user伪列
21.4动态链接:使用SQLPLUScopy
命令
21.5链接一个远程数据库
21.6管理工具:Oracle*Names
第22章 PL/SQL介绍
22.1PL/SQL简介
22.2声明段
22.3可执行命令段
22.3.1条件逻辑
22.3.2循环
22.3.3Goto语句
22.4异常处理段
第23章 触发器
23.1所需的系统特权
23.2所需的表权限
23.3触发器类型
23.3.1行级别(Row-Level)触发器
23.3.2语句级别(Statement-Level)
触发器
23.3.3BEFORE和AFTER触发器
命令
23.3.4INSTEADOF触发器命令
23.3.5合法的触发器类型
23.4触发器语法
23.4.1合并触发器类型
23.4.2设置插入值
23.4.3维护数据复本
23.4.4定义错误条件
23.4.5触发器命名
23.5激活和取消触发器
23.6替代触发器
23.7删除触发器
第24章 过程
24.1必要的系统权限
24.2必要的表权限
24.3过程与函数的比较
24.4过程与包的比较
24.5创建过程的语法
24.6创建函数的语法
24.6.1在过程中引用远程表
24.6.2过程的调试
24.6.3创建用户自己的函数
24.6.4定制错误条件
24.6.5过程的命名
24.7创建包的语法
24.8查看当前过程对象的源代码
24.9编译过程、函数和包
24.10过程、函数和包的替换
24.11过程、函数和包的删除
第25章 类型、对象视图和方法的实现
25.1 再谈抽象数据类型
25.1.1 抽象数据类型的安全性
25.1.2索引抽象数据类型属性
25.2对象视图的实现
25.2.1通过对象视图的数据操作
25.2.2使用INSTEAD OF触发器
25.3方法(methods)
25.3.1创建方法的语法
25.3.2方法的管理
第26章 收集器(嵌套表和可变数组)
26.1可变数组(varing Arrays)
26.1.1创建一个可变数组
26.1.2可变数组的描述
26.1.3向可变数组中插入数据
26.1.4 从可变数组中提取数据
26.2嵌套表
26.2.1向嵌套表中插入记录
26.2.2查询嵌套表
26.3嵌套表和可变数组的管理
26.3.1对大型收集器的管理
26.3.2 收集器中的可变性
26.3.3数据的存放位置
第27章 在Oracle8中使用大型对象
(LOB)
27.1可用的数据类型
27.2对LOB数据指定存储
27.3操作和检索LOB数值
27.3.1初始化值
27.3.2带子查询的数据输入
27.3.3更新LOB值
27.3.4 使用DBMS_LOB来操作
LOB值
27.3.5删除LOBs
第28章 快照
28.1快照的功能
28.2所需的系统权限
28.3所需的表权限
28.4 简单的和复杂的快照
28.5只读和可更新的快照
28.6创建快照的语法
28.6.1ROWID和基于主键的数据库
快照
28.6.2本地和远程对象的创建
28.7刷新数据库快照
28.7.1自动刷新
28.7.2手工刷新
28.7.3使用快照刷新组(Refresh
Groups)
28.8快照和触发器
28.9创建快照日志的语法
28.9.1必要的系统权限
28.9.2生成本地和远程对象
28.10 查看当前数据库快照的信息
28.11 改变快照和快照日志
28.12 删除快照和快照日志
第29章 使用上下文进行文本搜索
29.1在数据库中添加文本
29.2从数据库中查询文本
29.2.1上下文查询
29.2.2可用的上下文查询表达式
29.2.3单个词精确匹配搜索
29.2.4多个词的精确匹配搜索
29.2.5词组的精确匹配搜索
29.2.6相近词的搜索
29.2.7在搜索中使用通配符
29.2.8具有相同词根词的搜索
29.2.9模糊匹配搜索
29.2.10 读音相似词的搜索
29.2.11 组合搜索方法
29.3配置上下文选项
第30章 配置上下文选项
30.1为文本搜索设置数据库
30.1.1 init.ora文件的修改
30.1.2必要的角色
30.2为上下文查询设置表
30.2.1显示和修改选项
30.2.2建立文本索引
30.3优化文本索引
30.4两步查询
30.5使用语言服务
第31章 Oracle8中高级面向对象概念
31.1行对象与列对象
31.2对象表和OIDs
31.2.1向对象表中插入记录
31.2.2从对象表中查询数据
31.2.3 对象表中记录的修改和删除
31.2.4REF操作符
31.2.5使用DEREF操作符
31.2.6VALUE操作符
31.2.7无效的引用
31.3带有REF的对象视图
31.3.1对象视图的快速回顾
31.3.2涉及引用的对象视图
31.4 对象PL/SQL
31.5数据库中的对象
第三部分 Oracle8数据字典
第32章 Oracle8数据字典简要指南
32.1命名说明
32.2数据地图:DICTIONARY(DCT)和
DICT_COLUMNS
32.3从何处选择:表(及列)视图
同义词,和序列
32.3.1目录:USER_CATALOG
(CAT)
32.3.2对象:USER_OBJECTS
(OBJ)
32.3.3表:USER_TABLES(TABS)
32.3.4 列:USER_TAB_COLUMNS
(COLS)
32.3.5视图:USER_VIEWS
32.3.6同义词:USERSYNONYMS
(SYN)
32.3.7序列:USER_SEQUENCES
(SEQ)
32.4 限定和注释
姬.4.1限定:USER_CONSTRAI-
NTS
32.4.2限定列:USER_CONS_CO-
LUMNS
32.4.3限定特例:EXCEPTIONS
32.4.4 表注释:USER_TAB_CO-
MMENTS
32.4.5列注释:USER_COL_CO-
MMENTS
32.5索引和簇
32.5.1索引:USER_INDEXES
(IND)
32.5.2索引列:USER_IND_CO-
LUMNS
32.5.3簇:USER_CLUSTERS
(CLU)
32.5.4 簇列:USER_CLU_CO
LUMNS
32.6 Oracle8-特定的对象
32.6.1抽象数据类型
32.6.2 LOBs
32.7数据库链接和快照
32.7.1数据库链接:USER_DB_LI-
NKS
32.7.2快照:USER_SNAPSHOTS
32.7.3快照日志:USER_SNAP-
SHOTLOGS
32.8触发器、过程、函数和包
32.8.1触发器:USER_TRIGGERS
32.8.2过程、函数和包:
USERS0URCE
32.9空间分配与使用,包括分区
32.9.1表空间:USER_TABLE-
SPACES
32.9.2 空间限额:USER_TS_QU
OTA S
32.9.3 段与区域:USER_SEGMENTS和
USEREXTENTS
32.9.4 分区
32.9.5自由空间:USER_FREE_
SPACE
32.10 用户与权限
32.10.1用户:USER_USERS
32.10.2资源限制:USER_RESOUR-
CELIMITS
32.10.3表权限:USER_TAB_PR-
IVS
32.10.4 系统权限:USER_SYS_
PRIVS
32.11 角色
32.12审计
32.13监控:V$动态性能表
32.14 其它
32.14.1CHAINED_ROWS
32.14.2PLAN一TABLE
32.14.3相互信赖性:USER_DEPEN
DENCIES和IDEPTREE
32.14.4 DBA(数据库管理员)专用
视图
32.14.5可信的Oracle数据库
32.14.6SQL*LOADER(载入器)直接载入
视图
32.14.7 本地语言支持(NLS)视图
32.14.8库
第四部分 讲究效率的设计方法
第33章 良好的设计具有好的技巧
33.1理解应用任务
33.2理解数据
33.2.1原子数据模型
33.2.2原子业务模型
33.3业务模型
33.4 数据项
33.5查询和报表
33.6 小结
第34章 性能与设计
34.1规范分解与数据完整性
34.1.1有意义的关键字
34.1.2实际的规范分解
34.1.3 行、列和容量
34.1.4 内存约束
34.1.5 厨房中的杂物抽屉
34.1.6 真的应该做这些吗?
34.2计算表
34.3 总结
第35章 良好设计的十条戒律
35.1面向对象的命名规范
35.1.1级别-命名完整性
35.1.2外关键字
35.1.3单数性
35.1.4 简洁性
35.1.5 对象名称字典
35.2 智能关键字和列值
35.3戒律
第36章 Oracle优化器简介
36.1哪个优化器?
36.2访问表操作
36.2.1全表访问
36.2.2 通过ROWID的表访问
36.2.3相关提示
36.3使用索引操作
36.3.1唯一索引扫描
36.3.2 索引范围扫描
36.3.3何时使用索引
36.3.4 多索引扫描的输出合并
36.3.5相关提示
36.3.6 对索引的附加调整问题
36.4控制数据集合的操作
36.4.1行排序
36.4.2行分组
36.4.3使用RowNum的操作
36.4.4 UNION MINUS和INTERSECT
函数
36.4.5选择行更新操作
36.4.6从视图中选取操作
36.4.7从子查询中选取数据操作
36.4.8相关的提示和参数
36.4.9另外的性能优化问题
36.5执行联合的操作
36.5.1Oracle如何处理两个表以
上的联合
36.5.2联合合并
36.5.3嵌套循环(NESTEDLOOPS)
36.5.4 HASH JOIN
36.5.5外部联合处理
36.5.6相关提示
36.5.7附加的性能优化问题
36.6显示执行路径
36.6.1使用setautotraceon命令
36.6.2使用命令explainplan
36.7其他操作
36.7.1过滤行(Filtering Rows)操作
36.7.2使用connect by子句的操作
36.7.3使用sequences的查询
36.7.4 使用数据库链接的查询
36.7.5使用簇的查询
36.7.6相关提示
36.7.7附加的性能调整问题
36.8总结
第五部分 参考手册
第37章 按字母顺序排列的参考
37.1本参考包括的内容
37.2本参考不包括的内容
37.3一般格式
37.3.1各条目的主要部分
37.3.2变量的标准用法
37.3.3其他有关格式的规定
37.3.4条目的其他成份
37.4列表顺序
第六部分 附 录
附录A 本书中用到的表
A.1使用本书中的表
A.2activity.sql启动文件
A.3math.sql启动文件
A.4 ADDRESS_TY类型
A.5ANIMAL_TY类型
A.6PERSON_TY类型
A.7TOOLS_VA类型
A.8ADDRESS表
A.9AREAS表
A.10 ASOF表
A.11 BIRTHDAY表
A.12BORROWER表
A.13BREEDER表
A.14 BREEDING表
A.15 CD表
A.16COMFORT 表
A.17COMMA表
A.18 CUSTOMER表
A.19EMPTY表
A.20 HOCKEY表
A.21 HOLIDAY表
A.22 INVOICE表
A.23 LEDGER表
A.24 LOCATION表
A.25 LODGING表
A.26LONGTIME表
A.27MAGAZINE表
A.28 MATH表
A.29 NAME表
A.30 NEWSPAPER表
A.31 NUMBERTEST表
A.32 PAY表
A.33 PAYDAY表
A.34 PROPOSAL表
A.35PROSPECT表
A.36RADIUS_VALS表
A.37 ROSE 表
A.38 SHIPPING表
A.39 SKILL表
A.40 STOCK表
A.41TROUBLE表
A.42 TWONAME表
A.43 WEATHER表
A.44 WORKER表
A.45 WORKERSKILL表