第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.2.6 案例分析——Clapham专营店 5
1.3 了解这些内容对您的帮助 6
1.3.1 开发软件 6
1.4 SQL的历史 7
1.3.4 更好地使用数据库 7
1.3.3 进行商业分析 7
1.3.2 作为数据库管理员 7
1.5 小结 8
1.6 练习 9
1.7 实践项目 12
第2章 存储和检索数据:基本操作 14
2.1 使用数据库的准备工作 14
2.1.2 插入记录 15
2.1.1 创建表 15
2.1.3 选择记录 16
2.1.4 删除表 16
2.2 创建表 18
2.2.1 表和列的命名原则 18
2.2.2 创建更复杂的表 23
2.2.3 确定表的结构 29
2.2.4 NULL和NOTNULL列 29
2.3 插入数据——补充方法 31
2.3.1 插入包含NULL值的记录 31
2.3.2 插入包含撇号的数据 35
2.4 查看表中的数据——补充方法 36
2.4.1 选择特定的列 36
2.4.2 修改列的顺序 36
2.4.3 使用表中的数据进行数学计算 37
2.4.4 连接两段或更多文本 39
2.4.5 将别名赋给对应的列 40
2.5 小结 42
2.6 练习 44
2.7 实践项目 48
第3章 执行高级数据操作 50
3.1 SQL命令分类 50
3.1.1 数据定义 51
3.1.2 数据操作 51
3.1.3 数据控制 51
3.1.4 数据检索 51
3.1.5 事务控制 51
3.2.1 根据数字过滤记录 52
3.2 限制选取的记录 52
3.2.2 根据文本过滤记录 56
3.2.3 根据日期过滤记录 58
3.3 按不同的顺序查看记录 60
3.3.1 单列排序 60
3.3.2 多列排序 60
3.4 显示惟一值 62
3.5 从DUAL表中选取数据 64
3.6 修改表中的数据 65
3.7 从表中删除记录 66
3.7.1 删除符合特定条件的行 66
3.7.2 删除所有行 67
3.8 事务控制 67
3.8.1 撤消DML事务 67
3.8.2 使数据对其他用户可见 71
3.8.3 隐式提交和显式提交 71
3.9 小结 73
3.10 练习 74
3.11 实践项目 78
第4章 控制SQL*Plus 79
4.1 编辑以前的命令 79
4.1.1 使用文本编辑器 79
4.1.2 单行编辑 81
4.2 复制和粘贴 83
4.3 清空SQL*Plus的屏幕 85
4.4 定制SQL*Plus的环境 85
4.4.1 使用SQL*Plus的菜单进行定制 85
4.4.2 使用命令进行定制 87
4.5 保存环境设置 87
4.6 提高输出的可读性 88
4.6.1 在SQL*Plus中格式化数字 88
4.6.2 在SQL*Plus中格式化文本 90
4.6.3 在SQL*Plus中格式化列标题 91
4.7 假脱机输出到磁盘 92
4.8.1 创建脚本文件 93
4.8 SQL脚本文件 93
4.8.2 运行脚本文件 94
4.8.3 在脚本文件中使用变量 95
4.9 小结 97
4.10 练习 98
4.11 实践项目 101
第5章 Oracle SQL内部函数 103
5.1 实现常用单行函数 103
5.1.1 系统变量 104
5.1.2 数值函数 107
5.1.3 文本函数 109
5.1.4 日期 120
5.1.5 数据转换 124
5.1.6 其他函数 132
5.2 常用分组函数 137
5.2.1 常用分组函数 137
5.2.2 使用GROUPBY子句对数据分组 139
5.2.3 使用HAVING子句包含和去除分组数据 140
5.3 小结 142
5.4 练习 143
5.5 实践项目 147
第6章 索引、连接和子查询 149
6.1 创建测试表 149
6.2 索引 152
6.2.1 数据库索引 152
6.2.2 创建索引的方法 153
6.3.1 B树索引 154
6.3 索引的类型 154
6.3.2 位图索引 156
6.3.3 位图索引与B树索引 157
6.3.4 基于函数的索引 157
6.4 何时使用索引 158
6.5 表之间的关系 160
6.5.1 使用SELECT语句进行多表联合查询 161
6.5.2 连接的类型 163
6.5.3 集合运算符 168
6.6.1 子查询的定义 171
6.6 子查询 171
6.6.2 子查询所能解决的问题 172
6.6.3 单行子查询 172
6.6.4 多行子查询 173
6.6.5 多列子查询 174
6.6.6 关联子查询 174
6.7 小结 175
6.8 练习 176
6.9 实践项目 180
第7章 编写PL/SQL程序 182
7.1 PL/SQL的定义 182
7.1.1 PL/SQL简介 186
7.1.2 PL/SQL、SQL和SQL*Plus的关系 186
7.1.3 存储过程、函-数和触发器 187
7.1.4 存储过程和SQL脚本 189
7.2 PL/SQL的块结构 189
7.2.2 声明部分 190
7.2.1 块头部分 190
7.2.3 执行部分 191
7.2.4 异常部分 191
7.3 创建一个简单的PL/SQL过程 192
7.4 PL/SQL变量和常量 194
7.4.1 PL/SQL变量的声明 194
7.4.2 声明PL/SQL常量 195
7.4.3 变量赋值 195
7.4.4 使用变量 196
7.5 PL/SQL的控制结构 197
7.5.1 IF语句 197
7.5.2 循环 199
7.5.3 游标 201
7.5.4 嵌套循环和游标应用示例 204
7.6 错误处理 207
7.6.1 异常 207
7.6.2 系统定义异常 207
7.6.3 程序员定义的异常 209
7.7 小结 210
7.8 练习 212
7.9 实践项目 216
第8章 解读数据模型 217
8.1 数据模型设计综述 217
8.1.1 数据模型设计的目的及其益处 218
8.1.2 关系完整性:质量数据 218
8.2.1 概念模型 219
8.2 数据模型的种类 219
8.2.2 逻辑数据模型 220
8.2.3 物理数据模型 220
8.3 实体-关系图 222
8.3.1 实体 222
8.3.2 属性 223
8.3.3 关系 224
8.3.4 基数与可选符号 226
8.4 小结 227
8.5 复习题 229
8.6 实践项目 232
第9章 数据库结构设计基础 234
9.1 业务规约:让数据告诉您该往哪走 234
9.2 数据库粒度选择 235
9.3 实体和属性 235
9.4 可靠地确定记录:主键 238
9.4.1 为什么需要主键 238
9.4.2 复合主键 238
9.4.3 自然主键与代理主键 239
9.4.4 关系:引用其他表的数据 241
9.5 常用数据模型标准 242
9.5.1 鱼尾纹(IE) 242
9.5.2 IDEF1X 243
9.6 关系:基数和可选性 245
9.6.1 一对多 245
9.6.2 多对多 246
9.6.3 一对一 247
9.6.4 可选性 248
9.6.5 依存关系:确定关系 248
9.6.6 递归关系与二元关系 249
9.7 多范畴建模:超类型和子类型 250
9.7.1 范畴、超类型和子类型 251
9.7.2 超/子类型的物理模型实现 252
9.8 小结 253
9.9 复习题 254
9.10 实践项目 257
第10章 数据库的规范化 258
10.1 规范化过程 258
10.2 依存关系 259
10.2.1 依存因子与决定因子 259
10.2.2 传递依存关系 259
10.3 第一范式、二范式、三范式 260
10.3.1 第一范式:消除重复组 261
10.3.2 第二范式:消除冗余数据 263
10.3.3 第三范式:消除非主键依存关系 264
10.4 在数据库模型设计中应用范式 265
10.5 第四范式、第五范式 266
10.5.1 第四范式:分离独立的多重关系 266
10.5.2 第五范式:分离语义关联的多重关系 267
10.6 合理地使用范式 269
10.7 数据异常 270
10.7.1 插入异常 270
10.7.2 删除异常 270
10.7.3 更新异常 270
10.7.4 遵守范式约束的代价 271
10.8 将逻辑模型转化为物理模型 271
10.8.1 数据库引擎的选择 271
10.8.2 术语转换 271
10.8.3 超/子类型的转换 272
10.9 小结 273
10.10 练习 274
10.11 实践项目 277
第11章 分析数据质量问题 279
11.1 数据类型与丢失数据:质量的基础 279
11.1.1 处理遗漏值 279
11.1.2 苹果和橘子:定义数据类型 280
11.1.3 选择数据类型 282
11.1.4 数据类型转换:弱类型和强类型 284
11.2 数据域:合法性检查 285
11.3.1 列约束 286
11.3 列和表约束 286
11.3.2 表约束 289
11.4 主键约束与索引 290
11.4.1 惟一性及其实现 290
11.4.2 候选键 292
11.4.3 其他索引 293
11.5 外键约束:引用其他表的数据 294
11.5.1 添加约束 294
11.5.2 基数和可选性的实现 296
11.5.3 级联效应 298
11.5.4 递归关系上的级联删除 300
11.5.4 级联的局限性 301
11.6 声明式关系完整性:优点和局限 306
11.6.1 声明式外键约束 306
11.6.2 触发器和过程代码 306
11.7 命名约束:令程序员更易理解 308
11.7.1 命名表和列 308
11.7.2 命名检查约束 309
11.7.3 命名外键约束 309
11.7.4 命名索引 309
11.8 小结 310
11.9 练习 311
11.10 实践项目 314
第12章 其他Oracle相关技术 316
12.1 表间数据传送 316
12.1.1 使用INSERT传送数据 319
12.1.2 在现有表的基础上创建新表 320
12.2 重命名表 321
12.3 修改表结构 322
12.3.1 添加列 322
12.3.2 修改列的数据类型 323
12.3.3 修改NULL选项 324
12.4 视图 325
12.4.1 创建视图 325
12.4.2 可更新视图 326
12.4.3 删除视图 327
12.4.4 回显记录个数的控制 328
12.5 其他数据库对象 334
12.5.1 序列 334
12.5.2 同义词 338
12.6 小结 340
12.7 练习 341
12.8 实践项目 344
术语表 345