第1部分 关系数据库和SQL 2
第1章 关系数据库及SQL导论 2
1.1 关系数据库 3
1.1.1 关系模型 4
项目1-1 规范化数据和识别联系 10
项目小结 11
1.2 了解SQL 11
1.2.1 SQL的演变 12
1.2.2 SQL语句的类型 14
1.2.3 执行的类型 15
1.2.4 SQL标准和产品实现方式 16
项目1-2 连接数据库 18
项目小结 20
1.3 思考与练习 20
第2章 研究SQL环境 21
2.1 了解SQL环境 22
2.2 了解SQL目录 23
2.2.1 模式 25
2.2.2 模式对象 25
2.2.3 数据库 27
2.3 在SQL环境中命名对象 29
2.4 创建模式 31
2.5 创建数据库 32
项目2-1 创建数据库和模式 33
项目小结 34
2.6 思考与练习 34
第3章 创建和修改表 36
3.1 创建SQL表 37
3.2 指定列数据类型 40
3.2.1 字符串数据类型 41
3.2.2 数字数据类型 42
3.2.3 日期数据类型 43
3.2.4 间隔数据类型 44
3.2.5 布尔数据类型 45
3.2.6 使用SQL数据类型 46
3.3 创建用户定义类型 47
3.4 指定列默认值 48
项目3-1 创建SQL表 49
项目小结 50
3.5 删除SQL表 51
项目3-2 修改和删除SQL表 53
项目小结 53
3.6 思考与练习 54
第4章 增强数据完整性 55
4.1 了解完整性约束 56
4.2 使用NOT NULL约束 57
4.3 添加UNIQUE约束 58
4.4 添加PRIMARY KEY约束 60
4.5 添加FOREIGN KEY约束 63
4.5.1 MATCH子句 67
4.5.2 <参照触发动作>子句 68
项目4-1 添加NOTNULL约束、唯一约束和参照约束 69
项目小结 72
4.6 定义CHECK约束 72
4.6.1 定义断言 75
4.6.2 创建域和域约束 75
项目4-2 添加CHECK约束 76
项目小结 76
4.7 思考与练习 76
第5章 创建SQL视图 78
5.1 在数据库中添加视图 79
5.2 创建可更新视图 86
5.3 从数据库中删除视图 89
项目5-1 在数据库中添加视图 90
项目小结 91
5.4 思考与练习 91
第6章 管理数据库的安全 93
6.1 了解SQL安全模型 94
6.1.1 SQL会话 95
6.1.2 访问数据库对象 97
6.2 创建和删除角色 99
6.3 授予和取消权限 100
6.4 授予和取消角色 104
项目6-1 管理角色和权限 106
项目小结 107
6.5 思考与练习 107
第2部分 数据访问和修改 110
第7章 查询SQL数据 110
7.1 使用SELECT语句检索数据 111
7.2 使用WHERE子句定义搜索条件 116
7.3 使用GROUP BY子句分组查询结果 121
7.4 使用HAVING子句指定分组搜索条件 126
7.5 使用ORDER BY子句排序查询结果 128
项目7-1 查询INVENT-ORY数据库 130
项目小结 133
7.6 思考与练习 133
第8章 修改SQL数据 135
8.1 插入SQL数据 136
8.2 更新SQL数据 141
8.3 删除SQL数据 144
项目8-1 修改SQL数据 145
项目小结 147
8.4 思考与练习 148
第9章 谓语 149
9.1 比较SQL数据 150
9.2 返回空值 155
9.3 返回近似值 158
项目9-1 在SQL语句中使用谓语 160
项目小结 162
9.4 引用其他数据源 162
9.4.1 IN谓语 162
9.4.2 EXISTS谓语 165
9.5 量化比较谓语 168
9.5.1 SOME和ANY谓语 168
9.5.2 ALL谓语 169
项目9-2 在谓语中使用子查询 171
项目小结 172
9.6 思考与练习 173
第10章 函数和值表达式 174
10.1 使用集合函数 175
10.1.1 COUNT函数 176
10.1.2 使用MAX和MIN函数 177
10.1.3 使用SUM函数 179
10.1.4 使用AVG函数 180
10.2 使用值函数 180
10.2.1 使用字符串值函数 181
10.2.2 使用日期值函数 183
10.3 使用值表达式 185
10.3.1 数字值表达式 185
10.3.2 CASE值表达式 187
10.3.3 CAST值表达式 190
10.4 使用特殊值 191
项目10-1 使用函数和值表达式 192
项目小结 194
10.5 思考与练习 194
第11章 访问多个表 196
11.1 执行基本的连接运算 197
11.1.1 使用相关名称 200
11.1.2 在两个以上的表之间创建连接 201
11.1.3 创建交叉连接 201
11.1.4 创建自连接 202
11.2 利用共享列名连接表 203
11.2.1 创建自然连接 204
11.2.2 创建命名列连接 204
11.3 使用条件连接 205
11.3.1 创建内连接 205
11.3.2 创建外连接 207
11.4 执行联合运算 209
项目11-1 查询多个表 212
项目小结 213
11.5 思考与练习 213
第12章 使用子查询访问和修改数据 214
12.1 创建返回多个数据行的子查询 215
12.1.1 使用IN谓语 215
12.1.2 使用EXISTS谓语 217
12.1.3 使用量化比较谓语 218
12.2 创建返回一个值的子查询 219
12.3 使用相关子查询 220
12.4 使用嵌套子查询 221
12.5 使用子查询修改数据 223
12.5.1 使用子查询插入数据 224
12.5.2 使用子查询更新数据 224
12.5.3 使用子查询删除数据 225
项目12-1 使用子查询 225
项目小结 229
12.6 思考与练习 229
第3部分 高级数据访问技术 232
第13章 创建SQL调用例程 232
13.1 了解SQL调用例程 233
13.1.1 SQL调用过程和函数 234
13.1.2 基本语法 234
13.2 创建SQL调用过程 235
13.3 在过程中添加输入参数 238
13.4 在过程中添加局部变量 241
13.5 使用控制语句 243
13.5.1 创建复合语句 243
13.5.2 创建条件语句 244
13.5.3 创建循环语句 246
项目13-1 创建SQL调用过程 248
项目小结 249
13.6 在过程中添加输出参数 249
13.7 创建SQL调用函数 250
项目13-2 创建SQL调用函数 252
项目小结 253
13.8 思考与练习 253
第14章 创建SQL触发器 255
14.1 了解SQL触发器 256
14.2 创建SQL触发器 258
14.2.1 引用旧数据和新数据 259
14.2.2 删除SQL触发器 260
14.3 创建插入触发器 260
14.4 创建更新触发器 263
14.5 创建删除触发器 266
项目14-1 创建SQL触发器 268
项目小结 270
14.6 思考与练习 271
第15章 使用SQL游标 272
15.1 了解SQL游标 273
15.2 声明游标 276
15.2.1 语法中的可选项 276
15.2.2 创建游标声明 279
15.3 打开和关闭游标 282
15.4 检索游标返回的数据 282
15.5 使用定位UPDATE和DELETE语句 286
15.5.1 使用定位UPDATE语句 286
15.5.2 使用定位DELETE语句 288
项目15-1 使用SQL游标 288
项目小结 291
15.6 思考与练习 291
第16章 管理SQL事务 293
16.1 了解SQL事务 294
16.2 设置事务属性 296
16.2.1 指定隔离级别 297
16.2.2 指定诊断尺寸 301
16.2.3 创建SET TRANSA-CTION语句 301
16.3 启动事务 302
16.4 设置约束延迟性 303
16.5 在事务中创建保存点 305
16.6 终止事务 307
16.6.1 提交事务 308
16.6.2 回滚事务 308
项目16-1 处理事务 310
项目小结 312
16.7 思考与练习 312
第17章 访问主机程序中的SQL数据 313
17.1 直接调用SQL 314
17.2 在程序中嵌入SQL语句 315
17.2.1 创建嵌入式SQL语句 316
17.2.2 在SQL语句中使用主机变量 317
17.2.3 检索SQL数据 319
17.2.4 处理错误 321
项目17-1 嵌入SQL语句 322
项目小结 324
17.3 创建SQL客户端模块 324
17.4 使用SQL调用级接口 326
17.4.1 分配句柄 327
17.4.2 执行SQL语句 330
17.4.3 使用主机变量 331
17.4.4 检索SQL数据 331
项目17-2 使用SQL调用级接口 332
项目小结 334
17.5 思考与练习 334
第18章 处理XML数据 336
18.1 XML基础知识 337
18.2 了解SQL/XML 339
18.2.1 XML数据类型 340
18.2.2 SQL/XML函数 341
18.2.3 SQL/XML映射规则 342
项目18-1 使用SQL/XML函数 345
项目小结 345
18.3 思考与练习 346
附录 思考与练习答案 347