第3章数据管理基础数据表达.docx

上传人:b****4 文档编号:11915906 上传时间:2023-04-16 格式:DOCX 页数:41 大小:41.68KB
下载 相关 举报
第3章数据管理基础数据表达.docx_第1页
第1页 / 共41页
第3章数据管理基础数据表达.docx_第2页
第2页 / 共41页
第3章数据管理基础数据表达.docx_第3页
第3页 / 共41页
第3章数据管理基础数据表达.docx_第4页
第4页 / 共41页
第3章数据管理基础数据表达.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

第3章数据管理基础数据表达.docx

《第3章数据管理基础数据表达.docx》由会员分享,可在线阅读,更多相关《第3章数据管理基础数据表达.docx(41页珍藏版)》请在冰豆网上搜索。

第3章数据管理基础数据表达.docx

第3章数据管理基础数据表达

第3章数据管理基础——数据、表达式和函数

教学内容:

3.1数据

3.2操作符和表达式

3.3函数

教学时间:

第四周

教学方法:

演示文稿演示教学和实际操作演示教学相结合

教学目的:

本章主要介绍VisualFoxPro系统中各种数据的数据类型以及它们的表达式,为用户使用VisualFoxPro系统进行数据操作和管理建立良好的基础。

教学重点难点:

1、数据类型

2、操作符和表达式

3、常用函数

教学过程:

数据库技术是进行数据处理的有效手段和方法。

在数据库系统中,用户通过数据库管理系统(即DBMS)提供的功能,对数据库中各类数据进行相应的操作处理和组织管理。

3.1数据

数据是数据库系统的操作和管理对象。

人们通常使用各种各样的物理符号来表示客观事物,这些符号及其组合就是数据。

计算机中所谓的数据就是计算机可以处理的一切对象。

数据的概念包括两方面的含义,即数据内容和数据形式。

数据内容是指所描述客观事物的具体特性,也就是数据的“值”;数据形式则是指数据内容存储在媒体上的具体形式,也就是所谓的数据“类型”。

数据主要有数字、文字、声音、图形和图像等多种形式。

数据是数据库系统的操作和管理对象。

人们通常使用各种各样的物理符号来表示客观事物,这些符号及其组合就是数据。

计算机中所谓的数据就是计算机可以处理的一切对象。

数据的概念包括两方面的含义,即数据内容和数据形式。

数据内容是指所描述客观事物的具体特性,也就是数据的“值”;数据形式则是指数据内容存储在媒体上的具体形式,也就是所谓的数据“类型”。

数据主要有数字、文字、声音、图形和图像等多种形式。

3.1.1数据类型

数据的概念包含数据内容和形式两个方面,数据形式就是数据的存储形式和使用方式,也称数据类型。

和其他程序设计语句类似,VisualFoxPro为了使用户建立和操作数据库更加方便,提供了多种数据类型,各种类型的数据可以保存在表、数组、变量及其他数据容器中。

数据类型有一定的应用范围,下列数据类型均可应用于表中字段数据类型的定义,但其中双精度型、浮点型、通用型、整型、备注型、二进制字符型和二进制备注型只能应用于字段,其余数据类型,如字符型、数值型、货币型、日期型、日期时间型和逻辑型,则可以用于变量、数组和字段。

1.字符型(Character)

字符型数据是不具有计算能力的文字数据类型,用字母C表示。

字符型数据由任意字符组成,包括中文字符、英文字符、数字字符和其他ASCII字符,其长度(即字符个数)范围是0~254个字符。

字符类型可以表示诸如姓名、名称、地址以及无需算术运算的数字号码(如学号、职工工号、电话号码以及邮政编码等)。

2.与数值相关的类型

与数值相关的类型数据是表示数量、可以进行数值运算的数据类型。

用它们来表示数量,且由数字、小数点、正负号和表示乘幂的字母E组成,数值精度达16位。

在VisualFoxPro系统中,按存储、表示形式与取值范围不同,有以下4种不同类型。

(1)数值型(Numeric)

数值型数据由数字、小数点、正负号和字母E组成,用字母N表示。

数值型数据的取值范围是-0.9999999999E+19~0.9999999999E+20,包括正负号、小数点和字母E在内,其长度(数据位数)最大20位。

通常用于表示实数,如235、-123.15、1.3E+8(即1.3×108)等。

(2)浮点型(Float)

浮点型数据是数值型数据的一种,用字母F表示。

它与数值类型完全等价,只是在存储形式上采用浮点格式,主要是为了得到较高的计算精度。

(3)双精度型(Double)

双精度型数据是具有更高精度的一种数值类型数据,用B表示。

它采用固定长度浮点格式存储,占用8个字节,其取值范围是:

±4.94065645841247E-324~±8.9884656743115E+307。

(4)整型(Integer)

整型数据是不包含小数部分的数值型数据,用I表示。

整型数据只用于表示整数,如15、-230、1234等,以二进制形式存储,占用4个字节,因此整型数据比数值型数据占用的空间要小。

其取值范围是:

-2147483647~2147483646。

3.日期型(Date)

日期型数据是表示日期的数据,用字母D表示。

日期的默认格式是{mm/dd/yy},其中mm表示月份,dd表示日期,yy表示年份,日期类型数据的固定长度8位。

VisualFoxPro系统中提供了多种日期格式,但是需要通过相应的设置来改变,如命令SETDATE、SETMARK、SETCENTURY;或在“工具”菜单中选择“选项”对话框的“区域”选项卡进行有关日期的设置。

例如{02/10/03}表示03年2月10日,通过SETCENTURYON命令可以将年份改写为4位,即{02/10/2003}表示2003年2月10日。

4.日期时间型(DateTimes)

日期时间型数据是表示日期和时间的数据,用字母T表示。

在保存日期、时间二者兼有时,可以使用日期时间数据类型。

日期时间的默认格式是{mm/dd/yyhh:

mm:

ss},其中mm、dd、yy的意义与日期型相同,而hh表示小时,mm表示分钟,ss表示秒数。

日期时间型数据也是采用固定长度8位,第一个4字节保存日期,另一个4字节保存时间,取值范围是:

日期为01/01/0001~12/31/9999,时间为00:

00:

00~23:

59:

59,如{02/10/200314:

20:

30}表示2003年2月10日14时20分30秒这一日期时间数据。

日期时间类型的时间部分的格式取决于SETHOURS和SETSCEONDS命令的设置,另外还要注意如下规则:

{00:

00:

00AM}等价于{12:

00:

00AM};

{00:

00:

00PM}等价于{12:

00:

00PM}。

5.逻辑型(Logic)

逻辑型数据是描述客观事物真假的数据类型,表示逻辑判断的数据用字母L表示。

逻辑型的数据只有两种值:

真(.T.或.Y.)和假(.F.或.N.)固定长度1个字节,是一种高效的存储方法。

为区别其他数据类型,一般需在表示逻辑的字母前后加小圆点,如.T.、.F.等。

6.备注型(Memo)

备注型数据是用于在表中存储数据块、可以存放较多字符的数据类型,如个人简历、备注内容等具有较长文字内容的数据。

可以把它看成是字符型数据的特殊形式,用字母M表示。

备注型数据没有数据长度限制,仅受限于磁盘空间。

它只用于表示字段类型的定义,字段长度固定为10个字节,它指向实际的备注内容,实际数据存放在与表文件同名的备注文件(.fpt)中,长度根据数据的内容而定。

7.通用型(General)

通用型数据是存储OLE(对象链接嵌入)对象的数据类型,用字母G表示。

通用型数据中的OLE对象可以是电子表格、文档、图形、图片等。

它只用于表中字段类型的定义。

通用型数据字段长度固定为10字节,实际数据长度仅受限于磁盘空间。

OLE对象的实际内容、类型和数据量大小取决于链接或嵌入OLE对象的操作方式。

如果采用链接OLE对象的方式,则表中只包含OLE对象的引用说明,以及对创建该OLE对象的应用程序的应用说明;如果采用嵌入OLE对象方式,则表中除包含对创建OLE对象的应用程序的引用说明外,还包含OLE对象的实际数据。

8.货币型(Currency)

货币型数据是为存储货币金额而使用的一种数据类型。

当涉及货币时,可使用货币类型代替数值类型,默认保留4位小数,长度为8个字节,用字母Y表示。

如$1234.56,其中“$”为美元符号。

货币类型的取值范围是:

-922337203685477.5808~922337203685477.5807。

9.二进制字符型和二进制备注型

这两类数据是以二进制格式存储的数据类型,只能用在表中字段数据的定义。

所存储的数据不受代码页改变的影响。

二进制字符类型字段最长不超过254个字符,它是在各种代码页间保持不变的字符数据,如保存在表中的用户口令,可用于不同国家;二进制备注型字段在表中占4个字节,它是在各种代码页间保持不变的备注字段数据,用于不同国家的登录脚本。

3.1.2常量

常量是在命令或程序中可以直接引用、具有具体值的命名数据项,其特征是在整个操作过程中它的值和表现形式保持不变。

VisualFoxPro按照常量取值的数据类型将常量分为6种类型,即数值型、浮点型、字符型、逻辑型、日期型、日期时间型。

VisualFoxPro系统还可以创建预编译常量。

这种常量在设计阶段先预定为一个具体的值,以后凡需要用到此值的地方都可以用该预编译常量代替。

编译之后,凡在源代码中出现该常量的地方都用该常量的具体值来置换。

这样,只要改变一个预编译常量的值,就可以影响到整个应用程序。

预编译常量必须定义其值。

所以系统提供了#DEFINE预处理命令,给常量赋值,如下所示:

#DEFINEN123

#DEFINECHAR″字符″

上述两条预编译命令的功能是定义了一个数值型预编译常量N和一个字符串常量CHAR,故在程序中,凡是要用到123或“字符”的地方都可用N或CHAR代替。

编译之后,凡在源代码中出现N或CHAR的地方都被123或“字符”代替。

如果要把程序中的数值123改为456,或字符串“字符”改为“字符串”,则不需要到程序中的每一处去修改,只需在上述预编译命令中修改一次即可,如下所示:

#DEFINEN456

#DEFINECHAR″字符串″

值得注意的是,在程序中的预编译常量名不能再用它作为变量名,不能对它赋值。

可以通过#UNDEFN和#UNDEFCHAR释放预编译常量N和CHAR。

1.数值型常量

由数字、小数点和正负号组成,表示整数或实数值,如120、-560、15.12、-5214.687等分别是数值型常量中的整数和实数。

2.浮点型常量

这种常量是以浮点格式表示的数值常量。

通常用来表示那些绝对值很大或很小、而有效位数不太长的一些数值,对应于日常应用中的科学记数法。

如960万,以实数形式表示为9600000,以科学记数法的乘幂形式表示是9.6×106;13亿,以实数形式表示是1300000000,以科学记数法的乘幂形式表示是1.3×109。

显然用科学记数法形式表示比较简洁、方便,对应的,采用浮点型常量分别表示为9.6E+6和1.3E+9,其中,9.6和1.3称为尾数,表示有效数字,6和9称为阶码,表示幂指数。

阶码只能是整数,尾数可以是整数,也可以是小数;阶码和尾数均可正可负。

3.字符型常量

由任意ASCII字符、汉字和汉字字符组成的字符型数据,字符型常量也称为字符串,为了与其他类型常量、变量和标识符相区别,VisualFoxPro系统为字符串设置了3组定界符,如一对双引号,一对单引号,一对方括号。

表示一个字符串时,只需使用它们中的任意组都可以。

例如″HappyNewYear!

″、′新年好′、[欢迎进入VisualFoxPro系统],这些均可表示为字符串,也就是字符型常量。

4.逻辑型常量

逻辑型常量就是表示逻辑判断结果“真”与“假”或者“满足”与“不满足”的逻辑值。

逻辑常量只有两种值,分别用.T.或.Y.和.F.或.N.表示“真”、“满足”和“假”、“不满足”。

表示时一般应在逻辑常量的字母左右加小圆点,以示与其他数据类型常量、变量、标识符等的表示相区分。

5.日期型常量

日期型常量表示日期值的数据。

为了与其他表示加以区分,日期型常量需用{}作为它的定界符,如{02/10/2003}表示2003年2月10日这个日期常量。

6.日期时间型常量

日期时间型常量是VisualFoxPro系统提供的一种表示日期和时间值的常量形式,同样,为了加以区别,需用{}作为定界符,如{5/1/200210:

00am}表示2002年5月1日上午10时这个时间。

3.1.3变量

变量是在操作过程中可以改变其取值或数据类型的数据项,其实质是内存中的一个存储单元的位置,其变量名是存储位置的符号标识。

在VisualFoxPro系统中,变量分为字段变量、内存变量和系统变量3类。

此外,作为面向对象的程序语言,对象是一个很重要的概念,对象实质上也是一类变量。

确定一个变量需要3个要素:

变量名、数据类型和变量值。

1.一般命名约定

在VisualFoxPro系统中,将表示和存储数据的常量、变量、数组、字段、记录、对象、表、数据库等,都称为数据容器。

所有数据容器均需命名以相互区别,为规范各类标识符的命名,VisualFoxPro系统推荐了若干“命名约定”供用户参考,以提高操作命令与程序的可读性和规范性。

对于数据容器和一些命令、函数中所需参数的命名,用户应遵循以下一般规则:

①只使用字母、下划线和数字命名;

②命名以字母或下划线开头,除自由表中字段名、索引的TAG标识名最多只能有10个字符外,其他的命名可使用1~128个字符;

③避免使用VisualFoxPro系统中的保留字(如命令名、标准函数名等各种系统预定义项的名称)进行命名,以免造成系统区分和识别上的混乱;

④文件名的命名应遵循操作系统的约定。

2.内存变量

内存变量是在内存中定义的、一种单个数据元素的临时性变量,它独立于数据库文件而存在,使用时可以随时建立,一旦程序运行完毕,这些变量就自行释放。

内存变量的作用是提高数据值的传递、运算和临时存放效率。

(1)内存变量的数据类型

内存变量的数据类型有5种:

数值型、字符型、逻辑型、日期型和日期时间型。

内存变量的数据类型取决于创建时所赋值给它的值的类型。

(2)内存变量的创建

创建内存变量就是给内存变量赋值。

内存变量赋值既可以定义一个新的内存变量,也可以改变已有的内存变量的值或数据类型。

内存变量赋值命令有两种:

格式1:

STORE<表达式>TO<内存变量表>

其功能是将<表达式>的值计算出来并赋值给指定内存变量表中的各个内存变量,内存变量表中变量名与变量名之间用逗号间隔。

例如:

①STORE(20+40)/2TON1,N2,N3

②STORE″Iamastudent.″TOC1,C2

上述例子①中是将(20+40)/2表达式的值计算出来后分别赋值给变量N1、N2、N3,此时不但定义了内存变量的数值,而且还确定了内存变量的数据类型,N1、N2、N3变量均为数值型内存变量。

同样,②中是将″Iamastudent.″字符串赋值给字符变量C1和C2。

格式2:

<内存变量>=<表达式>

其功能是将<表达式>的值计算出来并赋值给指定的内存变量。

该格式的功能与格式1基本相同,不同的是格式1可以同时给多个变量赋值,而格式2一次只能给一个变量赋值。

例如:

A=1

B=″学校″

上述例子创建了两个变量A和B,其值分别是1和“学校”,并由赋值而确定了A为数值型变量,B为字符型变量。

(3)内存变量的显示输出

要想在变量创建后能看到变量内的值,VisualFoxPro系统提供了两个简单的在屏幕上输出内存变量值的命令。

格式1:

?

<表达式表>[AT<列号>]

格式2:

?

?

<表达式表>[AT<列号>]

其命令功能是计算表达式表中的各表达式的值,并在屏幕上指定位置显示各表达式的值。

AT<列号>子句选项指定表达式值从指定列开始显示输出,且AT的定位只对它前面的一个表达式有效,即多个表达式必须用多个AT子句分别定位输出。

其中:

?

先回车换行,再计算并输出表达式的值。

?

?

在屏幕上的光标当前位置,计算并直接输出表达式的值。

同样,表达式表中的各表达式之间用逗号间隔,各表达式的值输出时,以空格分隔。

例如:

?

20,30,40

?

?

′a′,′b′,′c′

上两条命令执行完毕后在屏幕上显示:

203040abc

又例如:

a1=6

a2=7

?

a1AT20,a2AT30

显示结果如下:

6(在第20列上)7(在第30列上)

3.字段变量

字段是与表相关的变量形式。

数据表由若干记录组成,每个记录都包含若干数量相同的字段,同一字段在不同记录中分别对应不同的字段值,因此,字段也是变量。

与内存变量不同的是,字段变量是定义在表中的变量,随表的存取而存取,因而字段变量是永久性变量,一旦一个数据表建立,就有了属于该数据表的一组字段变量。

因为数据表中字段名最多只能包含10个字符,所以,字段变量名称长度不应超过10个字符,也就是字段名就是字段变量名,此种变量的数据类型可以是VisualFoxPro中的任意数据类型,并在创建数据表结构时对每个字段名进行指定。

4.系统变量

系统变量是指以字符“_”开头的、由VisualFoxPro系统自动定义生成的变量,它的名称是系统已经定义好的,是VisualFoxPro系统特有的内存变量。

例如,_MFILE、_MEDIT、_MVIEW等,因此在定义内存变量和数组名时,不要以下划线开始,以免与系统变量冲突。

系统变量设置、保存了很多系统的状态、特性,了解、熟悉并充分运用系统变量,会给数据库系统的操作和管理带来方便。

3.1.4数组

数组是一种特殊的内存变量,是一组具有相同名称、以下标相互区分的有序内存变量。

其中的每一个数据值称为一个元素,即数组元素或下标变量。

数组可以按它的下标个数分为一维数组、二维数组和多维数组。

1.数组定义

格式1:

DIMENSION<数组名1>(<数字表达式1>[,<数字表达式2>])[,<数组名2>(<数字表达式3>[,<数字表达式4>])…]

格式2:

DECLARE<数组名1>(<数字表达式1>[,<数字表达式2>])[,<数组名2>(<数字表达式3>[,<数字表达式4>])…]

两种格式功能完全相同,是定义一个或若干个一维或二维或多维数组。

定义数组时,也可以使用方括号,即DIMENSIONd[3,4],与DIMENSIONd(3,4)功能一样,且均为合法数组定义命令。

一旦定义了数组,系统在内存中就为数组开辟一块连续的数据存储区域,为存储数据块作准备。

而数据区域的大小取决于格式中的数字表达式,即每一维下标的上限数值,下限从1开始。

例如:

DIMENSIONa1(10),a2(4,3),a3(1,2,3)

上面的数组定义语句定义了3个数组:

具有10个数组元素(即10个下标变量)的一维数组a1;具有4行3列的一共12个数组元素(即12个下标变量)的二维数组a2;具有6个数组元素(即6个下标变量)的三维数组a3。

2.数组使用

任何一个数组被定义后,就可以使用这些数组,并对它们进行赋值,数组的类型与赋值的类型有关。

每一个数组的单元是以下标来表示的,所以数组变量往往也称为下标变量,一维数组称为单下标变量,二维数组称为双下标变量,下标的起始值为1,因此,如果有以下定义:

DIMENSIONA(N),B(N,M)

对于一维数组A来说,它的使用范围为1~N,即有N个下标变量可以存储数据,它们是:

A

(1),A

(2),A(3),…,A(N)。

对于二维数组B来说,它的使用范围为(1~N)×(1~M),即有N×M个下标变量存储数据,它们是:

B(1,1),B(1,2),B(1,3),…,B(1,M),B(2,1),B(2,2),…,B(2,M),…,B(N,1),B(N,2),…,B(N,M)。

【例3-1】给相应的数组赋值并做相应的输出。

程序段如下:

DIMENSIONa(2,4),b

(2)

STORE0TOa&&将数值0赋值给a数组中的每一个下标变量

a(1,2)=″book″

a(2,4)=″rule″

a(1,1)=CTOD(′02/10/03′)

a(1,3)=150

a(2,3)=.T.

STORE10TOb&&将数值10赋值给b数组中的每一个下标变量

?

a(1,1),a(1,2),a(1,3),a(1,4)

?

a(2,1),a(2,2),a(2,3),a(2,4)

?

b

(1)

?

?

b

(2)

该程序段运行之后将有如下结果:

02/10/03book1500

00Trule

1010

3.数组与数据表互传数据

数组与数据表互传数据具有传送数据多,传递速度快,程序简洁等特点。

(1)从数组向数据表传送数据

格式1:

将数组内容送当前记录。

GATHERFROM<数组名>/MEMVAR

[FIELDS<字段名表>][

其功能是将数组或一组内存变量内容存入当前已经打开的数据表文件的当前记录中。

传送时,将<数组名>中的第1个元素内容复制到第1个字段,第2个元素内容复制到第2个字段,以此类推。

若数组元素个数少于字段个数,则后面的字段内容不被替代;若数组元素个数多于字段个数,则后面的数组元素内容不复制。

当选择MEMVAR子句,则表示只有与字段名相同的数组或内存变量被替代。

当选择[FIELDS<字段名表>]选项时,表示只对用户指定的字段内容由数组或内存变量所替代,否则所有的字段内容都被替代。

在书写时,字段名表中的字段名之间用逗号间隔。

当选择[]选项时,表示可以用数组或内存变量替代某备注型字段,否则,即使FIELDS选项中选择了备注型字段,仍不能被替代。

格式2:

将数组内容追加到表文件中。

APPENDFROMARRAY<数组名>[FOR<条件>]

[FIELDS<字段名表>]

其功能是将数组内容追加到当前已经打开的数据表文件的最末尾处。

该格式中各选项的含义与格式1类似,数组元素追加到表文件中的方式也相同。

惟一不同的是,格式2是将数组或内存变量中的数据追加到表文件的最末尾处,其作用可以通过该语句格式从内存中给一个表文件增加记录;而格式1中是用数组或内存变量中的数组替代当前记录,其作用是利用内存中的数据修改文件当前记录的值。

【例3-2】将数组中的数据传递到商品信息表中,商品信息表的结构如表3-1所示。

程序段如下:

DIMENSIONa(5)

a

(1)=″110101″

a

(2)=″钢笔″

a(3)=″英雄″

a(4)=″K1″

a(5)=5.2

USEspxx

APPENDBLANK

GATHERFROMa

LIST

USE

上述程序段的实际意义就是以数组a中的数据作为源数据,在spxx表文件的尾部追加一个空白记录,通过数组传递语句实现对这个空白记录的改写功能,即实现了追加一个新记录的目的。

(2)从数据表向数组传递数据

格式1:

将当前记录数据送入数组。

SCATTER[FIELDS<字段名表>][

TO<数组名>/TO<数组名>BLANK/MEMVAR/MEMVARBLANK

其功能是将当前已经打开的数据表的当前记录内容,以字段为单位复制到数组或一组内存变量中,若数组内存变量不存在,在系统自动生成数组或内存变量。

其中:

选择TO<数组名>子句是将字段内容按序分别复制到该数组对应次序的元素中。

若数组不存在或数组元素个数少于字段个数,在系统将自动建立或重新建立该数组,若数组元素个数多于字段个数,则后面的数组元素内容将不被复制。

选择TO<数组名>BLANK子句,则仅仅是建立一个数组,并不复制其内容,数组中的各元素与对应的字段有着相同的类型和宽度,但是数组内容是空的。

选择MEMVER子句,表示建立一个与字段名相同名字、相同类型和相同宽度的数组或内存变量,并将字段内容复制过去。

以后,在使用这些内存变量时,应在变量名前加一个M。

选择MEMVARBLANK子句,则表示建立一个与字段名相同名字、相同类型和相同宽度

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1