第3章 数据类型、运算符与函数

90
长长长长长长长长长 第3第 第第第第 第第第第第第

Upload: baxter

Post on 22-Jan-2016

104 views

Category:

Documents


1 download

DESCRIPTION

第3章 数据类型、运算符与函数. 3.1 数据类型. 字段特 有类型. ※ 字符型( C) ※ 数值型( N) ※ 货币型 ※ 逻辑型( L) ※ 日期型( D) ※ 日期时间型( T). ※ 整型 ※ 浮点型 ※ 双精度型 ※ 备注型( M) ※ 通用型( G) ※ 二进制字符型 ※ 二进制备注型. 3.1 数据类型. 1.字符型数据 ( Character) 是指用各种文字字符表示的数据,由字母、数字、汉字、符号和空格等组成,长度为1~254字节。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第3章   数据类型、运算符与函数

长沙民政学院电子系

第 3 章 数据类型、运算符与函数

Page 2: 第3章   数据类型、运算符与函数

长沙民政学院电子系

※ 字 符 型 (C)

※ 数 值 型 (N)

※ 货 币 型

※ 逻 辑 型 (L)

※ 日 期 型 (D)

※ 日 期 时 间 型 (T)

※ 整 型

※ 浮 点 型

※ 双 精 度 型

※ 备 注 型 (M)

※ 通 用 型 (G)

※ 二 进 制 字 符 型

※ 二 进 制 备 注 型

字段特有类型

3.1 数据类型

Page 3: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.1 数据类型

•1. 字符型数据 (Character) 是指用各种文字字符表示的数据,由字母、数字、汉字、符号和空格等组成,长度为 1 ~ 254 字节。•2. 数值型数据 (Numeric) 是指可以进行算术运算的数据,由数字0 ~ 9 、小数点和正负号构成。•3. 货币型数据 (Cuyency) 采用表示货币量的数据来代替用数值型数据表示货币,长度固定为 8 个字节。•4. 逻辑型数据 (Logic) 是用来进行各种逻辑判断的数据,只有两个值:真或假,长度固定为 1 个字节。•5. 日期型数据 (Date) 是 用 来 表 示 日 期 的 数 据 , 存 储 格 式为“ YYYYMMDD” ,其中 YYYY 代表年, MM 代表月, DD 代表日,长度固定为 8 个字节。

Page 4: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.1 数据类型

•6 .日期时间型数据 (DateTime) 描述日期和时间的数据,存储格式为“ YYYYMMDDHHMMSS” ,其中 YYYY 代表年,前两个 MM 代表月, DD 代表日, HH 代表小时,后两个 MM 代表分钟, SS 代表秒,长度固定为 8 个字节。 •7 .整型数据 (Integer) 是指不包含小数点部分的数值,以二进制形式存储,长度固定为 4 个字节。•8 .浮点型数据 (Float) 是数值型数据的一种,与数值型数据完全等价,但在存储形式上采取浮点格式,由尾数、阶数及字母 E 组成,占用8 个字节。 •9 .双精度数据 (Double) 是具有更高精度的数值型数据,长度固定为 8 个字节。

Page 5: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.1 数据类型

•10 .备注型数据 (Memo) 用于存储字符型数据块,长度固定为 4个字节,用来存储指向实际数据存放位置的地址指针,实际数据存放在与数据表文件同名的 .FPT 文件中,其长度仅受磁盘空间的限制。•11 .通用型数据 (General) 用于存储 OLE 对象,可以是文档、图片、电子表格等。通用型数据的长度固定为 4 个字节,用来存储指向 .FPT 文件位置的地址指针。•12 .字符型数据 ( 二进制 ) 用于存储任意不经过代码页修改而维护的字符型数据。•13 .备注型数据 ( 二进制 ) 用于存储任意不经过代码页修改而维护的备注型数据。

Page 6: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.2.1 常量• 常量是指在数据处理过程中其值始终保持不变的量。•1. 数值型常量 :是数学中的十进制整数或小数。• 如: 10.25 , -123.567 •2. 字符型常量 :是用单撇号 / 双撇号 / 方括号括起来的字符串 如: “ ABCD” ’、 1234’ ”、 中国北京”•3. 逻辑型常量 :用下圆点作为定界符,只有真和假两个值。 • 如: .T. 、 .t. 、 .Y. 、 .y. ( 真 ) ,• .F. 、 .f. 、 .N. 、 .n. ( 假)•4. 日期型常量 / 日期时间型常量 :表示一个确切的日期和时间,用花括号作为定界符。• 如: {^2003-03-03} 、 {^1996-03-20 12:30:15} • 也可以用 CTOD 函数进行转换,如 CTOD(”03/03/2003”)

Page 7: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.2.2 变量• 变量是指在数据处理过程中其值可以改变的量。•1. 变量的命名 : 以字母(汉字)或下划线开头,由字母、汉字、数字和下划线组成,长度不能超过 128 个字符。•2. 字段变量 存在于数据表中。当定义好一个数据表的结构,该表中的各个字段名就形成了各个字段变量。• 字段变量必须先定义然后才能使用。•3. 内存变量:是一种临时信息存储单元,独立于数据表,可以根据需要随时建立。其类型取决于变量值的类型,可以把不同类型的数据赋给同一个变量。 • 当内存变量名与数据表中的字段变量名相同时,要访问该内存变量,必须在变量名前加上前缀M. 或 M -> ,否则系统将优先访问同名的字段变量。

Page 8: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.2.2 变量•( 1 )建立内存变量• 格式 1 : <内存变量名 > = <表达式 >• 格式 2 : STORE < 表达式 > TO < 内存变量名表 >• 功能:在定义内存变量的同时确定内存变量的值和类型。• 例如, X = 5 && 定义变量 X ,并把数值 5 赋给 X• STORE X+10 TO Y && 定义变量 Y ,并将表达式X+10 的值赋给 Y• STORE ” 北京” TO A,B,C && 定义变量 A , B , C ,并赋于相同的字符数据• X = .F. && 重新定义变量 X ,并赋逻辑值 •( 2 )输出内存变量• 格式 1 : ? <表达式表 >• 格式 2 : ?? <表达式表 > • 功能:计算 <表达式表 >中各表达式的值并在屏幕上显示出来。

Page 9: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.2.2 变量•( 3 )显示或打印内存变量

• 格式: LIST | DISPLAY MEMORY [LIKE < 通配符 >] [TO PRINTE | TO FILE < 文件名 >]

• 功能:显示或打印内存变量的当前信息。

• 例如,在命令窗口中输入以下命令:

• LIST MEMORY LIKE X*

• 结果显示在主窗口中。

Page 10: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.2.2 变量

注释信息

显示所有第一个字符为 X 的内存变量信息

变量名

作用域

类 型

变量值

数值型内存变量的计算机内部表示

Page 11: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.2.2 变量•( 4 )清除内存变量• 格式 1 : CLEAR MEMORY

• 格式 2 : RELEASE < 内存变量名表 >• 格式 3 : RELEASE ALL [LIKE < 通配符 > |EXCEPT < 通配符 >] • 功能:释放所有内存变量或指定的内存变量。• 例如, RELEASE X1 && 释放内存变量 X1

• RELEASE ALL LIKE X* && 释放所有第 1 个字母为 X 的内存变量• RELEASE ALL && 释放所有内存变量•4. 系统变量:以字符“ _” 开头的、由 VFP 系统自动定义生成的变量,其名称也是系统事先定义好的。• 例如, _PAGENO , _ALIGNMENT

Page 12: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.2.2 变量

•5 .数组 内存中连续的一片存储区域,由一组称为数组元素的变量组成。通过赋值语句可以为各个元素分别赋值,且所赋值的数据类型可以不同。 • 定义: DIMENSION < 数组名 1>(< 索引值 1>[, <索引值 2>]) [,<数组名 2> (< 索引值 3>[, <索引值 4>])]… 数组必须先定义后使用, 且使用时下标不能出界。• 每个数组元素通过数组名和相应的索引编号被引用。

第 1个元素 第 2个元素 第 3个元素 第 4个元素 第 5个元素 第 6个元素

内存中的数组元

素数组示意图

Page 13: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.2.2 变量• 例如, • 定义一个一维数组 AA 和一个二维数组 BB

• DIMENSI0N AA(5) , BB(2,3)

• 将数值 0 赋给数组 AA 中的所有元素• STORE 0 TO AA

• 将字符串 xyz 赋给数组元素BB(1,1)

• BB(1,1) = ”XYZ”

• 将数值 125 赋给数组元素BB(2,1)

• BB(2,1) = 125

• 将逻辑真值 T赋给数组元素BB(2,3)

• BB(2,3) = .T.

Page 14: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.3 运算符和表达式

• 运算符是对相同类型数据进行运算操作的符号。• 用运算符将常量、变量和函数等数据连接起来的式子称为表达式。• 表达式的类型由运算符的类型决定,每个表达式按照规定的运算规则都产生一个惟一的值。

Page 15: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.3 运算符和表达式

•1. 数值表达式: 用算术运算符将数值型数据连接起来的式子,其结果仍是数值型数据。

算术运算符

Page 16: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.3 运算符和表达式• 2. 字符表达式: 用字符串运算符将字符型数据连接起来的式子,其结果仍是字

符型数据。 • ( 1 )“ +” 运算符:两个字符串首尾相连形成一个新的字符串。• ( 2 )“ -” 运算符:两个字符串相连,并将前字符串尾部的空格移到合

并后的新字符串的尾部。• 例如 , ? ”ABCD ” + ”EFG” + ”1234” && 结果为 : ABCD

EFG1234

• ? ”ABCD ” - ”EFG” + ”1234” && 结果为: ABCDEFG 1234

• 3. 日期表达式: 用算术运算符将日期型和数值型数据连接起来的式子,其结果为日期型数据或数值型数据。

• 例如, ? {^2002-01-20} + 5 && 结果为日期 2002/01/25• ? {^2002-01-20} - 5 && 结果为日期 2002/01/15• ? {^2002-01-20} - {^2001-10-28} && 结果为天数 84

Page 17: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.3 运算符和表达式•4. 关系表达式:用关系运算符将运算元素连接起来的式子,其结果为逻辑真值(.T . ) 或逻辑假值 (.F.) 。• 例如: S1 = ”读者”• S2 = ”读者文摘”• SET EXACT ON• ? S1=S2, S2=S1, S2==S1 && 结果是 .F. .F. .F.• SET EXACT OFF• ? S1=S2, S2=S1, S2==S1 && 结果是 .F. .T. .F.

关系运算符

Page 18: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.3 运算符和表达式• 5. 逻辑表达式: 用逻辑运算符将逻辑型运算元素连接起来的式子,其

结果仍是逻辑型数据。• ( 1 ) AND ( 与 ) :两个表达式的值均为真,结果才为真;否则为假。• ( 2 ) OR ( 或 ) :两个表达式的值均为假,结果才为假。• ( 3 ) NOT 、 ! ( 取反):真值变为假值,假值变为真值。• 例如,• ? 10>5 .AND. 5<2 , 10>5 .OR. 5<2 && 结果为 .F. .T.

• 6. 优先级:括号→函数→算术运算→字符运算→关系运算→逻辑运算,同级运算从左至右顺序进行。

• 例如, x1=3 , y1=-2 , x2=8 , y2=-6

• 则 x1+y1>x2+y2 .AND. .NOT.(y1<y2) 的结果为 .F.

Page 19: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.4 函 数

•1. 函数 函数是一种能够完成某种特定操作或功能的数据形式。一个函数可以接受一个或多个参数,并通过特定的运算返回一个值。• 格式:函数名 ([ 参数 1][,参数 2]…)• 函数值:函数的运算结果 • 说明:任何可以使用表达式的地方都可以使用函数。•2. 函数的类型• 系统函数:由 VFP提供的内部函数,包括数值处理函数、字符处理函数、日期和时间处理函数、数据类型转换函数、测试函数、其它函数等 .• 自定义函数:由用户自己定义的函数

Page 20: 第3章   数据类型、运算符与函数

长沙民政学院电子系

常用函数

• ABS ():取绝对值 • INT ():取整 • MOD ():取余 • RAND ():随机数( 0~1 ) • ROUND ():四舍五入函数 • CDOW ():以字符返回星期几• CMONTH ():取月份(字符) • DATE ():取系统日期 • DATETIME ():取系统日期时间

Page 21: 第3章   数据类型、运算符与函数

长沙民政学院电子系

常用函数

• DAY ():取系统日期中的“日”• DOW ():取星期几( 1~7 ) • HOUR ():取小时 • MINUTE ():取分钟 • MONTH ():取月份 • YEAR ():取年份 • CHR ():根据所给数值给出字符 • CTOD ():字符型转日期型 • DTOC ():日期型转字符型

Page 22: 第3章   数据类型、运算符与函数

长沙民政学院电子系

常用函数

• STR ():数值转字符 • VAL ():字符转数值 • BETWEEN ():是否在中间 • EMPTY ():是否空 • TYPE ():类型 • FCOUNT () :取表的字段总数• FIELD () :取表的字段名• USED () :测试表是否打开• RECCOUNT () :返回记录总数

Page 23: 第3章   数据类型、运算符与函数

长沙民政学院电子系

常用函数• BOF () :记录开始标记• EOF () :记录结束标记• RECNO () :当前记录号• GETFILE () :弹出“打开”对话框• PUTFILE () :弹出“另存为”对话框• GETDIR ():弹出“选择目录”对话框• GETCOLOR ():弹出“颜色”对话框• RGB () :返回一个颜色• MESSAGEBOX () :消息对话框• IIF ():条件成立返回第一结果,否则返回第二个结果

Page 24: 第3章   数据类型、运算符与函数

长沙民政学院电子系

第 4 章 数据库与数据表

Page 25: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.1 创建项目

•1. 建立工作目录 组织和管理磁盘中的各类文件。•2 .建立项目文件 •( 1 )菜单• 选择“文件 | 新建”命令• 单击常用工具栏中的“新建”按钮•( 2 )命令: CREATE PROJECT [<项目文件名 >]•3 .打开项目文件 •( 1 )菜单:选择“文件 | 打开”命令或单击常用工具栏中的“打开”按钮,在“打开”对话框中选择一个项目文件( *.PJX )。

•( 2 )命令: MODIFY PROJECT [<项目文件名 >]

Page 26: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.1 创建项目

创建项目的方法

Page 27: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.2.1 数据库的设计思想• 1 .设计步骤 • ( 1 )分析数据需求,确定数据库要存储哪些信息。• ( 2 )确定需要的数据表。• ( 3 )确定所需字段,即每个表中要存储的信息(表的结构)。• ( 4 )确定关系,即各表之间的数据应该如何进行连接。• ( 5 )改进设计• 2 .设计过程 • ( 1 )明确设计目的 • ( 2 )确定需要的数据表• ( 3 )确定表中需要的字段 • ( 4 )确定表间关系 • ( 5 )优化设计

Page 28: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.2.2 数据库的创建

• 数据库 (.DBC) 存储了所包含的表和表之间的关系,以及依赖于表的视图、连接和存储过程等信息。 把表放入数据库中可以减少数据的冗余,保护数据的完整性。•1. 建立数据库•( 1 )项目管理器:“新建:数据库”•( 2 )菜单: “文件 | 新建:数据库”•( 3 )命令: CREATE DATABASE < 数据库名 >•2 .在项目中添加数据库 方法是:• 在项目管理器中选定“数据库”项,单击“添加”按钮,在“打开”对话框中选择需要添加的数据库文件。

Page 29: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.2.2 数据库的创建

选择“数据库”项

单击“新建”按钮

利用项目管理器建立数据库

Page 30: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.2.3 数据库的基本操作

•1. 打开数据库

•( 1 )项目管理器:选定要打开的数据库,单击“打开”按钮。

•( 2 )菜单:选择“文件 | 打开”命令

•( 3 )命令

• ① 打开数据库文件

• OPEN DATABASE [< 数据库文件名 >]• ② 打开数据库文件所对应的数据库设计器

• MODIFY DATABASE [< 数据库文件名 >]

Page 31: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.2.3 数据库的基本操作• 2 .关闭数据库•( 1 )项目管理器:选定要关闭的数据库,单击“关闭”按钮。 •( 2 )命令: CLOSE DATABASES

•3. 删除数据库 •( 1 )项目管理器:选定要删除的数据库,单击“移去”按钮,在对话框中选择“移去”命令,将从项目中移去选定的库文件;选择“删除”命令,则将选定的库文件从磁盘上删除。•( 2 )命令: DELETE DATABABE < 数据库文件名 >

Page 32: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.3 创建数据表•1. 数据表和数据库• 表( Table )是 处理数据和建立关系型数据库及应用程序的基本元素。数据库( DATABASE )是表的集合。•2. 数据表的类型•( 1 )自由表:不属于任何数据库而独立存在的表 •( 2 )数据库表:属于某一数据库的表• 使用项目管理器中的“移去” /“添加”命令,可以在数据库表和自由表之间相互转换。•3. 数据表的结构 形式上是一组相关联的数据按行和列排列的二维表格,用来描述一个实体。表中的每一列称为一个字段,每一行称为一条记录。

Page 33: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.3.1 基本概念•定义字段 为每个字段指定名称、数据类型和宽度,它们决定了

表中的数据是如何被标识和保存的。 •( 1 )字段名 以字母或汉字开头,由字母、汉字、数字或下划

线组成,不能包含空格。数据库表字段名最长为 128 个字符,自由表字段名最长为 10 个字符。

•( 2 )字段类型 决定了存储在字段中的值的数据类型,有 13种 : 字 符 型 ( C )、货 币 型 ( Y )、数 值 型 ( N )、浮 点 型( F )、日期型( D )、日期时间型( T )、双精度型( B )、

整型( I )、逻辑型( L )、备注型( M )、通用型( G )、字符型(二进制)、备注型(二进制)。

Page 34: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.3.1 基本概念

•( 3 )字段宽度 指能够容纳存储数据的长度,字符型字段不得大于 254 个字节;浮点型和数值型字段的宽度为整数位和小数位的和再加 1 (小数点占一位),最多 20 位。

•( 4 )小数位 若字段的类型是数值型( N )和浮点型( F ),

还需给出小数位数。小数位数不能大于 9 ,双精度型数据的小数位数不能大于 18 。

•( 5 )使用空值 在建立数据表时,可以指定字段是否接受空值( NULL )。

• 输入数据 即给每个字段赋值。

Page 35: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.3.2 自由表的建立

• 1. 定义表结构 利用“表设计器” 创建表的结构。

• 打开表设计器有以下几种方法。

•( 1 )菜单:选择“文件 | 新建”命令。

•( 2 )命令: Create < 表文件名 > •( 3 )项目管理器:在“数据”选项卡中选择“自由表”,单击“新建”命令。

• 定义表结构就是设置表的字段属性,包括字段名、数据类型、字段宽度和小数位数等。

Page 36: 第3章   数据类型、运算符与函数

长沙民政学院电子系

打开表设计器的方法

4.3.2 自由表的建立

Page 37: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.3.2 自由表的建立

•2 .输入记录 选择“显示”菜单下的“浏览”或“编辑”命令,打开“浏览”或“编辑”窗口。•( 1 )一般数据的输入 字符型、数值型、逻辑型、日期型等字段类型可直接在浏览窗口或编辑窗口中输入数据。•( 2 )备注型字段数据的输入 双击名为“ memo” 的备注字段标志,进入备注窗口,输入文本内容。•( 3 )通用型字段数据的输入 双击名为“ gen” 的通用字段标志,进入通用型字段的输入编辑窗口。选择“编辑 | 插入对象”命令,打开“插入对象”对话框,插入OLE 对象。 • 要删除备注字段或通用字段的内容,可双击字段名,打开编辑窗口,选择“编辑 | 清除”命令。

Page 38: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.3.3 数据库表的建立

•1. 在数据库中建立新表 •( 1 )项目管理器:在“数据”选项卡中,单击“数据库”项前的“ +” 号,展开该数据项;然后选定“表”,再单击“新建”按钮。• 使用项目管理器创建的表自动包含在项目文件中。•( 2 )当数据库处于打开状态时,用建立自由表的方法创建的新表将包含在该数据库中。• 2 .将自由表添加到数据库•( 1 )项目管理器:在“数据”选项卡中展开”数据库“项,选择“表”项,再单击“添加”按钮。•( 2 )命令: ADD TABLE < 数据表文件名 >

Page 39: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.3.3 数据库表的建立

• 数据库中的表只能属于一个数据库文件,如果向当前数据库中

添加的表已属于其它数据库,则需要先从其它数据库中移去该数据

表,然后才能将它添加到当前数据库中。

•3 .从数据库中移去数据表

•( 1 )项目管理器:选中要移去的表,单击“移去”按钮,在提

示对话框,选择“移去”。若选择“删除”,则不仅从数据库中移

去该表,同时也从磁盘上删除了该表。

•( 2 )命令: REMOVE TABLE  < 数据表文件名 >

Page 40: 第3章   数据类型、运算符与函数

长沙民政学院电子系

移去数据库表时的提示框

4.3.3 数据库表的建立

Page 41: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.4.1 数据表的浏览•1. 打开数据表•( 1 )菜单:选择“文件 | 打开”命令。•( 2 )命令: USE [< 表文件名 >] •2 .浏览与显示表结构 •( 1 )浏览表结构•① 项目管理器:选定要浏览的表,单击“修改”按钮,打开表设计器。•② 菜单:选择“文件 | 打开”命令,打开要浏览的数据表; 然后选择“显示 |表设计器”命令,打开表设计器。•( 2 )显示表结构(主窗口)• 命令: LIST|DISPLAY STRUCTURE

Page 42: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.4.1 数据表的浏览

•3. 浏览与显示记录

•( 1 )在浏览窗口中浏览记录

•① 项目管理器:选定要浏览的表,单击“浏览”按钮。

• 对于备注型字段或通用型字段内容,可以在浏览窗口中双击相

应的字段标志 (“Memo” 或“ Gen”) ,打开编辑窗口浏览。

•② 菜单:选择“文件 | 打开”命令,打开要浏览的数据表。然后

从“显示”菜单中选择“浏览”或“编辑”命令,打开浏览窗口。

•③ 命令: BROWSE

Page 43: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.4.1 数据表的浏览

•( 2) 在浏览窗口中有选择地浏览记录•① 菜单:打开浏览窗口,选择“表 | 属性”命令,打开“工作区属性”对话框。• 在“数据过滤器”中输入筛选条件,可以只显示满足筛选条件的记录。删除筛选表达式,可恢复显示所有记录。 • 在“工作区属性”对话框的“允许访问”栏中,选中“字段筛选指定的字段”选项,单击“字段筛选”按钮,打开“字段选择器”对话框,选择要显示的字段,可以只显示选定的字段内容。若在“允许访问”栏内选择“工作区中的所有字段”选项,可取消对字段访问的限制,恢复显示所有字段。

Page 44: 第3章   数据类型、运算符与函数

长沙民政学院电子系

“ 工作区属性”对话框:设置数据过滤器

输入筛选条件

4.4.1 数据表的浏览

Page 45: 第3章   数据类型、运算符与函数

长沙民政学院电子系

“ 工作区属性”对话框:设置字段筛选

4.4.1 数据表的浏览

Page 46: 第3章   数据类型、运算符与函数

长沙民政学院电子系

3.4.1 数据表的浏览• ② 命令• 设置数据过滤器: SET FILTER TO [<条件表达式 >] • 设置字段过滤器: SET FIELDS TO ALL| < 字段名表 >•( 3 )显示记录 (主窗口 )• 命令: LIST | DISPLAY [<范围 >]

[FIELDS < 字段名表 >][WHILE <条件 >][FOR<条件 >]

• 例如,要显示“学生”表中所有女生的学号、姓名和所在系的信息, 可使用以下命令:• USE E:\VFP6\DATA\ 学生 .DBF && 打开学生表• LIST FIELDS 学号 , 姓名 ,系别 FOR 性别=”女”

Page 47: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.4.2 记录的定位 •1. 记录指针 记录指针存

放的是记录号。向表中录入

数据时,系统会按照录入次

序为记录加上记录号。

• 数据表刚打开时,记录

指针总是指向首记录;通过

移动记录指针可以指定当前

•要操作的记录。

数据表文件的逻辑结构

首记录( TOP )

第 2 条记录

文件起始标识( BOF )

第 n-1 条记录

尾记录 (Bottom )

文件结束标识( EOF )

…………

记录指针

Page 48: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.4.2 记录的定位•2. 移动记录指针•( 1 )菜单:打开浏览窗口,选择 “表 |转到记录” 命令。

Page 49: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.4.2 记录的定位•( 2 )命令• 绝对移动: GO <记录号 > | TOP | BOTTOM

•功能:将记录指针定位在指定记录号的记录上。 TOP 表示第一条记 录, BOTTOM 表示最后一条记录。

• 相对移动: SKIP [+|-][< 算术表达式 >]• 功能:将记录指针从当前位置向前或向后移动若干条记录位置。 • 条件定位: LOCATE [<范围>] FOR <条件 > [WHILE <条件 >]• 功能:查找满足条件的第一条记录。• 说明:使用 CONTINUE 命令可继续查找下一条满足条件的记录。

Page 50: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.4.2 记录的定位• 例如,• USE E:\VFP6\DATA\ 学生 • GO TOP && 指向首记录• GO BOTTOM && 指向最后一条记录• GO 3 && 指向第 3条记录• SKIP 5 && 指向第 8条记录• SKIP –5 && 指向第 3条记录• * 将记录指针定位在学生表中第一条性别为男的记录上• LOCATE FOR 性别 = ”男” • CONTINUE && 继续查找下一个满足条件的记录

Page 51: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.5.1 修改表结构

• 在表设计器中可以修改表结构。• 1. 项目管理器:选定要修改的表,单击“修改”按钮。•( 1 )修改已有的字段•( 2 )增加新字段•( 3 )删除字段•( 4 )改变字段顺序•2. 菜单:选择 “文件 | 打开”、“显示 |表设计器”•3. 命令: Modify Structure

• 修改字段属性后, VFP将按新的属性改写整个 .dbf 文件,可能造成数据丢失。

Page 52: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.5.2 添加记录

•1 .在浏览窗口中追加记录•( 1 )菜单: 打开浏览窗口,选择“显示 | 追加方式”命令,可以在原有记录的后面追加多条新记录。• 选择 “表 | 追加新记录”,每次只能添加一条新记录。•( 2 )命令: APPEND

•2 .插入记录 • 命令: INSERT [ BEFORE ]

• 功能:在数据表的某个记录之前或之后插入一条记录。

Page 53: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.5.2 添加记录

• 3 .从其它文件中追加记录 • ( 1 )菜单:打开浏览窗口,选择“表 | 追加记录”命令。• ( 2 )命令: APPEND FROM <源表文件名 >

[FIELDS < 字段名表 >] [FOR <条件 >]• 功能 :将满足条件 的记录按指 定 的 字 段从源表 文 件 中追加到当

前数据表的末尾。 • 例如,将“课程”表中的相应数据追加到“课程安排”表中:• USE E:\VFP6\DATA\课程安排• APPEND FROM E:\VFP6\DATA\课程 .DBF FIELDS 课程号 ,课程

Page 54: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.5.3 编辑记录

•1. 在浏览窗口中编辑记录•( 1 )项目管理器:选定表,单击“浏览”按钮,打开浏览窗口,直接修改字段值。关闭浏览窗口,所做的修改将自动保存在表文件中。 • 对于备注型字段或通用型字段内容,可以双击相应的字段标志(“Memo” 或“ Gen” ),打开编辑窗口进行编辑或修改。•( 2 )命令: BROWSE

•2 .批量修改记录 对一批记录中的若干字段进行编辑修改。•( 1 )菜单:打开数据表,选择“表 |替换字段”命令,出现“替换字段”对话框。

Page 55: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.5.3 编辑记录

“ 替换字段”对话框

要修改的字段

修改后的值

条件

Page 56: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.5.3 编辑记录

• ( 2 )命令: REPLACE [<范围 >]

[< 字段 1> WITH < 表达式 1> [ADDITIVE]

[,< 字段 2> WITH < 表达式 2> [ ADDITIVE …] ] [FOR <条件 >] [ WHILE <条件 >]

• 功能:对表中指定范围内的满足条件的记录进行批量修改。

• 例如,将“学生”表中管理系的每个学生减去 15.5 元助学金, 加上 50 元奖学金。

• USE E:\VFP6\DATA\ 学生• REPLACE ALL 助学金 WITH 助学金 -15.50 , ;• 奖学金 WITH 奖学金 + 50.0 FOR 系别=”管理”

Page 57: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.5.4 删除记录• 1. 逻辑删除 : 给记录加删除标记 •( 1 )鼠标操作:在浏览窗口中,单击左侧的白色方框使之变黑。•( 2 )菜单:选择“表 | 删除记录”命令•( 3 )命令: DELETE [ < 范围>][ FOR <条件 >] [WHILE <条件 >] •2. 恢复逻辑删除 : 取消删除标记•( 1 )鼠标操作:单击逻辑删除标记,取消黑色方框。•( 2 )菜单:选择“表 | 恢复记录”命令•( 3 )命令: RECALL [ < 范围>][ FOR <条件 >] [WHILE <条件 >] •3. 物理删除:从磁盘上删除记录,不可恢复。•( 1 )菜单:选择“表 | 彻底删除”,删除带有删除标记的记录。( 2 )命令: PACK (删除带有删除标记的记录)

• ZAP (清除表中所有记录,仅保留表结构)

Page 58: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.5.5 复制数据表

•1 .数据表文件的复制•(1) 菜单:打开表文件,选择“文件 |导出”,显示“导出”对话框。•(2)命令: COPY TO <新表文件 > [<范围>][FIELDS < 字段名表 >] [FOR <条件 >] [WHILE <条件 >]•2 .数据表结构的复制 将表结构复制到一个新表中。 • 命令: COPY STRUCTURE TO <新表文件 >[FIELDS < 字段名表>]•3. 数据表文件的更名 • 在项目管理器中右击要重命名的表,从快捷菜单中选择“重命名” 命令,打开“重命名文件”对话框,输入新的文件名。

Page 59: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.5.5 复制数据表

利用“导出”对话框和“导出选项”对话框复制数据表

复制后的新表

数据源表

选择要复制的记录范围

条件

选择要复制的字段

Page 60: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.5.5 复制数据表

更改数据库表的名称

右击数据表

更改后的表名

Page 61: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.5.6 数据表与数组之间的数据交换•1 .将表的当前记录复制到数组•命令: SCATTER [ FIELDS < 字段名表 > ] [ MEMO ]

TO < 数组名 > | MEMVAR

•功能:将数据表的当前记录按字段顺序复制到数组或内存变量。 •例如, USE E:\VFP6\DATA\ 学生• * 将第 1条记录的姓名、性别和系别 3 个字段复制到数组 AA 中 • SCATTER FIELDS 姓名 , 性别 ,系别 TO AA

• GO 5

• * 将第 5条记录复制到数组 BB 中,包括备注型字段的内容• SCATTER TO BB MEMO

Page 62: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.5.6 数据表与数组之间的数据交换• 2 .将数组复制到表的当前记录• 命令: GATHER FROM < 数组名 > | MEMVAR

[FIELDS < 字段名表 >] [MEMO]

• 功能:将数组元素或同名内存变量的值顺序复制到当前记录的指定 字段中。

• 例如: USE E:\VFP6\DATA\ 学生• * 在表的末尾增加一条空记录• APPEND BLANK

• * 将数组 AA 中的数据复制到当前的空记录中• GATHER FROM AA FIELDS 姓名 ,性别 , 系别

Page 63: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.6.1 数据表排序

• 排序是把数据表中的记录按照某个字段值的大小重新排列,作为排序依据的字段称为“关键字”。• 按照关键字的值从小到大的排序称为升序,从大到小的排序称为降序。• 排序后生成一个新的数据表文件,其结构和数据可以与源文件完全相同,也可以取自源文件的一部分字段。• 命令 : SORT TO < 文件名 > ON < 字段名 1> [/A][/D][/C]

• [,< 字段名 2>[/A][/D][/C]…] [ASCENDING/DESCENDING]

[<范围>][ FOR <条件 >] [FIELDS < 字段名表 >]

Page 64: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.6.1 数据表排序

• 例如,• 对“学生”表中所有贷款的学生按“系别”的升序进行排序,排序后的新表文件为“贷款学生”:

• USE E:\VFP6\DATA\ 学生• SORT TO 贷款学生 ON 系别 FOR 贷款否

• 对“学生”表中的数据按“系别”升序进行排序,系别相同者,按“学号”降序进行排序。排序后的文件为“各系学生”:

• USE E:\VFP6\DATA\ 学生• SORT TO 各系学生 ON 系别 , 学号 /D

Page 65: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.6.2 数据表索引

• 1 . 基本概念•( 1 )索引 是由指向表记录的指针构成的文件,这些指针逻辑上按照索引关键字的值进行排序。• 索引文件和表文件分别存储,并且不改变表中记录的物理顺序。•( 2 )索引的类型 组织方式上分,有三类。• ① 独立索引 在索引文件中只包含一个单一的关键字或者组合关键字的索引,独立索引文件的扩展名为 .IDX 。

•② 结构复合索引 在索引文件中可以包含多个索引项的索引。结构复合索引文件的扩展名为 .CDX ,是最常用的一种索引类型。

Page 66: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.6.2 数据表索引•结构复合索引的特点:

• 结构复合索引的文件主名与数据表文件主名相同

• 在用一索引文件中可以包含多个索引关键字

• 在打开数据表时自动打开

• 对表进行添加、修改、更新、删除等操作时自动维护索引

•③ 非结构复合索引 索引文件的扩展名也是 .CDX ,但文件主名与数据表文件不相同,它不会随着数据表文件的打开而打开,需要使用单独的打开命令。

Page 67: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.6.2 数据表索引

• ( 3 )索引关键字 是指建立索引用的字段或字段表达式,可以 是表中的单个字段,也可以是几个字段组成的表达式。

复合索引表达式通常用字符串运算符“ +”将几个字段连接起来。当各字段类型不同时,必须转换为相同的数据类型。

• 创建索引文件时就是根据索引关键字值的大小从逻辑上重新安排数据表中各条记录的组织顺序。

Page 68: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.6.2 数据表索引

• ( 4 )索引关键字的类型 • ① 主索引:索引表达式的值唯一,即记录不允许有重复值。

只有数据库表才能有一个主索引。• ② 候选索引:索引表达式的值唯一,即记录不允许有重复值。

一个表可以有多个候选索引。• ③ 惟一索引:索引表达式的值惟一,若有重复,只取第一个值。

一个表可以有多个唯一索引。• ④ 普通索引:索引表达式的值允许有重复。• 一个表可以有多个普通索引。

Page 69: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.6.2 数据表索引

• 2. 建立复合索引• ( 1 )利用表设计器:选择“索引”选项卡。•

Page 70: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.6.2 数据表索引• ( 2 )命令: INDEX ON <索引关键字表达式 > TAG <索引标识名 > • [ UNIQUE|CANDIDATE ] [ASCENDING|DESCENDING ]

[FOR <条件 >]

• 例如,用 INDEX命令为“学生”表建立结构复合索引,包含 4 个索引项:学号(候选索引)、性别 (普通索引)、系别与性别(普通索引)、系别与出生日期(普通索引)。

• USE E:\VFP6\DATA\ 学生• INDEX ON 学号 TAG 学号 CANDIDATE

• INDEX ON 性别 TAG 性别• INDEX ON 系别 + 性别 TAG 系别_性别• INDEX ON 系别 + DTOC(出生日期 ) TAG 系别_生日

Page 71: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.6.2 数据表索引

•3. 按索引顺序浏览记录 一个复合索引文件中可以建立多个索

引项,每一项代表了处理记录的一种逻辑顺序。使用索引之前,

应先指定将要使用的索引项。

•( 1 )菜单:打开浏览窗口,选择“表 | 属性”命令,打开 “工

作区属性”对话框,在“索引顺序”框中选择一个索引项,浏览

窗口中的记录就会按按照该索引顺序排列。

•( 2 )命令: SET ORDER TO [TAG <索引标识名 >]

Page 72: 第3章   数据类型、运算符与函数

长沙民政学院电子系

“ 工作区属性”对话框:设置索引顺序

4.6.2 数据表索引

选择索引顺序

Page 73: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.6.3 数据表查询

• 数据表建立索引后,就可以使用 FIND 、 SEEK 等查询命令,

快速定位记录,提高数据库应用系统的运行效率。

•1 . FIND 命令: FIND < 字符串 >|<数值 >

•2 . SEEK 命令: SEEK < 表达式 >

• 这两条命令可以快速查找表中索引关键字值与表达式相匹配的

第一条记录。若要继续查找表中其他满足条件的记录,可以执行

SKIP 命令。

Page 74: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.6.3 数据表查询• 例如,• USE E:\VFP6\DATA\ 学生• SET ORDER TO TAG 学号 && 将“学号”索引项设置为当前索引

• FIND 01020215 && 查找学号为 01020215 的学生记录• SEEK “01020215”

• SET ORDER TO 性别• FIND 女 && 查找性别为女的学生记录• SET ORDER TO TAG 系别 _性别 • SEEK “计算机 ” + “男” && 查找计算机系男生的记录• SKIP && 继续查找下一个计算机系男生的记录

Page 75: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.6.4 数据表统计与汇总•1. 数据表的统计•( 1 )计数 : COUNT

•( 2 )求和 : SUM

•( 3 )求平均值 : AVERAGE

•2 .数据表的分类汇总 对数据表中的数值型字段,按照排序或索引关键字值的不同分类,然后各组分别求和。 • 命令: TOTAL ON <汇总关键字 > TO < 表文件名 >

• 例如,求每个学生各门课程的总成绩。• USE E:\VFP6\DATA\ 成绩• INDEX ON 学号 TAG 学号• TOTAL ON 学号 TO 总成绩

Page 76: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.7 建立数据字典• 数据库文件可以作为一个数据字典来存储和管理有关记录和字段的规则、缺省值、触发器、表间关系等。• 数据库表是数据库的一部分,具有自由表所没有的一些属性。

数据库表特有的属性

Page 77: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.7.1 设置表的字段属性

•1. 长字段名: 自由表的字段名最多 10 个字符,数据库表的字段名最多 128 个字符。当从数据库中移去一个表时,此表的长字段名将被截短成 10 个字符。•2. 输入掩码:限制输入字段的内容格式,以屏蔽非法输入。 •3. 格式:决定字段在表单、浏览窗口或报表中的显示方式。•4. 标题:字段标题将作为该字段在浏览窗口中的列标题,以及表单表格中的默认标题名称。•5. 字段注释: 为字段添加注释,使表更容易被理解。• 此外,也可以在“表”选项卡的“表注释”框中为整个数据表添加注释内容。

Page 78: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.7.2 设置表的有效性规则

•1. 默认值:在浏览窗口、表单或以编程方式输入数据时, VFP将自动为某个字段填入默认值,直到输入新值。

• 默认值可以是任何有效的表达式,但表达式的返回值必须和该字段的数据类型一致。

•2. 字段的有效性规则: 将用户输入的数据与所定义的规则表达式进行比较,如果输入的值不满足规则要求,系统就拒绝该值,从而控制输入到字段中的信息类型。

•3. 表的有效性规则:控制用户输入到记录中的信息类型。

Page 79: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.7.2 设置表的有效性规则

违反字段有效性规则时的提示信息

Page 80: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.7.2 设置表的有效性规则

违反记录有效性规则时的提示信息

Page 81: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.7.3 设置触发器• 触发器是指当进行输入、删除或更新表记录等操作时,系统自动启动的一个程序,用来完成指定的任务。•( 1 )插入触发器:是在表中插入记录时所触发的检测程序,该程序可以是表达式或自定义函数。检测结果为真时,接受插入的记录。•( 2 )更新触发器:是在表中修改记录后按回车键时所触发的检测程序。检测结果为真时,保存修改后的记录;否则,不保存修改的结果,同时还原修改之前的记录值。•( 3 )删除触发器:是在表中删除记录时所激发的检测程序。检测结果为真时,该记录可以被删除;否则,禁止删除该记录。

Page 82: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.7.4 创建永久关系• 永久关系是数据库表之间的关系,存储在数据库文件中。• 建立关系的两个表通常具有公共字段或语义相关的字段,其中包含主关键字段的表称为父表,包含外部关键字段的表称为子表。•1. 建立关系:对主关键字段和外部关键字段使用相同的索引表达式分别建立索引;然后打开“数据库设计器”,将父表的索引拖到子表相匹配的索引上(两表之间显示一条关系线)。•2 .编辑关系: 在数据库设计器中右击关系线,从快捷菜单中选择“编辑关系” 命令。•3. 删除关系:右击关系线,选择“删除关系”命令 。

Page 83: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.7.4 创建永久关系

表之间的关系

关系线

Page 84: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.7.5 设置参照完整性

• 参照完整性是指建立一组规则,当用户插入、更新或删除一个数据表中的记录时,通过参照引用另一个与之有关系的数据表中的记录,来检查对当前表的数据操作是否正确。• 建立了关系的两个数据库表,通过实施参照完整性规则,可以确保:当父表中没有关联记录时,记录不得添加到子表中;当因改变主表的值而导致子表中出现孤立记录时,主表的值不能被改变;当主表记录在子表中有匹配记录时,该主表记录不能被删除。• 设置方法:打开数据库设计器,执行“数据库 | 清理数据库”命令,再选择“数据库 |编辑参照完整性”命令,出现“参照完整性生成器”对话框,分别定义更新规则、删除规则和插入规则。

Page 85: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.7.5 设置参照完整性

Page 86: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.7.6 存储过程

• 存储过程是专门操作库中数据的代码过程,存储在数据库文件

中。打开一个数据库时,它们会自动加载到内存中。

• 当把一个用户自定义函数作为存储过程保存在数据库中时,函

数的代码保存在 .DBC 文件中,并且会自动随数据库移动。使用存

储过程可以不必在数据库文件之外管理用户自定义函数,使得应用

程序更容易管理。

Page 87: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.8.1 工作区的选择

•1 .工作区 VFP允许在 32767 个工作区中打开和操作数据表。要同时使用多个数据表,必须在不同工作区中分别打开。•2 .选择工作区: SELECT <工作区号 | 别名 |0>• 工作区中的记录指针彼此独立,分别指向本工作区数据表的当前记录。用户在某一时刻只能在一个工作区上(即当前工作区)操作。没有指定工作区时,系统默认使用工作区 1 。• 对当前工作区中的数据表可以直接进行读写等任何操作;而对于其它工作区中的数据表只能读取该区记录指针指向的当前记录,并且要用 < 别名 >.<字段名 >或 <别名 >-><字段名 >的格式来指定其它工作区的字段。

Page 88: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.8.2 数据表的联接• 1 .关联 也称为逻辑连接,可以使两个数据表的记录指针同步移动。关联操作仅在两个表之间建立一种逻辑关系,不产生新的数据表。 • 命令: SET RELATION TO  <关键字表达式 1> INTO <工作区>

• 例如,在“学生”表和“成绩”表之间建立关联:• SELECT 2 && 在 2 号工作区中打开“成绩”表• USE E:\VFP6\DATA\ 成绩 • * 将“成绩”表中的“学号”索引项设置为当前索引• SET ORDER TO 学号 • SELECT 1 && 在 1 号工作区中打开“学生”表• USE E:\VFP6\DATA\ 学生 • * “ 学生”表作为父表,“成绩”表作为子表,建立关联 • SET RELATION TO 学号 INTO B

Page 89: 第3章   数据类型、运算符与函数

长沙民政学院电子系

4.8.2 数据表的联接• 2 .物理连接 将两个表文件联接生成一个新的表文件。• 命令 : JOIN WITH <工作区号 >|<别名 > TO <新表文件名 > • [FIELDS < 字段名表 >] FOR <联接条件 >

• 例如,将学生表和成绩表联接起来,得到一个新的数据表“学生 - 成 绩”,包含学号、姓名、系别、课程号、成绩等字段。

• SELECT B

• USE E:\VFP6\DATA\ 成绩• SELECT A

• USE E:\VFP6\DATA\ 学生 • JOIN WITH B TO 学生 - 成绩 • FIELDS 学号 , 姓名 ,系别 ,B.课程号 ,B. 成绩 FOR 学号 =B. 学号

Page 90: 第3章   数据类型、运算符与函数

长沙民政学院电子系