第1章 数据库系统概述 1
1.1 数据管理技术的发展 1
1.1.1 数据和数据管理 1
1.1.2 数据管理发展的三个阶段 2
1.2 数据库系统 5
1.2.1 数据库系统的组成 5
1.2.2 数据库系统结构 8
1.3 数据模型 9
1.3.1 数据处理的三个阶段 9
1.3.2 常见的数据模型 13
1.4 处理大规模数据的数据库 17
1.4.1 分布式数据库 17
1.4.2 并行数据库 20
1.4.3 NoSQL数据库 23
1.4.4 云数据库 25
1.4.5 XML数据库 28
习题1 30
第2章 关系型数据库基本理论 31
2.1 关系数据模型 31
2.1.1 关系数据结构 31
2.1.2 关系运算 35
2.1.3 关系的完整性约束 36
2.2 关系代数基本理论 38
2.2.1 传统的集合运算 39
2.2.2 专门的关系运算 42
2.2.3 关系代数表达式及其应用实例 46
2.3 关系数据库的规范化理论 47
2.3.1 关系模式规范化的必要性 47
2.3.2 函数依赖 49
2.3.3 关系的范式及规范化 51
2.3.4 关系模式的分解 53
习题2 56
第3章 数据库设计 59
3.1 数据库设计概述 59
3.1.1 数据库设计目标和方法 59
3.1.2 数据库设计的基本步骤 61
3.2 需求分析 62
3.2.1 需求分析的任务和目标 63
3.2.2 需求分析的步骤 63
3.2.3 数据流图 64
3.2.4 数据字典 67
3.3 概念结构设计 68
3.3.1 概念结构设计任务和E-R模型的特点 68
3.3.2 概念结构设计的基本方法 68
3.3.3 概念结构设计的主要步骤 69
3.3.4 局部E-R模型的设计 70
3.3.5 全局E-R模型的设计 77
3.3.6 概念结构设计实例 81
3.4 逻辑结构设计 86
3.4.1 E-R模型向关系模式的转换 86
3.4.2 关系模式的优化 90
3.5 物理结构设计 93
3.5.1 设计物理结构 93
3.5.2 评价物理结构 94
3.6 数据库的实施 95
3.7 数据库运行和维护 95
习题3 96
第4章 SQL Server系统概述 98
4.1 SQL Server系统简介 98
4.1.1 SQL Server的版本 98
4.1.2 SQL Server系统数据库 99
4.1.3 SQL Server三个关键系统表 99
4.2 Transact-SQL简介 102
4.2.1 SQL语言的发展与特点 102
4.2.2 Transact-SQL语法基础 103
4.3 Transact-SQL流程控制语句 112
4.3.1 BEGIN … END语句 112
4.3.2 分支语句 113
4.3.3 循环语句 115
4.3.4 RETURN语句 116
4.3.5 WAITFOR语句 117
4.3.6 TRY…CATCH语句 117
4.4 SQL Server存储机制 118
4.4.1 SQL Server数据页 118
4.4.2 SQL Server数据页类型 119
4.4.3 DBCC命令 120
4.4.4 实例分析 121
习题4 125
第5章 数据库和数据表管理 126
5.1 SQL Server数据库概述 126
5.1.1 数据库文件类型 126
5.1.2 数据库文件组 127
5.2 SQL Server数据库基本管理 127
5.2.1 创建用户数据库 127
5.2.2 数据库结构的修改 132
5.2.3 数据库文件的更名、删除 136
5.3 SQL Server数据表管理 137
5.3.1 表的创建与维护 137
5.3.2 表中数据的维护 146
5.3.3 数据表的行列互换输出 148
习题5 149
第6章 数据查询与游标机制 150
6.1 基本查询 150
6.1.1 SELECT查询语句的结构 150
6.1.2 简单查询 151
6.1.3 带有WHERE子句的查询 154
6.1.4 带有ORDER BY子句的查询 156
6.1.5 带有GROUP BY子句的查询 157
6.1.6 输出结果选项 158
6.1.7 联合查询 159
6.2 多表查询 160
6.2.1 连接查询 160
6.2.2 子查询 164
6.3 游标机制 170
6.3.1 游标概述 170
6.3.2 游标的管理 171
6.3.3 利用游标修改和删除表数据 176
习题6 176
第7章 视图与索引 178
7.1 视图 178
7.1.1 视图的基本概念 178
7.1.2 创建视图 179
7.1.3 修改视图 184
7.1.4 删除视图 185
7.1.5 使用视图 185
7.2 索引 187
7.2.1 索引的基本概念 187
7.2.2 创建索引 189
7.2.3 管理索引 192
习题7 196
第8章 存储过程、触发器和用户定义函数 198
8.1 存储过程 198
8.1.1 存储过程概述 198
8.1.2 创建存储过程 200
8.1.3 调用存储过程 206
8.1.4 管理存储过程 207
8.2 触发器 210
8.2.1 触发器概述 210
8.2.2 创建触发器 211
8.2.3 管理触发器 217
8.3 用户定义函数 219
8.3.1 用户定义函数概述 219
8.3.2 创建用户定义函数 220
8.3.3 管理用户定义函数 223
习题8 224
第9章 数据库并发控制 225
9.1 事务 225
数据库和数据表管理
数据库是存放数据的容器,在设计一个应用系统时,必须先设计数据库。数据库中的数据及相关信息通常被存储在一个或多个磁盘文件(即数据库文件)中,而数据库管理系统为用户或数据库应用程序提供统一的接口来访问和控制这些数据,使得用户不需要直接访问数据库文件。
数据库中最重要的对象是数据表,简称表(table),表中存储了数据库的数据。对数据库和表的操作是开发人员的一项重要工作。
5.1 SQL Server数据库概述
SQL Server 数据库是存放表和视图、索引、存储过程和触发器等数据库对象的逻辑实体,从逻辑角度组织与管理数据。
5.1.1 数据库文件类型
在SQL Server中,数据库是由数据文件和事务日志文件组成的,一个数据库至少应包含一个数据文件和一个事务日志文件。包括系统数据库在内的每个数据库都有自己的文件集,而且不与其他数据库共享这些文件。SQL Server 数据库具有如下三种类型的文件。
1.主数据文件
主数据文件是数据库的起点,其中包含数据库的初始信息,记录数据库所拥有的文件指针。每个数据库有且仅有一个主数据文件,这是数据库必需的文件。主数据文件的扩展名是.mdf。
2.辅助数据文件
除主数据文件以外的所有其他数据文件都是辅助数据文件。辅助数据文件存储主数据文件未存储的所有其他数据和对象,它不是数据库必需的文件。当一个数据库需要存储的数据量很大(超过了Windows操作系统对单一文件大小的限制)时,可以用辅助数据文件来保存主数据文件无法存储的数据。辅助数据文件可以分散存储在不同的物理磁盘中,从而可以提高数据的读写效率。辅助数据文件扩展名为.ndf。
3.事务日志文件
在SQL Server中,每个数据库至少拥有一个自己的日志文件,也可以拥有多个日志文件。日志文件最小是1MB,用来记录所有事务以及每个事务对数据库所做的修改。日志文件的扩展名是.ldf。
在创建数据库的时候,日志文件也会随之被创建。如果系统出现故障时,常常需要使用事务日志将数据库恢复到正常状态。这是SQL Server的一个重要的容错特性,它可以有效地防止数据库的损坏,维护数据库的完整性。
在SQL Server中,用户还可以指定数据文件的大小能够自动增长。在定义数据文件时,指定一个特定的增量,每次扩大文件时均按此增量来增长。另外,每个文件的大小可以指定一个最大值,当文件大小达到最大值时,就不再增长。如果没有指定文件最大值,文件可以一直增长到磁盘没有可用空间为止。
5.1.2 数据库文件组
为了有助于数据布局和管理任务,SQL Server 允许用户将多个文件划分为一个文件集合,这些文件可以在不同的磁盘上,并为这一集合命名,这就是文件组。
文件组是数据库中数据文件的逻辑组合,数据库文件组有主文件组、用户定义文件组和默认文件组三类。
1.主文件组
主文件组是包含主要文件的文件组。所有系统表和没有明确分配给其他文件组的任何文件都被分配到主文件组中,一个数据库只有一个主文件组。
2.用户定义文件组
用户定义文件组是用户首次创建数据库时,或修改数据库时自定义的,其目的是为了将数据存储进行合理的分配,以提高数据的读写效率。
3.默认文件组
每个数据库中均有一个文件组被指定为默认文件组。如果在数据库中创建对象时没有指定对象所属的文件组,对象将被分配给默认文件组。在任何时候,只能将一个文件组指定为默认文件组。
关于默认文件组有如下说明:
(1)默认文件组中的文件必须足够大,能够容纳未分配给其他文件组的所有新对象。
(2)如果没有指定默认文件组,则将主文件组作为默认文件组。
(3)PRIMARY文件组是默认文件组。
5.2 SQL Server数据库基本管理
在SQL Server中,所有类型的数据库管理操作有两种方式:一是SSMS图形化界面方式;二是Transact-SQL语句代码方式。
5.2.1 创建用户数据库
创建数据库就是为数据库确定名称、大小、存放位置、文件名和所在文件组的过程。在一个SQL Server实例中,最多可以创建32 767个数据库,数据库的名称必须满足系统的标识符规则。在命名数据库时,一定要使数据库名称简短并有一定的含义。
例5.1 创建教学管理数据库JXGL。主数据文件逻辑名为JXGL.mdf,保存路径为D:\ JXGLSYS\DATA,日志文件的逻辑名为JXGL_log.ldf,保存路径为D:\JXGLSYS\ Data_log。主数据文件大小为3MB,文件大小不受限制,增长量为1MB;日志文件的初始大小为1MB,最大为20MB,增长比例为10%。
1.利用SSMS图形化方式
利用图形化方法SSMS可以非常方便地创建数据库,尤其对于初学者来说简单易用。具体的操作步骤如下:
(1)在SSMS窗口的“对象资源管理器”中展开服务器,然后选择“数据库”结点。
(2)在“数据库”结点上右击,从弹出的快捷菜单中选择“新建数据库”命令,如图5.1所示。
图5.1 选择“新建数据库”命令
(3)执行上述操作后,会弹出“新建数据库”对话框,如图5.2所示。在这个对话框中有三个选项,分别是“常规”“选项”和“文件组”,默认是“常规”选项。完成这三个选项中的内容之后,就完成了数据库的创建工作。
(4)在“数据库名称”文本框中输入新建数据库的名称,例如本例输入JXGL。
(5)在“所有者”文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用“使用全文索引”复选框。本例中取<默认值>。
(6)在图5.2的“数据库文件”列表中,包括两行:一行是行数据文件,另一行是日志文件。通过单击下面相应的按钮,可以添加或者删除相应的数据文件。该列表中各字段值的含义如下:
逻辑名称——指定该文件的文件名。
文件类型——用于区别当前文件是数据文件还是日志文件。
文件组——显示当前数据库文件所属的文件组。
初始大小——指定该文件的初始容量,在SQL Server 2012中数据文件的默认值为5MB,日志文件的默认值为2MB。
自动增长——用于设置在文件的容量不够用时,文件根据何种增长方式自动增长。因为本例中日志文件的最大值为20MB,通过单击“自动增长”列中的JXGL_log省略号按钮,打开“更改JXGL_Log的自动增长设置”对话框进行设置,如图5.3所示。做日志文件大小修改,本例中设为20。
图5.2 “新建数据库”对话框
图5.3 JXGL_log自动增长设置修改
路径——指定存放该文件的目录。
(7)单击“选项”选择页,设置数据库的排序规则、恢复模式、兼容级别和其他需要设置的内容,如图5.4所示。
(8)单击“文件组”选择页,可以设置数据库文件所属的文件组,还可以通过“添加”或者“删除”按钮更改数据库文件所属的文件组,如图5.5所示。
(9)完成以上操作后,就可以单击“确定”按钮关闭“新建数据库”对话框。至此,便成功创建了一个数据库。
可以通过“对象资源管理器”窗口查看新建的数据库。
……