
本书以一个完整的应用案例为主线,以SQL Server为工具,全面阐述了数据库技术原理及应用。全书分为7部分:第一部分讲解数据库功能及其定义;第二部分为数据库基础,主要内容为关系模型及其实现,包括SQL中的DDL(数据定义语言);第三部分为数据库设计,主要内容为实体-关系模型、实体-关系模型到数据库设计的转换和表的规范化;第四部分为实现数据库,包括创建数据库和表,表的联系及参照完整性,SQL语言和索引;第五部分为数据库对象,包括视图、存储过程、触发器和用户定义函数;第六部分为数据库管理,包括安全管理和数据库维护;第七部分为数据库应用程序开发,包括控件及UGI程序设计,使用ADO.NET进行数据库编程等内容。
本书内容丰富、可操作性强、语言生动流畅,没有晦涩的术语,采用面向实际应用的教学方式来安排内容,使学生能够轻松愉快地掌握从事数据库领域的职业所必需的数据库技术。
本书可作为高职高专院校计算机专业和应用型高等院校计算机专业的教材和教学参考书,也适合所有希望学习数据库技术的人员使用。
前 言
数据库技术是计算机领域中最重要的技术之一。目前,不仅在各种机型上都配有数据库管理系统,而且各行各业的信息系统,乃至Internet上的信息系统也大都离不开数据库的支持。因此数据库已成为信息社会的重要基础设施。
近年来,随着Internet技术激动人心的发展,使得数据库应用及开发成为最热门的职业技能之一。因为数据库应用及开发的专业人才的需求量非常大,所以学习和掌握数据库技术的技能和知识是非常必要的。比较遗憾的是,在数据库的教学实践中,现有的大多数教材要么只讲理论,要么只讲一个数据库管理系统的使用方法,或者前半部分讲理论,后半部分讲一个数据库管理系统的使用方法。所有这些都会造成理论与实践的脱节,达不到应有的学习效果。而且很多教材是以Visual FoxPro或Access为工具讲解数据库的应用,远远不能满足市场和行业的需要。
SQL Server是目前最为流行的数据库管理系统之一,它是学生在将来的工作中最可能遇到的产品,而且学生学会了SQL Server之后,很容易弄懂Access。相反,学会了Access却不一定或很难弄懂SQL Server。因此,笔者认为,在讲授数据库原理与应用时,应该从头到尾采用SQL Server来讲解知识点,这样可取到事半功倍的效果,这才是真正的理论联系实际,走向真正的实用。再者,在进行数据库应用程序开发时,行业很少采用VBA与宏进行数据库应用程序开发,而目前很多教材在讲数据库应用程序开发时,都会贯穿讲解VBA与宏。笔者认为,这与实用相违背,与市场相脱离。面对日新月异的新技术、新方法,我们必须对现有计算机课程的设置和教学内容进行调整,以适应技术进步与市场变化的需要,使教授的知识是市场上最需要的知识。
本教材根据理论与实践并重的原则编写,采用面向实际应用的教学方式来安排内容,使学生轻松掌握从事数据库领域的职业所必需的数据库技术。本书主要特色如下:
(1) 从应用与实用的角度出发,阐述数据库应用设计与实现。
(2) 将理论与实践有机地融合。如在讲解数据库建模、关系模型和规范化时,不是抽象地讲解概念和原理,而是和应用实例融合在一起,用实例说明抽象的概念和原理。这样有助于学生对概念和知识点的理解和应用,同时也可激发学生的学习热情。
(3) 新体系、新思路。无论是内容体系、教学的模式及理念等都具有一定的新意。本书的内容及体系结构使学生感到它既具有易读性又增进知识和技能,因此具有很强的实用性。
(4) 以一个具有商业应用价值的应用实例为主线,通过任务驱动的方式展开数据库知识的讲解,在学习基本原理的同时进行实践,使学生在较轻松的气氛下掌握最重要的知识点和技能,使其成为名副其实的“理论家”和“实践家”。内容叙述深入浅出,注重培养学生的应用能力和职业技能。
(5) 面向实际应用技术,逐步展现主题鲜明的各章内容的讲解。本书将焦点集中于重要的主题来展开充分论述,而不是肤浅地涉及许多问题,罗列许多概念和术语。
(6) 先进性及实用性并重。本书的内容吸收了最新的实用方法及技术,讲解了UML在数据库设计中的应用,内容与实用的新技术同步。
(7) 以技术较全面、应用很广的SQL Server作为工具,来阐述数据库技术,而不是只讲解某一特定的数据库产品,注重数据库的共同要素,做到举一反三,触类旁通。
本书可作为高职高专院校计算机专业和应用型高等院校计算机专业的教材或教学参考书,也适合所有希望学习数据库技术的人员使用。
由于编写本书的时间略显仓促,书中难免有错漏之处,恳请专家和读者批评指正。(pmshao@163.com),本书的源代码可在http://www.pyp.edu.cn/shaopm站点下载。如果发现书中的内容或代码有不当之处,我们会在http://www.pyp.edu.cn/shaopm站点发布勘误信息。要想与本书的作者进行交流,可加入论坛http://www.pyp.edu.cn/shaopm/forum /database/default.aspx.
编 者
II
数据库原理与应用——基础、设计、实现与程序开发(SQL Server版)
II
目 录
第1章 数据库简介 1
1.1 数据库举例 1
1.2 数据库管理系统的概念 2
1.3 应用程序与数据库管理系统之间
的关系 2
1.4 数据库的数据结构 3
1.5 数据库的定义 3
1.6 习题 4
第2章 使用关系(表)存储用户数据 5
2.1 关系模型 5
2.1.1 关系模型的概念 5
2.1.2 关键字 6
2.1.3 域 7
2.2 列的数据类型 7
2.3 关系的实现 9
2.3.1 创建数据库 9
2.3.2 创建表 9
2.3.3 修改表 10
2.3.4 操作表的数据 11
2.4 习题 13
第3章 字段的属性和约束 15
3.1 字段的属性 15
3.1.1 默认值 15
3.1.2 精度和小数位数 17
3.1.3 标识、标识种子和标识
递增量 17
3.1.4 ROWGUIDCOL 18
3.1.5 空 (NULL) 值 18
3.2 约束 19
3.2.1 PRIMARY KEY 约束 19
3.2.2 UNIQUE约束 20
3.2.3 CHECK约束 21
3.2.4 字段(列)约束和表约束 22
3.3 习题 23
第4章 实体-关系模型 24
4.1 实体 24
4.2 属性 24
4.2.1 简单属性和复合属性 24
4.2.2 单值属性和多值属性 24
4.2.3 派生属性 25
4.2.4 属性的域 25
4.2.5 关键字 25
4.3 关系 26
4.3.1 关系的类型 26
4.3.2 1对1关系(1:1) 26
4.3.3 1对多关系(1:*) 26
4.3.4 多对多关系(*:*) 26
4.4 实体-关系图(E-R图) 27
4.4.1 实体类的图形化表示 27
4.4.2 关系的图形化表示 27
4.4.3 属性的图形化表示 28
4.5 实例研究 30
4.5.1 标识实体类 30
4.5.2 标识实体类间的关系 30
4.5.3 标识实体的属性 33
4.6 习题 38
第5章 实体-关系模型到数据库设计
的转换 39
5.1 将实体类转换为表 39
5.2 表的规范化 41
5.2.1 函数依赖和函数依赖传递 41
5.2.2 更新异常 42
5.2.3 规范化的本质 43
5.2.4 第一范式 43
5.2.5 第二范式 43
5.2.6 第三范式 44
5.3 表示HAS-A关系 45
5.3.1 表示1对1关系 45
5.3.2 表示1对多关系 45
5.3.3 表示多对多关系 46
5.4 实例研究 47
5.4.1 将E-R模型映射为表 47
5.4.2 对多值属性的处理 50
5.4.3 再论1对1关系 50
5.5 习题 51
第6章 创建数据库和表 52
6.1 创建数据库 52
6.1.1 理解数据库 52
6.1.2 示例 53
6.2 实例研究 55
6.3 习题 58
第7章 创建表的关系和参照完整性 59
7.1 创建表的关系 59
7.1.1 在创建表时创建外键约束 59
7.1.2 在已有的表中创建外键
约束 60
7.2 创建参照完整性 60
7.2.1 参照完整性的含义 60
7.2.2 创建级联删除规则 61
7.2.3 创建级联更新规则 62
7.2.4 对 INSERT 和 UPDATE
语句忽略外键约束 62
7.3 实例研究 63
7.4 习题 66
第8章 结构化查询语言SQL 67
8.1 对单表进行查询 67
8.1.1 使用SELECT进行投影 67
8.1.2 简单条件查询 68
8.1.3 复杂条件查询 69
8.1.4 创建计算字段的查询 76
8.1.5 排序 77
8.1.6 汇总与分组查询 78
8.1.7 查询中的表达式 79
8.2 子查询 81
8.2.1 子查询的概念 81
8.2.2 使用别名的子查询 82
8.2.3 使用 EXISTS 和NOT EXISTS
的子查询 83
8.2.4 用于替代表达式的子查询 84
8.2.5 UPDATE、DELETE语句中的
子查询 84
8.3 联接查询 84
8.4 实例研究 89
8.5 习题 92
第9章 索引 94
9.1 什么是索引 94
9.2 索引的分类 95
9.2.1 聚集索引 95
9.2.2 非聚集索引 96
9.2.3 惟一索引 96
9.3 创建与删除索引 96
9.3.1 在现有表上创建索引 96
9.3.2 在创建表时创建索引 97
9.3.3 删除索引 98
9.4 使用索引 98
9.4.1 使用聚集索引 98
9.4.2 使用非聚集索引 99
9.4.3 使用惟一索引 99
9.5 实例研究 99
9.6 习题 100
第10章 视图 101
10.1 视图综述 101
10.1.1 视图的概念 101
10.1.2 视图的作用 102
10.2 创建视图 102
10.2.1 创建简单视图 103
10.2.2 具有计算字段的视图 103
10.2.3 创建视图字段的别名 104
10.2.4 加密视图 104
10.2.5 具有数据约束的视图 105
10.3 修改和重命名视图 105
10.3.1 修改视图 105
10.3.2 重命名视图 106
10.4 通过视图修改数据 106
10.5 视图和查询的比较 106
10.6 实例研究 107
10.7 习题 109
第11章 存储过程 110
11.1 存储过程概述 110
11.2 创建简单的存储过程 110
11.3 创建带参数的存储过程 111
11.3.1 创建使用参数的简单
存储过程 111
11.3.2 创建使用参数默认值的
存储过程 112
11.3.3 使用包含通配符的参数
默认值创建存储过程 114
11.3.4 创建使用OUTPUT参数
返回数据的存储过程 114
11.4 在存储过程中调用其他存储
过程 115
11.5 执行存储过程 116
11.6 实例研究存储过程分析 116
11.7 习题 124
第12章 触发器和用户定义函数 125
12.1 触发器种类 125
12.1.1 AFTER 触发器 125
12.1.2 INSTEAD OF 触发器 125
12.2 创建触发器 125
12.2.1 创建AFTER 触发器 126
12.2.2 查看触发器 126
12.2.3 Inserted和Deleted表 126
12.2.4 AFTER 触发器应用示例 127
12.3 创建INSTEAD OF 触发器 129
12.4 触发器与约束的比较 131
12.5 修改和重命名触发器 132
12.5.1 修改触发器 132
12.5.2 重命名触发器 132
12.5.3 删除触发器 133
12.6 实例研究 133
12.6.1 触发器应用分析 133
12.6.2 用户定义函数 135
12.7 习题 138
第13章 安全管理 139
13.1 安全性示例 139
13.2 创建登录账户 140
13.2.1 用 Windows 账户访问
数据库 140
13.2.2 在SQL Server 中创建SQL
Server 登录名 141
13.3 用户 141
13.4 授予权限 143
13.5 角色 146
13.5.1 创建角色 147
13.5.2 给角色授权 147
13.5.3 向数据库角色添加用户 148
13.5.4 将成员添加到固定服务器
角色 150
13.6 习题 150
第14章 数据库维护 151
14.1 备份 151
14.1.1 概述 151
14.1.2 创建数据库备份 152
14.1.3 差异数据库备份 153
14.1.4 事务日志备份 154
14.2 还原 155
14.2.1 还原数据库备份 155
14.2.2 还原差异数据库备份 156
14.2.3 还原事务日志备份 157
14.3 附加和分离数据库 158
14.3.1 分离数据库 158
14.3.2 附加数据库 159
14.4 习题 160
第15章 控件及GUI程序设计 161
15.1 Connection和Command对象 161
15.1.1 Connection 对象 161
15.1.2 Command 对象 164
15.2 创建三层应用程序——雇员信息
管理应用程序 166
15.2.1 创建项目和窗体 167
15.2.2 创建问题域类:
Employee类 167
15.2.3 创建用户界面 171
15.2.4 创建数据存取类:
EmployeeDA类 173
15.2.5 编写GUI(图形用户界面)
代码 184
15.3 PictureBox(图片框)控件 188
15.3.1 PictureBox的常用属性 192
15.3.2 PictureBox的常用事件 193
15.3.3 Image.FromFile方法 193
15.4 组合框控件和文本框控件 193
15.4.1 ComboBox的常用属性
和方法 200
15.4.2 列表框控件的常用事件 202
15.4.3 TextBox的常用属性 203
15.4.4 TextBox的常用事件 205
15.5 列表框 205
15.5.1 列表框控件的常用属性 220
15.5.2 列表框控件的常用方法 221
15.5.3 列表框控件的常用事件 223
15.6 习题 223
第16章 使用ADO.NET进行数据库
编程 225
16.1 数据表DataTable 225
16.2 数据集和数据适配器 237
16.2.1 将数据集绑定到DataGrid
控件 257
16.2.2 行状态与行版本 260
16.3 Windows窗体中的数据绑定 261
16.3.1 简单绑定控件属性 262
16.3.2 使用CurrencyManager 268
16.4 创建和使用数据视图 269
16.4.1 使用数据库视图查询
数据 269
16.4.2 数据视图的常用属性
及方法 274
16.5 DataRelation 对象 276
16.5.1 实例:产品类别信息管理 276
16.5.2 导航表间关系 280
16.6 习题 281
参考文献 282
IV
数据库原理与应用——基础、设计、实现与程序开发(SQL Server版)
VI