第1章 数据库系统与Transact-SQL 1
1.1 数据库系统 1
1.1.1 数据库系统的组成 1
1.1.2 关系数据库 2
1.1.3 数据库管理系统 2
1.2 Transact-SQL概述 2
1.2.1 SQL与Transact-SQL 2
1.2.2 Transact-SQL的组成 4
1.3 Transact-SQL开发环境 5
1.3.1 Transact-SQL的执行方式 5
1.3.2 使用SSMS开发Transact-SQL 6
1.4 初识Transact-SQL 9
1.4.1 Transact-SQL标识符和对象引用方法 9
1.4.2 Transact-SQL的语法约定 10
1.4.3 批处理 10
1.5 本章小结 11
第2章 SQL语言基础 12
2.1 SQL语言的数据类型 12
2.1.1 字符串型 12
2.1.2 数值型 13
2.1.3 日期时间型 14
2.1.4 货币型 15
2.1.5 二进制型 16
2.1.6 其他数据类型 16
2.1.7 自定义数据类型 17
2.2 示例数据表 17
2.2.1 创建示例数据表——CREATE TABLE 17
2.2.2 显示示例数据表的结构信息 18
2.2.3 示例数据表添加数据——INSERT 18
2.2.4 查询示例数据表中的数据——SELECT 19
2.2.5 删除示例数据表——DROP TABLE 20
2.3 SQL的数据查询功能 20
2.3.1 仅带FROM子句的SELECT语句 20
2.3.2 避免重复记录的查询——带DISTINCT 23
2.3.3 查询前n条记录——带TOP 24
2.3.4 条件查询——WHERE子句 25
2.3.5 范围查询——使用BETWEEN 27
2.3.6 范围查询——使用IN 28
2.3.7 模糊查询——使用LIKE 29
2.3.8 空值查询——使用IS 34
2.3.9 排序查询——使用ORDER BY 35
2.3.10 分组查询——使用GROUP BY和HAVING 37
2.4 本章小结 37
第3章 Transact-SQL语法 38
3.1 Transact-SQL的变量和常量 38
3.1.1 全局变量的引用 38
3.1.2 局部变量的定义和引用 40
3.1.3 Transact-SQL常量 42
3.2 Transact-SQL运算符 44
3.2.1 算术运算符 44
3.2.2 比较运算符 45
3.2.3 逻辑运算符 45
3.2.4 赋值运算符 46
3.2.5 字符串连接运算符 46
3.2.6 位运算符 46
3.2.7 运算符的优先级 47
3.3 Transact-SQL流程控制 47
3.3.1 语句块 47
3.3.2 IF语句 47
3.3.3 CASE结构 51
3.3.4 WHILE语句(含BREAK、CONTINUE) 53
3.3.5 GOTO语句 54
3.3.6 TRY...CATCH语句 55
3.3.7 RETURN语句 56
3.3.8 WAITFOR语句 56
3.4 本章小结 57
第4章 Transact-SQL函数应用 58
4.1 字符串处理函数 58
4.1.1 ASCII()函数 58
4.1.2 SUBSTRING()函数 59
4.1.3 LEFT()函数 59
4.1.4 REPLACE()函数 60
4.1.5 UPPER()函数 60
4.1.6 STR()函数 61
4.1.7 LEN()函数 61
4.1.8 REVERSE()函数 61
4.1.9 字符串处理函数一览表 62
4.2 聚合函数与聚合分析 63
4.2.1 聚合分析的概念 63
4.2.2 计数函数——COUNT() 63
4.2.3 求和函数——SUM() 65
4.2.4 均值函数——AVG() 66
4.2.5 最大最小函数——MAX()/MIN() 67
4.2.6 标准差/总体标准差函数——STDEV()/STDEVP() 67
4.2.7 方差函数——VAR()/VARP() 68
4.3 日期时间函数 68
4.3.1 获取当前日期时间——GetDate()和GetUtcDate() 68
4.3.2 提取日期时间量的成分——Year()、Month()、Day()、DatePart() 69
4.3.3 提取日期成分的字符串——DateName() 72
4.3.4 日期时间的增加和减少运算——DateAdd() 73
4.3.5 获取日期时间的间隔——DateDiff() 74
4.3.6 常用日期时间函数一览表 75
4.3.7 类型转换函数及日期数据显示——CONVERT()和CAST() 76
4.4 数学函数 80
4.5 系统函数 83
4.5.1 获取服务器名和ID——HOST_NAME()、HOST_ID() 83
4.5.2 获取数据库的名称和ID——DB_NAME()、DB_ID() 83
4.5.3 获取应用程序名——APP_NAME() 84
4.5.4 获取数据库用户名和ID——USER_NAME()、USER_ID() 85
4.5.5 获取安全标识号(SID)——SUSER_SID() 86
4.5.6 获取数据库对象的名称和ID——Object_Name()、OBJECT_ID() 87
4.5.7 获取登录名——SUSER_SNAME() 90
4.5.8 获取架构名称——OBJECT_SCHEMA_NAME() 90
4.5.9 获取数据的长度——DATALENGTH() 91
4.5.10 获取字段的定义长度——COL_LENGTH() 92
4.5.11 获取字段的名称——COL_NAME() 92
4.5.12 添加标识字段——IDENTITY() 94
4.5.13 对行编号——ROW_NUMBER() 95
4.5.14 日期和数值类型型判别函数——ISDATE()、ISNUMERIC() 95
4.5.15 空值替换函数——ISNULL() 96
4.6 用户自定义函数 97
4.6.1 标量函数的定义和引用 97
4.6.2 内联表值函数 99
4.6.3 多语句表值函数 100
4.6.4 删除自定义函数 101
4.7 本章小结 101
第5章 SQL Server数据库管理 102
5.1 数据库文件 102
5.2 SQL Server 2008系统数据库 103
5.3 创建数据库——CREATE DATABASE 104
5.3.1 CREATE DATABASE语法 104
5.3.2 最简单的数据库 106
5.3.3 指定数据文件的数据库 106
5.3.4 指定大小的数据库 107
5.3.5 指定多个数据文件的数据库 108
5.3.6 指定文件组的数据库 109
5.4 查看数据库 110
5.4.1 使用目录视图sys.database_files 110
5.4.2 使用存储过程sp_helpdb 111
5.5 修改数据库——ALTER DATABASE 113
5.5.1 更改数据库名 113
5.5.2 添加数据库文件和文件组(扩大数据库) 113
5.5.3 更改数据库文件和文件组 117
5.5.4 删除数据库文件和文件组(缩小数据库) 120
5.5.5 数据库的脱机与联机 122
5.5.6 移动数据库文件 122
5.6 删除数据库——DROP DATABASE 123
5.7 查看数据库对象 124
5.7.1 服务器上的数据库 124
5.7.2 数据库文件 125
5.7.3 数据库中的数据表 125
5.7.4 表结构及相关信息 126
5.7.5 数据库中的视图 127
5.7.6 数据库中的架构 127
5.8 本章小结 127
第6章 SQL Server数据表管理 128
6.1 数据表的分类 128
6.2 创建数据表——CREATE TABLE 129
6.2.1 CREATE TABLE的简化语法 129
6.2.2 创建基本表 130
6.2.3 使用主键约束——PRIMARY KEY 131
6.2.4 使用唯一性约束——UNIQUE 132
6.2.5 使用非空约束——NOT NULL 133
6.2.6 使用缺省约束——DEFAULT 134
6.2.7 使用检查约束——CHECK 134
6.2.8 指定文件组 135
6.2.9 综合实例 135
6.2.10 使用标识字段——IDENTITY 137
6.2.11 创建临时表和表变量 137
6.3 修改数据表——ALTER TABLE 139
6.3.1 修改表名和字段名——sp_rename 139
6.3.2 添加字段——ADD 140
6.3.3 删除字段——DROP COLUMN 140
6.3.4 删除字段约束——DROP CONSTRAINT 141
6.3.5 修改字段的数据类型——ALTER COLUMN 143
6.4 插入数据——INSERT 143
6.4.1 基本语法 144
6.4.2 单行插入 144
6.4.3 多行插入 146
6.4.4 批量输入——INSERT...SELECT 146
6.4.5 建表并批量输入——SELECT...INTO 148
6.4.6 大容量(文件)数据的输入 149
6.4.7 特殊字段插入数据 150
6.5 更新数据——UPDATE 152
6.5.1 UPDATE的基本语法 152
6.5.2 单列更新 153
6.5.3 多列更新 154
6.5.4 大容量类型数据的更新 154
6.6 删除表中的数据——DELETE 155
6.7 查看和删除数据表 157
6.7.1 查看数据表 157
6.7.2 删除数据表——DROP TABLE 157
6.8 获取DML语句的影响信息——OUTPUT 158
6.8.1 OUTPUT在INSERT语句中的应用 159
6.8.2 OUTPUT在DELETE语句中的应用 160
6.8.3 OUTPUT在UPDATE语句中的应用 161
6.9 本章小结 161
第7章 SQL高级查询 162
7.1 本章使用的示例表 162
7.2 关于多表连接查询 164
7.2.1 多表连接查询的分类 164
7.2.2 多表连接查询的基本语法 165
7.3 交叉连接查询 166
7.4 内连接查询——INNER JOIN 167
7.4.1 等值连接查询 167
7.4.2 自然连接查询 169
7.4.3 自连接查询 169
7.5 外连接查询——OUTER JOIN 170
7.5.1 左外连接查询——LEFT OUTER JOIN 171
7.5.2 右外连接查询——RIGHT OUTER JOIN 172
7.5.3 全外连接查询——FULL OUTER JOIN 173
7.6 嵌套查询 173
7.6.1 什么是嵌套查询 173
7.6.2 使用IN的嵌套查询 174
7.6.3 使用EXISTS的嵌套查询 177
7.6.4 使用比较运算符的嵌套查询(基于单值的子查询) 179
7.6.5 使用SOME/ALL的嵌套查询(基于多值的子查询) 180
7.6.6 在DML语句中嵌入子查询 183
7.6.7 相关和无关子查询 185
7.7 结果集的集合运算 185
7.7.1 结果集的并运算——UNION 186
7.7.2 结果集的差运算——EXCEPT 188
7.7.3 结果集的交运算——INTERSECT 188
7.7.4 UNION、INTERSECT和EXCEPT运算符的优先级 189
7.8 MERGE运算:一种功能更强的集合运算 191
7.8.1 MERGE的基本语法 192
7.8.2 MERGE的“并”运算 193
7.8.3 MERGE的“差”运算 194
7.8.4 MERGE的“交”运算及相关功能 194
7.9 本章小结 195
第8章 SQL Server索引管理 196
8.1 索引概述 196
8.1.1 什么是索引 196
8.1.2 何种情况下需要创建索引 196
8.2 索引的类型 197
8.2.1 聚集索引和非聚集索引 197
8.2.2 唯一索引与非唯一索引 199
8.2.3 组合索引 200
8.3 创建索引——CREATE INDEX 200
8.3.1 创建索引之前 200
8.3.2 CREATE INDEX基本语法 200
8.3.3 创建聚集索引 203
8.3.4 创建非聚集索引 205
8.3.5 创建唯一索引 206
8.3.6 创建组合索引 208
8.3.7 为计算列创建索引 208
8.4 查看索引 209
8.4.1 查看表(视图)上的索引 209
8.4.2 查看所有索引 210
8.5 修改索引——ALTER INDEX 211
8.5.1 ALTER INDEX基本语法 211
8.5.2 禁用和启用索引 213
8.5.3 重新生成索引 214
8.5.4 修改索引选项 214
8.5.5 修改索引名 215
8.6 删除索引——DROP INDEX 215
8.6.1 删除由CREATE INDEX创建的索引 215
8.6.2 删除由PRIMARY KEY或UNIQUE约束创建的索引 216
8.7 本章小结 216
第9章 SQL Server视图管理 217
9.1 视图 217
9.1.1 视图的概念 217
9.1.2 视图的优缺点 218
9.1.3 视图的分类 219
9.2 创建视图——CREATE VIEW 220
9.2.1 CREATE VIEW基本语法 220
9.2.2 创建简单的视图 221
9.2.3 创建加密的视图 223
9.2.4 创建绑定架构的视图 225
9.2.5 创建带条件的视图及其更新 225
9.2.6 创建带内置函数的视图 226
9.3 查看视图的相关信息 226
9.3.1 查看视图的定义代码 227
9.3.2 查看视图的结构信息 227
9.3.3 查看当前数据库中的所有视图 228
9.3.4 查看视图所依赖的对象 229
9.3.5 其他信息 229
9.4 修改和刷新视图 230
9.4.1 修改视图——ALTER VIEW 230
9.4.2 重命名视图——sp_rename 231
9.4.3 刷新视图——sp_refreshview 231
9.5 视图数据的更新 233
9.5.1 INSERT语句和视图 233
9.5.2 UPDATE语句和视图 235
9.5.3 DELETE语句和视图 235
9.6 索引视图的创建及其运用 236
9.7 (分布式)分区视图的创建及其运用 237
9.7.1 分区视图的概念 237
9.7.2 创建分区视图 238
9.7.3 基于分区视图的数据管理 240
9.7.4 更新分区视图的条件 241
9.8 删除视图——DROP VIEW 242
9.9 本章小结 242
第10章 游标的实现与管理 243
10.1 游标概述 243
10.1.1 游标的概念 243
10.1.2 游标的作用及其实现过程 243
10.2 创建游标——DECLARE CURSOR 244
10.2.1 DECLARECURSOR基本语法 244
10.2.2 创建简单的游标 246
10.2.3 创建局部游标和全局游标 247
10.2.4 创建静态游标和动态游标 247
10.2.5 创建只读游标 247
10.2.6 创建键集游标和(快速)只进游标 248
10.2.7 创建锁定游标和乐观游标 248
10.2.8 创建双向滚动游标 249
10.2.9 创建可更新游标 249
10.2.10 创建综合类型的游标 249
10.3 打开游标——OPEN 250
10.4 检索游标数据——FETCH 251
10.4.1 FETCH基本语法 251
10.4.2 遍历游标结果集 252
10.4.3 使用局部变量保存检索结果 256
10.4.4 使用游标变量 257
10.5 更新游标数据 257
10.5.1 修改游标数据 257
10.5.2 删除游标数据 258
10.6 查看游标属性 258
10.6.1 查看所有游标及其属性——sp_cursor_list 259
10.6.2 查看指定的游标及其属性——sp_describe_cursor 261
10.6.3 查看游标结果集中列的属性——sp_describe_cursor_columns 262
10.6.4 查看游标的基表——sp_describe cursor_tables 264
10.7 关闭和删除游标 265
10.7.1 关闭游标——CLOSE 265
10.7.2 删除游标——DEALLOCATE 266
10.8 本章小结 266
第11章 存储过程的开发与应用 267
11.1 关于存储过程 267
11.1.1 存储过程的概念 267
11.1.2 存储过程的优点 267
11.1.3 存储过程的类型 268
11.2 存储过程的创建与执行——CREATE PROC 269
11.2.1 CREATE PROCEDURE基本语法 269
11.2.2 简单的存储过程 271
11.2.3 带输入参数的存储过程 272
11.2.4 带输出参数的存储过程 275
11.2.5 重编译的存储过程——使用RECOMPILE选项 277
11.2.6 加密的存储过程——使用ENCRYPTION选项 277
11.3 查看存储过程的属性信息 278
11.3.1 查看所有存储过程 278
11.3.2 查看存储过程的定义代码 279
11.3.3 查看存储过程的引用信息 279
11.4 修改存储过程——ALTER PROC 280
11.5 删除存储过程——DROP PROC 281
11.6 本章小结 281
第12章 触发器的开发与应用 282
12.1 关于触发器 282
12.1.1 触发器的概念及其分类 282
12.1.2 触发器与约束 284
12.2 DML触发器的创建和激发 284
12.2.1 创建DML触发器的基本语法 284
12.2.2 AFTER触发器(DML触发器) 286
12.2.3 INSTEAD OF触发器(DML触发器) 294
12.3 DDL触发器的创建和激发 299
12.3.1 创建DDL触发器的基本语法 299
12.3.2 具有数据库范围的DDL触发器 303
12.3.3 具有服务器范围的DDL触发器 305
12.4 LOGON触发器的创建和激发 307
12.5 触发器的嵌套与递归 309
12.5.1 触发器的嵌套 309
12.5.2 触发器的递归 312
12.6 查看触发器的属性信息 315
12.6.1 查看所有触发器 315
12.6.2 查看触发器的定义代码 318
12.6.3 查看DML触发器的引用信息 319
12.6.4 查看触发器的激发事件 320
12.6.5 查看指定表或视图上的触发器 321
12.7 管理触发器 321
12.7.1 修改触发器 321
12.7.2 禁用/启用触发器 322
12.7.3 设置触发器的激发顺序 324
12.7.4 删除触发器 326
12.8 本章小结 327
第13章 事务控制与并发处理 328
13.1 关于事务 328
13.1.1 什么是事务 328
13.1.2 事务的特性 329
13.2 事务的控制 329
13.2.1 启动事务 330
13.2.2 终止事务 331
13.2.3 嵌套事务 335
13.3 并发控制 337
13.3.1 什么是并发控制 337
13.3.2 数据的几种不一致性 338
13.3.3 基于事务隔离级别的并发控制 340
13.3.4 基于锁的并发控制 345
13.4 本章小结 352
第14章 数据的完整性控制 353
14.1 数据完整性 353
14.1.1 数据完整性概念 353
14.1.2 数据完整性分类 353
14.2 数据完整性的实施方法 354
14.2.1 使用规则 355
14.2.2 使用约束 357
14.2.3 使用默认值 357
14.2.4 其他方法 359
14.3 域完整性 360
14.3.1 使用NOT NULL约束 360
14.3.2 使用CHECK约束 361
14.3.3 使用默认值 362
14.3.4 使用规则 363
14.3.5 多种约束的结合使用 364
14.4 实体完整性 365
14.4.1 使用主键约束 365
14.4.2 使用唯一约束 366
14.4.3 使用Identity属性 366
14.5 参照完整性 368
14.5.1 使用外键约束 368
14.5.2 参照完整性的检查 369
14.6 用户定义完整性 370
14.7 约束的管理 370
14.7.1 查看约束 370
14.7.2 删除约束 372
14.8 本章小结 372
第15章 数据的安全性控制 373
15.1 SQL Server 2008安全体系结构 373
15.1.1 主体 373
15.1.2 安全对象 376
15.1.3 权限 376
15.1.4 SQL Server 2005/2008新增的安全策略 377
15.2 服务器级的安全控制 378
15.2.1 身份验证模式 378
15.2.2 创建登录——CREATELOGIN 379
15.2.3 查看登录 383
15.2.4 修改登录——ALTER LOGIN 385
15.2.5 查看服务器角色 387
1 5.2.6 登录的权限管理——GRANT 389
15.2.7 删除登录——DROPLOGIN 394
15.3 数据库级的安全控制 394
15.3.1 数据库用户的管理 394
15.3.2 数据库角色的管理 401
15.3.3 应用程序角色的管理 407
15.3.4 数据库级安全对象的权限管理 411
15.4 架构级的安全控制 421
15.4.1 架构及其管理 421
15.4.2 架构级安全对象的权限管理 427
15.5 应用举例 430
15.6 本章小结 435
第16章 数据库备份与恢复 436
16.1 关于备份与恢复 436
16.1.1 数据库备份与恢复的概念 436
16.1.2 恢复模式 436
16.1.3 备份类型 438
16.2 准备工作 439
16.2.1 恢复模式的切换 439
16.2.2 逻辑备份设备的管理 440
16.3 完整备份——BACKUP DATABASE 442
16.3.1 创建完整数据库备份 442
16.3.2 创建完整文件备份 446
16.4 差异备份 448
16.4.1 创建差异数据库备份 448
16.4.2 创建差异文件备份 449
16.5 事务日志备份 450
16.6 部分备份 452
16.6.1 部分(完整)备份 452
16.6.2 部分差异备份 454
16.7 仅复制备份 454
16.8 查看备份集和媒体集 455
16.8.1 查看备份设备包含的所有备份集 455
16.8.2 查看备份集包含的文件 457
16.8.3 查看备份设备的信息 457
16.9 数据库还原——RESTORE DATABASE 457
16.9.1 还原完整数据库备份 458
16.9.2 还原完整文件备份 462
16.9.3 还原差异数据库备份 463
16.9.4 还原差异文件备份 467
16.9.5 还原事务日志备份 469
16.9.6 数据库页面的还原 471
16.9.7 其他备份的还原 473
16.10 数据库的分离与附加 475
16.10.1 数据库分离 475
16.10.2 数据库附加 476
16.11 本章小结 477
第17章 错误处理 478
17.1 系统错误消息的捕获与处理——TRY...CATCH 478
17.2 查看错误信息 479
17.3 管理用户自定义错误消息 481
17.3.1 创建用户自定义错误消息——sp_addmessage 481
17.3.2 抛出和捕获用户自定义错误消息 483
17.3.3 删除用户自定义错误消息——sp_dropmessage 486
17.4 本章小结 486
第18章 C#+SQL Server的开发技术 487
18.1 一个简单的C#用程序 487
18.1.1 C#其开发环境简介 487
18.1.2 一个简单的C#应用程序 488
18.2 为什么在C#中使用T-SQL 490
18.2.1 通过C#控件操作数据库 490
18.2.2 通过T-SQL代码操作数据库 494
18.2.3 使用T-SQL代码的优势 497
18.2.4 连接池的使用 498
18.3 ADO.NET 502
18.3.1 关于ADO.NET 502
18.3.2 SqlConnection对象 502
18.3.3 Command对象 504
18.3.4 DataReader对象 504
18.3.5 DataSet对象 505
18.4 基于视图的数据查询 506
18.5 基于视图的数据维护与触发器应用 508
18.5.1 插入视图数据 509
18.5.2 更新视图数据 512
18.5.3 删除视图数据 515
18.6 本章小结 517
第19章 ASP/ASP.NET+SQL Server的开发技术 518
19.1 构建ASP开发环境 518
19.1.1 安装IIS 518
19.1.2 配置IIS 519
19.2 数据库连接技术 522
19.2.1 ODBC 522
19.2.2 OLE DB和ADO 523
19.3 在ASP中使用T-SQL操纵数据库 529
19.3.1 查询数据 529
19.3.2 更新数据 532
19.3.3 插入数据 535
19.3.4 删除数据 537
19.4 简单的ASP.NET应用程序 540
19.4.1 ASP与ASP.NET 540
19.4.2 两个ASP.NET应用程序 541
19.5 在ASP.NET中使用T-SQL操纵数据库 550
19.5.1 通过ASP.NET控件操作数据库 550
19.5.2 通过T-SQL代码操作数据库 553
19.6 ASP.NET系统发布 557
19.7 本章小结 559
第20章 VB.NET/VB 6.0+SQL Server的开发技术 560
20.1 一个简单的VB.NET应用程序 560
20.1.1 VB.NET及其开发环境 560
20.1.2 一个Hello World程序 562
20.2 在VB.NET中使用T-SQL操纵数据库 563
20.2.1 基于连接池的数据库连接方法 563
20.2.2 插入、更新和删除操作的实现 566
20.3 实战训练:基于T-SQL的个人相片管理系统 568
20.3.1 数据库设计 568
20.3.2 使用游标开发读取数据的存储过程 569
20.3.3 设计系统主界面 571
20.3.4 相片添加模块的实现(批量数据输入方法) 572
20.3.5 相片检索模块的实现 577
20.3.6 相片更改模块的实现 582
20.3.7 相片删除模块的实现 584
20.3.8 系统运行 586
20.4 VB 6.0访问SQL Server数据库 587
20.4.1 连接数据库 587
20.4.2 VB6.0中使用T-SQL操作数据 590
20.5 本章小结 592
第21章 VC++6.0+SQL Server的开发技术 593
21.1 关于VC++6.0 593
21.1.1 VC++6.0及其开发环境 593
21.1.2 MFC编程 594
21.2 使用ADO连接数据库 594
21.2.1 添加ADO控件和DataGrid控件 594
21.2.2 连接数据库 598
21.3 基于ADO控件开发数据库应用程序 602
21.3.1 查询数据——使用SELECT 602
21.3.2 插入数据——使用INSERT 607
21.3.3 更新数据——使用UPDATE 609
21.3.4 删除数据——使用DELETE 611
21.4 本章小结 614
第22章 C++Builder 6+SQL Server的开发技术 615
22.1 关于C++Builder 6 615
22.2 C++Builder 6中数据库的连接与查询 616
22.2.1 连接数据库 616
22.2.2 嵌套查询的实现 618
22.3 C++Builder 6环境下触发器在数据维护中的应用 620
22.3.1 利用触发器辅助实现数据插入 621
22.3.2 利用触发器辅助实现数据更新和删除 626
22.4 本章小结 637
第23章 JSP+SQL Server的开发技术 638
23.1 一个简单的JSP应用程序 638
23.1.1 安装与配置Tomcat 6.0 638
23.1.2 第一个JSP应用程序 640
23.2 数据库连接技术 641
23.2.1 JDBC-ODBC 641
23.2.2 连接数据库实例 642
23.3 数据查询与分页技术 643
23.4 JSP中基于T-SQL的数据操作方法 645
23.5 T-SQL实战训练:开发图书信息管理系统 646
23.5.1 基于连接池构建JavaBean 646
23.5.2 图书数据添加模块 649
23.5.3 图书数据查询模块 653
23.5.4 图书数据更新模块 655
23.5.5 图书数据删除模块 660
23.5.6 系统集成与发布 662
23.6 本章小结 663
附录A:本书常用的数据表及测试数据 664
附录B:常用命令应用简例 667
参考文献 672