
本书将引导读者利用SQL Server 2008技术进行数据库管理与开发实践。本书共17章,主要内容包括关系数据库的有关知识、安装和配置SQL Server 2008、创建数据库和表、修改数据库文件、数据库的备份和恢复、管理和操作数据表、设计表数据完整性、查询与管理表数据、Transact-SQL编程、存储过程和触发器的开发、数据库的安全管理和系统自动化管理,以及CLR、SMO和XML等高级开发知识。本书附带的光盘中提供了示例数据库、视频和案例源文件,以及一些典型数据库,可方便读者学习使用。
本书内容丰富、实例精彩、覆盖面广、指导性强,力求以全面的知识及丰富的实例来指导读者透彻地学习SQL Server 2008数据库各方面的知识。本书适合所有想全面学习SQL Server 2008数据库的初学者快速入门,也适合有一定数据库基础的技术人员参考。另外,对于大中专院校和培训班的学生,本书更是一本不可多得的教材。
前 言
SQL Server是Microsoft公司的关系型数据库管理系统产品,从20世纪80年代后期开始开发,先后经历了7.0、2000、2005和2008四个大版本。SQL Server 2008 R2是2008的最新版本,它拥有许多新的特性和关键的改进,使得它成为迄今为止最强大和最全面的SQL Server版本。它的出现更是促进了计算机应用向各行业的渗透,为企业解决数据爆炸和数据驱动的应用提供了有力的技术支持。
本书具有知识全面、实例精彩、指导性强的特点,力求以全面的知识性及丰富的实例来指导读者透彻地学习SQL Server 2008基础知识。
本书内容
第1章 数据库与SQL Server 2008。本章介绍数据库的概念,关系数据库的简介及其术语,规范关系和数据库建模的方法,以及SQL Server的发展史和SQL Server 2008的安装及卸载。
第2章 开始使用SQL Server 2008。本章主要介绍SQL Server 2008的管理工具和程序,如SQL Server配置管理器、SQL Server Management Studio以及SQLCMD等。
第3章 SQL Server 2008入门操作。本章介绍SQL Server 2008自带的系统数据库,数据库的构成部分,以及数据库的创建、重命名和删除方法。
第4章 维护SQL Server 2008数据库。本章主要介绍SQL Server 2008数据库的各种管理操作,如数据库快照、修改数据库文件、重命名数据库、备份与导出等。
第5章 操作数据表。本章主要介绍SQL Server 2008数据表的各种管理操作,如系统表和临时表的定义,创建表,定义列的数据类型,修改表名以及删除表等。
第6章 表的完整性约束。本章详细介绍默认值和规则的应用,以及SQL Server 2008中应用于列的各种约束,如不能为空、不能重复等。
第7章 T-SQL语言编程入门。本章主要介绍T-SQL语言的基础知识,包括T-SQL语言的分类、常量、变量、注释、各类运算符及优先级、流程语句的使用等。
第8章 T-SQL高级编程。本章将讲解SQL语言在数据库中的高级应用,如调用系统函数、编写自定义函数,以及使用事务和锁确保数据的完整性等。
第9章 T-SQL修改表数据。本章详细介绍数据操纵语言中INSERT、UPDATE和DELETE语句对数据进行插入、更新和删除的方法。
第10章 T-SQL查询数据。本章详细介绍SELECT语句的应用,包括在查询时可以指定列、指定条件甚至执行计算,对查询结果进行排序、分组和统计等。
第11章 T-SQL复杂查询。本章详细介绍SELECT嵌套的子查询,以及多表连接的方法。
第12章 管理数据库对象。本章主要介绍数据库中架构、视图和索引三个对象的使用。
第13章 触发器编程。本章主要介绍触发器的操作,包括触发器的概念和分类,DML触发器的创建,触发器的管理(如禁用与启用、修改和删除),触发器的高级应用(如DDL触发器、嵌套和递归触发器)。
第14章 存储过程编程。本章主要介绍存储过程的操作,包括存储过程的类型、创建普通存储过程、加密和临时存储过程、查看和修改存储过程,以及使用存储过程的参数等。
第15章 SQL Server高级编程。本章从三个方面讲解SQL Server 2008的高级编程技术,分别是XML编程、CLR编程和SMO编程。
第16章 管理数据库安全。本章首先介绍SQL Server 2008提供的各个安全级别,然后重点介绍身份验证模式、登录名、数据库用户、权限及角色的管理。
第17章 产品展示模块。本章利用ASP.NET和SQL Server 2008开发一个商业系统的产品展示模块,功能包括显示产品、产品详情、增加和删除产品,以及分类的管理。
本书特色
本书中的大量内容来自真实的SQL Server 数据库示例,力求解决读者在实际操作中遇到的问题,使读者更容易地掌握SQL Server 2008数据库应用。本书难度适中,内容由浅入深,实用性强,覆盖面广,条理清晰。
* 知识点全:本书紧紧围绕SQL Server 2008数据库展开讲解,具有很强的逻辑性和系统性。
* 实例丰富:书中各实例均经过作者精心设计和挑选,是根据作者在实际开发中的经验总结而来的,涵盖了在实际开发中所遇到的各种问题。
* 应用广泛:对于精选案例,分析深入浅出,而且有些程序能够直接在项目中使用。
* 基于理论,注重实践:在合适位置安排综合应用实例,或者小型应用程序,将理论应用到实践中,从而加强读者的实际应用能力,巩固开发基础知识。
* 贴心的提示:为了便于读者阅读,全书还穿插着一些技巧、提示等小贴士,体例约定如下。
提示:通常是一些贴心的提醒,以让读者加深印象,或者提供解决问题的方法。
注意:提出学习过程中需要特别注意的一些知识点和内容,或者相关信息。
技巧:通过简短的文字,指出知识点在应用时的一些小窍门。
读者对象
本书可以作为SQL Server数据库的入门书籍,也可以帮助中级读者提高技能。
本书适合以下人员阅读学习。
* 没有数据库应用基础的SQL Server入门人员。
* 有一些数据库应用基础,并且希望全面学习SQL Server数据库的读者。
* 各大中专院校的在校学生和相关授课老师。
* 相关培训班的学员。
本书由刘俊强编著,另外参与本书编写及设计工作的还有侯政云、刘利利、郑志荣、肖进、侯艳书、崔再喜、侯政洪、李海燕、祝红涛、贺春雷等,在此表示感谢。在本书的编写过程中,我们力求精益求精,但难免存在一些不足之处,敬请广大读者批评指正。
编 者
??
??
??
??
目 录
第1章 数据库与SQL Server 2008 1
1.1 数据库与关系数据库 2
1.1.1 数据库简介 2
1.1.2 数据库模型 3
1.1.3 关系数据库简介 5
1.2 关系数据库术语 5
1.3 数据库建模 6
1.3.1 范式理论 6
1.3.2 实体-关系模型 8
1.4 实践案例:将E-R模型转换为关系
模型 10
1.5 SQL Server 2008的简介 12
1.5.1 SQL Server的发展历史 13
1.5.2 SQL Server 2008的新特性 14
1.6 实践案例:安装SQL Server 2008 14
1.7 实践案例:升级为SQL Server 2008 18
1.8 卸载SQL Server 2008 20
1.9 思考与练习 22
1.10 练一练 23
第2章 使用SQL Server 2008的
管理工具 25
2.1 SQL Server配置管理器 26
2.1.1 管理服务 26
2.1.2 管理服务器和协议 27
2.1.3 本地客户端协议配置 28
2.2 实践案例:配置命名管道 29
2.3 SQL Server Management Studio 30
2.3.1 SQLSMS简介 30
2.3.2 注册服务器 31
2.3.3 配置服务器 33
2.4 实践案例:配置身份验证模式 34
2.5 sqlcmd工具 35
2.5.1 连接到数据库 35
2.5.2 执行语句 36
2.6 实践案例:使用输入和输出文件 37
2.7 其他管理工具 37
2.7.1 Business Intelligence
Development Studio 38
2.7.2 数据库引擎优化顾问 38
2.7.3 SQL Server Profiler 40
2.7.4 Reporting Services配置 41
2.7.5 实用命令行工具 42
2.7.6 SQL Server联机丛书 43
2.8 思考与练习 44
2.9 练一练 44
第3章 SQL Server 2008入门操作 47
3.1 系统数据库 48
3.2 数据库的组成 49
3.2.1 数据库元素 49
3.2.2 数据库文件 51
3.2.3 文件和文件组 52
3.2.4 数据库状态 52
3.3 实践案例:查询数据库和文件状态 54
3.4 创建数据库 55
3.4.1 使用SQLSMS工具创建 55
3.4.2 使用CREATE DATBASE
语句创建 58
3.5 实践案例:使用多文件组创建
数据库 61
3.6 实践案例:修改数据库名称 62
3.7 删除数据库 64
3.7.1 使用SQLSMS工具删除 64
3.7.2 使用DROP DATABASE
删除 65
3.8 思考与练习 65
3.9 练一练 66
第4章 维护SQL Server 2008
数据库 67
4.1 数据库快照 68
4.1.1 数据库快照简介 68
4.1.2 创建和删除数据库快照 68
4.2 实践案例:使用数据库快照 69
4.3 修改数据库 70
4.3.1 收缩数据库 70
4.3.2 收缩数据库文件 72
4.3.3 移动数据库文件 73
4.3.4 扩大数据库 74
4.4 分离和附加数据库 76
4.4.1 分离数据库 76
4.4.2 附加数据库 77
4.5 实践案例:使用语句分离和附加
数据库 78
4.6 生成SQL脚本 79
4.6.1 将数据表生成SQL脚本 79
4.6.2 将数据库生成SQL脚本 80
4.7 实践案例:导入/导出数据 82
4.8 备份数据库 85
4.8.1 SQL Server备份类型 85
4.8.2 SQL Server备份设备 86
4.8.3 通过图形向导备份数据库 88
4.8.4 使用BACKUP语句备份
数据库 90
4.8.5 执行差异备份 91
4.9 恢复数据库 92
4.9.1 SQL Server恢复模式简介 92
4.9.2 配置恢复模式 93
4.9.3 使用图形化向导恢复数据库 94
4.9.4 使用RESTORE语句恢复
数据库 95
4.10 思考与练习 96
4.11 练一练 97
第5章 操作数据表 99
5.1 SQL Server表 100
5.1.1 什么是表 100
5.1.2 临时表 101
5.1.3 系统表 101
5.2 定义列的数据类型 102
5.2.1 基本数据类型 103
5.2.2 创建用户定义的数据类型 105
5.3 实践案例:使用系统存储过程管理
自定义类型 106
5.4 创建数据表 107
5.4.1 使用SQLSMS创建 107
5.4.2 使用语句创建 109
5.5 实践案例:使用SQLSMS操作表 109
5.5.1 添加数据 110
5.5.2 修改数据 111
5.5.3 删除数据 111
5.6 修改表 112
5.6.1 表名 113
5.6.2 表属性 114
5.6.3 列 115
5.7 删除表 117
5.8 思考与练习 117
5.9 练一练 118
第6章 表的完整性约束 121
6.1 约束概述 122
6.1.1 约束简介 122
6.1.2 约束的分类 122
6.2 默认值对象 123
6.2.1 创建默认值语法格式 123
6.2.2 绑定默认值 124
6.2.3 查看默认值 124
6.2.4 删除默认值 126
6.3 规则对象 126
6.3.1 创建规则的语法格式 126
6.3.2 绑定规则 126
6.3.3 查看规则 128
6.3.4 删除规则 128
6.4 实现列的基本约束 129
6.4.1 主键约束 129
6.4.2 外键约束 130
6.4.3 自动编号约束 131
6.4.4 非空约束 132
6.4.5 唯一性约束 134
6.4.6 默认值约束 136
6.4.7 验证约束 137
6.5 实践案例:设计图书信息表约束
规则 139
6.6 思考与练习 141
6.7 练一练 142
第7章 T-SQL语言编程入门 143
7.1 T-SQL语言简介 144
7.2 语法基础 145
7.2.1 常量 145
7.2.2 变量 146
7.2.3 注释 149
7.3 运算符 149
7.3.1 赋值运算符 149
7.3.2 算术运算符 150
7.3.3 字符串连接运算符 151
7.3.4 比较运算符 152
7.3.5 逻辑运算符 153
7.3.6 一元运算符 154
7.3.7 位运算符 154
7.3.8 运算符优先级 155
7.4 流程语句 156
7.4.1 语句块 156
7.4.2 条件语句 157
7.4.3 分支语句 158
7.4.4 循环语句 161
7.4.5 错误处理语句 162
7.4.6 其他语句 163
7.5 实践案例:使用WHILE循环
输出一个倒三角形 165
7.6 游标 166
7.6.1 定义游标 166
7.6.2 打开游标 166
7.6.3 检索游标 167
7.6.4 关闭与删除游标 168
7.7 思考与练习 168
7.8 练一练 169
第8章 T-SQL高级编程 171
8.1 系统函数 172
8.1.1 数据类型转换函数 172
8.1.2 日期时间函数 173
8.1.3 聚合函数 174
8.1.4 数学函数 175
8.1.5 字符串函数 176
8.2 自定义函数 178
8.2.1 自定义函数简介 178
8.2.2 标量值函数 179
8.2.3 表值函数 181
8.2.4 删除用户定义函数 183
8.3 事务 183
8.3.1 事务的概念 183
8.3.2 事务类型 185
8.3.3 事务控制语句 186
8.4 实践案例:使用事务模拟银行转账
操作 187
8.5 锁 190
8.5.1 锁机制 190
8.5.2 SQL Server锁模式 192
8.5.3 查看锁 193
8.6 思考与练习 194
8.7 练一练 195
第9章 T-SQL修改表数据 197
9.1 插入数据 198
9.1.1 INSERT语句简介 198
9.1.2 INSERT语句语法详解 199
9.1.3 插入单条记录 202
9.1.4 省略INSERT INTO子句
列表 203
9.1.5 处理NULL值 203
9.1.6 使用INSERT SELECT
语句 204
9.1.7 使用SELECT INTO语句 206
9.2 实践案例:向自增列中添加数据 207
9.3 实践案例:使用INSERT语句
插入多行数据 208
9.4 更新数据 209
9.4.1 UPDATE语句语法详解 209
9.4.2 基于表中数据的更新 210
9.4.3 基于其他表的更新 211
9.4.4 使用TOP表达式 212
9.5 实践案例:同时更新多列 213
9.6 删除数据 213
9.6.1 DELETE语句语法详解的
示例 213
9.6.2 使用DELETE语句的示例 214
9.6.3 基于其他表删除数据 215
9.6.4 TRUNCATE TABLE语句的
用法 215
9.7 思考与练习 216
9.8 练一练 217
第10章 T-SQL查询数据 219
10.1 SELECT语句语法 220
10.2 简单查询 220
10.2.1 查询所有列 220
10.2.2 查询指定列 221
10.2.3 避免重复项 222
10.2.4 返回部分结果 223
10.2.5 为结果列使用别名 224
10.2.6 查询计算列 225
10.3 条件查询 226
10.3.1 比较条件 226
10.3.2 逻辑条件 227
10.3.3 列表条件 228
10.3.4 范围条件 229
10.3.5 模糊条件 230
10.3.6 未知条件 231
10.4 操作查询结果 232
10.4.1 ORDER BY子句 232
10.4.2 GROUP BY子句 233
10.4.3 HAVING子句 235
10.5 实践案例:查询药品信息 235
10.6 思考与练习 237
10.7 练一练 238
第11章 T-SQL复杂查询 239
11.1 实现子查询 240
11.1.1 使用比较运算符 240
11.1.2 单值子查询 241
11.1.3 使用IN关键字 242
11.1.4 使用EXISTS关键字 243
11.1.5 嵌套子查询 244
11.2 多表连接 245
11.2.1 基本连接操作 245
11.2.2 使用别名 246
11.2.3 多表连接查询 247
11.2.4 使用JOIN关键字连接
查询 248
11.3 内连接 249
11.3.1 等值连接查询 250
11.3.2 非等值连接查询 251
11.3.3 自然连接查询 251
11.4 外连接 252
11.4.1 左外连接查询 252
11.4.2 右外连接查询 253
11.4.3 完全外连接查询 254
11.5 自连接 255
11.6 交叉连接 255
11.7 联合查询 257
11.8 实践案例:查询学生信息 258
11.9 思考与练习 260
11.10 练一练 261
第12章 管理数据库对象 263
12.1 架构 264
12.1.1 架构简介 264
12.1.2 使用SQLSMS创建架构 265
12.1.3 使用语句创建架构 266
12.1.4 修改架构 267
12.1.5 删除架构 269
12.2 实践案例:移动对象到架构 270
12.3 视图 271
12.3.1 视图简介 271
12.3.2 使用SQLSMS创建视图 272
12.3.3 使用语句创建视图 274
12.3.4 查看视图 275
12.3.5 修改视图 275
12.3.6 删除视图 276
12.4 实践案例:使用视图更新数据 277
12.5 索引 279
12.5.1 索引简介 279
12.5.2 索引类型 280
12.5.3 索引的使用标准 284
12.6 索引的使用方法 285
12.6.1 创建索引 285
12.6.2 修改索引 288
12.6.3 删除索引 289
12.6.4 查看索引属性 290
12.7 思考与练习 291
12.8 练一练 293
第13章 触发器编程 295
13.1 触发器简介 296
13.2 DML触发器 297
13.2.1 创建DML触发器语法 297
13.2.2 INSERT触发器 298
13.2.3 DELETE触发器 300
13.2.4 UPDATE触发器 301
13.2.5 INSTEAD OF触发器 302
13.3 管理触发器 303
13.3.1 禁用与启用 303
13.3.2 修改触发器 305
13.3.3 删除触发器 306
13.4 触发器的高级应用 306
13.4.1 DDL触发器 306
13.4.2 嵌套触发器 309
13.4.3 递归触发器 311
13.5 思考与练习 313
13.6 练一练 314
第14章 存储过程编程 315
14.1 存储过程的种类 316
14.1.1 系统存储过程 316
14.1.2 扩展存储过程 319
14.1.3 用户自定义存储过程 319
14.2 创建存储过程 320
14.2.1 普通存储过程 321
14.2.2 临时存储过程 323
14.2.3 加密存储过程 324
14.3 实践案例:使用存储过程的嵌套
形式 325
14.4 存储过程的操作 326
14.4.1 执行存储过程 326
14.4.2 查看存储过程 327
14.4.3 修改存储过程 328
14.4.4 删除存储过程 330
14.5 带参数的存储过程 330
14.5.1 指定参数名称 330
14.5.2 指定输入参数 332
14.5.3 指定输出参数 333
14.6 实践案例:使用带默认值的
存储过程 334
14.7 思考与练习 335
14.8 练一练 336
第15章 SQL Server高级编程 337
15.1 XML编程 338
15.1.1 XML数据类型 338
15.1.2 XML查询 339
15.1.3 XML索引 345
15.1.4 OPENXML函数 348
15.2 实践案例:操作XML数据 350
15.3 CLR编程 354
15.3.1 CLR简介 354
15.3.2 创建CLR项目 354
15.3.3 编写触发器 356
15.3.4 编写存储过程 359
15.3.5 编写普通函数 361
15.3.6 编写聚合函数 364
15.4 实践案例:使用CLR编写自定义
类型 367
15.5 SMO编程 369
15.5.1 创建SMO项目 369
15.5.2 创建SQL Server连接 372
15.5.3 创建数据库 375
15.5.4 创建数据表 375
15.5.5 编写触发器 377
15.5.6 编写存储过程 378
15.6 思考与练习 379
15.7 练一练 381
第16章 管理数据库安全 383
16.1 SQL Server的安全机制 384
16.1.1 客户级安全 384
16.1.2 网络传输级安全 384
16.1.3 服务器级安全 385
16.1.4 数据库级安全 385
16.1.5 对象级安全 386
16.2 SQL Server的身份验证模式 386
16.2.1 Windows身份验证 387
16.2.2 混合身份验证 387
16.3 实践案例:更改验证模式 388
16.4 登录名 389
16.4.1 系统登录名 390
16.4.2 Windows登录名 390
16.4.3 SQL Server登录名 393
16.5 实践案例:管理登录名 396
16.5.1 使用图形化界面查看
用户 396
16.5.2 使用图形化界面修改用户
属性 396
16.5.3 使用图形化界面删除用户 398
16.5.4 通过命令创建和删除登录
账户 398
16.5.5 使用存储过程管理登录
账户 400
16.6 数据库用户 400
16.6.1 系统数据库用户 401
16.6.2 使用向导创建数据库用户 402
16.6.3 使用存储过程创建数据库
用户 403
16.7 权限 403
16.7.1 权限的类型 403
16.7.2 授予权限 404
16.7.3 撤销权限 405
16.7.4 拒绝权限 406
16.8 角色种类 406
16.8.1 服务器角色 406
16.8.2 数据库角色 407
16.9 管理服务器角色 409
16.9.1 为角色分配登录名 409
16.9.2 将角色指派到多个登录名 410
16.10 管理数据库角色 411
16.10.1 为角色分配登录名 411
16.10.2 数据库角色 413
16.10.3 应用程序角色 415
16.11 课后练习 415
16.12 练一练 417
第17章 产品展示模块 419
17.1 系统分析 420
17.1.1 需求分析 420
17.1.2 数据库设计 421
17.2 公共部分 421
17.2.1 创建项目及设置配置文件 422
17.2.2 页面样式 422
17.2.3 实现母版页 424
17.3 产品展示 427
17.3.1 实现产品展示 427
17.3.2 查看产品 429
17.3.3 新增产品 430
17.3.4 产品管理 432
17.4 管理产品分类 434
参考答案 439
??
??
??
??