数据库应用基础——基于Visual FoxPro 9.0(第3版)(txt+pdf+epub+mobi电子书下载)

作者:王衍

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

数据库应用基础——基于Visual FoxPro 9.0(第3版)

数据库应用基础——基于Visual FoxPro 9.0(第3版)试读:

前言

本书是浙江省精品课程教材。Visual FoxPro作为一个关系数据库管理系统软件,从诞生起就一直是高等学校非计算机专业,特别是经济管理类专业选用的计算机教学语言之一。20余年来,从dBASE、FoxBASE到Visual FoxPro之所以一直长盛不衰,不仅是因为Visual FoxPro本身作为微软的产品在Windows平台上不断发展完善,更主要的是,这一系统软件集程序设计和数据库语言于一体。在程序设计方面,既支持传统的面向过程程序设计,又支持目前广泛采用的面向对象程序设计;在数据库方面,既有自身的特点,又支持SQL-SELECT标准的数据库结构查询语言,同时,Visual FoxPro还支持Web服务,具有跨平台数据应用能力。因此,作为继“大学计算机基础”的后续课程,选择Visual FoxPro作为“数据库应用基础”或“程序设计基础”课程的环境进行教学是比较恰当的。

本书根据教育部提出的非计算机专业计算机基础课程教学要求编写,主要具有以下特点。

1.以Visual FoxPro 9.0为基础,反映最新成果。尽管作为基础教学,主要应用的是Visual FoxPro的基本内容,但Visual FoxPro 9.0的新增功能同样会给学习基础知识的学生带来许多方便,也为学生更进一步深入学习提供了更高的平台。

2.突出应用,强化实验。教无止境,参加本书编写的团队由长期从事计算机基础教学的一线教师组成,经过反复实践,不断总结提升,积累了宝贵的经验。经管类非计算机专业学习计算机程序设计和数据库的目的是提升学生的科技素养,使他们具备在信息系统构建中与信息技术专业人员沟通的能力。用什么方法来有效提高学生的这种能力呢?作者认为,只有在讲清基本概念的基础上,通过大量实例的讲解和实验,才能增强学生运用程序和数据库解决问题的能力。本书提供了丰富的习题,精心设计了17个实验,与教学内容同步配套。

3.体系完整,内容简洁清晰。本书在保持全书内容体系完整的同时进行了取舍,突出了基础性和应用性。理论概念的叙述方式、章节顺序的安排、例题讲解的形式、习题和实验的设计等各个环节,均根据教学实际情况进行了仔细考虑。

本书共分9章,主要内容包括:数据库基础,数据表的基本操作,数据库的建立与操作,结构化程序设计,面向对象程序设计基础,常用表单控件的使用,表单设计应用,查询、视图及报表设计,应用程序的管理及编译。本书配套《数据库应用基础学习指导—基于Visual FoxPro 9.0(第3版)》,并提供电子课件和习题参考答案,请登录华信教育资源网(http://www.hxedu.com.cn)注册下载。

本书可作为高等学校非计算机专业数据库及其程序设计应用的基础教材,也可供从事数据库系统教学、研究和应用的广大教师、学生和工程技术人员学习、参考。

在教学中,可以考虑安排51~68学时的理论教学和34学时的实验教学,其中,第8、9章的内容可根据学生掌握情况进行取舍。

本书由王衍主编并统稿。第1、5章由王衍编写,第2、6章由金勤编写,第3、9章由陈明晶编写,第4章由林锋、金勤编写,第7、8章由赵辉编写。

本书的编写参考了近年来出版的相关技术资料,吸取了许多专家和同仁的宝贵经验。同时,本书在编写过程中得到了浙江财经大学各级领导和同事的关心,以及浙江财经学院信息学院众多同事的全力支持,特别是在实验环节的设计上,是众多教师共同努力的结晶,在此向他们及所有关心和支持本书编写的老师表示真诚的感谢!

由于作者水平有限,书中难免有错误或不当之处,敬请读者批评、指正。作 者第1章数据库基础当今世界,无论人们身在何处,都离不开计算机信息系统的支持,而在任何一个信息系统的背后,又都需要数据库系统的支撑。数据库是一门研究数据管理的技术,在信息时代,学习和掌握一些数据库方面的知识是十分有意义的。本章内容主要包括:数据库技术的发展、数据库系统的构成、概念模型、数据模型,着重阐述关系模型及关系模型下的数据完整性规则,介绍Visual FoxPro的基本功能、特点及语言基础。1.1 数据库系统概述

人类的社会活动离不开数据处理,所谓数据处理包括对数据的收集、存储、加工、分类、排序、检索、传播等一系列工作。处理数据的目的是为了管理好数据,使之成为对决策有用的信息。数据库技术就是针对数据管理的计算机学科的一个重要分支,并随着计算机技术的发展而逐渐发展和完善起来。1.1.1 数据管理技术的发展

数据管理技术与计算机硬件、软件及计算机应用的发展有着密切的联系,主要经历了人工管理、文件系统和数据库系统三个阶段。

1.人工管理阶段

20世纪50年代中期以前,计算机主要用于科学计算。当时计算机的外存只有纸带、卡片、磁带,没有磁盘等直接存取的存储设备,并且缺少必要的操作系统及数据管理软件的支持。所以,这一阶段数据管理的特点如下。

① 数据不具有独立性,数据与程序不可分割,当数据结构发生变化后,对应的程序也必须做相应的修改。

② 数据不能长期保存,只是在需要计算某一题目时将数据输入,处理完成后就释放。

③ 没有专门的数据管理软件,数据的存储结构、存取方式、输入/输出方式均由程序员设计完成。

人工管理阶段应用程序与数据之间的对应关系可用图1-1表示。

2.文件系统阶段

20世纪50年代后期至60年代后期,计算机不仅用于科学计算,而且还大量用于信息管理。这时,硬件上已有了硬盘、磁鼓等直接存取设备。软件方面,操作系统中已经有了专门的文件系统来管理外存中的数据文件。这一阶段数据管理的特点如下。图1-1 人工管理阶段应用程序与数据间的关系

① 程序和数据分开存储,数据可以以文件的形式独立地存放在外存中。

② 出现了专门的软件(文件系统)对数据文件进行存取、修改、插入和删除等操作管理,程序员不必关心数据在存储器上存储的物理细节以及与外存交换的过程。

③ 文件系统仍然存在着这样一些问题:数据没有完全独立,文件系统中的文件还是为某一应用程序服务的;由于数据文件相互独立,数据文件之间缺乏联系,造成了数据冗余度大;由于相同数据的重复存储,数据不能集中管理,给数据的修改、维护带来了困难,容易造成数据的不一致性。

文件系统阶段应用程序与数据之间的对应关系如图1-2所示。

3.数据库系统阶段

20世纪60年代后期以来,计算机用于信息管理的规模和领域更加庞大,数据量急剧增加,数据共享和集中管理的需求越来越强烈,从而推动了数据库技术的发展。硬件方面有了大容量的外存储器,软件方面研制了专门的数据库管理系统。数据库系统阶段主要特点如下。

① 面向整个系统组织数据,实现数据共享,允许多个应用程序和多个用户存取数据库中的数据。

② 减少了数据的冗余度,既减少了存储空间和存取时间,又可避免数据之间的不相容性和不一致性。

③ 具有较高的数据和程序的独立性,包括物理独立性和逻辑独立性两个方面。其中,物理独立性是指当数据的存储结构改变时,数据的逻辑结构可以不改变,从而程序也不必改变;而逻辑独立性则是指当数据的总体逻辑结构改变时,可以保持局部逻辑结构不变,程序员根据局部逻辑结构编写的应用程序也无须改变。

④ 有统一的数据控制功能,有较高的数据安全性、完整性,实现并发控制。

⑤ 提供数据排序、统计、分析、制表等多种数据操作。

数据库系统阶段应用程序与数据之间的对应关系可用图1-3表示。图1-2 文件系统阶段应用程序与数据间的关系图1-3 数据库系统阶段应用程序与数据间的关系1.1.2 数据库系统

数据库系统是一个存储介质、处理对象和管理系统的集合。数据库系统通常由计算机硬件及相关软件、数据库、数据库管理系统及用户四部分组成。

1.数据库

数据库(DB,Data Base)是人们为解决特定的任务,按一定的结构和组织方式存储在外存储器中的相关数据的集合。它具有最小的数据冗余,可供多个用户共享,独立于具体的应用程序。

2.数据库管理系统

数据库管理系统(DBMS,Data Base Management System)是在操作系统支持下工作的操纵和管理数据的系统软件,是整个数据库系统的核心。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。它提供多种功能,可使多个应用程序和用户用不同的方法建立、修改和查询数据库,并提供对数据的排序、统计、分析、制表等功能。

3.计算机硬件及相关软件

数据库系统是建立在计算机系统之上的。在硬件方面,它需要基本的计算机硬件(主机和外设)支持;在软件方面,需要操作系统(Windows、UNIX、Linux等)、各种宿主语言(Visual C++、Visual Basic等)和一些数据库辅助应用程序等。

4.用户

数据库系统的用户通常有3种:一是对数据库系统进行日常维护的数据库管理员,二是用数据操纵语言和高级语言编制应用程序的程序员,三是使用数据库中数据的终端用户。1.1.3 概念数据模型

数据库设计的过程是根据人们要解决的问题,首先分析出与问题有关的实体及其属性,再分析出各实体之间的关系(概念数据模型),然后按照数据库管理系统所能支持的数据模型形成数据库(逻辑数据模型)。这里先讨论概念数据模型。

信息世界是客观事物(现实世界)在人脑中的反映,客观事物在信息世界中称为实体,反映实体之间联系的模型称为实体模型或概念模型。

1.实体及实体间的联系

客观事物之间都存在着联系,这是由事物本身的性质所决定的。例如,在学校的教学管理系统中有教师、学生和课程,教师为学生授课,学生选修课程并取得成绩;在企业的销售系统中有职工和商品,职工销售商品,并取得销售业绩;等等。(1)实体(Entity)

客观存在并且可以相互区别的事物称为实体。实体通常指可以触及的具体事物,如一个职工、一名学生、一件商品、一本书等;实体也可以指抽象事件,如一次销售、一次借阅或一场足球比赛。(2)属性(Attribute)

实体具有的特性称为属性。例如,学生的学号、姓名、年龄,商品的名称、类别、单价等。属性用类型(Type)和值(Value)来表征,每个属性都有值域(Domain)。(3)联系(Relationship)

在现实世界中,事物内部及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系。(4)实体集(Entity Set)

性质相同的同类实体的集合称为实体集,例如所有职工、全体学生等。

2.实体联系的类型

根据联系的实际情况,可以将实体间的联系归纳为3种类型。(1)一对一联系(1:1)

如果实体集E1中的每一个实体只能与实体集E2中的一个实体有联系,反之亦然,则称实体集E1与实体集E2是一对一的联系,表示为1:1。例如,一个职工对应一张照片,一张照片一定是某个职工的。(2)一对多联系(1:n)

如果实体集E1中的每一个实体能与实体集E2中若干个实体有联系,而实体集E2中每一个实体至多与实体集E1中的一个实体有联系,则称实体集E1与实体集E2是一对多的联系,表示为1:n。例如,一名学生对应多门课程成绩,一个成绩只能对应某一名学生;一个职工可能有多笔销售业务,而一笔销售业务一定属于某一个职工。

通常,将一对多关系中的实体集E1称为“父”方或“一”方,实体集E2称为“子”方或“多”方。一对多关系是关系数据库中最常见的联系类型。(3)多对多联系(m:n)

如果实体集E1中的每一个实体能与实体集E2中若干个实体有联系,而实体集E2中的每一个实体也能与实体集E1中若干个实体有联系,则称实体集E1与实体集E2是多对多的联系,表示为m:n。例如,一名学生可以选若干门课程学习,而每门课程也可以有多名学生选择;一个职工可以销售多个商品,而每一个商品也可以有多个职工销售。

3.概念模型的表示方法

概念模型是对信息世界的建模,表示方法很多,其中最为常用的是实体-联系方法(Entity-Relationship Approach)。该方法用E-R图来描述概念模型。E-R图的基本组成元素有实体、属性和联系等。

① 实体:用矩形框表示,实体名称写在框内。

② 属性:用椭圆形表示,框内注明属性的名称,属性与实体之间用实线连接。

③ 联系:用菱形框表示实体间的相互关系,框内注明联系的名称。应当注意的是,联系本身也是一种实体,也可以有属性。

④ 连线:用无向连线来连接实体与属性、实体与联系、联系与属性,在进行实体与联系连接时应标明对应关系,即1:1,1:n,m:n。图1-4给出了职工、销售、商品实体集之间的3种联系的E-R图。图1-4 实体集间的3种联系1.1.4 逻辑数据模型

数据库中的数据是按照一定的结构和组织方式存放的,这种结构用数据模型来表示。数据模型(也称逻辑数据模型)是现实世界数据特征的抽象。设计一种数据模型要根据应用系统中所涉及的数据性质、内在联系、管理要求等来组织。目前,比较流行的数据模型有3种,即按图论理论建立的层次结构模型和网状结构模型,以及按关系理论建立的关系结构模型。数据库通常分为层次式数据库、网络式数据库和关系式数据库3种。而不同的数据库是按不同的数据结构来联系和组织数据的。

1.层次模型

层次模型也称树状模型,实质上是一种有根结点的定向有序树,如图1-5所示,其模型结构具有如下特点:

① 有且仅有一个结点无父结点,称为根结点,其层次最高;

② 一个父结点向下可以有多个子节点,一个子结点向上有且仅有一个父结点。

树根与枝点之间的联系称为边,树根与边之比为1:N,即树根只有一个,树枝有N个。各结点之间是一种“一对一”或“一对多”的关系。图1-5 层次模型示意图

2.网状模型

广义地讲,任意一个连通的基本层次联系的集合为网状模型,如图1-6所示,其特点如下:

① 可以有一个以上的结点无父结点(如R1、R2、R4);

② 至少有一个结点有多于一个以上的父结点。图1-6 网状模型示意图

3.关系模型

关系模型是目前最流行的一种逻辑数据模型。1970年,IBM公司的研究员E.F.Cold首次提出了数据库系统的关系模型,为关系模型数据库技术奠定了理论基础。由于他的杰出贡献,1981年,E.F.Cold荣获计算机界最负盛名的ACM图灵奖。

关系模型是以二维表格来表示实体集中实体之间的联系的。关系模型中,一张二维表称为一个关系,并给它赋予一个名称,称为关系名。关于关系模型数据库的基本知识将在1.2节中进行较详细的介绍。1.2 关系模型

20世纪80年代以来,计算机厂商推出的数据库管理系统几乎都支持关系模型。目前,比较流行的以关系模型为基础的大型数据库管理系统包括Oracle、Sybase、Informix和SQL Server等,小型数据库管理系统则包括Visual FoxPro、Access、Paradox和Betrive等。1.2.1 关系的基本概念及关系数据库

1.关系的基本概念(1)关系

一个关系就是一张二维表,每个关系都有一个关系名。例如,图1-7所示的职工情况表就是一个二元关系,该表格清晰地反映出单位职工的基本情况。如果表名为“职工”,则“职工”即为关系名。在Visual FoxPro中,一个关系对应一个数据文件,关系名对应于文件名。图1-7 职工情况表(2)元组

二维表中的每一行在关系中称为元组。一个元组对应于数据文件中的一条记录,所以元组也称记录。例如,图1-7中姓名为“李长江”的所在行的所有数据就是一个元组,称为一条记录。(3)属性

二维表中的每一列在关系中称为属性,每个属性都有一个属性名,属性的取值范围取决于各个元组的属性值。例如,图1-7中的第2列属性,“姓名”是它的属性名,“李长江”是其中的一个属性值。

在Visual FoxPro中,属性也就是数据文件中的字段,属性名就是字段名,而属性值对应于各个记录的字段值。(4)域

域是指二维表中属性的取值范围,取值范围也就决定了表中字段的宽度。例如,图1-7中属性“婚否”的取值范围是.T.或.F.。(5)关系模式

对关系的描述称为关系模式,一个关系模式对应一个表的结构。表示为:

关系名(属性1,属性2,属性3,……,属性n)

例如:

职工(职工号,姓名,性别,婚否,出生日期,基本工资,部门,简历,照片)

销售(职工号,商品号,数量)

商品(商品号,商品名称,类别,库存量,单价,单位)(6)关键字(关键字段或码)

在关系中,可以用来唯一地标识一个元组的属性或属性组合称为关键字。单个属性的关键字称为单关键字,多个属性组合的关键字称为组合关键字。

例如,图1-7中的“职工号”是单关键字,因为每个职工的工号不允许重复。在销售(职工号,商品号,数量)关系中,它的关键字则是“职工号+商品号”的组合,因为一个职工可以销售多种商品,一个商品可以被多个职工销售,只有某个职工销售的某个商品则是确定的。(7)主关键字(主键)与候选关键字

通常在一个关系中,关键字可能不止一个,但主关键字只能有一个,并且取值是确定的。当某关键字被选作表的主关键字后,如果还有其他的关键字,则其他的关键字称为候选关键字。

例如,在“职工”表中,如果不存在同名同姓的职工记录,则姓名也可以是关键字,但如果选择“职工号”作为主关键字,则“姓名”就是候选关键字。(8)外部关键字

如果一个属性在本表中不是主关键字,而在另一个表中是主关键字,则该属性称为外部关键字。

例如,在“销售”表中的“职工号”是“职工”表的主关键字,但它并不是“销售”表的主关键字。这里,称“职工号”属性为“销售”表的外部关键字。

这里提醒大家注意:关系、元组及属性等是数学领域的术语,二维表、行和列等是日常用语,而表文件、记录和字段等则是计算机领域的术语,这些术语间是相互对应的。在Visual FoxPro中经常使用的是表文件、记录和字段等概念。

2.关系表之间的联系

前面已经讨论了实体间的联系类型有1:1、1:n和m:n的联系,这种联系类型在关系数据库中就是表与表间的联系。不同的联系方式,在设计数据库表时应当考虑以下问题。(1)表与表之间是1:1的联系

对于1:1联系类型的信息,设计时可分为两个表或合并为一个表。如果要将一个表分成许多字段,或因安全原因而隔离表中的部分数据,则可以在表与表之间建立一对一的联系关系。例如,可以将“职工号”与“照片”的有关信息放在一个表中。(2)表与表之间是1:n的联系

对于1:n联系类型的信息,设计时需将父表中的主关键字放入子表中,以实现两表之间的有效关联。例如,“职工”表与“销售”表之间为一对多的联系。具体设计表时,需在“销售”表中加进“职工”表的主关键字“职工号”,作为其外部关键字。(3)表与表之间是m:n的联系

对于m:n联系类型的信息,设计时需要另外增加一个新表,这个表称为“关联表”,其中必须包括两个表的主关键字,再加入两表之间的关联字段。例如,“职工”表中的职工与“商品”表中的商品是多对多的联系,需要增加“销售”表,并在其中包括“职工号”和“商品号”,另外加上“销售数量”,作为“职工”表与“商品”表的关联字段。

3.关系数据库

用关系模型建立数据和描述数据之间联系的数据库就是关系数据库。在关系数据库中,一个数据文件存放一个关系的数据,若干个相关数据文件的集合就组成了关系数据库。

在Visual FoxPro中,数据库由4个层次组成:字段、记录、表和数据库。一个关系数据库由若干个数据表组成,每个数据表又由若干条记录组成,而每条记录又是由若干字段组成的。属于某一数据库的表称为数据库表,而不属于任何数据库的表称为自由表。

本书所使用的职工营销数据库,主要由职工情况、销售情况和商品情况3张数据表组成,详见图1-7~图1-9。图1-8 销售情况表图1-9 商品情况表1.2.2 关系的特征

在关系模型中,对关系有一定的要求,关系必须具有以下特征:

① 关系中的每一属性(字段)都是不能再分的基本数据项,即表中不允许有子表;

② 关系中同一属性(字段)必须具有相同的数据类型(如字符型或数值型等);

③ 同一关系中不能出现相同的属性名(字段名);

④ 关系中不应有内容完全相同的元组(记录);

⑤ 关系中记录和字段的顺序可以任意排列,不影响关系表中所表示的信息含义。1.2.3 关系操作

当对关系数据库进行查询等操作时,常常需要对关系进行一定的运算处理,其中,选择、投影和连接是关系的3种基本运算。

1.选择

按照一定条件在给定关系中选取若干元组(即选取若干记录)的操作称为选择。选择的条件通过逻辑表达式给出,条件为真的记录被选出。例如,在图1-7所示的关系中,如果按照“婚否=.F.”的条件进行选择操作,则可得到图1-10所示的结果。图1-10 选择操作结果

2.投影

在给定关系中选取确定的若干属性(即选取若干字段)组成新的关系称为投影。例如,在图1-7所示的关系中,如果选取职工号、姓名和性别3个字段的数据输出,则可得到图1-11所示的结果。

3.连接

连接是指将两个或两个以上关系模式通过公共的属性名(字段名)拼接成一个新的关系模式,生成的新关系中包含满足连接条件的元组(记录)。例如,根据职工、销售、商品三个关系模式中共有的职工号、商品号连接成一个新的关系模式,结果如图1-12所示。图1-11 投影操作结果图1-12 连接操作结果1.2.4 数据库的完整性规则

数据库系统在运行过程中,由于数据输入、编辑、非法访问、程序错误等各方面的原因,容易产生数据错误和混乱,为保证关系中数据的正确、有效,需要建立数据完整性的约束机制来加以控制。关系模型的完整性规则就是对关系的某种约束条件。数据库表之所以与自由表有区别,主要是因为数据库表可以受完整性规则的约束。

所谓数据库的完整性,是指数据库中数据的正确性、有效性和一致性。这是数据库系统应遵守的一项标准,它保证了数据库中数据的完整、可靠。

要实现数据库的完整性,必须在数据库的建立和操作过程中,遵循一定的完整性规则,并随时检查是否满足完整性规则约束。数据库的完整性规则分为实体完整性、参照完整性和用户自定义完整性三部分。

1.实体完整性

实体完整性是指一个关系表中主关键字的取值必须是确定的、唯一的,不允许为空(NULL)值。

例如,对“职工”表中主关键字“职工号”字段、商品表中的主关键字“商品号”字段的取值必须确定、唯一,且不能为空值。这就要求在“职工”表、“商品”表中存储的每一条记录必须满足这一条件,而且在输入新记录、修改记录时也要遵守这一条件。

2.参照完整性

数据库的参照完整性是指:在“子”表中实现关联的外部关键字,它的取值,或者为空值,或者为“父”表中实现相应关联的主关键字值的子集。在两个表之间大量存在一对多的联系,即“父”表与“子”表间的联系。这也是关系数据库中最主要的一种联系,并且它是通过“父”表中的主关键字与“子”表中相应的外部关键字来实现关联的。

例如,在“职工”表(父表)与“销售”表(子表)之间的参照完整性要求是:“销售”表的“职工号”字段的取值必须是“职工”表“职工号”字段取值当中已经存在的一个值。类似地,在“商品”表与“销售”表之间也必须遵守参照完整性的规则。

3.用户自定义完整性

用户自定义完整性是用户根据实际应用环境的需求来决定的,通常为某个字段的取值或多个字段之间取值范围限制等。例如,在“职工”表中,“性别”字段的取值必须在“男”或“女”之间。在一般情况下,要实现数据库的完整性约束条件及完整性检验,用户需编写相应的代码或利用数据库管理系统提供的功能完成。1.3 Visual FoxPro概述

数据库管理系统是一种操纵和管理数据库的大型软件,可用于建立、使用和维护数据库。根据不同的数据模型可以开发出不同的数据库管理系统,基于关系模型开发的数据库管理系统属于关系数据库管理系统。Visual FoxPro就是一种关系型数据库管理系统。1.3.1 Visual FoxPro的发展及特点

1.Visual FoxPro的发展简介

数据库理论的研究在20世纪70年代后期进入较为成熟的阶段,随着20世纪80年代初IBM/PC及其兼容机的广泛使用,1982年Ashton-Tate公司开发的dBASE很快进入微机世界,成为一个相当普遍且受欢迎的数据库管理系统。由于它易于使用、功能较强,很快成为20世纪80年代中期的主导数据库系统。

1984年,Fox Software公司推出了与dBASE全兼容的FoxBASE,其速度大大高于dBASE,并且在FoxBASE中第一次引入了编译器,扩充了对开发者极其有用的语言,并提供了良好的界面和较为丰富的工具。

1989年下半年,FoxPro 1.0正式推出,它首次引入了基于DOS环境的窗口技术,用户使用的界面出现了与命令等效的菜单系统。它支持鼠标,操作方便,是一个与dBASE、FoxBASE全兼容的编译型集成环境式的数据库系统。1991年,FoxPro 2.0推出,由于使用了Rushmore查询优化技术、先进的关系查询与报表技术及整套第四代语言工具,FoxPro 2.0在性能上得到了大幅度的提高。

1992年微软收购了Fox公司,把FoxPro纳入自己的产品中。它利用自身的技术优势和巨大的资源,在不长的时间里开发出FoxPro 2.5、FoxPro 2.6等,包括DOS、Windows、Mac和UNIX四个平台的软件产品。

1995年6月,微软推出了Visual FoxPro 3.0版。1998年发布了可视化编程语言集成包Visual Stadio 6.0。Visual FoxPro 6.0就是其中的一员,它是可运行于Windows 95/98/NT平台的32位数据库开发系统,能充分发挥32位微处理器的强大功能,是直观易用的编程工具。之后,微软又推出了Visual FoxPro 7.0和8.0版本。

2004年12月公布了Visual FoxPro 9.0版本,目前最高版本是Visual FoxPro 9.0 SP2,包括支持创建Web Services,以及与.NET兼容性一样好的XML开发方式、扩展的SQL增强、新的智能客户端界面控件和开发期间进行编译。本书以Visual FoxPro 9.0为基础,由于Visual FoxPro采用向上兼容的版本升级模式,在低版本中开发的程序代码几乎无须做任何修改便可以在高版本中直接运行。

2.Visual FoxPro的主要特点

Visual FoxPro的主要特点表现在以下几个方面。(1)集编程语言和数据库为一体

Visual FoxPro包含丰富的编程命令、函数和基类,许多命令、函数和基类与数据库处理有关。这是其他数据库管理系统所不具备的,这也是为什么尽管Visual FoxPro在实际应用系统中采用的并不多,但仍有众多学校在教学中选用的原因。因为,学习Visual FoxPro不但能掌握程序设计的基本方法,同时也掌握了一定的数据库知识。(2)引入可视化编程技术

一个非可视化的应用程序设计,其中大量的工作是构建应用程序的操作界面,只有少量代码用于程序功能设计。Visual FoxPro采用可视化编程技术,真正实现了所见即所得。通过大量向导、设计器和生成器来帮助用户建立数据库、查询、表单、报表、菜单等工作,实现程序的界面设计,使用户能够把主要精力放在程序的功能设计上。(3)使用面向对象的程序设计方法

Visual FoxPro在支持原面向过程的程序设计方法的同时,支持面向对象的程序设计。用户可以利用所有的面向对象的特性,包括“继承”、“封装”、“多态性”和“子类”等,增强软件的可扩充性和可重用性,从而改善程序员的软件生产活动,控制软件维护的复杂性和费用。(4)支持客户-服务器结构

Visual FoxPro可作为开发客户-服务器(Client/Server)应用程序的前台,提供了多功能的数据字典、本地和远程视图、事务处理和对任何ODBC数据资源的访问等多种特性。(5)支持Web服务

Web服务使用标准的互联网协议,如超文本传输协议(HTTP)和可扩展标记语言(XML),能够把功能概括性地体现在互联网和企业内网上。Visual FoxPro对Web服务的支持极大地扩展了对跨平台数据应用的能力。(6)支持对象链接嵌入OLE技术

通过OLE(Object Linking and Embedding)技术,Visual FoxPro可以将其他的Windows应用程序提供的数据,包括文本、声音、图片或视频等数据,链接或嵌入到Visual FoxPro的表、表单或报表等对象中,从而扩展了Visual FoxPro的功能。

3.Visual FoxPro的主要性能指标

Visual FoxPro是一个关系型数据库管理系统,其性能指标有很多,表1-1中仅列出了一些主要的性能指标供用户参考。表1-1 Visual FoxPro的主要性能指标1.3.2 Visual FoxPro集成开发环境

Visual FoxPro是开发数据库应用程序的集成化、可视化工具,提供了良好的人机交互界面和向导支持。大量的辅助设计工具和生成器,为高效、自动地实现系统带来了极大的便利。由于Visual FoxPro提供的向导、设计器、生成器和管理器比较多,在此不做介绍,待设计中用到时再做说明。

1.Visual FoxPro 9.0的运行环境

运行Visual FoxPro 9.0的计算机最低配置需求如下。

处理器:Pentium级。

内存:64MB RAM(推荐128MB或更高)。

可用硬盘空间:165MB(典型安装)。

显示:800×600分辨率,256色(推荐16位增强色)。

操作系统:Windows 2000 SP3及后续版本。

2.Visual FoxPro的启动与退出(1)Visual FoxPro的启动

Visual FoxPro是Windows中的一个应用程序,其启动与Word等其他应用程序无区别,一般的方法有以下几种:

① 通过Windows的“开始”菜单上的“所有程序”选项,选择Visual FoxPro子菜单启动;

② 通过建立在Windows桌面上的快捷图标启动;

③ 通过Windows的“开始”菜单上的“运行”选项,“浏览”找到Microsoft Visual FoxPro 9.0文件夹,启动Vfp9.exe程序;

④ 通过Windows的资源管理器或“我的电脑”,找到Vfp9.exe程序启动。(2)Visual FoxPro的退出

退出Visual FoxPro使系统返回Windows系统状态,主要有下列几种方法:

① 在Visual FoxPro的“文件”菜单中选择“退出”选项;

② 在Visual FoxPro的命令窗口中输入命令QUIT;

③ 按Alt+F4快捷键退出;

④ 双击Visual FoxPro窗口左上角的控制菜单按钮;

⑤ 单击Visual FoxPro窗口左上角的控制菜单按钮,单击“关闭”选项,或右击Visual FoxPro标题栏上的任一空闲区域,在控制菜单中单击“关闭”选项,或单击Visual FoxPro窗口右上角的关闭窗口按钮。

3.Visual FoxPro的窗口、菜单和工具栏

Visual FoxPro界面主要由菜单、工具栏、命令窗口及各种对话框组成,如图1-13所示。对Visual FoxPro的操作可以使用命令的方式,用户在命令窗口中输入命令并执行命令,也可以使用菜单的方式,用户使用菜单和对话框来完成所有的操作。(1)窗口

Visual FoxPro中的窗口是用户与系统交互的重要工具,使用不同类型的窗口来完成各种不同的任务。Visual FoxPro的窗口包括:命令窗口、数据浏览和编辑窗口、代码编辑窗口、属性窗口、调试器窗口等。Visual FoxPro的主窗口可以包含其中的一个或多个窗口。在开发环境中使用最多的是命令窗口和属性窗口。

Visual FoxPro支持3种窗口停靠方式:常规停靠、链接停靠和标签化停靠。图1-13所示为命令窗口与数据工作期窗口采用标签化停靠方式显示的情况。

当用户在命令窗口中直接输入一条命令时,通常可以只输入命令动词的前4个字符,或者按空格键系统自动完成命令动词,并通过下拉列表的方式显示该命令的集合,帮助用户选择,解决了用户记忆命令的困难,如图1-14所示。图1-13 Visual FoxPro的界面及主要窗口(2)菜单

Visual FoxPro的各种操作命令可以通过菜单系统以交互方式完成。启动系统后,主界面的菜单栏一般包含8个菜单项:文件、编辑、显示、格式、工具、程序、窗口和帮助(如图1-13所示),各菜单项下还有一系列子菜单。随着当前执行任务的不同,菜单栏的各个选项会随之动态变化。例如,浏览一个数据表时,“格式”菜单项就消失了,而菜单栏自动添加了“表”菜单项。(3)工具栏

Visual FoxPro将一些常用的功能,以命令按钮的形式显示在工具栏中,方便用户使用。在默认情况下,系统启动时常用工具栏自动打开(如图1-13所示),其他工具栏随着某一类型文件的打开而自动打开。例如,新建或打开一个数据库文件时,“数据库设计器”工具栏就会自动显示,而关闭数据库文件后,该工具随之关闭。

如果用户需要在某一时候打开或关闭一个工具栏,可以选择“显示”→“工具栏”菜单命令,通过图1-15所示的“工具栏”对话框,选中或取消选中相应的工具栏。Visual FoxPro还允许根据用户的需要,定制自己的工具栏。图1-14 输入命令时的帮助功能图1-15 “工具栏”对话框1.4 Visual FoxPro语言基础

Visual FoxPro是集编程语言和数据库为一体的数据库管理系统,具有一般计算机高级语言的特点和功能。要开发高质量的数据库应用系统,必须掌握Visual FoxPro的编程语言。而要学好一门计算机程序设计语言,掌握数据类型、常量、变量、表达式和函数等是编程的基础。1.4.1 数据类型

Visual FoxPro的数据都具有特定的类型,数据类型是数据的基本属性,它决定了数据的存储方式和运算方式。在Visual FoxPro 9.0中,涉及的数据类型近20种,可以分为两类:一类用于变量、数组,另一类只能用于表字段。现将其中主要数据类型描述如下。

1.数值型数据

数值型数据(Numeric)是用于表示数量的一种数据类型,用N表示。它由数字0~9、小数点和正负号组成。数值型数据的长度为1~20位,在计算机的内存中,每个数据占用8个字节的存储空间,其取范围为-0.999 999 999 9E+19~+0.999 999 999 9E+20。

该类数据用于数学计算。例如,工资、单价、金额等一般用数值型表示。

2.字符型数据

字符型数据(Character)由字母、数字、空格、符号和标点等一切可打印的ASCII字符和汉字组成,用C表示。字符最大长度为254,一个字符占一个字节的存储空间,汉字也是字符,一个汉字占两个字节的存储空间。

字符型数据一般用来表示姓名、地址、单位等文本信息。有一类数据,如学号、商品号、电话号码等,虽然都由数字组成,但不用来计算,一般也用字符型数据表示。

3.逻辑型数据

逻辑型数据(Logical)通常用来表示某个条件是否成立,可取值为逻辑真(.T.)和逻辑假(.F.)两个值,用L表示。逻辑型数据长度固定为1字节。

逻辑型数据主要用于逻辑判定。例如,是否已婚、是否满足给定的条件等两种状态的数据,可用逻辑型表示。

4.日期型数据

日期型数据(Date)用来表示日期,用D表示。长度固定为8位,存储格式为“yyyymmdd”。

日期型数据的显示格式有多种,默认采用美国格式mm/dd/yy(月/日/年)。可以通过SET DATE、SET CENTURY和SET MARK TO命令改变其显示格式。(1)SET DATE命令

格式:

功能:指定日期表达式和日期时间表达式的显示格式。

日期的默认显示格式是AMERICAN。SET DATE设置也决定日期在日期时间表达式中的格式。SET DATE在当前数据工作期有效。表1-2列出了有效的设置值及其对应的日期格式。表1-2 SET DATE设置的日期格式(2)SET CENTURY命令

格式:

功能:设置显示的日期数据中年份用2位还是4位表示。(3)SET MARK TO命令

格式:

功能:设置显示的日期数据中使用的分界符,如SET MARK TO'_'。

此外,日期格式还有传统日期格式和严格日期格式之分。

5.日期时间型数据

日期时间型数据(DateTime)用于保存日期和时间两部分,用T表示。日期时间型数据占用8个字节,前4字节保存日期,后4字节保存时间,分别是时、分、秒。存储格式为:“yyyymmddhhmmss”。

6.货币型数据

货币型数据(Currency)一般用于金融计算,用 Y 表示。它具有自动控制小数位数的功能,例如,当货币型字段或变量的数值小数位数超过4位时,Visual FoxPro将该数据四舍五入。货币型数据存储时占用8个字节,其取值范围介于-922 337 203 685 477.580 8~922 337 203 685 477.580 7之间,并在货币型数据前加上一个符号“$”。

7.备注型数据

备注型数据(Memo)用来存放一些内容较多或长度不确定的文本信息,用M表示。备注型数据在表字段中的长度为4个字节,它存放的只是一个指针,用于指向字段的真正内容,而该字段的真正内容存放在与表文件同名的一个表备注文件(.fpt)中。当复制和修改含有备注字段的数据表名时,必须同时复制和修改它的表备注文件名,否则,复制和修改后的表将无法使用。备注字段保存信息的大小仅受可用磁盘空间大小的限制。当在同一数据表中有多个备注型字段时,这些字段的具体数据是存放在同一个.FPT备注文件中的。

8.通用型数据

通用型数据(General)专门用来存储OLE对象,用G表示。所谓OLE对象,其具体内容可以是一个电子表格、字处理文档或图像、声音等,通常这些OLE对象由其他应用程序产生。与备注型数据一样,通用型数据在表字段中的长度为4个字节,它存放的只是一个指针,其真正的内容也是存放在与数据表同名、扩展名为.fpt的备注文件中。通用字段存储OLE对象的大小仅受可用磁盘空间的限制。

9.双精度型数据

双精度型数据(Double)用于存储精度较高且固定位数的浮点数据,用 B 表示。例如,科学计算的数据最好设置为双精度型。双精度型数据占用8个字节,其取值范围介于±4.940 656 458 412 47E-324~±8.988 465 674 311 5E+307之间。

10.浮点型数据

浮点型数据(Float)功能上与数值型数据等价,用F表示。Visual FoxPro提供浮点型数据主要是为了保持与其他开发软件和系统的兼容性。浮点型数据在内存中占8个字节,在表中占1~20个字节,其取值范围为-0.999 999 999 9E+19~+0.999 999 999E+20。

11.整型数据

整型数据(Integer)用于存储无小数部分的数值,只能用于数据表中的字段,用 I 表示。整型数据占用4个字节,以二进制数的形式存储,不像Numeric那样需转换成ASCII码存储,可以提高程序的性能。整数型数据的取值范围为-214 748 364 7~214 748 364 6。

12.二进制大型对象

二进制大型对象(Blob)型数据是用来存储各种ASCII文本、可执行文件、字节流,以及具有不确定长度的二进制数据,用W表示。Blob型数据在表中占4个字节,范围受可用内存的限制或2GB文件大小限制。

Blob型数据为在SQL Server中存储图像提供了更多的便利。要存储固定长度的二进制值,可以使用Varbinary型数据。

13.可变型数据

可变型数据(Variant)是一种特殊的数据类型,除了固定长度的字符串外,Variant中可以包含任意类型的数据,还可以被设置为Empty、Error、和NULL等特殊值。

此外,Visual FoxPro 9.0还提供了Character Binary、Integer Autoinc、Memo Binary、Varchar、Varchar Binary、Varbinary和对象等类型数据。限于篇幅,这里不进行讨论,有兴趣的读者可查阅相关手册。1.4.2 数据存储

在Visual FoxPro中,用于存储数据的常量、变量、数组、对象属性和表字段统称为数据存储容器,它决定了数据的类型和存储方法。

1.常量

常量是指在整个程序的执行过程中其值固定不变的量。常量中能包含任意数据类型,应用程序的操作不能修改常量的值。Visual FoxPro中常用的常量包括:数值型、字符型、逻辑型、日期型、日期时间型和货币型。(1)数值型常量

数值型常量可以是十进制整数或实数,也就是一般意义上的常数。数值型常量的长度包括整数位数、小数点和小数位数。例如,50、-100、3.141 592 6等都是数值型常量。

实数有两种表示方法,一种是带小数的实数(如3.14),另一种是用科学计数法(即指数形式)表示的实数(如1.23E+15,它表示151.23×10),一般用于数据位数较多的实数。(2)字符型常量

字符型常量是用定界符括起来的字符串,定界符可以是西文单引号、双引号或方括号三种之一,字符串由ASCII码中可打印的字符和汉字组成。例如,"X="、'123'、[数据库]等都是字符型常量。

字符型常量要注意空格串和空串的区别:" "是含有3个空格的空格串,而""是长度为零的空串。

定界符必须在英文的状态下输入并成对出现。当字符串本身包含某种定界符时,要选择另两种定界符作为该字符串的定界符,以示区别,例如,'She said:" I am a student."'。(3)逻辑型常量

逻辑型常量用圆点定界符括起来,只有真和假两个值。逻辑真常量可用.T.、.t.、.Y.、.y.表示;逻辑假常量则可用.F.、.f.、.N.、.n.表示。(4)日期型常量

日期型常量用来表示一个确切的日期,在默认情况下,用严格的日期格式{^yyyy-mm-dd}表示,例如,{^2008-7-30}、{^1999-12-30}等。日期型常量还可以用函数CTOD("07/30/08")表示,它表示将字符型常量"07/30/08"转换成日期型常量。通常,日期型数据有传统和严格两种格式。

① 传统日期格式

系统默认日期型数据为美国日期格式“mm/dd/yy”,可以借助SET DATE TO等命令改变其设置。例如,{07/30/08}为一个日期型常量,在美国格式时表示2008年7月30日。

② 严格日期格式

用{^yyyy-mm-dd}格式书写的日期型数据能表达一个确切的日期,它不受SET DATE TO等语句设置的影响。例如,{^2008-07-30}为严格日期常量。

应当注意,系统在默认情况下只接受严格日期常量,如果要接受传统日期格式表示的常量,需要通过下面的命令改变。

命令格式:

命令功能:用于设置是否对日期格式进行检查。

0表示不进行严格的日期格式检查,目的是与早期Visual FoxPro兼容;

1表示进行严格的日期格式检查,它是系统默认的设置;

2表示进行严格的日期格式检查,并且对CTOD()和CTOC()函数的格式也有效。【例1.1】用不同日期格式显示系统当前日期。

在命令窗口中输入以下命令(&&后的内容为注释,可以不输入):

上述命令的显示结果为(设当前系统日期是2008-07-31):(5)日期时间型常量

日期时间型常量包括日期和时间两部分,必须用一对花括号将数据括起来。它也有传统和严格两种格式,例如,{07/30/08 10:12:25am}和{^2008-07-30 10:12:25am}。(6)货币型常量

货币型常量用来表示货币值,其书写格式与数据型常量类似,只要在数值前面加一个“$”符号即可。例如,货币常量$123.23表示123.23元。

货币型常量在存储和计算时,系统自动四舍五入到小数4位,例如$58.12345,计算结果为$58.1235。

2.变量

变量是指在程序执行过程中其值是可以改变的量。变量实际上是用标识符命名的存放数据的计算机内存单元。变量有变量名、变量值、变量类型、变量长度、变量作用域等属性。Visual FoxPro的变量可分为字段变量和内存变量两种。内存变量又分为一般内存变量、系统内存变量和数组变量。(1)变量的命名

变量名是用来标识变量的符号,每个变量都有一个名称。变量的命名遵守以下规则:

① 由字母、汉字、数字和下划线组成,且必须以字母、汉字或下划线开头;

② 长度为1~128个字符,每个汉字为2个字符;

③ 变量名命名应有意义,且不能与Visual FoxPro的关键字相同。(2)字段变量

字段变量将数据表中的字段名作为变量,它是在建立数据表时定义的。每个数据表都包含若干字段变量,其值随着数据表中记录的变化而改变。要使用字段变量,必须先打开包含该字段的表文件。有关字段变量的定义和使用将在第2章中详细介绍。(3)内存变量

我们通常所说的内存变量主要是指一般内存变量。内存变量独立于数据文件,存放在主机的内存储器中,是一种临时的工作单元,使用时定义,使用完成后可以释放,常用来保存数据或程序运行的结果。内存变量的数据类型取决于变量值的类型,不同时刻可以将不同类型的数据赋给同一个内存变量。内存变量常用的数据类型有:字符型(C)、数值型(N)、逻辑型(L)、日期型(D)、日期时间型(T)和货币型(Y)。

应当注意:当字段变量与内存变量同名时,字段变量的优先级高于同名的内存变量。为了强调是内存变量,可以在内存变量名的前面冠以前缀“M.”或“M->”,以示区别。

① 建立内存变量

变量的定义是通过赋值语句实现的。这里介绍赋值语句的两种格式:

格式1:

格式2:

功能:在定义内存变量的同时确定内存变量的值和类型。

说明:

● 定义内存变量、赋值和确定变量的类型在同一个命令中完成。

● 语句中的<表达式>可以是一个具体的值,也可以是一个表达式。如果是表达式,系统将先计算表达式的值,再将此值赋给变量,即赋值符具有计算和赋值的双重功能。

● 格式1一次只能给一个内存变量赋值,而格式2可以同时给多个变量赋相同的值,此时,变量之间必须用逗号分隔开。【例1.2】“=”赋值语句的应用。

显示结果:X=6

注意:X=X+1在数学上是不成立的,这里的“=”不是数学上的等于而是赋值,是将原来X(为5)的值加1后再赋给X,使X变为6。【例1.3】变量的类型可以有多种。

上述命令用“=”和STORE为变量赋值,而且变量值的数据类型可以有多种。

② 显示内存变量

如果需要了解内存变量的名称、类型和值等信息,可用内存变量显示语句。

格式1:

功能:显示内存变量的当前信息,包括变量名、属性、数据类型、当前值及总体使用情况等。

说明:

● LIST 命令连续滚动显示所有的内存变量,可以用 Ctrl+S 组合键暂停显示,再按任意键继续。DISPLAY分屏显示,一屏显示完后,屏幕提示“按任意键继续”,继续显示下一屏信息。

● LIKE <通配符>可用于有选择地显示部分和全部内存变量。通配符有两个,“*”代表所有的字符,“?”代表任意一个字符。

● TO PRINTER/TO FILE<文件名>可以将查看的结果通过打印机输出或存入指定的文件。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书

若在网站上没有找合适的书籍,可联系网站客服获取,各类电子版图书资料皆有。

客服微信:xzh432

登入/注册
卧槽~你还有脸回来
没有账号? 忘记密码?