第1章 SQL Server 2008简介 1
1.1 初识数据库 1
1.1.1 数据库概述 1
1.1.2 数据库模型 1
1.2 关系数据库 3
1.2.1 关系数据库概述 3
1.2.2 关系数据库术语 3
1.2.3 完整性规则 5
1.3 范式理论和E-R模型 5
1.3.1 范式理论 6
1.3.2 E-R模型 7
1.4 SQL Server 2008入门 8
1.4.1 SQL Server发展史 9
1.4.2 SQL Server 2008概述 10
1.4.3 SQL Server 2008的新特性 11
1.5 安装和配置SQL Server 2008 12
1.5.1 安装SQL Server 2008 12
1.5.2 配置SQL Server 2008 15
1.6 SQL Server 2008管理工具 17
1.6.1 使用SQL Server Management Studio 17
1.6.2 SQL Server配置管理器 19
1.6.3 命令提示实用工具 21
1.7 项目案例:为学生成绩管理系统设计关系模型 22
1.8 习题 26
1.9 实践疑难解答 26
1.9.1 SQL Server 2008安装错误 26
1.9.2 SQL Server 2008的sa登录和windows登录的区别 27
第2章 SQL Server 2008快速入门 28
2.1 数据库的组成 28
2.1.1 数据库文件 28
2.1.2 数据库对象 29
2.1.3 系统数据库 31
2.1.4 数据库状态和文件状态 32
2.2 SQL Server的标识符 34
2.3创建数据库 34
2.3.1 使用管理器创建 34
2.3.2 使用CREATE DATABASE语句创建 37
2.4 创建表 39
2.4.1 使用管理器创建 40
2.4.2 使用CREATE TABLE语句创建 41
2.5 列数据类型 41
2.5.1 数字数据类型 42
2.5.2 字符串 43
2.5.3 Unicode字符串 44
2.5.4 日期和时间 44
2.5.5 二进制数据类型 45
2.5.6 特殊数据类型 45
2.5.7 自定义数据类型 46
2.6 项目案例:使用文件组创建学生成绩管理系统 47
2.7 习题 49
2.8 实践疑难解答 51
2.8.1 关于使用语句创建数据库的疑问 51
2.8.2 使用CREATE TABLE语句创建表的问题 52
第3章 管理数据库 53
3.1 查看数据库状态 53
3.1.1 通过系统函数 53
3.1.2 通过系统存储过程 54
3.1.3 通过目录视图 55
3.2 修改数据库 55
3.2.1 修改数据库名称 55
3.2.2 扩大数据库 56
3.2.3 收缩数据库 58
3.2.4 收缩数据库文件 59
3.2.5 移动数据库文件 61
3.3 删除数据库 62
3.3.1 使用图形界面 62
3.3.2 使用DROP DATABASE语句 63
3.4 分离与附加数据库 63
3.4.1 分离数据库 63
3.4.2 附加数据库 65
3.5 数据库快照 66
3.5.1 工作原理 66
3.5.2 创建数据库快照 66
3.5.3 使用数据库快照恢复数据库 67
3.5.4 删除数据库快照 68
3.6 导入/导出数据 68
3.7 备份和恢复数据库 71
3.7.1 了解备份类型 71
3.7.2 了解恢复模式 72
3.7.3 了解备份设备 74
3.7.4 备份数据库 76
3.7.5 恢复数据库 80
3.8 生成SQL脚本 82
3.8.1 将数据表生成SQL脚本 82
3.8.2 将数据库生成SQL脚本 83
3.9 项目案例:设计数据库备份策略 85
3.10 习题 89
3.11 实践疑难解答 92
3.11.1 关于修改数据库大小的问题 92
3.11.2 无法打开备份设备的问题 93
3.11.3 差异备份还原的问题 94
第4章 管理数据表 95
4.1 表概述 95
4.1.1 什么是表 95
4.1.2 系统表和临时表 96
4.2 操作表 97
4.2.1 修改表名称 97
4.2.2 修改表属性 97
4.2.3 列的管理 98
4.2.4 删除表 99
4.3 关系图 99
4.3.1 关系图的创建 100
4.3.2 关系图的使用 101
4.4 使用视图 102
4.4.1 使用图形界面创建视图 102
4.4.2 使用CREATE VIEW语句创建视图 103
4.4.3 操作视图 104
4.5 索引 105
4.5.1 索引类型 105
4.5.2 索引的优缺点 105
4.5.3 索引的使用条件 106
4.5.4 创建表索引 106
4.5.5 创建视图索引 108
4.5.6 操作索引 109
4.6 项目案例:设计用户注册用表 110
4.7 习题 114
4.8 实践疑难解答 115
4.8.1 数据表的数据类型修改 115
4.8.2 关系图的使用权限 116
第5章 维护数据完整性 117
5.1 数据完整性概述 117
5.2 表约束 117
5.2.1 主键约束 118
5.2.2 外键约束 120
5.2.3 标识列 121
5.2.4 唯一性约束 122
5.2.5 非空约束 124
5.2.6 数据验证约束 125
5.2.7 默认值约束 127
5.3 规则 129
5.3.1 规则的特点 129
5.3.2 创建规则 130
5.3.3 绑定规则 130
5.3.4 查看规则 131
5.3.5 删除规则 133
5.4 默认值 133
5.4.1 创建默认值 133
5.4.2 绑定默认值 134
5.4.3 查看默认值 134
5.4.4 删除默认值 135
5.5 项目案例:管理网购注册用表 136
5.6 习题 138
5.7 实践疑难解答 139
5.7.1 默认值绑定 139
5.7.2 约束产生的索引 140
第6章 查询和管理表数据 141
6.1 基本SELECT查询 141
6.1.1 SELECT语法格式 141
6.1.2 获取所有的列 142
6.1.3 获取指定列 143
6.1.4 获取不重复数据 144
6.1.5 获取前几条数据 145
6.2 限定查询条件 145
6.2.1 使用比较运算符 146
6.2.2 使用逻辑运算符 146
6.2.3 使用范围运算符 148
6.2.4 使用IN条件 149
6.2.5 使用LIKE条件 149
6.2.6 使用IS NULL条件 151
6.3 格式化结果集 151
6.3.1 排序结果集 152
6.3.2 分组结果集 153
6.3.3 统计结果集 155
6.4 插入数据 156
6.4.1 使用INSERT语句插入数据 156
6.4.2 使用INSERT…SELECT语句插入数据 157
6.4.3 使用SELECT…INTO语句创建表 158
6.5 更新数据 159
6.5.1 修改表数据 159
6.5.2 根据其他表更新数据 160
6.5.3 使用TOP表达式修改数据 161
6.6 删除数据 161
6.6.1 使用DELETE语句删除数据 161
6.6.2 使用TRUNCATE TABLE语句删除数据 162
6.6.3 删除基于其他表中的数据行 163
6.7 项目案例:管理用户表 163
6.8 习题 168
6.9 实践疑难解答 170
6.9.1 使用TOP与ORDER BY结合修改数据 170
6.9.2 判断非数值类型的数据表达式大小 170
6.9.3 在修改和删除数据时的TOP问题 171
第7章 查询复杂数据 172
7.1 多表连接 172
7.1.1 基本连接操作 172
7.1.2 使用别名 174
7.1.3 多表连接查询 175
7.1.4 含有JOIN关键字的连接查询 176
7.2 内连接 177
7.2.1 等值连接查询 178
7.2.2 非等值连接查询 179
7.2.3 自然连接查询 179
7.3 外连接 180
7.3.1 左外连接查询 181
7.3.2 右外连接查询 182
7.3.3 全外连接查询 182
7.4 自连接 183
7.5 交叉连接 184
7.5.1 不使用WHERE子句的交叉连接查询 184
7.5.2 使用WHERE子句的交叉连接查询 185
7.6 联合查询 186
7.7 子查询 187
7.7.1 使用IN关键字 187
7.7.2 使用EXISTS关键字 188
7.7.3 使用比较运算符 189
7.7.4 返回单值的子查询 191
7.7.5 使用嵌套子查询 192
7.8 项目案例:学生选课系统 193
7.9 习题 197
7.10 实践疑难解答 198
7.10.1 查询多表中的不匹配行 198
7.10.2 EXISTS的使用 199
第8章 Transact-SQL语言基础 201
8.1 Transact-SQL语言概述 201
8.1.1 Transact-SQL简介 201
8.1.2 Transact-SQL分类 202
8.2 常量与变量 203
8.2.1 常量 203
8.2.2 局部变量 203
8.2.3 全局变量 205
8.3 运算符 206
8.3.1 赋值运算符 206
8.3.2 算术运算符 207
8.3.3 字符串连接运算符 208
8.3.4 比较运算符 209
8.3.5 逻辑运算符 210
8.3.6 一元运算符 211
8.3.7 位运算符 212
8.3.8 运算符优先级 212
8.4 控制语句 213
8.4.1 注释语句 214
8.4.2 语句块 215
8.4.3 IF语句 215
8.4.4 CASE语句 217
8.4.5 WHILE语句 220
8.4.6 TRY…CATCH语句 221
8.4.7 其他语句 221
8.5 项目案例:查询学生的科目成绩并划分级别 223
8.6 习题 225
8.7 实践疑难解答 226
8.7.1 如何使用Transact-SQL实现顺序编号 226
8.7.2 利用Transact-SQL解方程式的问题 227
第9章 Transact-SQL实用编程 228
9.1 用户定义函数 228
9.1.1 用户定义函数简介 228
9.1.2 标量值函数 229
9.1.3 表值函数 231
9.1.4修改和删除用户定义函数 233
9.2 系统函数 233
9.2.1 数学函数 233
9.2.2 字符串函数 234
9.2.3 聚合函数 236
9.2.4 数据类型转换函数 237
9.2.5 日期和时间函数 238
9.3 数据库游标 239
9.3.1 定义游标 239
9.3.2 打开游标 240
9.3.3 检索游标 241
9.3.4 关闭游标 241
9.3.5 释放游标 242
9.4 事务 242
9.4.1 事务的概念 242
9.4.2 事务类型 244
9.4.3 事务控制语句 245
9.4.4 使用事务示例 246
9.5 锁 248
9.5.1 锁机制 248
9.5.2 SQL Server锁模式 249
9.5.3 查看锁 250
9.6 项目案例:学生选课系统的扩展功能 251
9.7 习题 255
9.8 实践疑难解答 258
9.8.1 创建自定义函数的问题 258
9.8.2 求出每个值与其所在列平均值的乘积 259
9.8.3 如何防止和解决死锁 260
第10章 管理存储过程和触发器 262
10.1 存储过程简介 262
10.1.1 什么是存储过程 262
10.1.2 存储过程的类型 263
10.2 创建存储过程 264
10.2.1 创建规则 264
10.2.2 简单存储过程 265
10.2.3 临时存储过程 267
10.2.4 加密存储过程 268
10.2.5 嵌套存储过程 268
10.3 存储过程的操作 270
10.3.1 执行存储过程 270
10.3.2 查看存储过程信息 272
10.3.3 修改存储过程 274
10.3.4 删除存储过程 275
10.3.5 系统存储过程 276
10.4 带参数的存储过程 279
10.4.1 指定参数名称和参数值 280
10.4.2 指定输入参数 281
10.4.3 指定默认值 282
10.4.4 指定输出参数 283
10.5 触发器简介 284
10.5.1 触发器的定义 284
10.5.2 SQL Server触发器的类型 286
10.6 创建触发器 287
10.6.1 DML触发器 287
10.6.2 DDL触发器 293
10.6.3 嵌套触发器 295
10.6.4 递归触发器 296
10.7 触发器的操作 297
10.7.1 修改触发器 297
10.7.2 禁用与启用触发器 298
10.7.3 删除触发器 299
10.8 项目案例:维护学生选课系统数据库 300
10.9 习题 307
10.10 实践疑难解答 310
10.10.1 关于执行带参数存储过程的问题 310
10.10.2 如何在删除数据时进行额外处理 311
第11章 SQL Server 2008安全管理 312
11.1 安全机制简介 312
11.2 安全管理概述 313
11.3 SQL Server服务器账户 314
11.3.1 身份验证模式 314
11.3.2 配置身份验证模式 315
11.3.3 创建登录账户 315
11.3.4 管理登录账户 320
11.4 数据库用户 321
11.4.1 数据库用户概述 322
11.4.2 创建数据库用户 322
11.4.3 删除数据库用户 324
11.5 角色 324
11.5.1 角色的分类 324
11.5.2 角色管理 326
11.6 权限 330
11.6.1 权限的种类 330
11.6.2 权限管理 331
11.7 项目案例:学生选课系统的安全管理 334
11.8 习题 336
11.9 实践疑难解答 337
11.9.1 权限的撤销和拒绝 337
11.9.2 新建SQL Server服务器账户的权限 339
第12章 SQL Server 2008代理服务 341
12.1 SQL Server 2008代理概述 341
12.1.1 SQL Server 2008自动化管理 342
12.1.2 代理组件 344
12.1.3 启动和停止SQL Server 2008代理服务 345
12.2 操作员管理 348
12.2.1 创建操作员 348
12.2.2 禁用和删除操作员 349
12.2.3 创建防故障操作员 350
12.3 作业管理 351
12.3.1 作业概述 351
12.3.2 创建本地服务器作业 352
12.3.3 执行作业 356
12.3.4 配置历史记录 357
12.3.5 作业的其他操作 358
12.4 警报管理 358
12.4.1 警报概述 358
12.4.2 创建事件警报 359
12.4.3 创建性能条件警报 361
12.4.4 创建WMI事件警报 362
12.4.5 禁用和删除警报 363
12.5 数据库邮件 364
12.5.1 使用数据库邮件的优势 364
12.5.2 使用数据库邮件配置向导 365
12.5.3 发送测试电子邮件 369
12.5.4 管理邮件配置文件和账户 369
12.5.5 使用邮件配置文件 370
12.6 维护计划向导 372
12.7 习题 377
12.8 实践疑难解答 378
12.8.1 维护计划创建失败 378
12.8.2 如何发送SQL Server代理错误消息给指定的收件人 378
第13章 集成CLR编程 379
13.1 CLR概述 379
13.1.1 CLR简介 379
13.1.2 CTS简介 380
13.2 编写CLR数据库对象 382
13.2.1 创建SQL Server项目 382
13.2.2 标量值函数 383
13.2.3 聚合函数 386
13.2.4 触发器 389
13.2.5 存储过程 392
13.2.6 自定义类型 394
13.3 SMO操作 396
13.3.1 创建SMO项目 397
13.3.2 连接SQL Server 399
13.3.3 创建数据库 402
13.3.4 创建数据表 402
13.3.5 创建存储过程 403
13.3.6 创建触发器 405
13.4 XML操作 406
13.4.1 xml数据类型简介 406
13.4.2 xtnl数据类型方法 407
13.4.3 RAW模式查询 411
13.4.4 AUTO模式查询 412
13.4.5 PATH模式查询 412
13.4.6 EXPLICIT模式查询 414
13.4.7 OPENXML函数 416
13.5 习题 418
13.6 实践疑难解答 420
13.6.1 关于SQL Server项目的部署问题 420
13.6.2 如何更好地理解xml数据类型 421
第14章 图书管理系统 422
14.1 系统概述 422
14.1.1 需求分析 422
14.1.2 功能分析 423
14.2 数据库设计 424
14.2.1 设计数据表 424
14.2.2 设计存储过程 425
14.3 准备工作 426
14.3.1 搭建项目 426
14.3.2 添加引用 427
14.3.3 公共模块 428
14.4 管理员登录 433
14.5 主窗体 436
14.5.1 显示图书分类列表 437
14.5.2 显示图书列表 438
14.5.3 显示图书封面和简介 440
14.6 图书信息管理 441
14.6.1 添加图书 441
14.6.2 修改图书 445
14.6.3 删除图书 447
14.7 图书分类管理 448
14.7.1 添加图书分类 448
14.7.2 修改和删除分类 450
14.8 系统用户管理 451