第1部分SQL数据库 2
第1章关系数据库及SQL导论 2
1.1关系数据库 3
项目1-1规范化数据和确认联系 10
1.2学习SQL 11
1.2.1 SQL的演变 11
1.2.2 SQL语句的类型 13
1.2.3执行的类型 14
1.3使用关系数据库管理系统 15
项目1-2连接数据库 18
1.4思考与练习 20
第2章研究SQL环境 21
2.1 了解SQL环境 22
2.2 了解SQL目录 24
2.2.1模式 25
2.2.2模式对象 26
2.2.3什么是数据库 28
2.3在SQL环境中命名对象 29
2.4创建模式 31
2.5创建数据库 33
项目2-1 创建数据库和模式 34
2.6思考和练习 35
第3章创建和修改表 37
3.1创建SQL表 38
3.2规定列数据类型 41
3.2.1字符串数据类型 42
3.2.2数字数据类型 44
3.2.3日期数据类型 45
3.2.4间隔数据类型 46
3.2.5布尔数据类型 47
3.2.6使用SQL数据类型 48
3.3创建用户定义的类型 49
3.4指定列默认值 50
项目3-1 创建SQL表 52
3.5修改SQL表 53
3.6删除SQL表 54
项目3-2修改和删除SQL表 55
3.7思考和练习 56
第4章加强数据完整性 58
4.1 了解完整性约束 59
4.2 使用NOTNULL约束 60
4.3 添加UNIQUE约束 62
4.4添加PRIMARY KEY约束 64
4.5添加FOREIGN KEY约束 66
4.5.1 MATCH子句 70
4.5.2<referential triggered action>子句 71
项目4-1 添加NOT NULL约束、惟一约束和参照约束 73
4.6定义CHECK约束 76
4.6.1 定义断言 79
4.6.2创建域和域约束 79
项目4-2添加CHECK约束 80
4.7思考与练习 81
第5章创建SQL视图 83
5.1 将视图添加到数据库中 84
5.2创建可更新视图 92
5.3从数据库中删除视图 95
项目5-1添加视图到数据库中 96
5.4思考和练习 97
第6章管理数据库的安全 99
6.1理解SQL安全模式 100
6.1.1 SQL会话 101
6.1.2访问数据库对象 103
6.2创建和删除角色 106
6.3授予和取消权限 107
6.4授予和取消角色 112
项目6-1 管理角色和权限 114
6.5思考与练习 115
第2部分数据访问与修改 118
第7章查询SQL数据 118
7.1使用SELECT语句检索数据 119
7.2使用WHERE子句定义搜索条件 125
7.3使用GROUP BY子句分组查询结果 131
7.4使用HAVING子句指定组搜索条件 136
7.5使用ORDER BY子句排序查询结果 138
项目7-1查询Inventory数据库 140
7.6思考和练习 143
第8章修改SQL数据 146
8.1 插入SQL数据 147
8.2更新SQL数据 152
8.3删除SQL数据 157
项目8-1修改SQL数据 158
8.4思考与练习 160
第9章使用谓词 162
9.1 比较SQL数据 163
9.1.1使用BETWEEN谓词 166
9.2返回空值 168
9.3返回近似值 171
项目9-1 SQL语句中谓词的用法 173
9.4引用附加数据源 175
9.4.1使用IN谓词 176
9.4.2使用EXISTS谓词 179
9.5量化比较谓词 181
9.5.1使用SOME和ANY谓词 181
9.5.2使用ALL谓词 183
项目9-2在谓词中使用子查询 184
9.6思考与练习 186
第10章使用函数和值表达式 188
10.1使用集合函数 189
10.1.1使用COUNT函数 190
10.1.2使用MAX和MIN函数 191
10.1.3使用SUM函数 193
10.1.4使用AVG函数 194
10.2使用值函数 195
10.2.1使用字符串函数 196
10.2.2使用日期时间函数 198
10.3使用值表达式 199
10.3.1数值表达式 200
10.3.2使用CASE值表达式 202
10.3.3使用CAST表达式 205
10.4使用特殊值 206
项目10-1使用函数和值表达式 208
10.5思考与练习 210
第11章访问多个表 212
11.1执行基本连接操作 213
11.1.1使用相关名称 216
11.1.2在两个表以上的之间创建连接 217
11.1.3创建交叉连接 217
11.1.4创建自连接 218
11.2使用共享列名连接表 220
11.2.1创建自然连接 221
11.2.2创建指定列连接 221
11.3使用条件连接 222
11.3.1创建内连接 222
11.3.2创建外连接 224
11.4执行合并操作 227
项目11-1查询多个表 229
11.5思考与练习 231
第12章使用子查询访问和修改数据 232
12.1创建返回多行的子查询 233
12.1.1 使用IN谓词 233
12.1.2使用EXISTS谓词 235
12.1.3使用量化比较谓词 236
12.2创建返回单个值的子查询 237
12.3使用相关子查询 238
12.4使用嵌套子查询 240
12.5使用子查询修改数据 242
12.5.1使用子查询插入数据 242
12.5.2用子查询更新数据 243
12.5.3使用子查询删除数据 244
项目12-1练习子查询 244
12.6思考与练习 247
第3部分高级数据访问 250
第1 3章创建SQL调用例程 250
13.1 了解SQL调用例程 251
13.1.1 SQL调用过程和函数 252
13.1.2使用基本语法 252
13.2创建SQL调用过程 254
13.3给过程添加输入参数 257
13.4给过程添加局部变量 260
13.5使用控制语句 262
13.5.1创建复合语句 262
13.5.2创建条件语句 263
13.5.3创建循环语句 265
项目13-1 创建SQL调用过程 267
13.6给过程添加输出参数 268
13.7创建SQL调用函数 270
项目13-2创建SQL调用函数 272
13.8思考与练习 273
第14章创建SQL触发器 275
14.1 了解SQL触发器 276
14.2创建SQL触发器 278
14.2.1 引用旧的和新的数据 280
14.2.2删除SQL触发器 281
14.3创建Insert触发器 282
14.4创建Update触发器 284
14.5创建Delete触发器 288
项目14-1创建SQL触发器 290
14.6思考与练习 293
第15章使用SQL游标 295
15.1 理解SQL游标 296
15.1.1 声明和打开SQL游标 297
15.2声明游标 299
15.2.1可选的语法组成 300
15.2.2建立游标声明 303
15.3打开和关闭游标 305
15.4检索游标返回的数据 306
15.5使用定位UPDATE和DELETE语句 310
15.5.1使用定位UPDATE语句 310
15.5.2使用定位DELETE语句 311
项目15-1 使用SQL游标 312
15.6思考与练习 315
第16章管理SQL事务 317
16.1 了解SQL事务 318
16.2设置事务属性 320
16.2.1指定隔离层 321
16.2.2指定诊断区大小 325
16.2.3建立SET TRANSACTION语句 325
16.3开始事务 326
16.4设置约束延期性 327
16.5在事务中建立存储点 329
16.6终止事务 331
16.6.1提交事务 332
16.6.2回滚事务 333
项目16-1使用事务 334
16.7思考与练习 336
第17章访问主程序中的SQL数据 338
17.1 直接调用SQL 339
17.2程序中的嵌入式SQL语句 340
17.2.1 创建嵌入式SQL语句 341
17.2.2在SQL语句中使用主变量 343
17.2.3检索SQL数据 344
17.2.4错误处理 346
项目17-1 嵌入SQL语句 347
17.3创建SQL客户端模块 350
17.4使用SQL调用层接口 352
17.4.1分配句柄 353
17.4.2执行SQL语句 355
17.4.3使用主变量 356
17.4.4检索SQL数据 357
项目17-2使用SQL调用层接口 358
17.5思考与练习 360
第4部分附 录 364
附录A思考与练习答案 364
第1章:关系数据库和SQL导论 364
第2章:研究SQL环境 365
第3章:创建和修改表 367
第4章:加强数据完整性 369
第5章:创建SQL视图 371
第6章:管理数据库的安全 372
第7章:查询SQL数据 374
第8章:修改SQL数据 377
第9章:使用谓词 379
第10章:使用函数和值表达式 380
第11章:访问多个表 382
第12章:使用子查询访问和修改数据 383
第13章:创建SQL调用例程 385
第14章:创建SQL触发器 387
第15章:使用SQL游标 389
第16章:管理SQL事务 390
第17章:访问主程序中的SQL数据 393
附录B SQL:1999关键字 396
附录C本书项目中使用的SQL代码 401
C.1 各个项目的SQL代码 401
C.2 Inventory数据库 411