目 录
课题一 认识和使用数据库
任务1 认识数据库及其应用 2
1.1 场景引入 2
1.2 了解数据库的一些应用 2
1.3 了解数据库管理系统的概念 3
1.4 认识应用程序与数据库管理系统
之间的关系 3
1.5 认识一个真实的数据库 4
1.6 了解数据库定义 7
1.7 独立实践 7
1.7.1 任务 7
1.7.2 安装 SQL Server 2008 8
1.7.3 打开SSMS并连接到数据库
引擎 12
1.7.4 显示“已注册的服务器” 13
1.7.5 注册本地服务器 13
1.7.6 启动数据库引擎 13
1.7.7 连接对象资源管理器 14
1.7.8 附加数据库 14
1.7.9 使用 SSMS编写代码 15
任务2 认识SQL 17
2.1 场景引入 17
2.2 了解SQL的作用 17
2.3 查询单一表中的数据 17
2.3.1 从单一的表中选择特定列 17
2.3.2 从单一的表中选择所有列 18
2.3.3 使用 DISTINCT 消除
重复项 19
2.3.4 使用 TOP 和 PERCENT
限制结果集 19
2.3.5 独立实践 20
2.4 简单条件查询 21
2.4.1 实例研究 21
2.4.2 独立实践 24
2.5 复杂条件查询 24
2.5.1 使用AND和OR逻辑
运算符 24
2.5.2 AND 和 OR 的优先级 25
2.5.3 独立实践 27
2.6 创建查询列的别名 27
2.7 创建计算列的查询 28
2.7.1 创建计算列的查询 28
2.7.2 数学运算符和文本运算符 29
2.7.3 独立实践 30
2.8 排序 30
2.8.1 单列排序 30
2.8.2 多列排序 31
2.8.3 降序排序 31
2.8.4 使用计算列排序 32
2.8.5 独立实践 34
任务3 使用关系(表)存储用户数据 35
3.1 场景引入 35
3.2 理解关系模型 35
3.2.1 理解关系模型的概念 35
3.2.2 理解关键字 36
3.2.3 理解域 36
3.3 使用数据类型 37
3.4 实现关系 41
3.4.1 创建数据库 41
3.4.2 删除数据库 41
3.4.3 重命名数据库 42
3.4.4 创建表 42
3.4.5 修改表 43
3.4.6 独立实践 46
3.5 操作表的数据 47
3.5.1 添加数据 47
3.5.2 修改数据 50
3.5.3 删除数据 52
3.5.4 独立实践 53
任务4 设置列的属性和约束 55
4.1 场景引入 55
4.2 设置列的属性 55
4.2.1 设置默认值 55
4.2.2 设置精度和小数位数 59
4.2.3 创建标识符列 60
4.2.4 使用空值 64
4.2.5 独立实践 65
4.3 创建约束 65
4.3.1 创建PRIMARY KEY 约束 65
4.3.2 创建UNIQUE约束 67
4.3.3 创建CHECK约束 69
4.3.4 比较列约束和表约束 71
4.3.5 独立实践 72
课题二 设计数据库
任务5 使用实体-联系模型进行数据
建模 74
5.1 场景引入 74
5.2 确定实体 75
5.3 标识实体的属性 75
5.3.1 简单属性和复合属性 75
5.3.2 单值属性和多值属性 76
5.3.3 派生属性 76
5.3.4 属性的域 76
5.3.5 关键字 76
5.4 标识实体间的联系 77
5.4.1 联系的类型 77
5.4.2 1对1联系(1∶1) 77
5.4.3 1对多联系(1∶*) 77
5.4.4 多对多联系(*∶*) 77
5.5 画出实体-联系图 77
5.5.1 实体类的图形化表示 78
5.5.2 关系的图形化表示 78
5.5.3 属性的图形化表示 79
5.6 实例研究 80
5.6.1 标识实体类 80
5.6.2 标识实体类间的关系 80
5.6.3 标识实体的属性 82
5.6.4 E-R图 86
5.7 独立实践 86
任务6 将实体-联系模型转变成
数据库设计 89
6.1 场景引入 89
6.2 使用关系模型表示实体类 89
6.3 表的规范化 91
6.3.1 函数依赖和函数依赖传递 91
6.3.2 更新异常 92
6.3.3 规范化的本质 92
6.3.4 第一范式 93
6.3.5 第二范式 93
6.3.6 第三范式 93
6.4 表示HAS-A联系 94
6.4.1 表示1对1联系 94
6.4.2 表示1对多联系 94
6.4.3 表示多对多联系 95
6.5 实例研究 96
6.5.1 将E-R模型映射为表 96
6.5.2 对多值属性的处理 98
6.5.3 再论1对1关系 98
6.6 独立实践 99
课题三 实现数据库
任务7 创建数据库和表 102
7.1 场景引入 102
7.2 物理实现数据库 102
7.2.1 理解数据库 102
7.2.2 创建数据库 103
7.2.3 修改数据库 108
7.2.4 独立实践 109
7.3 创建表 109
7.4 实例研究 110
7.5 独立实践 113
任务8 创建表的关系和参照完整性 114
8.1 场景引入 114
8.2 创建表的关系 114
8.2.1 在创建表时创建外键约束 115
8.2.2 给已有的外键创建外键
约束 116
8.2.3 在已有的表中添加外键
并创建外键约束 117
8.2.4 独立实践 117
8.3 创建参照完整性 117
8.3.1 理解参照完整性 117
8.3.2 创建级联删除规则 117
8.3.3 创建级联更新规则 118
8.3.4 对 INSERT 和 UPDATE
语句忽略外键约束 119
8.3.5 独立实践 119
8.4 实例研究 119
任务9 使用SQL查询数据库 122
9.1 场景引入 122
9.2 创建基本查询 122
9.2.1 创建范围查询 122
9.2.2 列表查询 124
9.2.3 创建模糊查询 124
9.2.4 使用NULL值查询 128
9.2.5 独立实践 128
9.3 创建汇总与分组查询 129
9.3.1 汇总数据 129
9.3.2 创建分组查询 130
9.3.3 独立实践 133
9.4 使用子查询 133
9.4.1 了解子查询的概念 133
9.4.2 查询中列名的限定 134
9.4.3 使用相关子查询 135
9.4.4 使用单行子查询和多行
子查询 136
9.4.5 使用 EXISTS 和NOT
EXISTS的子查询 138
9.4.6 使用子查询替代表达式 139
9.4.7 在UPDATE、DELETE语句中
使用子查询 140
9.4.8 独立实践 140
9.5 创建连接查询 141
9.5.1 创建内连接查询 141
9.5.2 创建外连接查询 143
9.5.3 创建交叉连接查询 145
9.5.4 创建连接三个或更多的表的
查询 145
9.5.5 独立实践 146
9.6 合并结果集 147
9.6.1 使用UNION进行查询 147
9.6.2 独立实践 147
9.7 更改数据库中的数据 148
9.7.1 使用SELECT和TOP子句
向表中添加数据 148
9.7.2 使用 FROM 和TOP子句
更改数据 152
9.7.3 使用TOP和附加的 FROM
子句删除数据 155
9.7.4 独立实践 158
9.8 实例研究 158
任务10 索引 162
10.1 场景引入 162
10.2 了解索引 162
10.3 了解索引的类型 163
10.3.1 了解聚集索引 163
10.3.2 了解非聚集索引 163
10.3.3 了解唯一索引 164
10.4 创建与删除索引 164
10.4.1 在现有表上创建索引 164
10.4.2 在创建表时创建索引 165
10.4.3 删除索引 166
10.4.4 独立实践 166
10.5 使用索引 167
10.5.1 使用聚集索引 167
10.5.2 使用非聚集索引 167
10.5.3 使用唯一索引 168
10.6 实例研究 168
课题四 为数据库创建对象和程序
任务11 创建视图 172
11.1 场景引入 172
11.2 理解视图 172
11.2.1 了解视图的概念 172
11.2.2 理解视图的作用 173
11.3 创建视图 173
11.3.1 创建简单视图 174
11.3.2 使用视图 174
11.3.3 创建具有计算列的视图 175
11.3.4 创建视图列的别名 176
11.3.5 加密视图 177
11.3.6 创建具有数据约束的视图 177
11.3.7 独立实践 178
11.4 修改和重命名视图 179
11.4.1 修改视图 179
11.4.2 重命名视图 180
11.5 通过视图修改数据 180
11.6 比较视图和查询 181
11.7 实例研究 181
任务12 编写批处理和脚本 183
12.1 场景引入 183
12.2 使用变量与系统函数 183
12.2.1 使用变量 183
12.2.2 使用系统函数 185
12.3 编写批处理 187
12.3.1 使用批处理 187
12.3.2 批处理中的错误 188
12.3.3 何时使用批处理 190
12.4 使用脚本 192
12.5 独立实践 193
任务13 存储过程 195
13.1 场景引入 195
13.2 了解存储过程 195
13.3 创建简单的存储过程 196
13.3.1 创建并使用存储过程 196
13.3.2 独立实践 196
13.4 创建带参数的存储过程 196
13.4.1 创建使用参数的简单存储
过程 197
13.4.2 创建使用参数默认值的
存储过程 197
13.4.3 执行存储过程 198
13.4.4 使用包含通配符的参数
默认值创建存储过程 199
13.4.5 独立实践 200
13.5 创建复杂存储过程 200
13.5.1 使用变量、IF语句和RETURN
语句 200
13.5.2 使用IF…ELSE语句 202
13.5.3 在存储过程中调用其他存储
过程 204
13.5.4 创建使用输出参数返回数据的
存储过程 205
13.5.5 独立实践 207
13.6 修改和删除存储过程 208
13.6.1 修改存储过程 208
13.6.2 查看存储过程的定义 209
13.6.3 删除存储过程 209
13.6.4 独立实践 209
13.7 实例研究 209
任务14 创建DML触发器和用户定义
函数 217
14.1 场景引入 217
14.2 了解DML触发器种类 217
14.2.1 了解AFTER 触发器 217
14.2.2 了解INSTEAD OF触发器 217
14.3 创建DML触发器 217
14.3.1 创建AFTER 触发器 218
14.3.2 查看、禁用和删除DML
触发器 218
14.3.3 了解Inserted和Deleted表 220
14.3.4 AFTER 触发器实例研究 220
14.3.5 独立实践 222
14.4 创建INSTEAD OF 触发器 222
14.4.1 一个应用实例研究 222
14.4.2 独立实践 224
14.5 比较触发器与约束 224
14.6 修改和重命名触发器 225
14.6.1 修改触发器 225
14.6.2 重命名触发器 225
14.6.3 删除触发器 226
14.7 实例研究 226
14.8 创建用户定义函数 228
14.8.1 创建标量函数 228
14.8.2 创建表值函数 230
14.8.3 独立实践 232
任务15 创建游标和控制SQL
程序流 233
15.1 场景引入 233
15.2 了解为何要使用游标 233
15.3 创建游标 233
15.3.1 实例研究 234
15.3.2 独立实践 236
15.4 控制SQL程序流 236
15.4.1 使用WHILE 236
15.4.2 使用BREAK和
CONTINUE 238
15.4.3 使用CASE 239
15.4.4 独立实践 242
15.5 创建更新游标 242
15.6 在其他SQL语句中使用游标中的
数据 244
15.7 独立实践 246
任务16 创建事务与锁 247
16.1 场景引入 247
16.2 理解事务 248
16.3 使用BEGIN和COMMIT 248
16.4 使用ROLLBACK
TRANSACTION 251
16.5 使用SAVE TRANSACTION 252
16.6 使用嵌套事务 254
16.7 独立实践 256
16.8 使用包含回滚或提交的存储过程
和触发器 256
16.8.1 使用包含回滚的触发器 256
16.8.2 使用包含回滚的存储过程 258
16.8.3 独立实践 260
课题五 运行与管理数据库
任务17 实现数据库安全性 262
17.1 场景引入 262
17.2 了解安全机制 262
17.2.1 平台与网络安全性 263
17.2.2 主体与数据库对象安全性 263
17.2.3 应用程序安全性 264
17.3 创建登录账户 264
17.3.1 创建使用 Windows 身份
验证的 SQL Server 登录
账户 265
17.3.2 创建使用 SQL Server 身份
验证的 SQL Server 登录
账户 266
17.3.3 修改登录账户 267
17.3.4 使用内置 SQL Server 系统
管理员账户 268
17.3.5 独立实践 270
17.4 创建数据库用户 270
17.4.1 创建SQL Server 登录的
数据库用户 271
17.4.2 创建Windows登录的
数据库用户 271
17.4.3 修改数据库用户 272
17.4.4 删除数据库用户 273
17.4.5 使用内置数据库用户 273
17.4.6 独立实践 274
17.5 授予权限 274
17.5.1 授予用户对象权限 275
17.5.2 授予语句权限 279
17.5.3 独立实践 280
17.6 使用和创建角色 280
17.6.1 使用服务器角色 281
17.6.2 使用和创建数据库角色 282
17.6.3 向数据库角色添加和删除
用户 287
17.6.4 独立实践 290
任务18 维护数据库 291
18.1 场景引入 291
18.2 了解数据库备份和还原的概念 291
18.2.1 理解数据库备份类型 291
18.2.2 理解恢复模式 294
18.3 开始备份准备工作 294
18.3.1 切换数据库的恢复模式 294
18.3.2 创建备份设备 295
18.3.3 独立实践 297
18.4 创建数据库备份 297
18.4.1 创建完整数据库备份 297
18.4.2 创建差异数据库备份 298
18.4.3 创建新媒体集并追加
备份集 300
18.4.4 独立实践 302
18.5 创建事务日志备份 302
18.5.1 事务日志备份 302
18.5.2 独立实践 304
18.6 实现数据库还原 304
18.6.1 设计简单恢复模式下还原
数据库方案 304
18.6.2 还原完整数据库备份 305
18.6.3 还原差异数据库备份 306
18.6.4 设计完全恢复模式下还原
数据库方案 308
18.6.5 还原事务日志备份 309
18.6.6 独立实践 313
18.7 分离和附加数据库 314
18.7.1 分离数据库 314
18.7.2 附加数据库 314
18.7.3 独立实践 315
课题六 操作SSMS实现数据库和维护数据库
任务19 创建数据库和表 318
19.1 场景引入 318
19.2 创建数据库 318
19.2.1 创建简单数据库 318
19.2.2 创建指定数据和事务日志
文件的数据库 318
19.2.3 创建多个数据和事务日志
文件的数据库 320
19.2.4 创建自定义文件组的
数据库 321
19.3 修改数据库 322
19.3.1 重命名数据库 322
19.3.2 删除数据库 323
19.3.3 修改数据库文件大小 323
19.3.4 向数据库中添加数据
或日志文件 324
19.3.5 查看数据库 324
19.4 创建与修改表 325
19.4.1 创建表 325
19.4.2 修改表 325
19.5 操作表的数据 328
19.5.1 添加数据 328
19.5.2 修改数据 329
19.5.3 从表中删除行 329
19.6 设置列的属性和约束 330
19.6.1 设置默认值 330
19.6.2 设置精度和小数位数 331
19.6.3 创建标识符列 331
19.7 独立实践 332
任务20 创建约束和表的关系 333
20.1 场景引入 333
20.2 创建约束 333
20.2.1 创建PRIMARY KEY
约束 333
20.2.2 创建UNIQUE约束 335
20.2.3 创建CHECK约束 336
20.2.4 创建表约束 337
20.2.5 独立实践 338
20.3 创建表的关系 338
20.3.1 创建表的关系 338
20.3.2 创建级联规则 339
20.3.3 修改关系属性 340
20.3.4 独立实践 340
任务21 实现数据库安全性 341
21.1 场景引入 341
21.2 创建登录账户 341
21.2.1 创建使用 Windows 身份
验证的 SQL Server 登录
账户 341
21.2.2 创建使用 SQL Server 身份
验证的 SQL Server 登录
账户 343
21.2.3 修改登录账户 343
21.2.4 独立实践 346
21.3 创建数据库用户 346
21.3.1 创建SQL Server 登录的
数据库用户 346
21.3.2 创建Windows登录的
数据库用户 347
21.3.3 修改数据库用户 347
21.3.4 删除数据库用户 348
21.3.5 独立实践 348
21.4 授予权限 348
21.4.1 授予用户对象权限 348
21.4.2 授予语句权限 354
21.4.3 独立实践 355
21.5 使用和创建角色 355
21.5.1 使用服务器角色 355
21.5.2 创建和使用数据库角色 357
21.5.3 向数据库角色添加和删除
用户 365
21.5.4 独立实践 367
任务22 维护数据库 369
22.1 场景引入 369
22.2 开始备份准备工作 369
22.2.1 查看和切换数据库的恢复
模式 369
22.2.2 创建备份设备 369
22.2.3 查看逻辑备份设备 370
22.2.4 删除逻辑备份设备 370
22.2.5 独立实践 371
22.3 创建数据库备份 371
22.3.1 创建完整数据库备份 371
22.3.2 创建差异数据库备份 373
22.3.3 创建新媒体集并追加
备份集 374
22.3.4 独立实践 377
22.4 创建事务日志备份 378
22.5 实现数据库还原 380
22.5.1 还原完整数据库备份 380
22.5.2 还原差异数据库备份 382
22.5.3 还原事务日志备份 384
22.5.4 独立实践 391
22.6 附加和分离数据库 391
22.6.1 分离数据库 391
22.6.2 附加数据库 393
22.6.3 独立实践 393