第1篇 安装配置 2
第1章 安装SQL Server 2008 2
1.1 SQL Server 2008的版本和组件 2
1.1.1 SQL Server 2008的服务器版本 2
1.1.2 SQL Server 2008专业版 2
1.1.3 将SQL Server用于Internet服务器 3
1.1.4 将SQL Server用于客户端/服务器应用程序 3
1.1.5 选择SQL Server的组件 3
1.2 SQL Server 2008新增功能 4
1.2.1 SQL Server新功能 4
1.2.2 其他技术 5
1.3 SQL Server 2008的安装要求 5
1.3.1 SQL Server Developer Edition(64位) 5
1.3.2 SQL Server Developer Edition(32位) 7
1.3.3 硬盘空间要求(32位和64位) 8
1.3.4 跨语言支持 8
1.4 安装或升级SQL Server 9
1.4.1 SQL Server 2008的安装步骤 9
1.4.2 升级到SQL Server 2008 13
1.4.3 使用SQL Server实用工具配置SQL Server 14
1.5 安装SQL Server 2008示例和示例数据库 15
1.5.1 系统数据库 15
1.5.2 安装示例数据库 15
1.6 常见面试题 16
1.7 小结 16
1.8 习题 17
第2章 认识SQL Server管理器 18
2.1 使用SQL Server配置管理器管理SQL Server实例 18
2.1.1 启动SQL Server实例 18
2.1.2 停止SQL Server实例 19
2.2 使用SQL Server配置管理器连接其他计算机 19
2.2.1 连接到另一台计算机 19
2.2.2 将连接保存到远程SQL Server配置管理器 20
2.3 SQL Server企业管理器 22
2.3.1 访问SQL Server Management Studio(企业管理器) 22
2.3.2 对象资源管理器 23
2.3.3 模板资源管理器 24
2.3.4 解决方案资源管理器 26
2.3.5 属性窗口 26
2.3.6 代码编辑器 27
2.3.7 SQL编辑器工具栏 28
2.4 常见面试题 30
2.5 小结 30
2.6 习题 30
第2篇 常用操作 32
第3章 数据库的创建、修改与删除 32
3.1 数据库的概念 32
3.1.1 数据库的种类 32
3.1.2 数据库的软件 33
3.1.3 数据库的原理(E-R图) 33
3.1.4 数据库的操作语言SQL 33
3.1.5 数据库的完整性 33
3.2 数据库术语 34
3.2.1 关系模型术语 34
3.2.2 数据库相关术语 34
3.2.3 SQL的组成部分 35
3.3 创建数据库 35
3.3.1 数据库文件大小 36
3.3.2 创建默认数据库 36
3.3.3 创建定制数据库 37
3.4 修改数据库 39
3.4.1 扩展数据库 39
3.4.2 收缩数据库 40
3.4.3 添加和删除数据文件或事务日志文件 41
3.4.4 重命名数据库 43
3.4.5 更改数据库所有者 43
3.5 删除数据库 44
3.5.1 删除数据库的前提条件 44
3.5.2 删除数据库 44
3.6 常见面试题 45
3.7 小结 45
3.8 习题 45
第4章 表操作 46
4.1 数据类型 46
4.1.1 数值型 46
4.1.2 日期和时间类型 48
4.1.3 字符数据类型 50
4.1.4 二进制数据类型 51
4.1.5 其他数据类型 51
4.1.6 数据类型同义词 52
4.2 新建表 53
4.2.1 新建表 53
4.2.2 插入表数据 54
4.2.3 查看表中数据 55
4.2.4 修改表中数据 56
4.2.5 删除表中数据 56
4.3 修改表 56
4.3.1 修改表名 56
4.3.2 插入列 57
4.3.3 重命名列 58
4.3.4 删除列 58
4.3.5 无法保存修改表的错误 59
4.4 修改列 59
4.4.1 指定列的默认值 59
4.4.2 指定计算列 60
4.4.3 修改列的数据类型 61
4.4.4 修改列的长度 61
4.4.5 修改列的精度 62
4.4.6 修改列的小数位数 62
4.4.7 修改列的标识属性 62
4.4.8 修改列的NULL值选项 63
4.5 删除表 64
4.6 常见面试题 65
4.7 小结 65
4.8 习题 65
第5章 使用表设计器 66
5.1 表设计器 66
5.2 管理索引 67
5.2.1 创建索引 67
5.2.2 创建唯一索引 68
5.2.3 创建聚集索引 69
5.2.4 更改索引属性 69
5.2.5 重命名索引 70
5.2.6 删除索引 70
5.3 管理主键 71
5.3.1 创建主键 71
5.3.2 修改主键 72
5.3.3 删除主键 73
5.4 管理复合主键 73
5.4.1 创建复合主键 73
5.4.2 更改复合主键的顺序 74
5.4.3 删除复合主键中的一个或几个键 75
5.4.4 删除复合主键中的所有键 75
5.5 管理关系 75
5.5.1 创建关系 76
5.5.2 显示关系属性 78
5.5.3 更改关系属性 78
5.5.4 删除关系 78
5.6 管理Check约束 79
5.6.1 附加新的CHECK约束 79
5.6.2 修改CHECK约束 81
5.6.3 删除CHECK约束 81
5.7 常见面试题 82
5.8 小结 83
5.9 习题 83
第6章 函数 84
6.1 常见运算符 84
6.1.1 算术运算符 84
6.1.2 位运算符 85
6.1.3 比较运算符 85
6.1.4 逻辑运算符 85
6.1.5 赋值运算符 86
6.1.6 字符串连接运算符 86
6.1.7 运算符的优先级 86
6.2 在表达式中使用运算符 86
6.2.1 使用连接运算符 87
6.2.2 更改列名 87
6.2.3 对重命名列进行操作 89
6.2.4 算术表达式的使用 90
6.3 为何需要函数 91
6.4 常用的聚合函数 92
6.4.1 使用AVG函数求平均值 92
6.4.2 使用MIN函数求最低值 92
6.4.3 使用MAX函数求最大值 93
6.4.4 使用SUM函数求总和 93
6.4.5 使用COUNT函数和COUNT_BIG函数求行总数 94
6.5 常用的日期和时间函数 95
6.5.1 使用DATEDIFF函数获取日期和时间差 95
6.5.2 使用ISDATE函数判断表达式是否为有效的日期或时间值 96
6.6 常用的系统函数 96
6.6.1 使用CAST和CONVERT函数转换数据类型 96
6.6.2 使用IDENTITY函数生成一个自增列 97
6.6.3 使用ISNULL函数检查表达式是否为NULL 98
6.6.4 使用ISNUMERIC函数判断表达式是否有效的numeric类型 99
6.7 常用的字符串函数 99
6.7.1 字符串处理函数介绍 99
6.7.2 字符转换函数 100
6.7.3 去字符串空格函数 101
6.7.4 取字符串长度的函数 102
6.7.5 查询包含部分字符串内容的数据 103
6.7.6 颠倒字符串的顺序 104
6.7.7 字符串替换 104
6.8 创建用户自定义函数 105
6.8.1 创建自定义函数语法 105
6.8.2 语法参数说明 105
6.8.3 创建示例 106
6.9 常见面试题 107
6.10 小结 107
6.11 习题 107
第7章 视图 108
7.1 创建视图 108
7.1.1 视图的有关概念 108
7.1.2 视图的作用 109
7.2 视化创建视图 109
7.2.1 从单表中产生视图 109
7.2.2 从多表中产生视图 111
7.2.3 从视图中产生视图 113
7.3 视图设计器 114
7.3.1 “关系图”窗格 115
7.3.2 “条件”窗格 115
7.3.3 “SQL”窗格 116
7.3.4 “结果”窗格 117
7.4 修改及删除视图 118
7.4.1 修改视图 118
7.4.2 重命名视图 118
7.4.3 删除视图 119
7.5 常见面试题 119
7.6 小结 120
7.7 习题 120
第8章 存储过程 121
8.1 了解存储过程 121
8.1.1 存储过程的作用 121
8.1.2 存储过程的种类 122
8.2 创建存储过程 122
8.2.1 命名存储过程 122
8.2.2 用SQL Server Management Studio创建存储过程 123
8.3 执行存储过程 125
8.3.1 执行系统存储过程 125
8.3.2 执行用户定义存储过程 125
8.3.3 指定存储过程的参数 126
8.4 修改和删除存储过程 127
8.4.1 修改存储过程 127
8.4.2 删除存储过程 127
8.5 存储过程中的程序控制语句 129
8.5.1 控制语句概述 129
8.5.2 IF...ELSE条件选择语句 129
8.5.3 BEGIN...END语句块 130
8.5.4 CASE语句 130
8.5.5 WHILE循环语句 132
8.5.6 WAITFOR等待语句 133
8.6 存储过程必须注意的问题 134
8.6.1 从存储过程返回给定参数的值 134
8.6.2 处理执行存储过程时的错误 134
8.6.3 存储过程的语句要求 135
8.6.4 执行存储过程无反应 135
8.7 常见面试题 135
8.8 小结 136
8.9 习题 136
第9章 触发器 137
9.1 什么是触发器 137
9.1.1 触发器的作用 137
9.1.2 触发器的种类 137
9.1.3 触发器的工作原理 138
9.2 使用SQL Server Management Studio管理器创建触发器 138
9.3 管理触发器 140
9.3.1 修改触发器 140
9.3.2 禁用和启用触发器 140
9.3.3 删除触发器 141
9.4 使用触发器的常见问题 141
9.4.1 create trigger必须是查询批次中的第一个语句 142
9.4.2 返回错误信息的语句 142
9.4.3 触发器和约束的区别 142
9.4.4 触发器对数据库系统的影响 142
9.5 使用系统存储过程查看触发器 143
9.5.1 使用系统存储过程sp_help查询触发器 143
9.5.2 使用系统存储过程sp_helptext查看触发器的定义文本 143
9.5.3 使用系统存储过程sp_depends查看触发器的引用表 143
9.6 常见面试题 144
9.7 小结 144
9.8 习题 144
第10章 E-R图及关系图 145
10.1 E-R图 145
10.1.1 实体(E)和关系(R)的概念 145
10.1.2 设计E-R图 146
10.1.3 E-R图的设计原则 147
10.2 数据库关系图设计器 148
10.3 数据库关系图 149
10.3.1 创建数据库关系图 149
10.3.2 保存数据库关系图 151
10.3.3 打开数据库关系图 151
10.3.4 重命名数据库关系图 151
10.3.5 删除数据库关系图 151
10.4 常见面试题 152
10.5 小结 152
10.6 习题 152
第3篇 Transact-SQL常用语法与实例 154
第11章 TransactSQL语句 154
11.1 Transact-SQL语法讲解 154
11.2 创建数据库对象 155
11.2.1 创建数据库 155
11.2.2 创建表 156
11.2.3 插入和更新表中的数据 157
11.2.4 读取表中的数据 158
11.3 配置数据库对象的权限 160
11.3.1 创建登录名 160
11.3.2 授予访问数据库的权限 161
11.3.3 创建视图和存储过程 162
11.3.4 授予访问数据库对象的权限 163
11.4 删除数据库对象 163
11.5 常见面试题 164
11.6 小结 165
11.7 习题 165
第12章 对象SQL语句操作——DDL 166
12.1 数据库 166
12.1.1 数据库创建语句——CREATE DATABASE 166
12.1.2 数据库修改语句——ALFER DATABASE 169
12.1.3 数据库删除语句——DROP DATABASE 170
12.2 表 170
12.2.1 表创建语句——CREATE TABLE 170
12.2.2 表修改语句——ALTER TABLE 172
12.2.3 表删除语句——DROP TABLE 173
12.3 索引 174
12.3.1 索引创建语句——CREATE INDEX 174
12.3.2 索引修改语句——ALTER INDEX 175
12.3.3 索引删除语句——DROP INDEX 176
12.4 视图 177
12.4.1 创建视图语句——CREATE VIEW 177
12.4.2 视图修改语句——ALTER VIEW 178
12.4.3 视图删除语句——DROP VIEW 178
12.5 存储过程 179
12.5.1 存储过程创建语句——CREATE PROCEDURE 179
12.5.2 存储过程修改语句——ALTER PROCEDURE 180
12.5.3 存储过程删除语句——DROP PROCEDURE 182
12.6 触发器 182
12.6.1 创建触发器语句——CREATE TRIGGER 182
12.6.2 触发器修改语句——ALTER TRIGGER 185
12.6.3 触发器删除语句——DROP TRIGGER 186
12.7 常见面试题 187
12.8 小结 187
12.9 习题 187
第13章 数据操作语言——DML 188
13.1 数据操作 188
13.1.1 插入数据——INSERT 188
13.1.2 修改数据——UPDATE 190
13.1.3 删除数据——DELETE 192
13.2 查询语句——SELECT 193
13.3 简单查询(单一查询) 194
13.3.1 使用SELECT子句 194
13.3.2 使用FROM子句 196
13.3.3 使用WHERE子句 198
13.3.4 使用ORDER BY子句 200
13.3.5 使用GROUP BY子句 200
13.3.6 使用HAVING子句 202
13.3.7 使用INTO子句 203
13.3.8 使用COMPUTE子句 203
13.4 LIKE模式匹配 205
13.4.1 使用LIKE的模式匹配 205
13.4.2 使用%通配符示例 205
13.5 联接查询 206
13.5.1 内联和等值联接 206
13.5.2 左外联接和右外联接 206
13.5.3 完全联接 208
13.5.4 交叉联接 208
13.6 组合查询(UNION) 209
13.7 常见面试题 210
13.8 小结 211
13.9 习题 211
第14章 控制SQL语句操作——DCL 212
14.1 GRANT语句——管理权限 212
14.1.1 授予权限——GRANT 212
14.1.2 GRANT数据库权限 213
14.1.3 GRANT表级对象权限 214
14.1.4 GRANT数据库主体权限 214
14.2 DENY语句——不允许具备某权限 215
14.2.1 拒绝权限——DENY 215
14.2.2 DENY数据库权限 216
14.2.3 DENY表级对象权限 217
14.2.4 DENY数据库主体权限 218
14.3 REVOKE语句——剥夺权限 218
14.3.1 收回权限——REVOKE 218
14.3.2 REVOKE数据库权限 219
14.3.3 REVOKE表级对象权限 220
14.3.4 REVOKE数据库主体权限 221
14.4 常见面试题 222
14.5 小结 222
14.6 习题 222
第4篇 实用管理 224
第15章 导入与导出数据 224
15.1 了解导入和导出向导工具 224
15.2 使用SQL Server导入和导出向导 224
15.2.1 选择数据源 224
15.2.2 选择平面文件源 228
15.2.3 选择目标 231
15.2.4 创建数据库 233
15.2.5 指定表复制或查询 233
15.2.6 使用列映射 235
15.2.7 保存并执行包 236
15.2.8 使用“完成该向导”页 238
15.3 常见面试题 239
15.4 小结 239
15.5 习题 239
第16章 脱机与联机数据库 240
16.1 可视化命令脱机与联机数据库 240
16.1.1 数据库状态 240
16.1.2 使用脱机命令 241
16.1.3 使用联机命令 241
16.2 分离与附加数据库 242
16.2.1 分离数据库的注意事项 242
16.2.2 如何分离数据库 242
16.2.4 如何附加数据库 243
16.3 通过Transact-SQL语句分离与附加数据库 245
16.3.1 使用sp_detach_db语句分离数据库 245
16.3.2 使用创建数据库的FOR ATTACH附加数据库 246
16.4 常见面试题 247
16.5 小结 247
16.6 习题 247
第17章 备份和还原数据库 248
17.1 数据备份 248
17.2 数据恢复 248
17.2.1 数据的恢复模式 248
17.2.2 更改数据库的恢复模式 249
17.3 数据库备份 250
17.3.1 使用SQL Server Management Studio完整备份数据库 250
17.3.2 使用Transact-SQL完整备份数据库 252
17.3.3 差异数据库备份 253
17.4 文件备份 253
17.4.1 使用SQL Server Management Studio备份数据库文件和文件组 254
17.4.2 使用Transact-SQL备份文件和文件组 255
17.5 数据库还原 255
17.5.1 完整恢复模式 255
17.5.2 简单恢复模式 257
17.6 文件还原 258
17.6.1 使用SQL Server Management Studio还原文件或文件组 258
17.6.2 使用Transact-SQL还原文件或文件组 258
17.7 常见面试题 259
17.7 小结 260
17.8 习题 260
第18章 SQL Server报表服务 261
18.1 SQL Server 2008 Reporting Services 261
18.1.1 什么是报表服务(Reporting Services) 261
18.1.2 SQL Server Reporting Services的功能 261
18.2 启动报表服务 262
18.3 使用向导设计报表 263
18.3.1 创建报表 263
18.3.2 添加报表数据源 264
18.3.3 使用向导可视化报表 265
18.4 其他创建报表的方式 266
18.4.1 使用SQL Server数据源手动创建报表 266
18.4.2 使用Access数据创建报表 268
18.5 运行报表 269
18.5.1 通过Web方式查看报表 269
18.5.2 打印和导出报表 270
18.6 常见面试题 271
18.7 小结 272
18.8 习题 272
第5篇 操作进阶 274
第19章 事务管理 274
19.1 事务的基本概念 274
19.1.1 什么是事务 274
19.1.2 事务运行模式 274
19.1.3 事务模式的区别 275
19.2 管理事务 276
19.2.1 启动事务 276
19.2.2 结束事务 276
19.2.3 事务的错误处理 276
19.2.4 事务中的SQL语句 276
19.3 事务应用示例 277
19.3.1 开始事务——BEGIN TRANSACTION 277
19.3.2 标记事务——WITH MARK 278
19.3.3 提交事务——COMMIT TRANSACTION 278
19.3.4 回滚事务——ROLLBACK TRANSACTION 279
19.4 常见面试题 280
19.5 小结 281
19.6 习题 281
第20章 SQL Server代理服务 282
20.1 SQL Server代理说明及设置 282
20.1.1 什么是SQL Server代理 282
20.1.2 启动和停止SQL Server代理 283
20.2 作业 284
20.2.1 创建作业任务 284
20.2.2 创建作业步骤 285
20.2.3 创建作业时间计划 286
20.2.4 管理作业 287
20.3 操作员 289
20.3.1 配置数据库邮件 289
20.3.2 新建操作员 290
20.4 警报 291
20.4.1 创建警报 292
20.4.2 作业中设置警报 293
20.5 使用SQL Server代理常见问题 294
20.5.1 没有对SQL Server代理进行设置造成错误 294
20.5.2 新用户看不到SQL Server代理 294
20.5.3 SQL Server代理的设置问题 295
20.6 常见面试题 295
20.7 小结 296
20.8 习题 296
第21章 索引进阶 297
21.1 了解索引 297
21.1.1 什么是索引 297
21.1.2 索引的类型 297
21.2 设计索引 298
21.2.1 索引设计任务 298
21.2.2 设计通用索引 299
21.2.3 设计聚集索引 300
21.2.4 设计非聚集索引 301
21.2.5 设计唯一索引 302
21.2.6 设计筛选索引 302
21.2.7 选择索引方式 303
21.2.8 筛选索引进行查询的注意事项 308
21.3 实现索引 310
21.3.1 通用索引 310
21.3.2 聚集索引 312
21.3.3 非聚集索引 313
21.3.4 唯一索引 314
21.4 优化索引 315
21.4.1 重新创建和生成索引 315
21.4.2 联机执行索引操作 317
21.4.3 配置并行索引操作 318
21.5 重新创建和生成索引的操作 318
21.5.1 使用SQL Server Management Studio重新生成索引 319
21.5.2 使用SQL Server Management Studio重新组织索引 319
21.5.3 使用SQL Server Management Studio查看碎片信息 320
21.5.4 使用命令查看索引碎片 321
21.6 常见面试题 322
21.7 小结 323
21.8 习题 323
第22章 安全性-安全保护及用户权限 324
22.1 架构 324
22.1.1 数据库用户与架构的分离 325
22.1.2 新目录视图 325
22.1.3 默认架构 325
22.2 主体 325
22.2.1 典型的主体 326
22.2.2 选择身份验证模式 326
22.3 SQL Server登录用户的管理 328
22.3.1 添加用户 328
22.3.2 使用用户登录 329
22.3.3 为用户设置权限 330
22.4 角色 331
22.4.1 服务器级别角色 331
22.4.2 数据库级别的角色 332
22.5 权限 334
22.5.1 了解权限 334
22.5.2 权限层次结构 335
22.5.3 将用户设为服务器角色成员 336
22.5.4 将用户设为数据库角色成员 336
22.6 SQL注入的安全防范 337
22.6.1 什么是SQL注入 337
22.6.2 验证所有用户输入 338
22.6.3 检查代码中的SQL注入 340
22.7 常见面试题 343
22.8 小结 344
22.9 习题 344
第6篇 SQL Server应用开发 346
第23章 使用VC开发数据库项目 346
23.1 创建数据库 346
23.2 使用ODBC开发数据库应用 347
23.2.1 创建ODBC数据源 347
23.2.2 连接数据源 349
23.2.3 使用CRecordSet类创建数据库对象 350
23.2.4 添加、修改和删除数据 354
23.2.5 撤销操作 355
23.2.6 查询记录 356
23.2.7 读取数据 356
23.3 使用ADO开发数据库应用 358
23.3.1 ADO内置对象简介 359
23.3.2 使用ADO注意事项 359
23.3.3 连接数据库 359
23.3.4 记录集一填充和读取数据 360
23.3.5 记录集 362
23.3.6 数据库操作命令 363
23.4 小结 365
第24章 使用ASP.NET(C#)开发 数据库项目 366
24.1 认识ADO.NET 366
24.1.1 数据访问技术 366
24.1.2 System.Data命名空间 367
24.2 连接SQL Server数据库 368
24.2.1 认识SqlConnection数据连接管理类 368
24.2.2 设置连接参数 368
24.2.3 创建SQL Server连接 369
24.2.4 断开SQL Server连接 370
24.2.5 管理其他数据源连接 370
24.3 与数据库直接交互 370
24.3.1 使用SqlCommand提交增、删、改操作 370
24.3.2 使用ExecuteNoQuery来修改一行数据 371
24.3.3 使用SqlCommand获取查询结果 372
24.3.4 使用DataAdapter提交查询结果 372
24.4 管理缓存数据集 374
24.4.1 认识DataSet 374
24.4.2 使用DataTable缓存数据表 374
24.4.3 使用DataSet管理数据 378
24.4.4 使用DataReader获取只读数据 380
24.4.5 比较DataSet和DataReader 382
24.5 小结 382
第25章 使用ASP开发数据库项目 383
25.1 创建DSN文件并连接数据库 383
25.1.1 创建DSN文件 383
25.1.2 数据库的连接 385
25.2 ASP操作数据的对象 386
25.2.1 用Connection对象执行查询 386
25.2.2 使用Recordset对象处理结果 387
25.2.3 用Command对象改善查询 388
25.2.4 结合HTML表单和数据库访问 389
25.3 管理数据库连接 390
25.3.1 使连接超时 390
25.3.2 共享连接 391
25.3.3 使用跨页连接 391
25.3.4 关闭连接 392
25.4 小结 392
附录A AdventureWorks示例数据库 393
A.1 SQL Server示例概述 393
A.2 AdventureWorks示例数据库 394
A.3 Adventure Works Cycles业务方案 394
A.3.1 销售和营销方案 395
A.3.2 产品方案 398
A.3.3 采购方案和供应商方案 401
A.3.4 销售和营销方案 403
A.4 Northwind和pubs示例数据库 405
附录B SQL Server操作技巧 406
B.1 用T-SQL将金额转换为大写 406
B.2 SOL Server和Oracle常用函数对比 407
B.3 生成随机的6位验证码 410
B.4 实现全角与半角字符转换的处理 411
B.5 返回某日期为第几周 413
B.6 验证身份证地址 417
B.7 返回日期所在的星座 418
B.8 取汉字的拼音首字母 419
B.9 T-SQL的正则表达式 420
B.10 整数转成二进制的函数 423
B.11 创建对象脚本的函数 424
B.12 分页存储过程 425
附录C SQL Server常见SET语句、命令、函数及变量 428