第四章 数据库系统_第1页
第四章 数据库系统_第2页
第四章 数据库系统_第3页
第四章 数据库系统_第4页
第四章 数据库系统_第5页
已阅读5页,还剩127页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章数据库系统

4.1数据库系统概述一、数据管理技术的发展

•数据管理:如何对数据进行分类.组织.储存.检索及维护。

•数据管理的三个阶段:

–人工管理阶段

–文件系统阶段

–数据库系统阶段

1、人工管理阶段

•时间:20世纪50年代中期以前

•背景:

–硬件:外存只有卡片.纸带.磁带

–软件:汇编语言

–数据批处理

•特点:

–数据不进行保存

–没有专门的数据管理软件

–数据面向应用

–只有程序的概念

2、文件系统阶段

•时间:20世纪50年代末到60年代中期

•背景:

–硬件:磁盘.磁鼓等直接存取的外存设备

–软件:操作系统.高级语言.操作系统中的文件系统是专门用于数据管理的软件

–文件批处理.联机实时处理

•特点:

–数据可以长期保存在磁盘上

–文件系统提供了数据与程序之间的存取方法

–数据冗余度大

–文件之间缺乏联系,相互孤立

3、数据库系统阶段

•时间:20世纪60年代末

•背景:

–硬件:大容量的磁盘

–联机实时处理

•特点:

–数据的结构化

–数据共享性好

–数据独立性好

–数据存取粒度小

–数据库管理系统(DBMS,databasemanagementsystem)二、数据描述1.信息的三个领域1)现实世界2)信息世界3)数据世界

三个世界术语对照表

现实世界信息世界数据世界实体记录记录值实体集文件数据集特征属性(字段)数据项实体标识符记录关键字关键数据项2.实体-联系模型1)概念

实体:客观存在并可相互区别的事物。实体可以是具体的人、事、物,也可以抽象的概念或联系。如张山、李四、电气系、数学、计算机系购买打印机、张山选修数字电路课程等。

联系:在现实世界中,事物内部以及事物之间是有联系的,这些联系在E-R模型中反映为实体之间的联系。(1)1-1关系:班级与班长(2)1-m关系:班级与同学(3)m-m关系:学生与课程三、数据库的结构

1、数据模型。要素:数据结构(对静态特性)、数据操作(对动态特性)、数据的完整性约束1)层次模型:用树形结构表示实本之间的联系特点:①树型结构

②结点间的关系只能是1—m关系2)网状模型:实体与实体之间的联系组成的结构为一“有向图”特点:①可以有一个以上的结点无父结点,至少有一个结点的父结点.70年代,CODASYL(数据系统系统语言研究会)下的(DataBaseTaskGroup.DBTG报告)②可表示为m-m关系3)关系模型:用表格形式表示实体以及实体之间的联系E.F.CODE70年代发表论文论述了它.

2、数据库结构

1)数据库系统(DBS):具有管理数据功能的计算机系统。数据库系统应该是:

•允许用户用一种叫做“数据定义语言“的专用语言建立新的数据库。

•允许用户用一种叫做“数据操作语言“或者“查询语言“的专用语言来对数据库中的数据进行查询和更新

•支持存储大量的数据,保证对数据的正确及安全使用

•控制多用户的并发访问,保证并发访问不相互影响,不损坏数据。•

提供数据的完整控制

•数据库的备份与恢复

•为用户提供了友好的接口

2)数据库管理系统(DBMS)数据库系统中用于管理数据的一套软件。DBMS的主要功能:允许用户逻辑地,抽象地处理数据,而不必涉及这些数据在计算机中是怎样存放的.特点:具有数据的逻辑独立性和物理独立性提供功能:①定义②操纵③运行管理④建立和维护⑤数据字典⑥数据通信3)数据库结构⑴用户级(外模式,子模式):逻辑结构和局部逻辑结构,是数据库用户和数据库系统的接口,数据库用户可以看见和使用的局部数据的逻辑结构和特征的描述。一个数据库通常都有多个外模式。一个应用程序只能使用一个外模式,但同一外模式可为多个应用程序所用。

⑵概念级(概念模式):数据员(DBA)看到的数据库,DBA视图整体逻辑结构和特性的描述。是所有数据库用户的公共数据视,是数据库中全部数据的逻辑结构和特征的描述。

•一个数据库只有一个模式。模式不但要描术数据的逻辑结构,还要描述数据之间的联系、数据的完整性和数据安全性要求。

⑶物理级(内模式):系统管理员.系统程序员视图,是数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。•一个数据库只有一个内模式。内模式并不涉及物理记录,也不涉及硬件设备。

用户A用户B用户n子模式1子模式2子模式n概念模式内模式用户级概念级存储级图4.1数据库分层结构示意图外模式4)数据独立性:三个抽象层次,两次映像。使数据库管理中的数据具有两个层次的独立性。⑴物理独立性:模式与内模式之间的映像当数据库的存储结构发生变化,如的存储数据库的硬件变化或存储方法变化,引起内模式变化,但逻辑结构可以不变,即应用程序可以不修改⑵逻辑独立性:外模式与模式之间映像当数据管理范围扩大或某些管理体制要求发生改变后,数据的全局逻辑结构发生变化,对不受该全局变化影响的那些局部而言,最多该映像改变,而程序不需改变。

3、数据的操作过程

应用程序A缓冲区数据库管理系统DBMS应用程序外模式模式内模式操作系统存储设备12345678910图4.2数据库操作过程示意图4.2

关系数据库系统一、关系数据库的特点

数据结构简单可直接处理多对多的关系能够一次获得多个记录数据数据独立性较高有坚实的理论基础每一列具有不同的名称每一列具有同一类型的域值任意两行不能完全相同每一列是不可再分的数据单位行、列次序可以互换每一个关系有一个唯一的主关键字二、基本概念和术语1、属性:关系中的列。2、元组:关系中的每一行为一个元组。3、关系:一个二维表。4、关系模式:一个关系的属性名表,即二维表的框架称为关系模式。5、主关键字、候选关键字:能唯一决定一个元组的属性或属性组称关键字或候选关键字。从中选定一个作为主关键字。6、关系数据库:对应于一个关系模型的全部关系的集合。三、关系的代数1、并运算(R∪S):设R和S为同类关系,则R与S的并运算结果是R中的元素和S中的元素共同组成的集合。

关系R关系SRUS关系ABCabcdafcbdABCbgadafABCabcdafcbdbga2、

交运算(R∩S):既出现在R中又出现在S中的元素组成的集合。3、差运算(R—S):只在R中出现,不在S中出现的元素组成的集合。ABCdafABCabccbd4、投影()该运算作用于关系R将产生一个新关系S,S只具有R的某几个属性列。5、选择()该运算作用于关系R也将产生一个新关系S,S的元组集合是R的一个满足某条件C的子集。

6、笛卡儿积

RXS,其关系模式是R和S的模式的并集,是R和S的元组以所有可能的方式组合起来。当R和S有同名的属性,至少要为其中一个属性重新命名。ACacdfcdABCabccbd7、自然连接R||S其关系模式是R和S模式的并集。假设A1、A2、……An是R和S的模式中的公共属性,那么如果R的元组r和S的元组s在这些属性上取值都相同,r和s组合而成的元组就归入该自然连接中。ABC1ab3cd5efDEA4g33h72i5ABCDE3cd4g5ef2iRSR||S4.3关系数据库设计理论

4.3.1函数依赖

1、函数依赖的定义:设X、Y为关系R中两个属性集,若对于X中的每一个属性值,在Y中只有一个值与之对应,则称X函数决定Y,或Y函数依赖X。2、完全函数依赖

设X、Y为关系R中两个属性集,若Y完全函数依赖于X,则Y函数依赖于X而并不函数依赖于X中任一子集。例如:sc(s#,C#,grade)关系。grade应由S#和C#共同决定,不能为其中之一决定。3、

传递函数设X、Y、Z为关系R中三个属性集,若X决定Y,,Y不决定X,而Y决定Z,则称Z对X为传递函数依赖。例如:Student(S#,Sname,City,postalcode)S#决定City,而City决定postalcode4.3.2模式设计

一、问题的提出

例:描述学校的数据库:

学生的学号(Sno)、所在系(Sdept) 系主任姓名(Mname)、课程名(Cname) 成绩(Grade)单一的关系模式:Student<U、F>U={Sno,Sdept,Mname,Cname,Grade}学校数据库的语义:

⒈一个系有若干学生,一个学生只属于一个系;⒉一个系只有一名主任;⒊一个学生可以选修多门课程,每门课程有若干学生选修;⒋每个学生所学的每门课程都有一个成绩。

属性组U上的一组函数依赖F:

F={Sno→Sdept,Sdept→Mname,(Sno,Cname)→Grade}

SnoCnameSdeptMnameGrade存在问题:⒈数据冗余太大浪费大量的存储空间

例:每一个系主任的姓名重复出现⒉更新异常(UpdateAnomalies)数据冗余,更新数据时,维护数据完整性代价大。 例:某系更换系主任后,系统必须修改与该系学生有关的每一个元组⒊插入异常(InsertionAnomalies)该插的数据插不进去例,如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库。⒋删除异常(DeletionAnomalies)不该删除的数据不得不删 例,如果某个系的学生全部毕业了,我们在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。结论:Student关系模式不是一个好的模式。“好”的模式应该满足:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。原因:由于在模式中的某些数据依赖引起的解决方法:通过分解关系模式来消除其中不合适的数据依赖。二、问题的根源

1、

完全依赖与部分依赖2、

传递依赖三、解决途径

将原关系按一定的规范进行分解。4.3.3分解的原则

1、

无损连接当对关系模式R进行分解时,R的元组将分别在相应属性集进行投影而产生新的关系。如果对新的关系进行自然连接得到的元组的集合与原关系完全一致,则称为无损连接。2、

保持依赖当对关系模式R进行分解时,R的函数依赖集也将按相应的模式进行分解。如果分解后总的函数依赖集与原函数依赖集保持一致,则称为保持依赖。4.3.4分解的方法

模式分解的两个规则:1、公共属性共享2、相关属性合一模式分解的三种方法:1、部分依赖归子集;2、完全依赖随键码;3、基本依赖为基础,中间属性作桥梁。4.3.5关系模式规范化

规范化理论是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。

范式:就是符合某一种级别的关系模式的集合。通过分解把属于低级范式的关系模式转换为几个属于高级范式的关系模式的集合。这一过程称为规范化。主要的范式:1、

第一范式(1NF):一个关系模式R的所有属性都是不可分的基本数据项。例:学生表(Sno,Sname,Birthday,….)其中:Birthday可拆成Year,Month、和Date三个字段。就不满足1NF。2、

第二范式(2NF):关系模式R属于第一范式,且每个非主属性都完全函数依赖于键码。例:关系模式SLC(Sno,Sdept,Sloc,Cno,Grade)Sloc为学生住处,假设每个系的学生住在同一个地方。函数依赖包括:(Sno,Cno)fGradeSno→Sdept(Sno,Cno)PSdeptSno→Sloc(Sno,Cno)PSlocSdept→Sloc

SLC的码为(Sno,Cno)SLC满足第一范式。

非主属性Sdept和Sloc部分函数依赖于码(Sno,Cno)SnoCnoGradeSdeptSlocSLC(1)插入异常 假设Sno=95102,Sdept=IS,Sloc=N的学生还未选课,因课程号是主属性,因此该学生的信息无法插入SLC。(2)删除异常假定某个学生本来只选修了3号课程这一门课。现在因身体不适,他连3号课程也不选修了。因课程号是主属性,此操作将导致该学生信息的整个元组都要删除。

(3)数据冗余度大如果一个学生选修了10门课程,那么他的Sdept和Sloc值就要重复存储了10次。(4)修改复杂例如学生转系,在修改此学生元组的Sdept值的同时,还可能需要修改住处(Sloc)。如果这个学生选修了K门课,则必须无遗漏地修改K个元组中全部Sdept、Sloc信息。

原因Sdept、Sloc部分函数依赖于码。解决方法SLC分解为两个关系模式,以消除这些部分函数依赖

SC(Sno,Cno,Grade)SL(Sno,Sdept,Sloc)3、第三范式 定义4.8:关系模式R<U,F>中若不存在这样的码X、属性组Y及非主属性Z(Z

Y),使得X→Y,Y→Z,X→Z成立,即不存在传递函数依赖,则称R<U,F>∈3NF。例,SL(Sno,Sdept,Sloc)∈2NFSL(Sno,Sdept,Sloc)∈3NFSD(Sno,Sdept)∈3NFDL(Sdept,Sloc)∈3NF4.4关系数据库语言一、定义DBMS提供给用户对数据进行操作的语言。以关系运算和关系演算(谓词演算)为基础。二、功能1、数据定义:定义数据模式、数据类型以建立数据模型。2、数据操纵:对数据进行查询、更新(插入、删除、修改等)操作。3、数据控制:使用权限、完整性、一致性等进行控制。

三、特点1、一体化的特点。2、非过程化特点。3、面向集合的存取方式。4、两种使用形式1)自含系统2)宿主系统(嵌入式系统)。

四、SQL语言

1、SQL语言的发展SQL(StructuredQueryLanguage,即结构化查询语言)。1974年IBM圣约瑟研究实验室为关系数据库SystemR研制。1986年成为ANSI(美国国家标准)1987年成为国际标准化组织(ISO)批准为国际标准。已经成为关系数据库领域中的一个主流语言。2、特点

1)高度非过程化2)面向集合的操作方式3)简洁易学,灵活易用4)使用方式:自含式和嵌入式

※“游标”的概念:主语言只能一次访问一个记录,而SQL一次可以操作若干条记录,如何协调,通过“游标”来实现。3、SQL数据库的结构SQL用户1SQL用户2视图1视图2基本表1基本表2基本表3基本表4存储文件1存储文件2存储文件2存储文件2外模式模式内模式4、SQL基本命令1)数据定义:(1)定义表格式:CREATETABLE表名(列名1,类型,宽度,小数位数,NULL)。例:CreateTableStudents(snochar(5)notNULL,//列完整性约束snamechar(20)notNULL,//列完整性约束ssexchar(2),sageint,sdeptchar(15),constraintun_snounique(sno);//表完整性约束constraintun_snameunique(sname);//表完整性约束[例1]建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。CREATETABLEStudent(SnoCHAR(5)NOTNULLUNIQUE,

SnameCHAR(20)UNIQUE,

SsexCHAR(1),SageINT,SdeptCHAR(15));

[例2]建立一个“学生选课”表SC,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno,Cno)为主码。CREATETABLESC(SnoCHAR(5),CnoCHAR(3),Gradeint,Primarykey(Sno,Cno));

(2)定义视图格式:CREATEVIEW<视图名>ASSELECT属性名1,属性名2,FROM<表名>WHERE<条件>

[例1]:CreateViewC_StudentASSELECTsno,sname,sage,sdeptFromStudentsWhereSdept=”电气系”

[例2]建立信息系学生的视图,并要求透过该视图进行的更新操作只涉及信息系学生。CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROMStudentWHERESdept='IS'WITHCHECKOPTION;

[例3]建立信息系选修了1号课程的学生视图。CREATEVIEWIS_S1(Sno,Sname,Grade)ASSELECTStudent.Sno,Sname,GradeFROMStudent,SCWHERESdept='IS'ANDStudent.Sno=SC.SnoANDSC.Cno='1';

(3)定义索引格式:CREATEINDEX<索引表名>ON<表名(索引关键字)>;

例:CREATEUNIQUEINDEXStu_SnoONStudents(Sno);(4)撤消定义DROPTABLE表名DROPVIEW视图名DROPINDEX索引名

2)数据操纵(1)查询

1)格式:

SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]FROM<表名或视图名>[<表名或视图名>,][WHERE<条件表达式>][GROUPBY<列名1>[HAVING<条件表达式>]][ORDERBY<列名2>[ASC|DESC]]

查询用到的学生-课程数据库如下:学生表:Student(Sno,Sname,Ssex,Sage,Sdept)课程表:Course(Cno,Cname,Cpno,Ccredit)学生选课表:SC(Sno,Cno,Grade)

(1)

查询列:SELECT<列表名>

FROM<表名>[例1]:SELECT

sno,snameFROMStudent(2)查询行:SELECT*FROM表名WHERE<条件>[例2]:SELECT

*FROMStudentWHEREsdept=”电气系”(3)查询经计算的值[例3]查全体学生的姓名及其出生年份。SELECTSname,2013-SageFROMStudent;

输出结果:Sname2013-Sage

李勇1986刘晨1987

王名1990张立1989(4)带条件的查询[例1]查询所有年龄在20岁以下的学生姓名及其年龄。

SELECTSname,SageFROMStudentWHERESage<20;

SELECTSname,SageFROMStudentWHERENOTSage>=20;

[例2]查询年龄不在20~23岁之间的学生姓名、系别和年龄。SELECTSname,Sdept,SageFROMStudentWHERESageNOTBETWEEN20AND23[例3]查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。SELECTSname,SsexFROMStudentWHERESdeptIN('IS','MA','CS');

(Sdept=‘IS’.OR.Sdept=‘MA’.OR.Sdept=‘CS’)(5)排序查询SELECT<列表名>FROM<表名>ORDERBY[DESC][例1]查询电气系的学生,并按学号从小到大排列。SELECT*FROMStudentWHEREsdept=”电气系”ORDERBYsno

[例2]查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。SELECTSno,GradeFROMSCWHERECno='3'ORDERBYGradeDESC;

[例3]查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。SELECT*FROMStudentORDERBYSdept,SageDESC;(6)统计查询:SELECTCOUNT(数值列名),SUM(数值列名),AVG(数值列名)[例1]统计每门课选人数SELECTcno,COUNT(sno)FROMSCGROUPBYcno[例2]查询学生总人数。SELECTCOUNT(*)FROMStudent;[例3]查询选修了课程的学生人数。SELECTCOUNT(DISTINCTSno)FROMSC;

(2)数据操作1)插入:INSERTINTO

<表名>(列名)VALUES(列表值)2)更新数据:UPDATE<表名>SET数据项名=更新数据WHERE<条件>删除行:DELETEFROM<表名>WHERE<条件>

[例1]将一个新学生记录(学号:95020;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。INSERTINTOStudentVALUES('95020','陈冬','男','IS',18);[例2]将学生95001的年龄改为22岁。UPDATEStudentSETSage=22WHERESno='95001';

[例3]

将所有学生的年龄增加1岁。UPDATEStudentSETSage=Sage+1;[例4]删除学号为95019的学生记录。DELETEFROMStudentWHERESno='95019'[例5]删除计算机科学系所有学生的选课记录。DELETEFROMSCWHERE'CS'=(SELETESdeptFROMStudentWHEREStudent.Sno=SC.Sno);

3)数据控制(1)授权语句:GRANT权限表ON表名TO用户名表[WITHGRANTOPTION](2)撤消授权:REVOKE<授权内容>ON<表名>FROM<用户名>

操作权限[例1]把查询Student表权限授给用户U1GRANTSELECTONTABLEStudentTOU1;[例2]把对Student表和Course表的全部权限授予用户U2和U3GRANTALLPRIVILIGESONTABLEStudent,CourseTOU2,U3;

[例3]把用户U4修改学生学号的权限收回REVOKEUPDATE(Sno)ONTABLEStudentFROMU4;

4.5数据库设计

将现实世界与数据库系统密切的、有机的、协调一致的结合过程。1、设计的步骤:1)需求分析2)概念设计3)逻辑设计

4)物理设计

5)数据库实施6)运行维护2、需求分析1)系统调查⑴用户要求

①用户信息要求②用户处理要求③用户对安全性、完整性的要求⑵

做法:①了解组织机构

②了解各部门的业务范围

③确定新系统的边界。⑶描述工具:SA方法:用数据流图、数据字典、判定表等描述系统的处理过程。3、概念结构设计:是设计的关键1)概念模型:将现实世界中的客观对象首先抽象为不依赖于任何具体机器的信息结构,不是任何DBMS支持的模型,是概念级的。

特点:①是客观世界的抽象和概括。②简洁、明晰、便于理解。③易于更动。④可以向任一模型转换。2)主要工具:E—R图(Entityrelationshipdiagram)⑴三种符号:①矩形框

表示实体:客观存在并可相互区分的事物②菱形框:

表示实体间的联系③圆:表示实体的属性学生学生选课学号学生课程学生选课nm学号姓名年龄电话课程号课程名学分任课教师成绩学号课程号图4.3学生与课程E—R图

3)局部视图设计;设计局部E—R图。

4)视图集成:各子系统的分E—R图设计好后,将各个分E—R图集成为一个系统的整体E-R图。

4、逻辑结构设计将概念结构设计阶段设计好的E—R图转换为与选用的DBMS产品所支持的数据模型相符的逻辑结构。

E-R图转换成关系模型的方法:(1)1-1联系:两个实体转换成两个关系。另外在一个关系中加入另一个关系的码。(2)1-m联系:将m端实体转换成的关系中加入1端实体转换成的关系码。(3)m-m联系:将联系实体转换成为关系,关系的属性为诸实体的码加上联系具有的属性,而联系的码则为各实体码的组合。5、物理结构设计⑴确定数据的存储安排:①表和索引分别放在不同的磁盘上;②将较大表分别放在两个磁盘上;③将日志文件和数据库对象分开;⑵

存取路径的选择与调整;⑶确定系统配置;6、数据库的实施与维护⑴数据载入与应用程序的调试;⑵数据库的试运行;⑶数据库的运行和维护。设计过程中的注意事项:

避免冗余

设计过程中注意:任何事物都只表达一次否则既浪费空间,又容易造成不必要的麻烦。

简单性

设计过程中,要设法避免引入过多的元素,要应该尽量简单明了。

4.5数据库的安全和完整性约束

一、数据库破坏的原因1、系统故障;2、并发所引起的数据一不致;3、人为破坏;4、输入或更新数据库的数据有误。二、数据库的安全1、定义视图2、访问控制1)一般用户2)特权控制3)具有DBA特权3、解决用户访问权限问题的方法1)用户的标识与鉴别2)授权三、数据加密1、字符加密2、文件加密3、数字签名

四、完整性约束:主要指值的约束和结构的约束。1、完整性约束的类型1)静态列约束:对一个列取值域的说明。2)静态元组约束:规定组成一个元组的各列值之间的约束关系。3)静态关系约束:在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。4)动态列级约束:指修改定义或修改列值时应满足的约束条件。5)动态元组约束:指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。6)动态关系约束:加在关系变化前后状态上的限制条件。2、完整性约束的说明1)用过程说明约束;2)用断言说明约束;3)用触发器说明约束。4.6VFP系统介绍一、VFP的特点1、数据库的概念:表与数据库的概念分开。2、有直观方便的操作环境。3、主要是面向对象的程序设计,面向过程也可以。4、丰富的开发工具(表单、报表、标签、菜单、工具栏、类等)。5、用户可以生成真正的事件驱动的应用程序。6、简单、灵活、多样的数据交换手段。如文本文件、电子表格、OLE等等。7、检索速度快。8、直观的帮助系统。(6.0系统以后需装MSDN)

二、VFP系统的发展过程

dBASEⅡ、Ⅲ→Foxbase→FoxproforDOS→FoxproforWindows→VisualFoxpro3.0→VisualFoxpro5.0→VisualFoxpro6.0、7.0、8.0、9.0三、开发系统界面

四、主要数据类型

1、字符型Character;2、货币型Currency;3、日期型Date;4、日期时间型Datetime;5、双精度型Double;6、浮点型Float;7、通用型General;8、整型Integer;9、逻辑型Logical;10、备注型Memo;11、字符型(二进制)Character(binary);12、备注型(二进制)Memo(binary)。五、主要文件类型.PJX 项目.DBC 数据库文件.DBF 表文件.FRX报表.MNX菜单.SCX 表单.VCX 可视类库.PRG 程序.FXP 编译后的程序.EXE 可执行程序六、对象

1、表单;2、表单集;3、表单中的各种控件;4、报表和标签;5、菜单;6、工具栏。七、操作符

1、算术运算符+、-、*、/、%、**(^)。2、关系运算符<、>、<=、>=、!=(#、<>)、=、==。例:a="10"ifa=="10"thenb=20?bendif

3、逻辑运算符.AND.、.OR.、.NOT.。4、特殊运算符$:包含运算符。例在查找时用:“李”$姓名;&:宏运算符(宏代换)。

例1:STORE'customer'TOgcTableNameUSE&gcTableName(相当于usecustomer)例2:x="Fox"?“&x.Pro”显示结果:FoxPro八、函数

1、数据类:

Alltrim()、At()、Empty()、Space()、Str()、Chr()、Substr()、Val()、Date()、Time()、Year()、Month()、Day()、Ctod()、Dtoc()等。2、数据库类

Dbc()、DbUsed()、Field()、FCount()、Bof()、Eof()等。3、环境类CAPSLOCK()、INSMODE()、NUMLOCK()等。4、文件类FILE()等。注:在系统帮助的“语言参考”下“语言分类”中说明了系统的各类函数。九、数据库及表的建立与操作

1、创建数据库1)用项目创建2)命令CREATEDATABASE名字2、数据库操作1)打开:OPENDATABASE数据库名2)关闭:CLOSEDATABASE3)指定:SETDATABASETO数据库名4)修改:MODIDATABASE数据库名5)删除:DELEDATABASE数据库名。

3、表结构的建立

1)在数据库下创建:用向导和新建两种方法;2)直接用CREATE命令(建立自由表);3)用SQL语句:CREATETABLE(要紧跟CREATEDATABASE命令之后,建立数据库表)。

4、表中数据输入1)结构创建后,立即输入;2)追加记录:APPEFROM<其它表或文件名>;3)插入:INSERTBLANK[BEFOR]。

5、表中记录指针移动

1)相对移动Skip±n2)绝对移动Gon

6、表中记录指针定位

1)Locate:顺序查找到第一个满足条件的记录。。2)Find3)Seek:仅能在索引过的表中进行查找,而且是对关键字的精确查找,除非用SETEXACTOFF。

7、浏览记录

1)LIST、DISP2)BROWSE3)EDIT8、表及记录的维护1)表的修改①结构的修改MODISTRU②记录修改CHANGEREPLACEEDITUPDATE(SQL修改语句)2)表记录的删除DELETERECALLPACK3)清除表中全部记录ZAP9、表记录的筛选SETFILTERTO条件SETFILTERTO(恢复)

十、索引

1)VFP中索引的种类主索引(关键字索引):指定的字段或表达式中不允许重复值的索引。候选索引:指定的字段或表达式中不允许有重复值,但可以建多个候选索引。唯一索引:指定的字段或表达式中可以有重复值,但在索引文件中只出现重复值的第一个记录。普通索引:指定的字段可以出现重复值的索引。2)操作命令:建立索引:

INDEXON

关键字TO<索引文件名>打开

USE

表名

INDEX

索引文件名

或分两部:

USE表名

SETINDEXTO

索引文件名

1、用SQL语句;2、用视图(View);3、数据库中建立查询。

十一、查询十二、主要程序设计语句

1、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论