第1章 关系数据库表 1
1.1 关系表 1
目录 1
1.2 SQL 4
1.2.1 ANSI标准 4
1.2.2 SQL数据库 5
1.2.3 SQL实现 5
1.2.4 SQL*Plus 7
1.3 表 8
1.3.1 数据模型视图 9
1.3.2 创建表脚本 9
1.3.3 描述表 9
1.3.4 表数据 9
1.4.1 数据定义语言(DDL) 10
1.4 SQL语句 10
1.4.2 数据操纵语言(DML) 11
1.4.3 事务控制 11
1.4.4 会话控制 11
1.4.5 系统控制 12
1.5 表列数据类型 12
1.5.1 字符 12
1.5.2 数字 12
1.5.3 日期类型 13
1.5.4 大型对象 14
1.5.5 XML类型 15
1.5.6 LONG和RAW类型 16
1.5.7 ROWID类型 16
1.6.1 应用程序表空间 17
1.6 表的内幕 17
1.6.2 数据字典 18
第2章 与Oracle交互 21
2.1 简化Windows上的SQL*Plus 21
2.2 连接 23
2.3 连接到基础结构 24
2.4 断开连接 26
2.5 命令行 27
2.6 命令行上的更改 27
2.7 脚本 35
2.8 脚本输出 37
2.9 命令行参数 40
2.10 带KORN Shell的SQL*Plus 44
2.12 活动状态Perl的SQL*Plus 46
2.11 批处理命令文件 46
2.13 权限 47
2.14 DUAL表 48
2.15 Autotrace命令 49
第3章 声明性约束 52
3.1 主键约束 53
3.1.1 创建约束 54
3.1 2 命名约束 57
3.1.3 主键索引 58
3.1.4 序列 62
3.1.5 代码中的序列 64
3.1.6 连接主键 66
3.1.7 使用伪键的附加索引 67
3.1.8 启用、禁用和删除 70
3.1.9 可延迟选项 71
3.1.10 NOVALIDATE选项 74
3.1.11 PL/SQL中的错误处理 75
3.2 惟一性约束 75
3.2.1 将非空、检查与惟一性约束结合使用 76
3.2.2 Students表实例 77
3.2.3 可延迟和NOVALIDATE选项 78
3 2.4 PL/SQL中的错误处理 78
3.3 外键约束 79
3.3.1 四类错误 81
3.3.2 删除级联 83
3.3.3 强制外键列 83
3.3.4 引用父语法 84
3.3.5 跨模式和数据库的引用完整性 85
3.3.6 多父及DDL迁移 86
3.3.7 多对多关系 88
3.3.8 自引用完整性 90
3.3.9 与父/子表相关的PL/SQL错误处理 92
3.3.10 可延迟选项 92
3.4 检查约束 95
3.4.1 多列约束 97
3.4.2 补充惟一性约束 98
3.4.3 Students表实例 99
3.4.4 查找表与检查约束的比较 99
3.4.5 基数 100
3.4.6 检查约束的设计 100
3.5 非空约束 101
3.6 默认值 102
3.7 修改约束 102
3.8 异常处理 103
3.9 数据加载 104
第4章 带约束的数据模型 107
4.1 实体关系图 107
4.2 表描述 108
4.3 DDL 109
4.4 示例数据 113
第5章 数据字典中的视图约束 116
5.1 可以看到什么 116
5.2 字典视图 117
5.3 约束视图 119
5.4 USER_CONS_COLUMNS视图 120
5.5 USER_CONSTRAINTS视图 121
5.6 数据字典约束脚本 122
5.6.1 对表的约束 122
5.6.2 寻求约束名 123
5.6.3 检查约束规则 124
5.6.4 查询父表 125
5.6.5 查询子表 126
5.6.6 约束状态 126
5.6.7 有效性 127
第6章 行触发器机制 130
6.1 简介 130
6.2 BEFORE与AFTER 131
6.3 Insert Row触发器的语法 132
6.4 触发器主体 135
6.5 行触发器实例 137
6.6 带Oracle约束和业务规则的表 139
6.6.1 环境 140
6.6.2 要实施的过程性约束 141
6.6.3 BEFORE与AFTER 142
6.6.4 为过程性约束使用包 143
6.6.5 管理错误代码和消息 145
6.6.6 触发器体系结构 146
第7章 语句级触发器 147
7.1 事件序列 147
7.2 Insert Statement触发器的语法 148
7.3 语句级聚合 151
7.4 处理行捕获数据 153
第8章 实施复杂的规则 156
第9章 PL/SQL环境 160
9.1 Hello World程序 160
9.2 引用Oracle包 164
9.2.1 环境创建 165
9.2.2 API 166
9.3 USER_OBJECTS视图 168
9.4 过程间的依赖关系 169
9.5 USER_DEPENDENCIES视图 174
9.6 USER_SOURCE视图 177
9.7 共享代码 182
9.8 编译依赖关系 184
9.8.1 场景1 184
9.8.2 场景2 185
9.9 USER_ERRORS视图 187
第10章 PL/SQL程序单元 188
10.1 过程 190
10.2 函数 192
10.3 子程序封装:包的介绍 194
10.4 包规范 195
10.4.1 语法与格式 196
10.4.2 开发规范 198
10.5 包体 200
10.6 应用程序划分 203
10.7 数据抽象 204
10.8 参数与模式 207
10.8.1 IN模式(默认)是个常量 207
10.8.2 IN OUT模式 208
10.8.3 OUT模式 208
10.8.4 函数与模式 209
10.8.5 命名表示法与位置表示法 210
10.8.6 默认参数 212
10.8.7 使用默认值扩展代码 214
10.8.8 %TYPE 215
10.9 重载 216
第11章 PL/SQL语言特性 219
11.1 注释 221
11.2 赋值和语句 222
11.3 布尔表达式 223
11.4 空值表达式 224
11.5 逻辑操作符 228
11.6 字符串连接 230
11.7 算术表达式 231
11.8 变量声明 231
11.9 数据类型 233
11.9.1 布尔型 233
11.9.2 标量类型 234
11.9.3 记录 236
11.9.4 %ROWTYPE 239
11.9.5 Index-By表 239
11.9.6 Varray类型和嵌套表 241
11.9.7 对象 244
11.9.8 大型对象 246
11.10 IF语句 249
11.10.1 简单的IF语句 249
11.10.2 If-Then-Else语句 249
11.10.3 带有Else子句的If-Then-Elseif语句 249
11.10.4 不带Else子句的If-Then-Elseif语句 250
11.10.5 语句表达式 251
11.10.6 在SOL中使用DECODE和CASE 253
11.11 CASE语句 254
11.11.1 检索型CASE语句 254
11.11.2 带选择器的CASE语句 255
11.11.3 在SELECT语句中使用CASE 256
11.12 循环 257
11.11.4 在SELECT语句中使用DECODE 257
11.12.1 DO UNTIL循环 258
11.12.2 WHILE循环 259
11.12.3 FOR循环 260
11.12.4 DO-WHILE-DO循环 262
11.12.5 循环逻辑的封装 263
11.13 字符串操作函数 265
11.13.1 SUBSTR 265
11.13.2 INSTR 267
11.13.3 LPAD和RPAD 270
11.13.4 LTRIM和RTRIM 271
11.13.5 REPLACE 272
11.13.6 TRANSLATE 274
11.14 其他字符串函数 275
11.15 数字函数 276
11.16 随机数的生成 277
11.17 日期函数 278
11.17.1 SYSDATE 278
11.17.2 TO_CHAR和TO_DATE 279
11.17.3 ADD_MONTHS 280
11.17.4 LAST_DAY 280
11.17.5 MONTHS_BETWEEN 281
11.17.6 NEW_TIME 281
11.17.7 NEXT_DAY 282
11.17.8 ROUND和TRUNC 283
11.18 异常 283
11.18.1 用户自定义异常 284
11.18.2 含异常处理程序的程序块 285
11.18.3 EXCEPTION子句 286
11.18.5 RAISE语句 288
11.18.4 SQLCODE和SQLERRM 288
11.18.6 未处理异常和异常传播 290
11.18.7 RAISE_APPLICATION_ERROR 291
11.18.8 EXCEPTION_INIT 292
11.19 用SQL进行数据库访问 293
11.19.1 游标FOR循环 293
11.19.2 用SELECT语句选择单行 294
11.19.3 插入和更新 294
11.19.4 隐式游标 297
11.20 发送管道消息(DBMS_PIPE) 299
11.20.1 发送-接收示例 300
11.20.2 接口描述 301
11.20.3 异常处理 305
11.21 用警报指示事件(DBMS_ALERT) 306
11.22 用触发器和警报执行Email通知 310