vfp教案(下载)

更新时间:2024-05-15 07:36:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章 isual FoxPro基础

教学内容与目的:

?了解计算机数据管理的发展历程;

?掌握数据库系统的基本概念、数据库管理系统的功能; ?掌握关系数据库的特点及关系运算; ?了解数据库设计的主要过程;

?了解VFP(Visual Foxpro)系统的概述和特点。

教学重点: 数据库系统 教学难点: 关系数据库

课时分配: §1.1 :4课时 §1.2 :2课时 §1.3 :1课时 §1.4: 1课时

引入:为什么要学数据库管理?

计算机应用领域

任一企事业单位都涉及到数据处理,称“五M管理”:

?科学计算??过程控制?数据处理___占80%计算机处理份额??

人 man 财 money 物 material 设备 machine

方法 methodology 制度等

第二章 Visual FoxPro系统初步

§1.1数据库基础知识

§ 1.1.1 计算机数据管理的发展

一、据与数据处理

1.数据:是描述客观事物的符号记录,是用物理符号记录下来的可以鉴别的事物

特性。包括:数字、文字、图形、图像、动画、声音等。

2.信息:是数据经过加工处理后的有用结果。或是能表示一定含义的数据。

例:

数据描述: 王阳,9098135,男1980,江苏,计算机系,1998。 经过简单的推论后,可得出这样的信息:

王阳是位男大学生,学号为9098135,1980年出生,江苏人,1998年考入计算机系。

3.数据处理:将数据转换或信息的过程。 内容包括:

数据收集 →数据整理(鉴别) → 存储数据 → 使用数据(计算、统计、查询等) →维护数据

故通过数据处理可以获取信息,然后对信息进行解释、推论、归纳、分析、综合等而产生决策。

在一个企事业单位中,数据的处理与作用呈金字塔形,如下图所示:

战略层

高层 中层 基层

战术层 数据管理任务 操作层

?

二、据管理技术的发展

计算机对数据的管理是指对数据的组织、分类、编码、检索和维护所提供的操作手段。

经历了:人工管理、文件系统、数据库系统、分布式数据系统、面向对象数据库系统。

1、人工管理

20世纪50年代中期以前

特点:①程序员必须掌握数据在计算机中的存储地址和方式,才能在程序中正确的使用数据。

②程序与数据不独立,数据不能保存,程序之间有数据冗余。 2.文件系统

20世纪50年代后期主60年代中期

特点:①数据存储在数据文件中,由文件管理系统使用数据。

②数据文件和程序文件相互依赖,数据冗余度大,且造成数据的不一

致性。

3.数据库系统

20世纪60年代后期至今

特点:①数据库诞生, 数据库通过数据库管理系统进行管理。 ②数据冗余度减小,共享性提高。 4.分布式数据库系统

20世纪80年代,随着网络技术的发展,适应C/S系统结构的数据库系统。 特点:①在一个分布式数据库中,一个应用可以对其所需的数据进行透明的

操作,这些数据在不同的数据库中分布,由不同的数据库管理系统管理,在不同的机器上运行,由不同的操作系统支持,被不同的通信网络支持。

透明:指从逻辑角度看,应用程序所操作的数据好像是由运行在一

台机器上的单一的数据库管理系统管理着。

②由很多物理上分开的数据库系统通过通信网络连在一起,不同位置

的数据库协同工作,用户可以访问到网络上任何位置的数据库中的数据,就好像在本机访问一样。

5.面向对象数据库

是数据库技术与面向对象程序设计相结合的产物,是面向对象的方法在数据库领域中的实现和应用。

基本思想:用户程序不应与面向机器的结构如字段和记录直接打交道,而应该直接对对象和建立在对象之上的操作进行处理。

OODB(OAbject Oriented Database)技术可以满足的应用包括: ① CAD

② 计算机辅助软件工程 ③ 多媒体数据库 ④ 办公自动化 ⑤ 超文本数据库

§1.1.2数据库系统

一、数据库的概念

1.数据库(DB—Database):(是以一定的组织方式存储在计算机的存储设

第二章 Visual FoxPro系统初步

备上的相互关联的数据集合。)

①定义:是存储在计算机存储设备上,结构化的相关数据集合。它能以最佳.......

的方式、最少的重复为多种应用服务

②特点:

1)数据的共享性:库中的数据可为多个程序、用户服务。

2)独立性:数据文件与用户的应用程序彼此独立,即修改数据时,不必修改

使用数据的程序

3)数据库的数据冗余(重复)少。 例:学生信息库

学号,姓名,性别,年龄,特长,各门课程学习成绩,家庭住址,学习经历

等。

应用1: 班主任了解学生基本状况→住址,学习经历 应用2:开运动会挑选运动员→特长 应用3:文艺活动→特长

应用4:评三好学生、优秀毕业生,或用人单位筛选→学生成绩 2.数据库应用系统

定义:指系统开发人员利用数据库系统资源开发出来的,而向某一类实际应

用的应用软件系统。

如:劳资系统、人事管理系统、学生信息系统、员工培训系统、物资管理系统、教学管理系统、维修系统、客户跟踪系统等。

3.数据库管理系统(DBMS—Database Management System)

① 定义:是用来管理数据库数据的大型程序,是用户与数据库的接口。 ② 说明:

1)DBMS 提供各种命令对DB进行操作,可以帮助用户完成数据库的建立、询问、显示、修改、打印报表等工作。

2)DBMS包括数据描述语言及其翻译程序、数据操纵语言及其编译程序、数据库管理例行程序。

3)通俗地说:数据库是存放数据的地方,而DBMS是指在数据库的环境下,如何存取数据等多种管理数据库的功能。

4.数据库系统

①定义:指引进数据库技术后的计算机系统现有组织地,动态地存储大量相关数据提供数据处理和信息资源共享的便利手段

②组成有五部分:硬件系统、数据库集合、DBMS及相关软件、数据管理员和用户。

数据库系统如图1-1所示。

用户1 用户2 ?? 数据库 管理系统 DBMS 数据库 计算机软硬+ 件系统 用户n DB DBS

图1-1 数据库系统组成

二、数据库系统的特点

1.实现数据共享,减少数据冗余。 2.采用特定的数据模型

结构化的数据通过数据模型表现出来,事物内部属性间的联系和事物与事物之间的联系。 3.具有较高的数据独立性

用户只需操作数据,而无需考虑数据在存储上的物理位置与结构。 4.有统一的数据控制功能

DBS提供了必要的保护措施,包括 :

?并发访问控制:多用户对数据的并发使用??安全性控制:以防破坏,不合法的使用而造成泄密和破坏?完整性控制:库中的数据在操作和维护过程中可以保持正确无误?

§1.1.3数据模型

一、实体的描述

1、实体

客观存在并且可以相互区别的事物家实体 2、实体的属性 属性:描述实体的特性 3、实体集和实体型

实体集:同类型的实体的集合(行)

实体型:属性的集合表示一种实体的类型(列) 二、实体间的联系及联系的种类

第二章 Visual FoxPro系统初步

联系:实体之间的对应关系。

联系的种类:指一个实体型中可能出现的每一个实体与另一个实体型中多少个具体实体存在联系。

实体联系有三种:

① 一对一联系 (1:1) 例:班长与班级

② 一对多联系 (1:n) 例:系与教师、班级与学生 ③ 多对对联系 (m:n) 例:学生与课程、教师与课程 三、数据模型简介

1.模型:是实现世界特征的模拟和抽象。

数据模型:是实现世界数据特征的抽象。

?数据模型用来表示数据库中数据的结构,即事物本身属性间及事物之间的各种联系。

?数据模型是DBS的基础,因此任何一个DBMS都是基于某种数据模型的,其分为三种:

层次模型、网状模型、关系模型 2.层次数据模型

定义:用树型结构表示实体及其之间联系的模型,支持层次模型的DBMS称为层次DBMS,在此系统中建立的DB是层次数据库。

特点:①有且只有一个根结点;

②除根结点之外的其他结点有且只有一个双亲结点; ③结点间的关系是父子之间的一对多的联系。 例:家谱 、单位部门 、学院机构等。 3.网状模型

定义:用网状结构表示实体间联系的模型 特点:①允许一个以上的结点无父结点;

②一个结点可以有多于一个的父结点双亲。 4.关系数据模型

关系模型:用二维表结构来表示实体以及实体间联系的模型。

特点:概念描述单一。每个关系就是一个二维表,无论实体本身还是实体间

的联系均用二维表来表示

§1.2关系数据库

§1.2.1关系模型

关系数据模型:用二维表的形式表示实体和实体间联系的数据模型。 一、关系术语

1.关系:一个关系就是一张二维表,每个关系有一个关系名。 说明:①在VFP中,一个关系存储为一个文件,文件扩展名为dbf,称为

“表”。

②对关系的描述为关系模型,一个关系的模式对应一个关系的结构,其格式为:关系名(属性名1,属性名2,...,属性名n) 在VFP中表示为表结构:

表名(字段名1,字段名2,...,字段名n) 2.元组:表中的一行称为一个元组,在VF中称为记录。 注:元组对应存储文件中的一条记录

3.属性:表中的一列称为一个属性,每一列有一个属性名。每个属性有属性

名、数据类型、宽度)

注:在VFP中表示为字段. 4.域:属性的取值范围。

例:职工的年龄在18~60岁,性别的属性域为(男、女)

5.关键字(PK---Primary Key):属性或属性的组合,其值能唯一确定一个元组,例:学号。

候选关键字:满足关键字特性的最小属性组合都叫候选关键字。 注:每个关系都必须选择一个候选关键字作为主关键字。

6.外部关键字(FK---Foreign Key):如果表中的一个字段不是本表的主关键字或候选关键字,而是另外一个表的主关键字或候选关键字,这个字段就称外部关键字。

例: 学生表 成绩表

SC

二、关系的特点

1.关系必须规范化:即每一个关系模式都必须满足一定的要求。(巴科斯范式)

最基本的要求:每个属性必须是不可分割(每个字段必须是初等项)的数据

单元。

SC_NO S_NO(FK) C_NO(FK) S_NO S C_NO 第二章 Visual FoxPro系统初步

例学生成绩:分割为各科成绩。

2.在同一类关系中不能出现相同的属性名 即一个表中不能有相同的字段名(列唯一) 3.关系中不允许有完全相同的元组,即冗余(行唯一) 4.在一个关系中元组的次序无关紧要 5.在一个关系中列的次序无关紧要 即:行,列次序可以任意交换

总结 :属性初等项、行和列唯一、行列任意交换 .....................三、实际关系模型

VFP中一个数据库中,包含相互之间存在联系的多个表,这个库文件就代表一个实际的关系模型。教材P11例1.1和1.2。

例: 学生 — 选课 —课程关系模型 有三个关系模式:

student(学号,姓名,性别,年龄) sc(学号,课程号,成绩) course(课程号,课程名,学分) 关系模型如下图所示: Course 学号 学号 姓名 S1 S2 S3 S4 S5 3 SC3 99 C1 71 C1 79 2 SC2 89 年龄 李小平 15 王大海 16 刘小娟 15 张萍 16 刘小林 15 男 男 女 女 男 2 SC3 90 1 SC1 92 1 SC3 85 性别 1 SC2 89 S课程号 成绩 C1 98 课程号 课程名 学分 C1 C2 C3 VF 2 C++ 4 VB 3 PK FK Student SC FK PK 3 S4 S5 §1.2.2 关系运算

关系的基本运算有两类: ①传统的集合运算(并、差、交等);

②专门的关系运算(选择、投影、联接)

一、传统的集合运算:进行运算的关系须有相同的结构

1.并:由属于这两个关系的元组成(R∪S) 2.差:从前一个关系去掉后一个关系中也有的元组

(R-S )----结果为属于R但不属于S的元组 3.交:由相同属于两个关系的元组组成的集合(R∩S) 例: R S

A1 B1 C1 A B C A B C A1 B2 C2 A1 B2 C2 A1 B3 C2

A2 B2 C1 A2 B2 C1 A B C A B C A B C A1 B1 C1 RUS A1 B2 C2 A2 B2 C1 A1 B3 C2 A1 B2 C2 A2 B2 C1 A1 B1 C1

第二章 Visual FoxPro系统初步

二、专门的关系运算

1.选择 Select

定义:从关系中找出满足给定条件的元组的操作

条件由逻辑表达式给出

水平方向的选择----- 行(选行操作) 结果是原关系的一个子集

例:查询总分在480以上的考生 2.投影 Project

含义:从关系模式中指定若干个属性组成新的关系

垂直方向的选择 —选列

例: 显示学生信息表的特长属性

只产生由学号,姓名,特长,组成的新表

3.联接 join

含义:将两个关系模式组合,生成的新关系中包含满足联接条件的元组

两表横向结合

例:学生表和成绩表,通过学号连接。 4.自然联接

等位联接:按照字段值对应相等为条件进行的联接操作 自然联接:去掉重复属性的等值联接

§1.3数据库设计基础

§1.3.1数据库设计步骤

一、设计原则

1.关系数据库的设计应遵从概念单一化“一事一地”原则 ....

即将不同的信息分散到不同的表中,一实体对应一表,以使数据的组织和维护工作简单

例:学绩管理系统—学生表、课程表、选修表 2.避免在表之间出现重复字段

除外键外,尽量不出现重复字段而使数据冗余 3.表中的字段必须是原始数据和基本数据元素

不包括通过计算可得到的“二次数据”或多项数据的组合 例:年龄可以通过计算得到

4.用外部关键字保证有关联表之间的联系

用FK维系表之间的关联,以反映实体间客观存在的联系

二、设计步骤

1.需求分析

2.确定需要的表,抽象实体 3.确定所需字段 4.确定表间联系 5.设计求精

分析并测试数据记录,查找错误

§ 1.3.2数据库设计过程

一、需求分析

1.信息需求 2.处理需求

3.安全性和完整性要求

此过程由开发人员与业务人员交流进行 二、确定需求的表 三、确定所需字段

?每个字段直接和表的实体相关 ?以最小的逻辑单位储存信息 ?表中的字段必须是原始数据 ?确定主关键字

一个或一组字段可惟一确表每个记录 四、确定表之间的联系

?一对多联系 ?一对一联系 ?多对多联系

为避免数据重复存储,需创建第三个表,将多对多关系转化为一对多关系 五、设计求精

§1.4 Visual FoxPro系统概述

一、Visual FoxPro 发展

1.80年代初期:dbaseⅡ/Ⅲ、dbaseⅢplus、dbaseⅣ 2.80年代中期:FoxBASE (1987)、 Fox plus 、 FoxBASE 3.90年代早期:FoxPro 引入了图形化用户界面

多媒体技术,面向对象技术和查询优化技术

第二章 Visual FoxPro系统初步

4.1995年6月:随着面向对象技术的成熟和可视化编程技术的推广,微

软推出了 Visual FoxPro了3.0版

98年MicroSoft发布了可视化编程语言集成包 Visual Staolio6.0 VFP6.0为其中一员

二、Visual FoxPro 6.0 的特点

1.特点概述

可视化的操作界面,面向对象程序设计方法 2.增强的项目及数据库管理 3.提高应用程序开发的生产率 4.互操作性和支持Internet 5.充分利用已有数据

第二章 Visual FoxPro 系统初步

教学内容与目的:

了解VFP使用环境 、系统安装与启动、用户界面; 并初步了解项目管理器、向导、设计器及生成器。

教学重点: Visual FoxPro的用户界面 教学难点: 项目管理器

课时分配: §2.1 :0.5课时 §2.2 : 0.5课时

§2.3 :0.5课时 §2.4 : 0.5课时

§2.1 Visual FoxPro 6.0的安装和启动

一、系统配置:

1.处理器:PC486以上兼容机

2.硬盘:典型安装需85M;最大安装90M 3.内存:16MB以上,推荐使用24M内存

4.鼠标、光驱;推荐使用VGA或更高分辨率的监视器 5.操作系统:Win95/98、 NT或更高版本的操作系统 二、安装Visual FoxPro6.0 三、启动 Visual FoxPro6.0

①单击第一个按钮,可建立一个项目文件,并打开项目管理器 ②单击“关闭此屏”按钮,直接打开主界面

③选中“以后不在显示次屏”复选框,以后启动会直接进入主界面 四、退出系统

①单击关闭窗口按钮 ②文件表单“退出”

③单击狐狸图标,关闭或Alt+F4 ④命令窗口键入QUIT命令

§2.2 Visual FoxPro 的用户界面

VF有三种工作方式:

1.利用某单系统或工具栏按扭执行命令; 2.在命令窗口中直接输入命令进行交互或操作;

3.利用各种生成器自动产生程序或编写 FoxPro 程序,然后执行它。

§2.2.1 VF的主界面

一、菜单操作

?鼠标操作 ?键盘操作 ?光标操作

当运行的程序不同,所显示的横向主菜单和下拉菜单的选项也不尽相同 二、命令操作

在命令窗口输入命令,回车执行 显示与隐藏命令窗口:

?命令窗口右上角关闭按钮关闭,“窗口”中的“命令窗口”打开 ?用常用工具栏上的命令窗口按钮显示或隐藏 ?Ctrl+F4关闭命令窗口,Ctrl+F2显示 三、项目管理器窗口

是VF中各种数据和对象的主要组织工具

项目管理器用图形化分类的方法来管理属于同一个项目的文件 项目:是文件、数据、文档和对象的集合 项目文件扩展名为pjx或pjt

“项目管理器”是系统的“控制中心”

§2.2.2工具栏的使用

一、工具栏包括11个

常用工具栏 查询设计器

第二章 Visual FoxPro系统初步

报表控件 打印预览 报表设计器 调色板 表单控件 视图设计器 表单设计器 数据库设计器 布局

二、显示或隐藏工具栏

?“显示”菜单→“工具栏”

?鼠标右键单击任何一个工具栏的空白处,选择之 三、定制工具栏

用户可以创建或修改工具栏。

用户可以将常用的工具集中在一起,建立起自己的工具栏。

“显示”→“工具栏”→“新建”→键入工具栏名称→用鼠标选择分类里的按扭拖到新建工具栏上即可。 四、修改现有工具栏

“定制”按钮 “重置”恢复系统默认

§2.2.3 Visual FoxPro的配置

了解:

“工具”→“选项”→共12个选项卡

§ 2.3项目管理器

项目:是指文件、数据、文档和VF对象的集合、包括:表、数据库、表单、..

报表、查询、类、程序等等。 项目管理器:将一个应用程序的所有文件都集合成一个有机的整体形成一.....

个扩展名为PJX的项目文件

一、创建项目

1、创建项目

内涵:仅创建一个项目,用来分类管理起他文件

“文件”→“新建”→“项目”单选项→“新建文件”→“创建”对话框→项目文件名→保存。 2.打开和关闭项目

“文件”→“打开”→“项目”。 关闭:项目管理器右上角的“关闭”按扭

空项目:未包含任何文件的项目 3.各类文件选项卡

项目管理器包括:全部、数据、文档、类、代码、其他6个选项卡 ?“数据”选项卡

?数据库?自由表?包含:?

?查询?视图??表单??\文档\选项卡?报表

?标签??\类\选项卡

?*.prg??函数库 ?\代码\选项卡,包括三大类程序?

?应用程序*.app文件???文本文件? ?\其他\选项卡?菜单文件

?其他文件? ?全部选项卡:以上各类文件的集中显示窗口 二、使用项目管理器

1、 2、 3、 4、 5、

使用项目管理器创建文件 添加文件

将一个已存在的文件添加到项目中 修改文件

移去文件:可以项目中移去不需要的文件 其他按扭

?1、浏览??2、关闭/打开??3、预览??4、运行?5、连编???

三、制定项目管理器

改变项目管理器的外观 1、

移动、缩放和折叠

第二章 Visual FoxPro系统初步

2、 3、

拆分项目管理口

停放项目管理器

§2.4 Visual FoxPro向导、设计器、生成器简介

一、Visual FoxPro的向导

VF中带有的向导超过20个 1.启动向导

单击“向导”图表按扭 2.使用向导

单击“上一步”、“下一步” 3.修改用向导创建的项

在退出向导前 4.VFP新增的向导 二、VFP的设计器

VFP设计器是创建和修改应用系统各种组件的可视化工具 1.各种设计器

教材P48表2.3 2.打开设计器

三、Visual FoxPro的生成器

生成器是带有选项卡的对话框,用于简化对表单、复杂控件和参照完成性代码的创建和修改过程

1.启动表单生成器

2.对表单中的控件使用相应的生成器 3.使用自动格式生成器来设置控件格式 4.使用参照完整性生成器 5.应用程序生成器

第三章 数据与数据运算

教学内容与目的:

掌握Visual FoxPro6.0系统中的

常量、变量、函数、表达式的定义、格式、功能及其运算。

教学重点: 常量、变量、表达式 教学难点: 函数

课时分配: §3.1:2课时 §3.2:2课时 §3.3:4课时

§3.1常量与变量

将各种形式的数据经过数字化存入计算机,都须确定其:

?型:类型数据?

?值:取值在VFP中,常量、变量、函数和表达式的类型包括6种:字符型、数值型、货币型、逻辑型、回期型、日期型、日期时间型。

§3.1.1常量

常量:在程序运行过程中保持不变的量

1. 数值型常量(常数)

第三章 数据与数据运算 ?格式:由数字0~9、小数点和正负号构成,很大或很小的数用科学记数法表示

?长度:8个字节

2. 货币型常量

格式:表示货币值,是在数值型常量之前,加前缀$,但不能用科学记数法来表示货币型常量。

例:$-3456 、 $0.1415, 但$3E-5是错误的

货币型常量的小数位不能超过4位,若超过4位,多余的位将被四舍五入。

3. 字符型常量

格式:又称字符串,是由任意字符、数字、汉字组成的字符序列,用定界符“” 、‘’、[ ]成对括起来,如果字符串的内容中包含了某个定界符,则需要用另一种定界符做为该字符串的定界符。

例:‘12.356 ’ 、“姓名”、 [红的]

“abc[dcf]ghj” 、[abc’def’ghj] 注意:“”空串与空格字符串“ ”不同 补:显示值命令

??功能:在下一行显示若干个表达式的值 ???功能:在同一行显示表达式的值

4. 日期型常量

格式:用{}将年、月、日括起,年、月、日之间用分隔符,分隔符可以是/、_、和空格。

日期型常量有两种格式:严格的日期格式和传统的日期格式 ?传统的日期格式

{mm/dd/yy},年份可以是2位数字或4位数字,此格式命令会受语句SET DATE TO和SET CENTURY TO设置的影响

?严格的日期格式

{^yyyy-mm-dd} 例:{^1999-10-02}

年份必须是4位数字,年月日的次序不能颠倒,不能缺省,用8个字节表示 取值范围是:{^0001-01-01}~{^9999-12-31} ?影响日期格式的设置命令 A格式:SET MARK TO [日期分隔符]

功能:设置日期型数据的分隔符,若SET MARK TO 表示恢复默认斜杠分隔符

B格式:SET DATE TO MDY |DMY|YMD?? 功能:设置日期显示的格式

C格式:SET CENTURY ON/OFF[世纪值] 功能:设置(或关闭)成用4位数字显示年份 例:SET CENTURY ON ?{10/02/1999

5、日期时间型常量(占用8个字节) 日期时间型常量可以同时表示日期和时间 格式为:{<日期>,<时间>} 与日期型常量完全相同 时间格式为:[hh[:mm:[ss]][a/p]]

例: {^2002-9-17,9} 表示2002年 9月17日上午9点 6、逻辑型常量

数据: 逻辑真---.t.、.T.、.y.、.Y.

逻辑假----.F.、.f.、.N.、.n. 占用一个字节。

§3.1.2变量

定义:在程序运行过程中变化着的量。 说明:

?字段变量:表中的字段,字段名为变量名值为当前表①分类 ??内存变量:与DB无关,是内存中的一个存储区域,是数据的载体,?变量的类型取决于变量值的类型 ?

②有6种类型:

?字符型(C)??数值型(N)??货币型(Y)??逻辑型(L)?日期型(D)???日期时间型(T)

1.简单内存变量 赋值:

格式1:<内存变量名>=<表达式>

格式2:STORE <表达式> TO <内存变量名表>

说明:?当内存变量与字段变量同名时,在内存变量名前加M.(或M->)区分

同名的字段变量。

第三章 数据与数据运算 ?格式1一次只能给一个变量赋值;

格式2一次可以给多个用逗号分隔的变量赋值。

?在使用变量之前不需要定义,当使用赋值命令后,即建立了内存变量

?可以通过对内存变量重新赋值来改变其内容和类型。 例: ZF1=‘银川’

STORE 18.4 to A1,A2,A3 L1=.T. S1=$500.89

Store {^2004-09-15} to RQ1,RQ2 ?? ZF1,A1,A2,A3,L1,S1,RQ1,RQ2 2.数组

?定义:是内存中连续的一片存储区域,数组中的每个变量称为数组元素,每个数组元素的数据类型可以不相同,每个数组元素通过数组名及相应的下标来访问。 ?创建命令:

DIMENSION 〈数组名〉(〈下标上限1〉[,〈下标上限2〉])[,??] DECLEAR <数组名〉(〈下标上限1〉[,〈下标上限2〉]) [,??] 例: dimension x(8),y(3,4)

8个元素 12个元素

§3.1.3内存变量常用命令

1.内存变量的赋值 2.表达式值的显示 3.内存变量的显示 格式1:

LIST MEMORY [LIKE〈通配符〉][TO PRINTER|TO FILE 〈文件名〉] 格式2:

DISPLAY MEMORY [LIKE〈通配符〉][TO PRINTER| TO FILE〈文件名〉] 功能:显示内存变量的当前信息,包括变量名、作用域、类型、取值。 说明:①选用LIKE只显示与通配符相匹配的内存变量。

②[TO PRINTER]显示的同时送往打印机;

[TO FILE] 存入给定文件名的文本文件.TXT中。

③ LIST滚动显示,DISP分页显示 4.内存变量的清除

格式1:CLEAR MEMORY

格式2:RELEASE<内存变量名表> 格式3:RELEASE ALL [EXTENDED]

格式4:RELEASE ALL [LIKE<通配符>|EXCEPT<通配符>] 5.表中数据与数组数据之间的交换 ①将表的当前记录复制到数组

格式1:SCATTER [F1ELDS<字段名表>] [MEMO] TO <数组名> [BLANK] 功能:复制表的当前记录的指定字段到数组元素,若不指定字段 ,则复制除备注型M和通用型G之外的全部字段。

格式2:SCATTER [F1ELDS LIKE<通配符>|FIELDS EXCEPT<通配符>][MEMO]TO<数组名>[BLANK]

功能:复制用通配符指定包括或排除的字段 ②将数组数据复制到表的当前记录。

格式1:GATHER FROM <数组名>[FIELDS <字段名表>][MEMO]

功能:将数组中的数据作为一个记录复制到表的当前记录中,若数组元素个

数多于记录中字段的个数,则多余部分被忽略。

格式2:GATHER FROM <数组名>[FIELDS LIKE<通配符>|FIELDS EXCEPT<通配符>][MEMO]

功能:复制用通配符指定包括或排除的字段

§3.2表达式

定义:同类型的各种数据(常量、变量、函数)通过同类型运算符按一定规则连接起来的式子。

?型:N、C、D、L??值:按运算符的运算规则求出表达式的值§3.2.1数值、字符与日期时间表达式

一、数值表达式

定义:由算术运算符将数值型常量、变量、函数连接起来形成,运算结果仍

为数值型。 ?算术运算符优先级

A.( ) > B. **或^ > C.*、/、% > D.+、_

第三章 数据与数据运算 ?求余运算

%或MOD( ) 求余或取模,余数的正负号与除数一致 ........二、字符表达式

定义:由字符运算符与字符型常量、变量、函数构成,运算结果仍为字符型 +:将两个字符串连接形成一个新字符串

-:连接前后两个字符串,并将前字符串的尾部空格移到合并后的新字符

串尾部

三、日期时间表达式

定义:由日期型运算符与日期型或数值型的常量、变量或函数构成。运算结

果为日期型或数值型。 日期运算符:+、-

对日期表达式的格式有一些限制,合法的如教材P64表3.3 ? {^2005-09-16,10:10:10AM}-{^2004-09-16,09:10:10AM}

§3.2.2关系表达式

定义:也称简单逻辑表达式,由关系运算符与其他表达式组成,其作用是比

较两个表达式的大小或前后,其运算结果是逻辑型。 1.形式:<表达式1><关系运算符><表达式2> 说明:①数值型和货币型数据比较

按数值的大小比较

②日期和日期时间型数据比较

早的日期或时间小,晚的日期或时间大

③逻辑型数据比较 .T. 大于.F.

④子串包含测试

测试前字符串是否为后字符串的子字符串 2.设置字符的排列次序

当字符串比较时,按从左向右顺序比较,对字符序列的排序设置友人机会话和命令两种方式

①在人机会话方式下设置

?Machine“工具”→“选项”→数据选项卡→排序序列→ ??PinYin?Stroke ?②命令方式设置

?机器??拼音?笔画?SET COLLATE TO “<排序次序名>” 次序名

?Machine??PinYin?Stroke? 说明:

A.Machine: 按ASCⅡ码值排列

空格<“0”<“1”

B.PinYin:按照拼音次序排列 空格<小写字母<大写字母

C.Stroke : 无论中文、西文,按照书写笔画的多少排序。 3.字符串精确比较与EXACT设置 SET EXACT ON/ OFF

?set exact off 非精确比较

右边的字符串与左边字符串的前面部分内容相匹配,即可得到逻辑真 .T.

?set exact on 精确比较

当=时,现在较短字符串尾部加上若干个空格,使两个字符串长度相等,再比较

当==时,须两个字符串完全相同(包括空格及各字符的位置)

§3.2.3逻辑表达式

定义:由逻辑运算符将逻辑数据连接起来的式子,其运算结果为逻辑值。 1.逻辑运算符: .NOT. 、.AND. 、.OR.(NOT>AND>OR)

2.运算符优先级: 算术运算符>字符运算符和日期时间运算符>关系运算符>逻辑运算符

例:? X<50 .OR. “A”>“B”

? (3*6<>20/4) .AND.(‘A’>‘B’)

? (‘微型计算机’==‘计算机’) OR (‘计算机’$‘计算机世界’) 年龄=20

性别 =“男” 婚否=.F. 学历=“大学”

? 年龄>18 .AND. (.NOT. (性别=“女”))

? 婚否=.F. .AND. 学历=“大学”.OR. 性别=“女” ? .NOT. 性别=”男” .OR. .NOT. 婚否=.T.

第三章 数据与数据运算 §3.3常用函数

函数特点:自由变量(或称参数)的值,经过某些特定的运算后,得到相应的

函数值

格式:函数名(自变量1,自变量2,??自变量N) 类型:每个函数的自变量和函数值都有规定的数据类型 掌握:?自变量类型 ?函数名和功能 ?函数值类型

?数值函数??字符函数?分为5类?日期和时间函数

?数据类型转换函数???测试函数§3.3.1数值函数

特点:自变量和返回值都是数值型数据

1. 绝对值和符号函数

格式: ?ABS(<数值表达式>)

?SIGN(<数值表达式>) 功能:?返回绝对值

1?正   ??1 ?返回符号?负   ?0    0?2. 求平方根函数

格式:SQRT(<数值表达式>)

功能:返回指定表达式的平方根,自变量不能为负

3. 圆周率函数

格式:PI( )

功能:返回圆周率 A=PI( )

4. 求整数函数

格式: ①INT (<数值表达式>)

②CEILING(<数值表达式>) ③FLCIOR(<数值表达式>) 功能: ①返回整数部分

②返回大于或等于指定数值表达式的最小整数 ③返回小于或等于指定数值表达式的最大整数

5. 四舍五入函数

格式:ROUND(<数值表达式1>,<数值表达式2>) 功能:返回在指定位置四舍五入后的结果。 说明:若表达式2为负,则舍入到对应整数位 例: ROUND(123.456.2) →123.46 X=6789.5678

? ROUND(X,3), ROUND(X,0) ROUND(X,-1),ROUND(X,-3)

6. 求余数函数

格式:MON(〈数值表达式1〉,〈数值表达式2 〉) 功能:返回余数,余数的正负号与除数相同。 即负数以正数,余数;正数除以,余,负

7. 求最大和最小值函数

格式:?MAX(〈数值表达式1〉,〈数值表达式2〉)[,〈数值表达式3〉??]

?MIN(〈表达式1〉,〈表达式2〉[,〈表达式3〉??]) 功能:?返回最大值 ?返回其中的最小值

说明:自变量表达式可以是:数值型、字符型、货币型、双精度型、浮点

型、日期型和日期时间型,但所有表达式类型须相同

§3.3.2字符函数

指自变量一般是字符型数据的函数

1. 求字符串长度函数

格式:LEN(〈字符表达式〉)

功能:返回字符表达式的长度,结果为数值型 2.大小写转化函数

格式: ①LOWER(〈字符表达式〉)

②UPPER(〈字符表达式〉)

3.空格字符串生成函数 格式:SPACE(〈数值表达式〉) 功能:生成指定数目的空格字符串 4.删除前后空格函数

第三章 数据与数据运算 格式:①TRIM(〈字符表达式〉)

②LTRIM(〈字符表达式〉) ③ALLTRIM(〈字符表达式〉) 5.取子串函数

格式:①LEFT(〈字符表达式〉,〈长度〉)

②RIGHT(〈字符表达式〉,〈长度〉)

③SUBSTR(〈字符表达式〉,〈其始位置〉,[〈长度〉]) 功能:①从左端取一个指定长度的子串 ②从右边取一个长度的子串 ③从指定起始位置取指定长度的子串 6.计算子串出现次数函数

格式:OCCURS(〈字符表达式1〉,〈字符表达式2〉)

功能:返回第一个字符在第二字符串中出现的次数,函数值为N型 7.求子串位置函数

格式:?AT(〈字符表达式1〉,〈字符表达式2〉,[〈字符表达式〉])

?ATC(〈字符表达式1〉,〈字符表达式2〉,[〈字符表达式〉]) 功能:若串1是串2的子串,则返回串1首字符在串2中的位置,否则返

回0。

〈数字表达式〉指明串1在串2中第N次出现的位置。 例:AT(“IS”,“THIS IS A BOOK”) AT(‘5’,‘123456’) AT(‘安’,‘西安’) 8.子串替换函数

格式:STUFF(<字符表达式C1>,<起始位置N1>,<长度>N2,<字符表达式2>) 功能:用C2替换C1中起始位置开始的N个字符 注: ①N1大于C1的长度.则将C2连到C1后面;

②N2=0,将C2插到C1中第N1个字符后面;

③C2是空串,则删除C1中由N1指定的N2长度的字符串。 例: C1=“abcdef”

? stuff(C1,2,3,“12345”) ? stuff(c1,2,0,“12345”) ? stuff(c1,2,3,“”) 9.字符替换函数

格式:CHRTRAN(<字符表达式C1>,<字符表达式C2>,<字符表达式C3>) 功能:当C1中的一个或多个字符与C2匹配时就用C3中对应字符替换这些

字符;

若C3串字符少于C2中时,则C1中会被删掉字符;

若C3中字符多与C2中时,多余被忽略。 10、字符串匹配函数

格式:LIKE(<字符表达式C1>,<字符表达式C2>)

功能:C1与C2所有对应位置都匹配,则返回.T., 否则返回.F. 注:C1中可以包含通配符*和?

例:? LIKE(“XY?”,“XYZ”),LIKE(“38*”,“38.29”)

§3.3.3日期和时间函数

1.系统日期和时间函数 格式: DATE( )

TIME( ) DATETIME( )

功能:分别返回当前系统日期、时间、日期时间。 2.求年份、月份和、天数函数

格式:YEAR(|) MONTH(|) DAY(|) 3.时、分、秒函数

格式: HOUR(<日期时间表达式>)

MINUTE() SEC()

功能:分别取表达式中的时,分,秒部分

§3.3.4数据类型转换函数

1.数值转换成字符串

格式:STR(<数值表达式>[,<长度>[,〈小数位数〉] 功能:按长度和保留的小数位数,将数字转成字符串。 说明: ①若省略小数位,则转为正数,小数四舍五入

②若同时省略长度和小数位,则小数位为0,长度为10。

③当长度<实际转换后的长度时,不能转换 。 2.字符串转换成数值 格式:VAL(<字符表达式>)

功能:从第1个字符开始到第1个非数字字符间的字符串转换成对应数值。

第三章 数据与数据运算 注:若以非数字开头,则返回O。 例: ?val(“34.85abc”) ?val(“315计划”) ?val(“ABC123546”) 3.字符串转成日期或日期时间 格式: CTOD(<字符表达式>)

CTOT(<字符表达式>)

功能:将字符表达式的值转换成日期或日期时间型. 4.日期或日期时间转换成字符串

格式: DTOC(|[,1])

TTOC([,1]) 功能:将D或T型数据转换成字符串

选1时按约定格式,

例: ? DTOC (date ()), DTOC (date (),1), TTOC (datetime()) ? TTOC (datetime(),1) 5.宏替换函数

格式: &<字符型变量>[.]

功能: 替换出字符型变量的内容,当需要用一个表达式代替许多可变的内

容时,取变量当前值 例: ①城市=“北京”

STORE “向&城市.致敬!” TO A ? A

②X1=’10’ X2=’10’

? &X1*&X2 → 100

③ABC=“FoxPro” X=“B” Y=“C”

Z=“A&”+“X&”+“Y”

?&z →FoxPro ④BJ=“96(2)” XSK=“A:XS”+BJ

USE &XSK → A:XS96 (2)

§3.3.5测试函数

1.值域测试函数

格式:BETWEEN(<表达式T>,<表达式L>,<表达式H>) 功能:测试一个表达式的值是否介于另外两个表达式之间。

函数值为.T. 、.F. 或 NULL值。 注:三个自变量类型须一致 2.空值测试函数 格式:ISNULL(<表达式>)

功能:判断一个表达式的运算结果是否为NULL值。 3.空值测试函数 格式:EMPTY(<表达式>)

功能:表达式结果为空,则 .T. ;否则.F.。 注:“空”与NULL不同 4.数据类型测试函数

格式:VARTYPE(<表达式>[,<逻辑表达式>]) 功能:返回表达式的类型字母, 5.表文件尾测试函数

格式:EOF([<工作区号>|<表别名>])

功能:测试记录指针是否向文件尾,若是为.T.; 否则是.F.。 6.表文件首测试函数

格式:BOF([<工作区号>|<表别名>])

功能:测试记录指针是否指向文件首,若是为.T.; 否则是.F.。 7.记录号测试函数

格式:RECNO([<工作区号>|<表别名>]) 功能:返回当前表文件的当前记录号 8.记录个数测试函数

格式:RECOUNT([<工作区号>|<表别名>]) 功能:返回当前表的记录个数。 9.条件测试函数

格式:IIF(<逻辑表达式L>,<表达式1>,<表达式2>)

功能:测试L值,若为.T.返回表达式1的值;若为.F., 返回<表达式2>的值。

10、记录删除测试函数

格式:DELETED([<表的别名>|<工作区号>])

功能:测试指定工作区中的表,当前记录是否被逻辑删除,若有*,则返回.T.

否则返回.F. 表中概念补充:

1.首记录:表文件的第一个记录叫文件首记录。

第三章 数据与数据运算 2.末记录:表文件的最后一个记录叫文件末记录。

3.记录号:能够表明每个记录在表文件中存放的前后次序的,叫记录序号,

每条记录都有一个记录号,它由系统在内部赋给每条记录。

4.记录指针:在表文件中,用来指示记录位置的指针。每个表文件、排序文

件或索引文件都设置有一个记录指针,由系统内部设置,在对表文件进行数据操作过程中,记录指针是可以移动的。

5.当前记录:记录指针指向的记录被称作当前记录。任何时候,记录指针都

指向一个记录。

6.记录函数: RECNO(),用来记录当前记录序号的函数。

第四章 Visual FoxPro数据库及其操作

教学内容与目的:

?掌握数据库,数据库表和由表的建立,管理以及它们之间的关系;

?掌握字段的各种属性和字段有效性规则; ?学习索引的概念,建立和使用方法;

?了解数据完整性,多工作性的基本内容和方法。 ?了解VF。

教学重点: 数据库,表的建立和管理 教学难点: 索引的建立和使用

课时分配: §4.1: 2课时 §4.2:2课时 §4.3: 2课时

§4.4: 2课时 §4.5:2课时 §4.6: 0.5课时 §4.7: 1课时 §4.8 :0.5课时

§4.1 Visual FoxPro数据库及其建立

一、说明:①DB是一个逻辑上的概念和手段,是一个容器,通过一组系统文件统

一组织和管理相互关联的数据库表及其相关的DB对象。

②建立DB时,产生三个同名文

?dbc库文件??dct备注文件?dcx索引文件?

二、建立数据库

?①在项目管理器中??②新建对话框?③命令方式?1.在项目管理器中建立数据库

项目管理器→“数据”→“数据库”→“新建”→“新建数据库”→库名.dbc 2.通过“新建”对话框建立数据库

“文件”→“新建”→文件类型→数据库 3.使用命令交互建立数据库

格式:CREATE DATABASE [Database Name|?] 说明: ①1、2方法会自动打开库设计器,3打不开。

②若库名已存在,则会覆盖。

命令: SET SAFETY ON/OFF 设置警告。 三、使用数据库

?在项目管理器中打开数据库??通过打开对话框打开数据库?使用命令打开数据库?命令格式:

OPEN DATABASE [Filename|?] [EXCLUSIVE|SHARED]

[NOUPDATE] [VALIDATE]

说明:①filename是数据库名,若使用?则显示打开对话框。

②EXCLUSTVE|SHARED:以独占或共享方式打开数据库。 ③NOUPDATE:以只读方式打开指定DB。

④VALIDATE:检查在数据库中引用的对象是否合法。 注意:①NOUPDATE实际不起作用。

②当DB打开后,库中的表还需要用USE打开。

③当USE打开一个表时,首先在当前库中找,找不到时会继续在库外找并打开表。 ④指定当前库命令:

SET DATABASE TO [DataBaseName]

SET data to 含义:所有打开DB都不是当前DB 四、修改数据库

用户可以在DB设计中完成对DB的建立,修改和删除

?从项目管理器中打开DB设计器

??从\打开\对话框中打开DB设计器?使用命令?第四章 Visual FoxPro数据库及其操作 方法

格式:MODIFY DATABASE [DatabaseName |?] [Nowait] [Noedit] 说明:①[Nawait]在程序中继续执行此命令后的语句;

若无,则DB设计器关闭后程序才继续执行。 ②[Naedit]只是打开DB设计器,但禁止对DB修改。

五、删除数据库

?移去:从项目管理器中删除?通常在项目管理器中 ?删除:从项目管理器和磁盘上删除相应的DB?取消 ?

命令删除格式:

DELETE DATABASE DATABASENAME|?[DELETTABLES][RECYCLE] 说明:①[DELETETABLES]删除DB时删除库所包含的表。

②[RECYCLE]将删除的DB和表放入回收站。

③在SET SAFETY ON 时会提示,否则直接删。

§4.2建立数据库表

一、在数据库中建立表 ㈠操作方式

1.字段名:以字母或汉字开头,由字母、汉字、数字和下划线组成,不能包含空格。

2.字段类型和宽度

字符型、货币型、数值型、浮点型、日期型、日期时间型、双精度型、整数型、逻辑型、备注型、通用型。 3.空值:是否允许为NULL 4.字段有效性规则:字段值的约束 5.显示组框

可以定义字段显示的格式,输入的掩码或字段标题 ①格式:是输出掩码,字段的显示风格 ②输入掩码:用以限制或控制用户输入的格式 例:X、A、9、#、!等

③标题:字段的描述 6.字段注释:

为字段添加注释

㈡命令方法:

用OPEN DATABSE 打开 DB 用CREATE建立表 格式:CREATE <表名>

说明:①可以不打开库,直接建自由表 ②新建表处于打开状态 ③打开/关闭表命令 USE TABLENAME 打开

USE 关闭

二、修改表结构

㈠操作方式 →DB设计器中右单击表→“修改”→表设计器 ㈡命令方式:

MODIFY STRUCTURE

练习:教材P113学生管理系统和P103、P116订货管理系统。

§4.3表的基本操作

§4.3.1使用浏览器操作表

一、使用BROWSK浏览器:

①项目管理器→选择表→单击“浏览”按钮 ②数据库设计器→选择表→ 数据库菜单→浏览 右单击→快捷“浏览” ③命令方式:

use 表名 browse↙

二、浏览操作

↑、↓、←、→、 PageDown、PageUp、Tab、Shift+Tab. 添加记录 :①Ctrl+Y

②“表”菜单→“追加新记录”

之后在表末会添加一条空白记录,输入新记录值即可。 三、修改记录

直接光标定位修改 四、删除记录

逻辑删除:只在记录旁做删除标记,必要时可以恢复记录 物理删除:将有删除标记的记录真正删除 逻辑方法:①命令:Ctrl+T

第四章 Visual FoxPro数据库及其操作 ②表菜单→切换删除标记 物理方法:“表”菜单→“彻底删除:

§4.3.2增加记录的命令

1.APPEND命令 格式:APPEND [BLANK]

功能:①在表的尾部追加记录,可以连续输入多条。 ②在表尾增加一条空白记录。 2.INSERT命令

格式:INSERT [BEFORE] [BLANK]

功能:在表的任意位置插入新的记录,不指定[Before]插当前记录后,否

则插当前记录前。

注意:若表上建立了主索引或候选索引则不能用APPEND或INSERT命令插

入记录。

§4.3.3删除记录的命令

1.置删除标记命令 格式:DELETE [FOR条件]

功能:逻辑删除符合条件的所有记录,若无条件则只逻辑删除当前一条记录。

2.恢复记录命令

格式:RECALL [FOR条件]

功能:恢复符合条件的记录,无条件则只恢复当前一条记录。 3.物理删除有删除标记的记录 格式:PACK

4.物理删除表中的全部记录 格式:ZAP

§4.3.4修改记录的命令

1.用EDIT或CHANGE命令交互或修改 2.用REPLACE命令直接修改

格式:REPLACE字段名1 WITH 表达式1[,字段名2 WITH 表达式2]?? [FOR条件]

功能:可以成批快速修改满足条件的一批记录的几个字段。用With后面的

表达式的值替换在With前面的字段的内容。

说明:不使用FOR短语则只修改当前记录。

使用FOR短语,则只修改满足条件的所以记录 例:①将“工程师”的工资加100。

.use zgk

.repl 工资 with 工资+100 for 职称=“工程师” ②将75年前工作的人的职称改为工程师,工资加80。

.repl 职称 with “工程师”,工资 with 工资+80 for

工作日期<{^1975-01-01}

§4.3.5显示记录的命令

格式:LIST/SISPLAY [FIELDS 字段名表][FOR条件][OFF] [TO PRINTER [PROMPT]|TO FILE<文件名>] 功能:显示符合条件的记录的字段值

说明:①list默认显示全部记录,而Display则默认显示当前记录。

②[fields字段名表]指定显示的字段,否则默认显示全部字段。 ③有[OFF]不显示记录号,否则显示。

④[To PRINTER]说明将结果输出到打印机。[Prompt]则在打印之前出现一个打印设置对话框,可对打印机进行设置。 ⑤[TO FILE]将结果输出到文件*.TXT。 例:

① 显示姓名、年龄、工资

list 姓名,年龄,工资

② 显示年龄在30岁以上的工人的工资

list姓名,工资 for 职称=“工人” and 年龄>30 ③ 显示职称是工程师的女同志

list 姓名 for 职称=“工程师” and 性别=“女”

§4.3.6查询定位命令

1.绝对定位命令

格式:GO nRecord Number|TOP|BOTTOM 功能:将当前记录定位于第N条记录 2.相对定位命令SKIP

第四章 Visual FoxPro数据库及其操作 格式:SKIP [nRecords]

功能:将记录指针以当前记录为基础,上移或下移若干条记录。

>0,下移 <0,上移 =0,不动

无参,下移一条记录

3.用LOCATE命令定位 格式:LOCATE FOR 条件 ??

CONTINUE

功能:将记录指针定位在满足条件的第一条记录上,用Continue命令则继

续查找下一条满足条件的记录。

找到: Found( )=.T.

没查到: Found()=.F., Eof()=.T.

§4.4索引

索引:使记录按某种顺序排列,但不需要改变记录的物理位置。 索引文件:(是一棵以索引块为结点的“带稠密索引的B树”)保存表文件

中每个记录的某个关键字段的值以及相应记录在表文件中的位置的文件。

说明:索引如同书的目录,索引可以使用户快速找到表中的数据。可按照

关键字建立与表文件相关的索引文件,当表文件和索引文件一起使用时,记录将按照索引文件指定的顺序出现,且当表文件的数据改变时,这种顺序还可以自动调整。

关键字值:每个记录对应关键字(单、组合)表达式都有一个确切的值,

称为该记录的关键字值。

§4.4.1索引的种类

1.主索引(Primary index)

定义:在指定字段或表达式中不允许出现重复值的索引.

说明:①只有数据库表可以创建主索引,一个表只能创建一个主索引,通

常用表的主关键字作为主索引关键字

②主索引可以确保字段中输入值的唯一性,并决定了处理记录的顺

序。

③如果某个表已经有了一个主索引,还可以以为它添加候选索引。

2.候选索引(candidate index)

定义:同主索引一样要求关键字段或表达式不能有重复值。用候选关键字

建立候选索引。

说明:数据库表和自由表都可以建立候选索引,并且一个表可以建立多个

候选索引。

3.唯一索引(unique index)

定义:为了与Foxbase兼容而保留的一种索引。

说明:①“唯一性”是指索引项的唯一,而不是字段值的唯一。 ②一个表种可以建立多个唯一索引,并且不要求索引字段值唯一,

它以字段的首次出现值为基础,选定一组记录,并对记录进行排序。

4.普通索引(regular index)

定义:也可以决定记录的处理顺序,可用来对记录排序和搜索记录,它不

仅允许字段出现重复值,且允许索引项种也出现重复值,在一个表中,可以建立多个普通索引。

§4.4.2在表设计器中建立索引

1.单项索引 ?定义字段时: 无

升序 →选定则建立普通索引。索引名与字段名相同 降序

主索引 ?“索引”选项卡,“类型”—选择 候选索引 唯一索引 普通索引 2.复合字段索引

“索引”选项卡——“插入”按钮——输入索引名 ——选择索引类型——打开表达式生成器——输入索引表达式——“确定”

说明:①在一个表上可以建立多个普通索引、候选索引和唯一索引,但只

能建立一个主索引。

②主索引用于主关键字字段;候选索引用于那些不作为主关键字但字段值又必须唯一的字段;普通索引用于一般地提高查询速度;唯一索引用于一些特殊的程序设计。

§4.4.3用命令建立索引

第四章 Visual FoxPro数据库及其操作 一、索引命令:

INDEX ON eExperession TO IDXFile Name|TAG TagName[oF CDXFile Name]

[For LExpression] [compact] [ASCEDING |DESCENDING] [UNIQUE |CANDIDATE] [ADDITIVE] 参数含义:

① eExpression 索引表达式,字段名或包含字段名的表达式 ② To IDXFileName: 建立一个单独的索引文件,扩展名为.idx。 ③ TagName 索引名

结构复合索引:多个索引创建在一个索引文件中,其文件名与表名同名,扩展名为.cdx。

用of短语,则可用CDXFile Name指定包含多个索引的复合索引文件名,扩展名也是.cdx。

④ FOR LEXPression 给出索引过滤条件,一般不用。

⑤ Compact当使用TO索引文件时说明建立一个压缩的.idx 文件。 ⑥ [A|D]建立升序或降序索引,默认升序。 ⑦ UNIQUE说明建立唯一索引。 ⑧ CANDIDATE说明建立候选索引。

⑨ ADDITIVE 说明建立索引时是否关闭以前的索引。 ⑩ 命令可建立普通索引、唯一索引或候选索引。 二、索引文件的种类

1、 2、 3、

独立索引文件(*.idx):是一种非结构单索引。 采用非默认名的.cdx索引,是非结构复合索引。

结构复合索引:与表名同名的.cdx索引,可包含多个索引项,是 ......

VFP中最重要的一种索引文件.

其特性: ①在打开表时自动打开

②在同一索引文件中能包含多个索引关键字 ③在添加、更改或删除记录时自动维护索引

§4.4.4使用索引

1、

打开索引文件

命令:SET INDEX TO IndexFilelist

功能:主要用于独立索引文件的打开,IndexFilelist 是用逗号分开的索

引文件表,可以包含idx 和cdx索引。 2、设置当前索引 命令:SET ORDER TO [nIndexnamber|[TAG]TagName]

[ASCEBDING/DESCENDING] 功能:按索引号或索引名指定索引定位 3、使用索引快速定位(索引查找)

命令:SEEK eExpression [ORDER nIndexNumber|[TAG]TagName]

[Asceding|desceding]

功能:可以用索引号或索引名指定按那个索引定位 4、

删除索引

DELETE TAG ALL →删除全部索引

命令:DELETE TAG TagName→要删除的索引名

§4.5数据完整性

一、实际完整性与主关键字

1.定义:保证表中记录唯一的特性,即在一个表中不允许有重复的记录。 2.实体完整性是由主关键字或候选关键字来保证的。 3.VF中将主关键字称为主索引,候选关键字称作候选索引。 二、域完整性与约束规则

域完整性:通过定义字段数据类型、字段宽度和字段的有效规则等实现数

据的域完全性。

约束规则:字段有效性规则 在表设计器的字段选项卡中: 规则:字段有效性规则

信息:违背有效性规则时的提示信息 默认值:

三、参照完整性与表文之间的关联

定义:建立在父表与子表之间的联系的基础上,参照完整性包括更新规则、

删除规则和插入规则。

即:当插入、删除或修改一个表中的数据时,通过参照引用相互关联的

另一个表中的数据,来检查对表的数据操作是否正确。 1.建立表之间的联系

在DB设计器中,首先在父表中建立主索引,在子表中建立普通索引,然后通过父表的主索引和子表的普通索引建立量表之间的联系。

第四章 Visual FoxPro数据库及其操作 2.设置参照完整性约束 “编辑参照完整性”

①更新规则 级联:用新的字段值自动修改子表中的相关记录

限制:禁止修改父表连接字段 忽略:不作参照完整性检查

②删除规则 级联:

限制: 同上 忽略:

③插入规则 限制:若父表没有相匹配的连接字段则禁止插入子记录 忽略

§4.6自由表

自由表:不属于数据库中的表。

§4.6.1数据库表与自由表

说明:创建表时,如果当前没有打开数据库,则创建的是自由表。 1、

自由表的创建:

① 项目管理器—“数据”—“自由表”—“新建” ② 文件——新建 ③ CREATE命令 2、

数据库表的特点:

① DB表可以使用长文件名和长字段名。 ② DB表中的字段可指定标题和添加掩码。 ③ DB表的字段可指定默认值和输入注释。 ④ 有默认的控件类。

⑤ DB表可规定字段规则和记录级规则。

⑥ DB表支持主关键字、参照完整性和表之间的联系。 ⑦ 支持Iusert、Update和delete事件的触发器。

§4.6.2将自由表添加到数据库

一、交互式操作

1.项目管理器——选DB——选表——添加——打开

本文来源:https://www.bwwdw.com/article/m507.html

Top