第1章 T-SQL和数据管理系统简介 1
1.1 T-SQL语言 1
1.1.1 T-SQL:是编程语言还是查询语言 2
1.1.2 SQL Server 2008中的新特性 3
1.1.3 数据库管理系统(DBMS) 4
1.2 作为关系数据库管理系统的SQL Server 5
1.2.1 表 5
1.2.2 关系 12
1.2.3 RDBMS与数据完整性 14
1.3 SQL Server与其他产品 17
1.3.1 Microsoft SQL Server 17
1.3.2 Oracle 18
1.3.3 IBM DB2 18
1.3.4 Informix 18
1.3.5 Sybase SQL Anywhere 18
1.3.6 Microsoft Access(Jet) 19
1.3.7 MySQL 19
1.4 小结 19
第2章 SQL Server基础 21
2.1 谁使用SQL Server 21
2.2 SQL Server版本和功能 23
2.2.1 SQL Server压缩版 23
2.2.2 SQL Server Express版 23
2.2.3 SQL Server工作组版 24
2.2.4 SQL Server标准版 24
2.2.5 SQL Server企业版 24
2.2.6 关系数据库引擎 24
2.3 语义 25
2.3.1 变化的术语 25
2.3.2 关系 27
2.3.3 主键 28
2.3.4 外键 29
2.4 规范化规则 30
2.5 应用规范化规则 33
2.5.1 想一想 35
2.5.2 多重关联 37
2.5.3 多值列 38
2.5.4 规范化还是去规范化 39
2.5.5 质疑权威 40
2.6 查询处理的机制 40
2.7 AdventureWorks数据库 42
2.8 小结 42
第3章 SQL Server工具 45
3.1 常见的SQL Server任务 45
3.2 SQL Server Management Studio 47
3.2.1 工具窗口 50
3.2.2 工具栏 58
3.2.3 SQL Server Management Studio配置 64
3.3 SQL Server Business Intelligence Development Studio 66
3.4 SQL Server Profiler 67
3.5 Database Tuning Advisor 67
3.6 SQL Server Configuration Manager 68
3.7 命令行工具 68
3.8 编写查询 70
3.8.1 脚本选项 72
3.8.2 使用图形化的查询设计器 73
3.8.3 使用模板 77
3.8.4 使用调试功能 79
3.9 小结 84
3.10 习题 85
第4章 T-SQL语言 87
4.1 SQL的本质 88
4.2 从哪儿开始 89
4.3 数据操纵语言(DML) 89
4.3.1 查询是有层次的 89
4.3.2 基于集合的操作 90
4.3.3 基于行的操作 90
4.3.4 查询语法基础 90
4.3.5 命名规范 94
4.3.6 对象的界定 96
4.3.7 注释脚本 97
4.3.8 使用模板 100
4.3.9 生成脚本 100
4.3.10 管理脚本 100
4.3.11 版本控制 101
4.4 数据定义语言 101
4.4.1 创建表 102
4.4.2 创建视图 102
4.4.3 创建存储过程 103
4.4.4 创建触发器 103
4.4.5 创建用户自定义函数 104
4.4.6 脚本编写实践 105
4.5 数据控制语言 109
4.6 小结 111
4.7 习题 111
第5章 数据检索 113
5.1 存储与检索 113
5.2 SELECT语句 113
5.2.1 列的选择 115
5.2.2 列的别名 120
5.2.3 被计算和继承的列 121
5.2.4 行的过滤 123
5.2.5 WHERE子句 123
5.2.6 使用括号 136
5.2.7 结果排序 138
5.2.8 排在前面的值 140
5.3 小结 142
5.4 习题 142
第6章 SQL函数 145
6.1 函数的组成 146
6.1.1 一个论点 146
6.1.2 确定性函数 147
6.1.3 在函数中使用用户变量 147
6.1.4 在查询中使用函数 148
6.1.5 嵌套函数 149
6.2 聚合函数 149
6.2.1 AVG()函数 150
6.2.2 COUNT()函数 151
6.2.3 MIN()与MAX()函数 151
6.2.4 SUM()函数 152
6.3 配置变量 152
6.3.1 @@ERROR变量 152
6.3.2 @@SERVICENAME变量 154
6.3.3 @@TOTALE_RRORS变量 154
6.3.4 @@TOTAL_READ变量 154
6.3.5 @@VERSION变量 154
6.3.6 错误函数 155
6.4 转换函数 156
6.4.1 CAST()函数 157
6.4.2 CONVERT()函数 159
6.4.3 STR()函数 161
6.5 游标函数与变量 162
6.5.1 CURSOR_STATUS()函数 162
6.5.2 @@CURSOR_ROWS全局变量 162
6.5.3 @@FETCH_STATUS全局变量 163
6.6 日期函数 163
6.6.1 DATEADD()函数 163
6.6.2 DATEDIFF()函数 164
6.6.3 DATEPART()与DATENAME()函数 167
6.6.4 GETDATE()与GETUTCDATE()函数 167
6.6.5 SYSDATETIME()和SYSUTCDATETIME()函数 168
6.6.6 DAY()、MONTH()和YEAR()函数 168
6.7 字符串操纵函数 168
6.7.1 ASCII()、CHAR()、UNICODE()和NCHAR()函数 169
6.7.2 CHARINDEX()和PATINDEX()函数 171
6.7.3 LEN()函数 172
6.7.4 LEFT()与RIGHT()函数 172
6.7.5 SUBSTRING()函数 173
6.7.6 LOWER()与UPPER()函数 175
6.7.7 LTRIM()与RTRIM()函数 177
6.7.8 REPLACE()函数 177
6.7.9 REPLICATE()与SPACE()函数 178
6.7.10 REVERSE()函数 178
6.7.11 STUFF()函数 179
6.7.12 QUOTENAME()函数 179
6.8 数学函数 179
6.9 元数据函数 180
6.10 排列函数 183
6.10.1 ROW_NUMBER()函数 183
6.10.2 RANK()与DENSE RANK()函数 183
6.11.3 NTILE(n)函数 184
6.11 安全函数 185
6.12 系统函数与系统变量 186
6.12.1 COALESCE()函数 188
6.12.2 DATALENGTH()函数 188
6.13 系统统计变量 189
6.14 小结 190
6.15 习题 190
第7章 聚合与分组 193
7.1 分组还是不分组 193
7.2 使用聚合函数 194
7.2.1 COUNT()函数 195
7.2.2 SUM()函数 195
7.2.3 AVG()函数 196
7.3 理解统计函数 197
7.3.1 STDEV()函数 197
7.3.2 STDEVP()函数 198
7.3.3 VAR()函数 198
7.3.4 VARP()函数 199
7.3.5 用户自定义的聚合函数 199
7.4 数据分组 199
7.4.1 GROUP BY子句 200
7.4.2 HAVING子句 204
7.4.3 总计与小计 207
7.4.4 子分组 208
7.4.5 ROLLUP子句 209
7.4.6 CUBE子句 210
7.4.7 GROUPING()函数 210
7.4.8 COMPUTE与COMPUTE BY子句 212
7.5 小结 215
7.6 习题 215
第8章 多表查询 217
8.1 理解子查询与连接 219
8.1.1 在WHERE子句中连接表 219
8.1.2 在FROM子句中连接表 220
8.1.3 连接的类型 221
8.1.4 内连接 221
8.1.5 外连接 221
8.1.6 多列连接 225
8.1.7 非同等连接 226
8.1.8 特殊目的的连接运算 227
8.1.9 合并查询 234
8.2 小结 239
8.3 习题 239
第9章 高级查询与脚本 241
9.1 子查询 241
9.1.1 标量表达式 242
9.1.2 交换连接运算 244
9.1.3 互相关联的子查询 250
9.1.4 子查询业务案例 253
9.2 Common Table Expressions(CTE) 256
9.3 游标 258
9.3.1 行集(rowset)与游标操作 258
9.3.2 创建与遍历游标 259
9.4 小结 261
9.5 习题 262
第10章 数据事务 265
10.1 事务简介 265
10.1.1 事务类型 266
10.1.2 ACID测试 267
10.1.3 事务日志 267
10.1.4 记入日志的操作 268
10.2 对数据执行CRUD 268
10.2.1 添加记录 268
10.2.2 修改记录 277
10.2.3 删除记录 282
10.2.4 用MERGE命令自动完成插入、更新和删除操作 288
10.3 显式事务 290
10.4 小结 293
10.5 习题 293
第11章 高级功能 295
11.1 数据的透视 295
11.1.1 PIVOT操作符 297
11.1.2 UNPIVOT操作符 300
11.2 全文索引和近似匹配 302
11.3 Microsoft搜索服务 303
11.3.1 音索匹配 303
11.3.2 DIFFERENCE()函数 305
11.4 管理并填写目录 305
11.5 小结 317
11.6 习题 318
第12章 T-SQL编程对象 319
12.1 视图 320
12.1.1 虚表 320
12.1.2 创建视图 320
12.1.3 保护数据 331
12.1.4 隐藏复杂性 331
12.2 存储过程 334
12.2.1 用存储过程实现带参数的视图 334
12.2.2 使用参数 335
12.2.3 返回值 336
12.2.4 记录的维护 338
12.2.5 处理和引发错误 342
12.2.6 错误消息 343
12.2.7 处理业务逻辑 352
12.2.8 循环 357
12.3 用户自定义函数 359
12.3.1 标量函数 359
12.3.2 内嵌表值函数 362
12.3.3 多语句表值函数 362
12.4 事务管理 364
12.5 小结 366
12.6 习题 367
第13章 创建和管理数据库对象 369
13.1 数据定义语言 369
13.1.1 创建对象 370
13.1.2 修改对象 370
13.1.3 删除对象 370
13.1.4 对象的命名 370
13.1.5 创建DDL脚本 372
13.1.6 创建表 373
13.1.7 唯一标识符 380
13.1.8 约束 381
13.1.9 创建视图 387
13.1.10 带索引的视图 390
13.1.11 创建存储过程 391
13.1.12 CREATE FUNCTION 395
13.2 IF EXISTS 395
13.3 数据库对象的安全 396
13.3.1 管理安全性对象 397
13.3.2 数据控制语言 398
13.4 小结 398
13.5 习题 399
第14章 分析和优化查询性能 401
14.1 数据检索 401
14.2 分析查询 403
14.2.1 会话选项 404
14.2.3 图形化执行计划 415
14.3 编写高效的T-SQL(最佳实践方式) 423
14.4 小结 427
14.5 习题 428
第15章 T-SQL在应用程序与报表中的应用 429
15.1 应用程序编程模型 429
15.2 选择模型 430
15.2.1 桌面数据库应用程序 432
15.2.2 客户/服务器数据库解决方案 433
15.2.3 n层组件解决方案 436
15.2.4 Web服务器应用程序 441
15.2.5 多层Web服务解决方案 442
15.2.6 多系统集成解决方案 442
15.3 SQL Server 2008报表服务 444
15.3.1 报表服务的体系结构 444
15.3.2 SQL Server 2008报表设计器 445
15.3.3 部署报表 464
15.3.4 用报表管理器查看报表 465
15.3.5 报表数据缓存 465
15.2.6 商业智能和业务报表 466
15.3.7 报表应用程序的集成 467
15.4 小结 470
附录A 命令语法参考 473
附录B 系统变量与函数参考 493
附录C 系统存储过程参考 509
附录D 信息模式视图参考 525
附录E FileStream对象和语法 537
附录F 习题答案 541