第九章数据库管理系统
This presentation is the property of its rightful owner.
Sponsored Links
1 / 74

第九章数据库管理系统 Visual FoxPro 6.0 PowerPoint PPT Presentation


  • 60 Views
  • Uploaded on
  • Presentation posted in: General

第九章数据库管理系统 Visual FoxPro 6.0. 第一节  数据库概述. 一、数据库的基本概念 1、数据管理技术的发展 人工管理阶段 (1953年~1965年 ) 文件系统阶段 (1965年~1970年) 数据库系统阶段(1970年~至今). 2、 数据库系统基本概念 数据库: 按一定的数据结构组织方式存贮在一起的相互有关的数据集合。 数据管理: 对数据的收集、整理、组织、存储、查询、维护和传送等数据处理工作。 数据库管理系统( DBMS)

Download Presentation

第九章数据库管理系统 Visual FoxPro 6.0

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Visual foxpro 6 0

第九章数据库管理系统

Visual FoxPro 6.0


Visual foxpro 6 0

第一节  数据库概述

  • 一、数据库的基本概念

  • 1、数据管理技术的发展

  • 人工管理阶段 (1953年~1965年)

  • 文件系统阶段 (1965年~1970年)

  • 数据库系统阶段(1970年~至今)


Visual foxpro 6 0

  • 2、数据库系统基本概念

  • 数据库:按一定的数据结构组织方式存贮在一起的相互有关的数据集合。

  • 数据管理:对数据的收集、整理、组织、存储、查询、维护和传送等数据处理工作。

  • 数据库管理系统(DBMS)

  • DBMS(Data Base Management System )是用户与数据库的接口,提供了控制和管理数据库的命令。

  • 数据库系统

  •  由数据库、数据库管理系统和数据库应用系统构成的数据处理系统


Visual foxpro 6 0

B

A

A

D

B

C

D

C

E

F

G

H

网状模型

层次模型

  • 3、数据模型

  • 层次模型

  • 网状模型

  • 关系模型


Visual foxpro 6 0

父结点

教研室1

教研室2

教研室3

根结点

教师1

教师3

教师4

子结点

教师2

层次数据模型示例


Visual foxpro 6 0

部门 A

部门B

部门C

雇员 1

雇员2

雇员3

雇员4

雇员5

项目2

项目 1

网状数据模型示例


Visual foxpro 6 0

关系数据库

基本术语:字段、字段名、记录、数据项、关系、表、数据库文件。

(以一张住院病人情况登记表为例来说明关系数据库)


Visual foxpro 6 0

关系型数据库的一些性质

每一列代表一个字段,不允许有重复的字段名,每列字段只属于同一数据类型。

不允许有相同的记录

行和列的顺序可以任意


Visual foxpro 6 0

第二节 FoxPro 基本知识

一、 FoxPro的特性

具有良好的兼容性

运行速度快

具有多种运行方式

用户界面非常友好

开发工具完善

提供了跨平台支持


Visual foxpro 6 0

  • 二、FoxPro的安装、启动和退出

  • Microsoft Visual FoxPro 6.0的安装、启动和退出

  • 安装

    用安装光盘进行安装,执行SETUP.EXE文件

  • 启动

    “开始”“程序” “Microsoft Visual FoxPro 6.0”

  • 退出

    “文件” “退出” 或<ALT>+<F4>

    在命令窗口中,可键入QUIT命令退出。


Visual foxpro 6 0

三、FoxPro的工作界面

  • 菜单栏

  • 工具栏

  • 显示工具栏的方法:点击“显示”菜单“工具栏”

  • 对话框

  • 设计器

  • 生成器

  • 向导

  • 窗口

  • 项目管理器


Visual foxpro 6 0

第三节 FoxPro基本元素

一、数据类型(有11种)

1、数值型(N型)

2、字符型(C型)

3、日期型(D型)

4、通用型(G型)

5、逻辑型(L型)

6、备注型(M型)

7、浮点型(F型)

8、日期时间型(T型)

9、货币型(Y型)

10、双精度型(B型)

11、整数型(I型)


Visual foxpro 6 0

二、常量

常量:在程序运行过程中值保持不变的量, FoxPro中有六种类型的常量:

1、字符型常量(C型)

 由单引号、双引号或方括号括起的可显示字符构成的字符串。

例如:“abc” , “李平” , [中华人民共和国]

注:a. 定界符一定要匹配。如:“刘力‘,[abc” 等是非法的字符串。

b. 字符串中含有定界符时,要用另一种定界符定义。 例如:“ABC“123”de”[ABC“123”de]

c. 定界符一定要用半角字符方式。  


Visual foxpro 6 0

2、数值型常量(N型)

  例如:-35,356,68.56

3、逻辑型常量(L型)

  定界符是一对小圆点,值只有两个:

真:·T · 、· t · 、· Y · 、 · y ·

假:·F · 、· f · 、· N · 、 · n ·

4、日期型常量(D型)

   输入格式:{^yyyy/mm/dd}

输出格式:mm/dd/yy 

5、日期时间型

  输入格式:{^yyyy/mm/dd hh:mm:ss}

输出格式:mm/dd/yy hh:mm:ss am/pm

6、货币型

  用符号$来标识,如$568.68


Visual foxpro 6 0

字段变量

存在于库文件中

变量

系统内存变量

内存变量

使用之前先定义、赋初值

用户定义的内存变量

字符、数值、逻辑、日期、屏幕型

三、变量

在程序运行过程中其值可以发生变化的量。

注意:当字段变量与内存变量同名时,字段变量被优先引用,要用内存变量时需要在变量名前加上M->变量名或M.变量名来区别。


Visual foxpro 6 0

变量名命名规则

以字母或汉字开头

由字母、汉字、数字、下划线组成

长度不大于10个字符

不可以出现空格

例如: x=23<30 , x的值为.T. , L型

 姓名=‘张建树’,姓名的变量值为C型

y={^2002/06/16} , y的值为06/16/02,D型

z=4^2 , z的值为16,N型


Visual foxpro 6 0

四、函数

 FoxPro系统为用户提供了几百种函数,同时允许用户自定义函数,函数的一般形式为:

函数名(参数1,…,参数2)

1、数值运算函数:

EXP(N)表示 e 的N次方

INT(N)表示取整函数,取N的整数部分

  例:INT(3.68)=3 INT(-5.78)=-5

ROUND(N1, N2 )表示四舍五入函数

例如:ROUND( 153.568, 2 )的函数值为153.57

MOD(N1,N2)表示求模,

当N1,N2>0时,模为余数;当N1和N2中有一负数时,模为余数与N2的和;当N1,N2<0时,模为余数求反。

COL( )值为当前光标位置的列号

ROW( )值为当前光标位置的行号


Visual foxpro 6 0

2、字符处理函数

LEN(C )值为字符型( C型)表达式的长度

SUBSTR(C ,N1, N2 )取子串函数

例如:SUBSTR( “内蒙古医学院”, 7, 6 )的值为医学院

LEFT(C,N)表示从C的左边开始取N个字符

RIGHT(C,N)表示从C的右边开始取N个字符

SPACE(N)表示返回长度为N的空格串

UPPER(C)表示将C中所有的字母转换成大写字母

LOWER(C)表示将C中所有的字母转换成小写字母

AT( C1, C2,N )值为C1在C2中的位置序数

例如:AT(“ABC”, “XYZABC”)的值为4

     AT(“人民”, “中华人民共和国”)的值为5


Visual foxpro 6 0

  • 3、日期与时间函数

  • YEAR( D ) 、MONTH( D )和DAY( D) 分别为D型表达式中的日, 年 和月份, 其中YEAR( D )的值为4位

  • 例如:?day({^2002-03-28})的值为28

  • DATE() 表示返回当前系统日期

  • TIME() 表示返回当前系统时间

  • DATETIME()表示返回当前系统日期与时间

  • DTOS(D)表示以YYYYMMDD格式返回D值

  • CMONTH(D)表示以英文单词形式返回D中的月份


Visual foxpro 6 0

  • 4、类型转换函数

  • DTOC(D)将D型表达式转换为C型

  • CTOD( C )将C型表达式转换为D型

  • STR(N1,N2,N3)将N1转换为字符类型值

    其中:N1为待转换的数值,N2为字符串的长度,N3为小数位数

  • VAL(C)将字符类型数据转换为数值类型数据

  • ASC( C )返回字符串中最左边的字符的ASCII码值

  • CHR( N )返回以N为ASCII码值的字符,N为0-255

  • &<C型变量> 表示宏代换函数


Visual foxpro 6 0

  • 5、测试函数

  • RECNO( )表示返回当前记录号

  • SELECT()表示返回当前工作区的区号

  • BOF( )测试记录指针是否指在库文件的开始位置,若是值为.T. ,否则值为.F.

  • EOF( ) 测试记录指针是否指在库文件的结束位置,若是值为.T. ,否则值为.F.

  • DELETED ( )  测试当前记录是否有删除标志,若有值为.T. ,否则值为.F.

  • FOUND ( )根据查询命令是否找到符合条件的记录,如果找到,值为.T. ,否则值为.F.


Visual foxpro 6 0

五、运算符

  • 算术运算符

  •  +、-、*、/、 **或^、%(取模),( )

  • 例如:234+567,50%3,45*(123+678)/3

  • 注:运算对象和结果均为数值型数据。

  •   运算顺序:^  * . / . % + .- 同一级别从左向右。有括号先括号内,括号嵌套,先内后外 


Visual foxpro 6 0

  • 关系运算符

  •  <、>、=、<=、>=、 <>或#或!= (不等于)、= =(恒等于)、$(包含)

  • 注:对两个数据或表达式比较,结果成立时值为.T.,否则值为.F.

  • 比较规则:数值大小、日期先后、字符按ASCII、汉字内码

  • “==”表示精确相等。 

  • 符号“$”用来比较两个字符串,例如:C1$C2,若C1包含在C2中即C1是C2的子串,则值为.T.,否则为.F.

  •   例如:“AB” $ “EFABCD” 的值为T

  • 优先级相同,按从左向右,括号内优先的运算顺序。


Visual foxpro 6 0

  • 字符运算符

  •  + 字符串直接连接运算符

  •  - 尾部空格移位连接运算符

  • 例如:“ABC  ”+“XYZ”=“ABC  XYZ”

  •     “ABC  ”-“XYZ”=“ABCXYZ  ”  

  • 注:运算对象和结果均为字符型数据。  

  • 逻辑运算符

  • .AND.(逻辑与) .OR.(逻辑或) .NOT.或!(逻辑非)

  •  与运算:A . AND . B 

  •   A、B均为.T.时结果为.T.,否则为.F.

  • 或运算:A . OR . B 

  •    A、B均为.F.时结果为.F.,否则为.T.

  • 非运算:. NOT . A 或!A

  • 当A为.T.时,值为.F. ,当A为.F.时,值为.T. 

  • 三者的运算优先次序是:逻辑非>逻辑与>逻辑或


Visual foxpro 6 0

当表达式中包含了所有运算符时,

运算符的优先顺序是:

数值运算符>字符串运算符

>关系运算符

>逻辑运算符


Visual foxpro 6 0

六、表达式

(一)表达式的计算与显示

格式1:?< 表达式 >

格式2:?? < 表达式 >

例如:?56+78

134

? 56>78 .OR. .NOT. ( 89=56)

. T .

?? ‘ABC’ + ‘XYZ’ ABCXYZ


Visual foxpro 6 0

七、内存变量与数组

(一)内存变量

1、内存变量的赋值命令:

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

功能:先计算表达式的值,再将该值赋给赋值号左边的“内存变量”,内存变量的类型取决于表达式的类型。

  例如:X=24,X的值为N型

NAME=“刘丽”,NAME的值为C型

婚否=.T. ,婚否的值为L型

出生年月={^1966/08/16},值为D型


Visual foxpro 6 0

赋值命令格式2:

STORE <表达式> TO <变量名表>

功能:先计算表达式的值,再将该值赋给<变量名表> ,变量的类型取决于表达式的类型。

STORE 2<3 TO x , x的值为.T. ,L型

STORE ‘张建树’TO 姓名,姓名的值为C型

STORE {^2002/08/28} TO y , y的值为08/28/02,D型

STORE 3 TO A1,A2,A3 A1,A2和A3的值              都为3,N型 


Visual foxpro 6 0

2、显示内存变量命令:

格式:list|display memory [like <变量名通配符>]

  [to print][to file<文件名>]

功能:显示当前内存变量名、属性、类型和当前值

  注: 通配符是指*和?,*表示任意个任意字符

?表示一个任意字符

   [to print]将显示内容送往打印机。

   [to file<文件名>]将显示内容以文本形式保存

在磁盘文件中。

   如:a=35

AB=“人民”

list memo like a*

屏幕显示为: a pub n 35

ABpub C 人民


Visual foxpro 6 0

3、释放内存变量命令:

格式1:CLEAR MEMORY

功能:删除内存中全部用户定义的内存变量。

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

功能:删除全部或<内存变量名表>中指定的内存变量

格式3:RELEASE ALL[LIKE/EXCEPT<通配项>]

功能:若省略可选项,删除全部内存变量.

like表示删除符合要求的内存变量。

except表示删除不符合要求的内存变量。

例如:RELEASE ALL LIKE A*

RELEASE ALL EXCEPT B*


Visual foxpro 6 0

4、保存内存变量文件:

格式:SAVE TO <内存变量文件名>

[ALL LIKE /EXCEPT <内存变量通配符>] 

功能:将当前内存中的全部或部分内存变量,以指定<内存变量文件名>保存在磁盘上。

  注: <内存变量文件名>默认的扩展名为.mem。

如:save to c:\myfile\ncbl.mem all like a*

功能:将当前内存中以a开头的所有内存变量保存在c:盘myfile文件夹下的ncbl.mem文件中。

5、恢复内存变量:

格式:RESTORE FROM <内存变量文件名>

功能:从指定的内存变量文件中恢复内存变量到内存  如:restore from c:\myfile\ncbl.mem

表示将c:盘myfile文件夹下的内存变量文件      ncbl.mem中的内容恢复到内存。     


Visual foxpro 6 0

(二)数组

数组:按一定顺序排列的一组内存变量。数组中的各个变量称为数组元素。数组元素用数组名以及该元素在数组中排列位置的下标一起表示。数组的维数:数组元素中下标的个数。

 注:FOXPRO中只有一、二维数组。使用数组要先定义。

1、数组的定义:

格式: DIMENSION <数组名> (下标1,下标2) , …

功能:定义一维或二维数组名,以及有关数组

各下标的上界值,下限默认为1。

一个数组的元素个数最多为3600个。

每个数组元素的初始值为.F.

例如:DIMENSION X(3), A(2,3), B(5)

分别定义了一维数组X,B和二维数组A

其中X有三个元素,A有2*3个元素,

B有五个元素


Visual foxpro 6 0

2、数组的赋值:

1、数组中各元素的取值类型可以不同,同一元素的取值前后也可不同,初值均为.F.

例如:DIME A(2)

A(1)= .T.

A(2) = ‘ ABC’

?A(1), A(2)

A(1)= .T. A(2) = ‘ABC’

2、用赋值命令可为数组元素赋值,也可为整个数组的各个元素赋以相同的值。

例如: DIME A(2)

A=5

?A(1),A(2)

5 5


Visual foxpro 6 0

第四节 数据库和表的建立与基本操作

建立和修改数据库表结构

输入、显示、编辑、修改和删除记录内容

库文件的打开和关闭

记录指针的定位

库文件的排序与索引

数据查询和统计

多重数据库文件操作

其它操作命令


Visual foxpro 6 0

数据库表的组成

 表结构

 表记录


Visual foxpro 6 0

一、建立和修改数据库表结构

  • 1 、库结构的组成

  • 字段名

  • 字段类型

  • 字段宽度

  • 小数位数

2、表结构的建立

命令方式:CREATE <文件名>

菜单方式:用表向导建立表

方法:“文件”菜单“新建”“表”“新建文件”“创建”对话框中输入表文件名“确定” 打开“表设计器”对话框


Visual foxpro 6 0

  • 字段名:

  • 由字母、汉字、数字或下划线组成

  • 数据库表支持长字段名,长度最多可达128个字符

  • 自由表的字段名长度最多为10个字符

字段宽度

  • 系统自动设置:

  • 逻辑型: 1

  • 日期型: 8

  • 日期时间型: 8

  • 整型: 4

  • 货币型: 8

  • 备注型: 4

  • 通用型: 4

  • 用户自己定义

  • 字符型: 0~254

  • 数值型: 20

  • 浮动型: 20

  • 双精度型: 8


Visual foxpro 6 0

例如:建立库文件STUDENT.DBF

CREATE  STUDENT

如果在E盘上建立文件,则键入命令:

CREATE  E:STUDENT

3、修改表结构

 命令格式:MODIFY STRUCTURE

 菜单方式:“显示”菜单“表设计器”


Visual foxpro 6 0

4、创建数据库后再创建表的方法

步骤一:

“文件”菜单“新建”“数据库”“新建文件” “创建”对话框中输入库文件名“确定” 打开“数据库设计器”对话框

注:创建的数据库文件的扩展名为.DBC

命令方式:

CREATEDATABASE <数据库名>

步骤二:

“数据库”菜单“新建表”

注:数据库表的字段名最多可达128字符。


Visual foxpro 6 0

  • 有关自由表和数据库表的转换:

  • ( 1) 当前数据库添加表

  • 命令方式:

  • ADDTABLE 表文件名

  • 菜单方式: “数据库”菜单“添加表”

  • ( 2 ) 从当前数据库中移出表,使之成为自由表

  • 命令方式:

  • DELETETABLE 表文件名

  • 菜单方式: “数据库”菜单“移去”


Visual foxpro 6 0

命令的一般格式

<命令词>[范围][选择][投影][其它参数]

注:命令词说明操作的内容如显示、复制、删除

   选择参数是对记录的限制。

   投影参数是对字段的选择。

   其它参数,如to print,to file<文件名>等

例如:显示当前记录以后的所有性别为女的记录    的姓名,性别,年龄,婚否

list rest for 性别=“女”fields姓名,

    性别,年龄,婚否


Visual foxpro 6 0

命令的书写规则

(1)命令动词与子句、子句与子句、子句内各部分之间必须用空格隔开,但各子句的次序允许任意排列。

(2)命令动词与各子句中的保留字,包括以后将介绍的函数名都可以简写为前4个字符,而且对其中出现的英文字母,使用大小写等效。

(3)一条命令的长度可达8192个字符,若一行写不下,可在适当位置键入续行符“;”并回车,然后在下一行继续键入该命令。


Visual foxpro 6 0

选择

  用来限定记录操作的范围和条件,从而筛选出该范围内满足条件的记录。

 选择参数:FOR<L表达式>或

WHILE< L表达式>

注:FOR选择所有满足条件的记录,默认范围all遇到不满足条件的,跳过该记录继续查找。而WHILE从当前记录开始遇到第一个不满足条件的就结束。

<范围>

all 全部记录

next <n> 从当前记录开始向后共n条记录

rest 从当前记录开始一直到最后

record <n> 第n条记录


Visual foxpro 6 0

二、输入、显示、编辑、修改和删除记录内容

(一) 输入记录内容

1、追加记录

格式:APPEND [ BLANK ]

2、插入记录

格式:INSERT [ BEFORE ] [ BLANK ]

(二)显示记录

1、显示库结构

格式:LIST STRUCTURE

或 DISPLAY STRUCTURE

2、显示记录内容

格式:LIST/ DISPLAY [ < 范围> ]

[ FIELDS< 字段名表>]

[ FOR / WHILE < 条件表达式> ]

[ OFF ] [ TO PRINT ]


Visual foxpro 6 0

下面分别讲述显示记录内容的几种情况

1、显示全部记录

LIST 或 DISPLAY ALL

例:LIST

2、显示当前记录

DISP

例:GO 5

   DISPLAY

3、有范围、有选择地显示记录内容


Visual foxpro 6 0

例1:显示前3条记录中性别为男的记录

  GO TOP

  LIST NEXT 3 FOR 性别=“男”

例2:显示所有科室是外科的住院病人记录

中的姓名,入住日期和费用

LIST ALL FOR 科室=“外科”FIELDS 姓名,入住日期,费用

例3:显示所有入住日期在99年以前的记录

   LIST ALL FOR 入住日期<{^1999-01-01}

LIST ALL FOR YEAR(入住日期)<1999

例4:显示第三条记录的治疗情况

GO 3

DISPLAY 治疗情况

例5:显示已婚的记录内容

LIST ALL FOR 婚否=.T.

或:LIST ALL FOR 婚否

例6:显示未婚男性的记录

LIST ALL .NOT.婚否 .AND. 性别=‘男’


Visual foxpro 6 0

(三) 表的打开和关闭

  • 1、打开数据库文件有两种方式:

    命令方式:use <库文件名> [in <n>][alias <别名>]

  •  注:如在当前目录下,库文件不用标识

  • n表示工作区号

  • alias <别名>省略此项以原库名为别名

    菜单方式:“文件”菜单“打开”

    2、关闭表

  • Use

  • 功能:关闭工作区n中打开的数据库文件和索引文件

  • close all

  • 功能:关闭所有工作区中的所有文件,不释放内存变量

  • close databases

  • 功能:关闭所有数据库文件,索引文件和格式文件。

  • quit

  • 功能:退出FoxPro系统


Visual foxpro 6 0

(四) 编辑和修改记录

1.编辑修改命令

格式:EDIT/CHANGE [<范围>][FIELDS< 字段名表>]

[ FOR/WHILE<条件>]

例:EDIT 3

2. 浏览修改命令

格式:BROWSE [<范围>] [FIELDS< 字段名表> ]

[FOR/WHILE<条件>][FREEZE <字段名>]

[NOAPPEND][FONT <字体>,<字体大小>]

例:对费用超过500元的记录作一些修改

BROWSE ALL FOR 费用>500 NOAPPEND FONT ‘黑体’,24


Visual foxpro 6 0

3. 快速修改命令

格式:REPLACE[<范围>][ FOR/WHILE<条件>]

< 字段名1> WITH <表达式1> …

< 字段名n> WITH <表达式n>

例1:把所有记录的费用一项都增加100元

REPLACE ALL 费用 WITH 费用+100

例2:给库文件ZYBR.DBF增加一个‘余额’字段,余额的值为预付减去费用值

REPLACE ALL 余额 WITH 预付-费用

4.编辑通用字段内容

格式:APPEND GENERAL <G型字段> FROM <文件名>


Visual foxpro 6 0

(五) 删除记录

1.给记录加删除标记

格式:DELETE [<范围>]

[FOR/WHILE<条件表达式>]

记录是否加上删除标记可用DELETE()测试

SET DELETE ON/OFF 控制删除标记是否有效

SET DELETE ON 命令表示删除标记有效

SET DELETE OFF命令表示删除标记无效

例:给所有的男性记录加删除标记

DELETE ALL FOR 性别=‘男’


Visual foxpro 6 0

2.恢复删除命令

格式:RECALL [ < 范围> ]

[ FOR / WHILE < 条件表达式> ]

例:恢复男性记录,取消删除标记

RECALL ALL FOR 性别=‘男’

3.物理删除

格式:PACK

4.删除全部记录

格式:ZAP


Visual foxpro 6 0

三、记录指针的定位

1.直接定位

格式:GO/ GOTO < 记录号>

[ IN < 工作区号> / < 文件别号> ]

GO TOP

GO BOTTOM

GO RECORD <N>

< N >

2. 间接定位

格式:SKIP [<表达式>]

或 SKIP N N可正可负


Visual foxpro 6 0

四、排序与索引

<一>排序

格式:SORT TO <新库文件名> ON <字段1> … <字段N> [<范围>][FOR/ WHILE<条件表达式>] [FIELDS< 字段名表> ][ ASCENDING/ DESCENDING]

关键字类型可以是C、D、N、L型

<二> 索引

1. 排序与索引的区别

<1> 产生的文件不同

<2>文件的内容不同

<3>关键字表达式不同

<4>排序没有压缩文件,索引文件可以压缩


Visual foxpro 6 0

2. 索引文件的类型

可分为单一索引( SINGLE INDEX )和复合索引

( COMPOND INDEX )

<1>单一索引文件(. IDX )

a.非压缩索引文件

b.压缩索引文件

<2>复合索引文件(. CDX)

每个索引都用一个标记来标识,最多为10个字符

a.结构化复合索引文件

b.非结构化复合索引文件(独立复合索引文件)


Visual foxpro 6 0

  • 结构化复合索引文件:

    与数据库文件同名,由系统自动给定,数据库文件打开时,自动被打开,数据库文件被修改时,索引文件会自动更新。

  • 非结构化复合索引文件:

    也称为独立复合索引文件,其文件名可由用户自行给定。数据库文件被打开时,索引文件不会自动打开,必须使用有关命令来打开。

    对于大型数据库来说,我们常用结构化复合索引文件,对于小数据库来说,我们习惯使用排序文件。


Visual foxpro 6 0

3、索引的类型

(1)主索引

一个数据库表只能建立一个主索引

(2)候选索引

一个表可以建立多个候选索引

(3)普通索引

记录值可以重复,一个表可以建立多个普通索引

(4)惟一索引

记录值可以重复,但在索引文件中仅保存重复值记录的第一条,一个表可以建立多个惟一索引。


Visual foxpro 6 0

4. 建立单一索引文件

命令格式:INDEX ON <关键字表达式>

TO <文件名> [ FOR/WHILE<条件>]

[ COMPACT ] [UNIQUE] [ADDITIVE]

注:单一索引文件关键字表达式按升序排列

注:<关键字表达式>中的字段可以是C型、D型、N型、L型字段,可以是一个字段,也可以是几个字段构成的表达式。如果是几个字段构成的表达式,必须用函数将各个字段转换成相同的类型。

例如:表达式由C、N、D型字段组成,则将N型字段用str()函数转成C型,D型用DTOC()转换成C型,再用字符串联接运算符“+”号联接形成表达式。


Visual foxpro 6 0

单一索引文件:使用<for>条件时,只对符合条件的记录建立索引,查询时也只能检索符合条件的被索引记录。

  省略compact是建立非压缩单一索引文件,与foxbase兼容;

  unique是选定唯一性,如果关键字段值相同的记录多于一条,只取最前面的记录进入索引,以保证索引中没有重复关键字值的记录,否则关键字值相同的记录均进入索引。

  省略additive是在建立新索引文件时关闭已打开的索引,反之不关闭已打开的索引。

  一个数据库可以建立多个单一索引文件,刚建立的索引文件是打开状态。单一索引文件记录的逻辑顺序是按索引表达式的升序排列的。


Visual foxpro 6 0

  • 5. 打开和关闭索引文件

  • 打开索引文件

  • 格式1:USE <库文件名> INDEX

  • <索引文件名表>

  • 格式2:SET INDEX TO <索引文件名表>

  • [ ADDITIVE]

  • 关闭索引文件

  • 格式1:SET INDEX TO

  • 格式2:CLOSE INDEX


Visual foxpro 6 0

6. 主索引的重新定位

格式1:SET ORDER TO <数值表达式>

格式2:SET ORDER TO <单一索引文件名>

7. 重新索引

<1>索引文件未打开时

格式:SET INDEX TO <索引文件名> REINDEX

<2>已打开索引文件

命令格式:REINDEX


Visual foxpro 6 0

五、查询与统计

<一> 查询

RUSHMORE 技术

SET OPTIMIZE ON/OFF 恢复/禁止此项技术

1、LOCATE查询命令

格式:LOCATE [<范围>][FOR/WHILE<条件>]

[NOOPTIMIZE]

CONTINUE

说明:索引文件打开的话,按逻辑顺序查找,否则按记录的物理顺序查找。使用for条件不用建立索引,但是while条件必须索引


Visual foxpro 6 0

2. SEEK 命令

格式:SEEK <表达式>

说明:表达式的类型可以是:N、C、D、L类型,先计算<表达式>的值,再查找与该值相匹配的<索引表达式>的值,称为索引匹配值。 SEEK命令必须先索引后查找,而且只查找第一个符合备件的记录就停止不再继续查找。

3. FIND命令

格式:FIND <字符串>

字符串类型为C 型,如果是C型变量,要用宏代换函数

例:INDEX ON 姓名 TO ZYXM

NA=“陈国庆”

  FIND &NA


Visual foxpro 6 0

SEEK和FIND命令的相同和不同之处:

  • 相同点:

  • 1、必须先索引后查找

  • 2、只查找第一条符合条件的记录

  • 不同点:

  • 1、SEEK命令查找的是表达式,可以是N、C、D、L类型;而FIND命令一般只查找C、N、L型。

  • 2、SEEK命令可以直接用已赋值的变量查找;而FIND命令不能直接用已赋值的变量查找,必须要用宏代换函数转换才行。


Visual foxpro 6 0

<二>统计

1.计数命令

命令格式:COUNT [<范围>] [ FOR/WHILE<条件>]

[TO <内存变量名>]

例1:计算ZYBR.DBF中男性记录个数

COUNT ALL FOR 性别=“男”TO TGNX

2. 求和命令

命令格式:SUM [<范围>] [ FOR/WHILE<条件>]

[字段名表] [TO <内存变量名>]

例2:计算ZYBR.DBF中预付和费用两个字段的总和。

SUMALL 预付,费用 TOYF,FYONG


Visual foxpro 6 0

3.求平均值命令

格式:AVERAGE [<范围>] [字段名表]

[ FOR/WHILE<条件>] [TO <内存变量名>]

4.分类汇总命令

格式:TOTAL ON <关键字表达式>

TO <新库文件名> [<范围>]

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

例:计算不同科室的费用总和

 USE ZYBR

INDEX ON 科室 TO ZYKS

TOTAL ON 科室 TO KS

USE KS

LIST


Visual foxpro 6 0

六、多重数据库表文件操作

<一>选择多工作区命令

命令格式:SELECT <工作区号>

在内存中可以同时开设32767个工作区

前10个工作区可用A~J进行编号

USE <库文件名>[IN <工作区号> [ALIAS<别名>]

别名→字段名 或者是别名.字段名

<二>表文件之间的连接

命令格式:

JOIN WITH <别名> TO <新库文件名> [ FIELDS<字段名表>] [ FOR/WHILE<条件>]

功能:将两个工作区中表文件的记录根据条件进行比较,条件表达式相同的记录进行合并,形成一条新的记录,存放在新产生的库表文件中。共比较M*N次。


Visual foxpro 6 0

例如:一个库文件A1的记录内容为:

RECORD# 职工号 职务 年龄

03 职员 25

07 副科级 32

02 科级 40

05 职员 28

另一个库文件A2的记录内容为:

RECORD# 职工号 职务 工资

07 副科级 800

03 职员 500

09 职员 500

02 科级 900


Visual foxpro 6 0

  • 操作命令如下:

  • SELECT 1

  • USE A1 ALIAS AB

  • SELECT 2

  • USE A2

  • JOIN WITH AB TO A3 FOR 职工号=AB->职工号

  • FIELDS 职工号,职务,年龄,工资

  • USE A3

  • LIST

  • A3.DBF表文件中的记录内容如下:

  • RECORD# 职工号  职务 年龄  工资

  • 107 副科级 32 800

  • 2 03 职员 25 500

  • 3 02 科级 40 900


Visual foxpro 6 0

<三>库文件之间的关联命令

命令格式:

SET RELATION TO<关键字表达式/数值表达式> INTO <别名> [ ADDITIVE]

功能:将两个数据库按照关键字表达式或数值表达式的值进行关联,两个库文件的记录指针分别指向相应的记录。

SET RELATION TO 关闭关联

若是关键字表达式则必须先索引后关联,若是数值则不需要索引。

注:RECNO( )的用法


Visual foxpro 6 0

<四>记录更新:Update

功能:用非当前工作区库文件中的数据替换当前工作区库文件中对应记录的数据。

Update on <关键字> from <工作区号>/<别名> replace <字段名1> with 表达式1,… [random]

注:当前库文件必须按<关键字>建立索引,若未建立索引必须选择[random]选项。


Visual foxpro 6 0

七、其他操作

<一>库文件的复制

1、结构的复制

格式:COPY TO <库文件名> STRUCTURE [ FIELDS< 字段名表>]

2、内容的复制

格式:COPY TO <库文件名> [<范围>]

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


Visual foxpro 6 0

3、复制生成文本格式的数据文件

命令格式:

COPY TO <数据文件名>[SDF][<范围>]

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

[DELIMITED WITH <定界符>]

DELIMITED WITH BLANK

4、任意类型文件的复制

格式:COPY FILE <源文件名> TO <目标文件名>


Visual foxpro 6 0

八、简单操作

1、列目录命令:

格式:DIR [< 盘符>] [< 通配符>]

2、删除文件命令

格式:ERASE <文件名>

3、文件改名命令

格式:RENAME <源文件名> TO <新文件名>

4、过滤:

set filter to <逻辑表达式>

功能:使命令只对当前库文件中满足条件的记录进行操作,好象文件只包含满足条件的记录一样。

说明:set filter to 取消已设置的过滤条件


Visual foxpro 6 0

5、关闭文件命令

格式: CLOSE <文件类型>

6、显示文本文件内容

格式:TYPE <文件名>

7、退出FoxPro系统

格式:QUIT


  • Login