一、数据库发展历程
1、人工管理阶段
简单讲就是程序员自己管理数据阶段,数据不能共享、冗余很大。
2、文件系统阶段
将数据用文件形式储存起来,多个程序可以简单共享,文件的管理由操作系统管理。
3、数据库系统阶段
为解决数据的独立性,达到共享,数据库技术应运而生。数据库有一下特点:
(1)采用数据模型,减小冗余
(2)最低冗余度
(3)较高数据独立性
(4)安全性
(5)完整性
二:数据、数据库、数据库管理系统
1、数据:描述事务的符号记录
其实在我们计算机中的数据可以分成两种一种叫做临时数据,另一种叫做持久性数据。所谓临时数据就是程序运行时和程序有段时间的交互程序结束时候数据消亡,而持久性数据则对系统起着长期持久的作用。我们的数据库系统就是处理这种持久性数据。
软件中的数据是有一定的结构的:型(type)+值(value) 例如:整型数据 32 在C语言中表示为int a = 32;
一般的在应用需求扩大数据的型也进一步扩大,讲多种相关数据以一定结构的形式组成构成特定的数据框架,这个框架就叫做数据结构(data structure),特定请况下称之为数据模式(data schema)
2、数据库(data base ,DB):是数据的集合,具有统一的结构形式并且存放在统一的储存介质内,是多种应用数据的集成,并且可以被应用程序所共享
数据库存放依据:数据提供的数据模式
数据库中的数据特点:“集成”、“共享”
3、数据库管理系统(database management system ,DBMS)是数据库的机构,它是中系统软件,负责数据库中的数据组织、数据操作、数据维护、控制以及保护和数据服务等。
数据库管理系统是数据库系统的核心,它以下主要功能:
a、数据模式定义。(为数据库构建模式,构建数据框架)
b、数据存取的物理构建。
c、数据操纵。(提供数据增删改查功能、简单算术运算统计、结构某些高级语言)
d、数据完整性、安全性定义与检查。
数据库中的数据具有共享性,而数据的共享可能引发数据的非法使用,因此必须要对数据正确的使用作出必要的规定,并且在使用的时候作出检查,这就是数据的安全性
数据的完整性和安全性的维护是数据库管理系统的基本功能
e、数据库的并发控制和故障恢复。
并发控制,简单讲就是多个用户同时访问该数据库,数据库管理系统就要保证各个用户之间相互不受到干扰。
故障恢复就是说,当数据库中的数据受到了破坏,数据库管理系统就要有能力及时进行恢复。
f、数据的服务。(拷贝、转存、重组、性能监测、分析)
常见的数据库管理系统有Access、SQL Server、Oracle、DB2、MySQL
4、应用程序
客服机/服务器模式:Visual Basic、Visual C++、PowerBuilder
浏览器/服务器模式:ASP.NET
5、数据库系统相关人员(DBA)
(1)数据库管理员:负责数据库的建立、使用、和维护
(2)应用程序开发人员:开发数据库应用的程序人员,可以使用数据库管理系统的所有功能
(3)最终用户:通过应用程序使用数据库的人员,最终用户无须自己编写程序
6、数据库系统
数据库系统(database system,DBS)是由硬件系统+数据库管理系统+数据库+数据库应用程序+数据库相关人员的人机系统
在过去数据库公司提供的仅仅是DBMS,而现在提供的是DBS,现在的产品往往是一整套的解决方案
严格意义讲数据库、数据库管理系统、数据库系统三者含义是有区别的,但是在很多场合往往没有严格区分,可能出现混淆,大家以后不要误解。例如,我们待会介绍到的桌面型数据库和网络数据库中的数据库其实是指数据库管理系统,但是习惯还是称为数据库。
(1)桌面型数据库
运行在计算机上、没有或者少量提供网络功能的数据库,例如Access等,主要满足日常小型办公使用。目前有些小型web站点背后的数据库就是Access。
(2)网络数据库
运行在网络操作系统之上,具有强大的网络功能和分布式功能的数据库,如SQL Server、Oracle、DB2等。稍具规模企业的数据库系统都是网络数据库。
三、数据模型
数据模型是数据库中数据的储存方式,是数据库系统的核心和基础。目前有3中模型:
1、层次模型:用树形结构来描述联系,例如1986年IBM推出的IMS
2、网状模型:用网状结构来描述联系,如DBTG系统
3、关系模型:它用一组二维表表示实体及实体的联系,如Access,理论基础是基于1970年IBM研究人员E.F.Codd发表的大量论文。
以上3中模型,前两种基本称为古董级别了,不是特别收藏是看不到了,目前应用最广泛的就是关系模型。自20世纪80年代以来,所有软件开发商的数据库管理系统都支持关系模型。
下面我就关系模型及其基本知识-二维表进行介绍
关系模型将数据组织成二维表格的形式,这种二维表在数学上称之为关系。
关系:一个关系对应一张二维表
关系模型:关系模型是对关系的描述,一般形式如下
关系名(属性1,属性2,......,属性n)
Students(学号,姓名,性别,出生年月,专业,党员)
Scores(学号,课程,成绩,学期)
(a)关系students(学生基本信息表)
(b)关系scores(学生成绩表)
记录:表中每一行称之为一条记录,记录也被称为元组,例如表Scores表有20行,因此有20条记录,其中的一行(030001,数学,85,11)为一条记录
属性:表中的一列为一个属性,属性也被称之为字段。每一个属性都有一个名字,叫做属性名,例如表Scores有四个属性分别是 学号、课程、成绩、学期
关键字:表中某个属性,它可以唯一确定一条记录。例如students表中的学号可以唯一确定一个学生。也就是说表students中不能出现两条学号相同的记录,因此学号是一个关键字。但是在Scores表中,学号不能成为关键字,因为一个学号对应了多条记录。
主键:一个表中可以有多个关键字但是实际中只能选择一个,被选用的成为主键。
值域:属性的取值范围。例如成绩取值是0-100,性别取值是男女。
字段(属性)和 记录 是表的基本组成成分
关系模型要求关系必须要规范化,即要求关系必须满足一定的规范条件,这些条件中最基本的一条就是:关系的每个分量必须是一个不可再分的数据项,也就是说不允许表中还有表。
关系模型最大的优点是简单,关系模型数据查找通过表,而层次模型和网状模型是通过指针链查找数据的。
四、数据库的建立和维护与修改
在Access中,一个数据库中包含的对象有表、查询、窗体、报表、宏、模块都存在同一个数据库文件(.accdb)中。
表:Access数据库中最基本的对象
查询:查询就是将一个或者多个表中符合条件的数据记录成一个集合,并以表的形式保存,以使用户查看或编辑。查询作为数据库的一个对象保存后,可以作为窗体、报表或者另一个查询的数据源。
窗体:窗体提供了一种良好的用户操作界面,是维护数据库的一种最灵活的方式。窗体的数据来源可以是表,也可以是查询。通常情况下,一个窗体只显示一条记录的信息,用户可以利用窗体上的移动按钮或滚动条查看其它记录。在窗体上,用户可以对表(或查询)中的数据进行修改、添加、删除等操作。
报表:在Access中,报表就是专门用于打印输出的设计,它不但能提供完善的打印功能,而且还能对打印内容进行格式处理。与窗体一样,报表的数据源可以是一个或多个表,也可以是查询。报表和表和查询之间没有关联性,如果改变了表和查询中的数据,报表中的数据不会随之而改变,而且报表中的数据不能直接进行修改。 报表只是一种特定的显示方式,其实质就是版面预览,一般用来查看报表的外观和版面的布局等。
1、数据库的建立
(一)字段数据类型
文本型(text) 1-255字符 储存文本
备注型(memo) 不定长,最多存储6.4万个字符 储存较长的文本
数字型(number) 字节:1个字节 整型:2个字节 单精度:4个字节 双精度:8个字节 存储数值
日期/时间(Date/Time) 8个字节,系统固定
货币型(currency) 8个字节,系统固定
自动编号型(auto number) 4个字节
是/否型(yes/no) 1位(bit) ,系统固定
OLE对象(OLE Object) 不定长,最多可储存1GB 存储图像、声音
说明:
a、实际中不需要计算机数值数据都是文本型,例如学生学号、电话号码,注意文本型的单位是字符不是字节,一个英文字符算是一个字符,一个汉字也算是一个字符。例如:“学而精专升本有1500个学员” 长度为14
b、自动编号型,当添加第一条新纪录时,自动编号字段值就自动产生,或者一次自动加1,或者随机编号
c、OLE对象:用于储存word、excel表格、图像、声音的二进制数据,最多1GB,只能在窗体或者报表中显示
2、字段属性
(一)字段大小:制定文本型或者数字型字段的长度,文本型1-255个字符,数字型由数字类型决定
(二)格式:制定字段的数据显示格式
(三)小数位数:指定小数的位数
(四)默认值:添加新纪录,自动加入字段中的值
3、表的建立
(一)确定表的结构:字段名,字段类型,字段宽度
(二)创建空数据库
(三)添加数据
(四)定义主键
4、数据库管理与维护(实验与操作)
(一)输入数据
(二)表结构修改(修改字段名称、字段类型、字段属性,插入、删除、移动等操作,重新定义主键)
(三)数据导出和导入
(四)表的复制、删除、恢复、更名(windows文件操作一样)
五、SQL的数据更新命令
INSERT
格式:INSERT INTO 表名[(字段1,字段2……..)] VALUES(常量1,常量2………………..)
DELETE
格式:DELETE FROM 表名[WHERE 条件]
UPDATE
格式:UPDATE 表 SET 字段1=表达式1,…..字段n=表达式n [WHERE 条件]