第Ⅰ部分 数据库基础 3
第1章 数据库入门 3
1.1 数据库的实质 3
目录 3
1.1.1 表 4
1.1.2 行/记录 4
1.1.3 列/字段 4
1.2 数据库与电子数据表的区别 5
1.2.1 可包含大量行 5
1.2.2 允许多用户同时使用 6
1.2.3 安全性 6
1.2.5 确保数据质量的一些约束 7
1.2.4 关联 7
1.3 了解这些对您的帮助 8
1.3.1 对数据库管理的帮助 8
1.3.2 对软件开发的帮助 8
1.3.3 对业务分析的帮助 8
1.3.4 如果只想知道如何更好地利用数据库 9
1.4 SQL的历史 9
1.5 SQL命令分类 10
1.5.1 数据定义 10
1.5.2 数据操作 10
1.5.3 数据控制 10
1.5.4 数据检索 10
1.6 本章小结 11
1.5.5 事务控制 11
1.7 习题 12
1.8 习题答案 13
第2章 存储和检索数据:基础知识 15
2.1 入门知识 15
2.1.1 创建表 16
2.1.2 插入记录 16
2.1.3 选择记录 17
2.1.4 删除表 17
2.2 创建表 19
2.2.1 表和列的命名规则 19
2.2.2 创建包含更复杂的表 20
2.2.3 确定表的结构 26
2.2.4 空列和非空列 27
2.3 插入数据——补充方法 29
2.3.1 如何插入包含空值的记录 29
2.3.2 如何插入包含撇号的数据 31
2.4 查看数据——补充方法 32
2.4.1 选择指定列 32
2.4.2 改变列的显示顺序 33
2.4.3 运用表中数据执行数学运算 33
2.4.4 将两个或更多的文本段结合在一起 36
2.4.5 为列指定别名 36
2.5 本章小结 37
2.6 习题 39
2.7 习题答案 40
3.1 挑选记录 43
第3章 高级数据操作 43
3.1.1 基于数字过滤记录 44
3.1.2 基于文本过滤记录 47
3.1.3 基于日期过滤记录 49
3.2 改变记录顺序 50
3.2.1 根据单个列排序 50
3.2.2 根据多个列排序 51
3.3 只显示惟一值 53
3.4 从DUAL中选择 54
3.5 修改表中的数据 55
3.6 删除表中的记录 56
3.6.1 删除满足指定条件的行 56
3.6.2 删除所有行 57
3.7.1 撤销DML事务 58
3.7 事务控制 58
3.7.2 使数据可供其他用户访问 60
3.7.3 隐式和显式COMMIT 62
3.8 本章小结 62
3.9 习题 63
3.10 习题答案 64
第4章 操作SQL*Plus 67
4.1 在使用命令前进行编辑 67
4.1.1 运用文本编辑器 67
4.1.2 行级别编辑 69
4.2 复制和粘贴 71
4.4.1 使用SQL*Plus菜单进行自定义 73
4.4 自定义SQL*Plus环境 73
4.3 清除SQL*Plus屏幕 73
4.4.2 使用命令进行自定义 75
4.5 产生更具可读性的输出 75
4.5.1 格式化SQL*Plus中的数字 76
4.5.2 格式化SQL*Plus中的文本 78
4.5.3 格式化SQL*Plus中的列标题 78
4.6 输出到磁盘 80
4.7 SQL脚本文件 81
4.7.1 创建脚本文件 81
4.7.2 运行脚本文件 82
4.7.3 在脚本文件中使用变量 82
4.9 习题 84
4.8 本章小结 84
4.10 习题答案 85
第Ⅱ部分 高级SQL 89
第5章 SQL函数 89
5.1 常用的单行函数 90
5.1.1 系统变量 91
5.1.2 数字函数 93
5.1.3 文本函数 95
5.1.4 日期处理 104
5.1.5 数据类型转换 109
5.1.6 其他函数 116
5.2 常用的组函数 122
5.2.1 使用GROUP BY子句将数据分组 124
5.2.2 使用HAVING子句过滤已分组的行 125
5.3 本章小结 126
5.4 习题 126
5.5 习题答案 128
第6章 索引和约束的运用 129
6.1 索引 131
6.1.1 数据库中的索引 131
6.1.2 何时使用索引 132
6.1.3 如何创建索引 133
6.1.4 不同的索引类型 134
6.2 确保数据的完整性:约束 137
6.2.1 约束的定义 137
6.2.2 如何创建约束 137
6.2.3 启用和禁止现有约束 143
6.2.4 改变和删除现有约束 145
6.2.5 约束的使用场合 146
6.3 表间关联 146
6.3.1 数据建模简介 147
6.3.2 使用约束执行表间关联 148
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.5 本章小结 161
6.4.5 多列子查询 161
6.6 习题 162
6.7 习题答案 163
第7章 其他有用的Oracle技巧 165
7.1 表间数据转换 169
7.1.1 运用INSERT进行数据转换 169
7.1.2 同时插入到多个表 170
7.1.3 条件插入——MERGE命令 174
7.1.4 在当前表的基础上创建新表 175
7.2 改变表名 176
7.3 改变表结构 176
7.3.1 添加列 176
7.3.2 改变列名 177
7.3.4 改变列的数据类型 178
7.3.3 删除列 178
7.3.5 改变NULL选项 179
7.4 视图 180
7.4.1 创建视图 181
7.4.2 删除视图 182
7.4.3 改变视图的定义 182
7.4.4 TOPN分析 182
7.5 其他数据库对象 183
7.5.1 序列 183
7.5.2 同义词 187
7.5.3 Oracle数据字典 188
7.7 习题 190
7.6 本章小结 190
7.8 习题答案 192
第Ⅲ部分 使用PL/SQL创建程序 197
第8章 PL/SQL概述 197
8.1 PL/SQL的定义 197
8.1.1 PL/SQL简述 201
8.1.2 SQL、SQL*Plus和PL/SQL之间的关系 201
8.1.3 存储过程、存储函数和触发器 201
8.1.4 存储过程和SQL脚本 203
8.2 PL/SQL块结构 203
8.2.1 标题部分 204
8.2.2 声明部分 204
8.2.4 异常部分 205
8.2.3 执行部分 205
8.3 创建简单的PL/SQL过程 206
8.4 PL/SQL变量和常量 208
8.4.1 声明PL/SQL变量 209
8.4.2 声明PL/SQL常量 209
8.4.3 变量赋值 209
8.4.4 变量的使用 211
8.5 PL/SQL控制结构 211
8.5.1 IF语句 212
8.5.2 循环语句 213
8.5.3 游标 216
8.5.4 嵌套循环和游标示例 220
8.6.1 异常 222
8.6 错误处理 222
8.6.2 系统定义的异常 223
8.6.3 用户自定义异常 224
8.7 本章小结 226
8.8 习题 226
8.9 习题答案 227
第9章 其他PL/SQL工具 229
9.1 编码约定 232
9.2 PL/SQL与Oracle服务器的交互 233
9.2.1 动态声明变量类型与PL/SQL记录 233
9.2.2 PL/SQL中的DML或隐式游标 238
9.3.1 运用程序度量时间 242
9.3 计时操作 242
9.2.3 隐式游标和显式游标 242
9.3.2 运用TIMING命令计算实时时间 244
9.4 PL/SQL包 245
9.5 触发器 250
9.5.1 触发器的类型 252
9.5.2 触发器示例 252
9.5.3 修改触发器 255
9.5.4 关于触发器的注意事项 256
9.6 XML 256
9.7 本章小结 257
9.8 习题 257
9.9 习题答案 258
附录A Oracle常见术语表 259