当前位置:首页 >> IT/计算机 >>

VFP3 表的创建和使用


VFP

第三章

表的创建和使用

3.1 表
一、表的概念 概念:以文件形式存储的一张二维表。 概念
扩展名:.dbf 表备注扩展名:.fpt

?列:字段(Field),描述数据的某个特征; ?行:记录(Record),多个字段的集合 分类:自由表、数据库表 分类 二、字段的基本属性 1、字段名 字段名:描述某实体的特征属性 字段名
?可以用中文字符,建议使用英文;字段个数不超过255 ? ; 255



2、字段的数据类型 数据类型(Type) 数据类型 3、字段宽度 字段宽度(Width):字段容纳数据的最大字节数 字段宽度 ?整型、备注型、通用型 包含引用信息) :4字节 备注型、 备注型 通用型( ?货币型、日期型、日期时间型、双精度型:8字节 ?逻辑型:1字节 小数位数:针对数值型、浮点型和双精度型字段 4、小数位数 小数位数

Ex:要求一个表文件的数值型字段具有5位小数,那么该字段的宽度最
少应当定义成 。A.5位 B.6位 C.7位 D.8位

return

3.2表结构的创建和修改 表结构的创建
方式:表设计器/SQL命令 1、表设计器


例: ▲表结构的显示 LIST STRUCTURE DISPLAY STRUCTURE

2、用CREATE TABLE-SQL命令 *格式: CREATE TABLE 表文件名(字段名1 类型 (宽度,小数位数), ; 字段名2 类型 (宽度……))

如:CREATE

TABLE JIAOSHI (; GH C(5),XM C(8),XB C(2),XIMING C(18),; GL N(2,0),CSRQ D, HF L, JBGZ N(7,2), JL M)

*使用 NULL 值:
在 CREATE TABLE 命令中使用NULL或 NOT NULL(默认)子句 (空值:表示“没有值”或没有确定值. 空值不同于数值0、空字符串、或逻辑假.F. )

*二进制的字符型和备注型字段:
在字段说明之后加上NOCPRANS关键字

修改表结构
1.用表设计器修改 MODIFY STRUCTURE 2.用ALTER TABLE-SQL名令修改 n添加字段
ALTER TABLE XS ADD COLUMN BJMC C(12)
n

重命名字段
ALTER TABLE XS RENAME COLUMN BJMC TO BJ

n

删除字段
ALTER TABLE XS DROP COLUMN BJ

相关函数:FIELD( ),FCOUNT( )

3.3记录的处理 3.3记录的处理 记录的追加 1.立即输入记录 2.浏览状态下追加
*注意:在“显示”菜单中选中“追加方式” 注意 显示”菜单中选中“追加方式”

记录的处理

3.使用INSERT-SQL命令
INSERT INTO KC(KCDH,BXK,XF); VALUES(“09”,.F.,2) *注意 什么情况下表字段列表可以省略 注意:

4.从其他表追加至当前表
APPEND FROM 表名

记录的浏览 1.浏览/编辑窗口 2.BROWSE命令

记录的处理

BROWSE FIELDS 字段名 字段名2,… [FOR <条件 字段名1,字段名 条件>] 字段名 条件

3.DISPLAY和LIST命令
DISPLAY [范围][字段名 字段名 字段名1,字段名 字段名2,… FOR <条件 ] 条件> 条件

列头

列分割线

指示当前 记录指针

浏 览 方 式
删除标记区 窗口分割条

编 辑 方 式

“学生情况”的浏览窗口

记录的定位
记录开始标志 文件头 (表结构等信息)

1.记录相关函数
.EOF( ) .BOF( ) .RECNO( )
记录指针初始值为1; 记录指针初始值为 最大为记录总数+1 最大为记录总数

第1号记录 第2号记录 记录指针

.RECCOUNT( )

第N号记录

记录结束标志

记录的定位 2.记录的定位方式 记录的定位方式
绝对、相对、条件定位

3.记录定位的实现 记录定位的实现
①界面操作方式
注意:作用范围[scope] 注意 RECORD n:第n条记录。 NEXT n: 从当前记录开始以下的N条记录。 REST: 从当前记录开始到文件末尾的所有记录。 ALL: 全部记录。

②命令方式
*GO *SKIP *LOCATE …… CONTINUE 注意:记录指针移动后当前指针位置 注意:

记录的修改
1.在浏览窗口中编辑修改记录
界面方式:BROWSE或EDIT

2.批量记录的修改
界面方式:替换字段 命令方式:UPDATE-SQL;REPLACE 如: update js set jbgz=jbgz*1.2 where gl>=30 replace all jbgz with jbgz*1.2 for gl>=30 更新的表不必事先打开; 注: update更新的表不必事先打开 更新的表不必事先打开 replace更新的表必须事先打开 更新的表必须事先打开; 更新的表必须事先打开 注意带不带where、范围、for区别 区别. 注意带不带 、范围、 区别 3.单个记录(当前记录)的修改 如: replace jbgz with jbgz*1.2

4.输入空值NULL方法 思考:对js表:工龄在10年以下(不含10年) 基本工资加20;工龄在10-19年 基本
工资加35;工龄在20年以上(含20年) 基本工资加50

记录的删除
步骤:标记要删除的记录;彻底删除带标记的记录 步骤 1.标记要删除的记录(逻辑删除) 界面方式: 命令方式:①DELETE FROM 表名[WHERE<条件>] ②DELETE [范围] [FOR <条件>] 命令①删除记录时,表不必事先打开 注: 命令 时 表不必事先打开; 命令②删除记录时,表必须事先打开 命令 时 2.彻底删除记录(物理删除) 命令:PACK,ZAP(注意两命令区别 及 Set Safety on|off 命令作用) 注意两命令区别 3.恢复带删除标记的记录 命令:RECALL [范围] [FOR <条件>] 4.对带删除标记记录的访问 (1)测试记录的删除标记 DELETED( ) (2)控制带删除标记记录的访问 SET DELETE ON|OFF(忽略/允许(默认))

筛选记录
1.界面方式
“表”菜单---“属性”---对话框中---“数据过滤器”

2.命令方式 nSET FILTER TO [条件表达式] n在其它命令中加FOR、WHILE子句

筛选字段
SET FIELDS TO 字段名 字段名 字段名1,字段名 字段名2,… n SET FIELDS TO ALL
n

3.4表的使用 表的使用
*使用表之前,必须把表打开,且一张表必须占用一个工作区 使用表之前,必须把表打开, 使用表之前

1.工作区:指用以标志一张打开的表的区域
*工作区编号 一个工作区某时刻只能打开一张表;但可在不同工作区打开同一张表。 *一个工作区某时刻只能打开一张表;但可在不同工作区打开同一张表。

2.工作区中表的别名
USE 表文件名 ALIAS 别名 ALIAS([工作区号])返回指定工作区的表别名 返回指定工作区的表别名

3.当前工作区:正在使用的工作区,为默认工作区
*改变当前工作区 改变当前工作区 SELECT 工作区号 表别名 工作区号/表别名 *select 0 选择未被使用的编号最小的工作区为当前工作区 *SELECT(0) 测试当前工作区号 4.对非当前工作区的表进行操作 在命令中强行指定工作区( 工作区) 在命令中强行指定工作区( use 表名 in 工作区) used()函数 函数

5.打开表
(1)通过界面操作 文件菜单、数据工作期、 文件菜单、数据工作期、USE ? (2)使用命令 USE 表名 &&关闭当前工作区表,打开新表 关闭当前工作区表, 关闭当前工作区表 (3)多次打开一张表(在不同工作区中 在不同工作区中) 在不同工作区中 USE 表名 AGAIN

6.关闭表
(1)界面操作 (2)命令操作 ?关闭当前工作区中的表(use) ?关闭非当前工作区中的表(use in 工作区) ?关闭所有工作区中的表(close all(/tables all/databases)) 并选择工作区1为当前工作区 并选择工作区 为当前工作区 ?退出系统时,自动关闭表

7.表的独占与共享使用
(1)设置打开表时的默认独占与共享状态 工具” 选项” “工具”----“选项” 选项 命令:SET EXCLUSIVE ON/OFF(独占(默认)/公享 公享) 独占 公享 *此命令的设置,并不影响已打开表的状态 此命令的设置, (2)强行用一种方式打开表 USE 表名 SHARE/EXCLUSIVE *同一张表多次打开时,以第一次打开的方式为准。 同一张表多次打开时, *以下命令只能处理以独占方式打开的表: 以下命令只能处理以独占方式打开的表 insert [blank]、pack、modify structure、 reindex、 zap

8.利用数据缓冲访问表中的数据
(1)数据缓冲:多用户环境下对数据操作(更新、维护 更新、 更新 维护)的一种技术 (2)数据缓冲的类型 记录缓冲、 记录缓冲、表缓冲 锁定方式: 修改时加锁) 仅写入时加锁) 保守式(修改时加锁 、开放式(仅写入时加锁 修改时加锁 仅写入时加锁 缓冲类型值:1,2,3,4,5 (3)设置表的数据缓冲 界面方式:“工作区属性”对话框 命令方式:CURSORSETPROP() ()函数 () CURSORSETPROP(’BUFFERING’,缓冲类型值 [,工作区 工作区]) 缓冲类型值 工作区 (4)检测数据一致性
CURVAL( )、OLDVAL() 、 () 标明表的某字段是否 GETFLDSTATE( ) :标明表的某字段是否已被编辑 标明表的某字段是 已被编辑(2/1);

是否有追加的记录;当前记录的删除状态是否已更改 是否有追加的记录 当前记录的删除状态是否已更改 (5)缓冲区数据的修改
TABLEUPDATE( ):执行对缓冲区的修改 ( ):执行对缓冲区的修改 TABLEREVERT( ):放弃对缓冲区的修改 ( ):放弃对缓冲区的修改

3.5 表的索引
3.5.1 记录的顺序
▲物理顺序:记录的存储顺序(顺序找,速度慢) 逻辑顺序:记录的处理顺序(快速) ▲表的排序:把表文件中的记录按照某个字段值的 大小顺序重新排列形成新的表文件 格式:SORT TO <表名> ON <字段名1> [/A][/D] 格式 [,<字段名n> [/A][/D]] [<范围>] [FOR <条件>] [FIELDS <字段名列表>] USE xs 例:

SORT TO STUDENT1 ON xm/D USE STUDENT1 LIST
缺点: 缺点: 1)排序造成了数据冗余,浪费存储空间 2)如果对表文件进行增、删、改操作时,要重新进行排序

3.5 表的索引
3.5.2索引概念 3.5.2索引概念 索引
1、索引:索引序号+记录号 索引:索引序号+
▲索引的优点 优点: 优点

速度快;容量小;多角度 ▲索引文件和表文件分别进行存储,并不改变表中 记录的物理位置 索引关键字(Index Key) (1)索引关键字 ▲字段/字段表达式 ▲建立索引的依据(按索引表达式的结果) 索引标识(Tag) (2)索引标识(Tag) ▲索引关键字的名称(索引名) ▲命名:必须以下划线、字母或汉字开头 ▲ <=10字节

3.5 表的索引
2、索引的类型
–主索引(Primary indexs)
? 主索引只能在数据库表 数据库表的结构复合索引文件中创建 数据库表 ? 在数据库表 数据库表中,每张表只能创建一个主索引 数据库表 ? 组成主索引关键字的字段或表达式 字段或表达式,在表的所有记录 字段或表达式 中不能有重复的值(如:XH可以,XM不可以) ? 自由表 自由表不能建立主索引

–侯选索引(Candidate indexs)
? 在指定的关键字段或表达式中不允许有重复值的索引 ? 一张表中可以建立多个侯选索引 ? 侯选索引可用于数据库表和自由表

3.5 表的索引
2、索引的类型
–普通索引(Regular indexs)
? 可以决定记录的处理顺序,但是允许关键字段或表达式 的值出现重复 ? 对一张表可以创建多个普通索引(如:XM,GL)

–唯一索引(Unique indexs)
? 参加索引的关键字段或表达式在表中允许有重复值, ? 在索引对照表中,具有重复值的记录仅存储其中的第一 个(如:XB)

3.5 表的索引
3、索引文件的种类
索引本身并不改变表中数据的物理顺序 –结构复合索引 结构复合索引(.CDX) 结构复合索引
? 与表文件同名,在创建时由系统自动给定 ? 结构复合索引文件与表文件同步打开、更新、关闭 与表文件同步打开、更新、 与表文件同步打开

–非结构复合索引(.CDX)
? 文件名由用户给出 ? 非结构复合索引文件中不能创建主索引 ? 不会与表文件同步打开、更新、关闭 与表文件同步打开、更新、 与表文件同步打开

–独立索引(.IDX)
? 只存储一个索引(‘候选、普通、唯一’之一) ? 不会随表文件打开而自动打开 不会随表文件 文件打开而自动打开 ? 如已经起主控作用则随表文件同步更新、关闭 如已经起主控作用则随表文件同步更新、 表文件同步更新

3.5.3 创建结构复合索引文件
? 创建结构复合索引文件
– 表设计器
? “表设计器”——“索引”选项卡

–Index命令 Index命令 Index
INDEX ON <字段索引表达式 TAG <索引标识名 索引表达式> 索引标识名> 索引表达式 索引标识名 [FOR <条件表达式>ASCENDING|DESCENDING][UNIQUE CANDIDATE UNIQUE|CANDIDATE UNIQUE CANDIDATE] 例:sele 0 use xs index on xh tag xsxh cand

–说明 说明
? 可在Index命令后跟OF 索引文件名 OF 索引文件名选项创建非结构复合索引 ? 不能对备注字段和通用字段建立索引 – 用多个字段建立索引表达式时应注意 用多个字段建立索引表达式时应注意:
? 表达式的计算结果 计算结果将影响索引的结果(XIMING+XB与XB+XIMING) 计算结果 ? 数值型字段求和建立的索引表达式(JBGZ+GL与STR(JBGZ)+STR(GL) ? 注意STR与DTOC类型转换函数

? 设置主控索引
主控索引:决定显示或访问表中记录的顺序的索引; 主控索引可以是:复合索引文件中的一个标识(主控标识) 1 .打开表的同时指定主控索引 use 表名 order [tag] 标识名 2 .打开表后再设置主控索引 窗口 /数据工作期 /属性/索引顺序 命令: SET ORDER TO [TAG] 标识名 注意: GO TOP、 GO BOTTOM与GO n的区别

? 取消主控索引
SET ORDER TO [0]

3.5.4 创建独立索引文件
Index命令 Index命令
<索引表达式 索引表达式> <独立索引文件名 独立索引文件名> INDEX ON <索引表达式> To <独立索引文件名> *说明:刚创建完时自动处于打开状态并起主控作用 说明: 注意: *注意:不能对备注字段和通用字段建立索引

设置主控索引
1.打开表的同时指定主控索引 use <表文件名> index <独立索引文件名> 2 打开表后再设置主控索引 use <表文件名> set index to <独立索引文件名>

取消主控索引
set index to

3.5.5 索引的修改和删除
? 索引的修改
– 表设计器
? “表设计器”——“索引”选项卡

– 命令
? INDEX 命令修改原索引

? 索引的删除
– 表设计器
? “表设计器”——“索引”选项卡

– DELETE TAG

[all] 欲删除的索引标识

3.5.6 索引的使用
? 利用索引快速定位记录
– SEEK 命令 ? SEEK 命令只能搜索索引关键字对应表达式值 只能搜索索引关键字对应表达式值
–应先设置主控索引或SEEK同时选择主控索引 –记录指针指向于成功搜索定位的第一条记录上 –如定位不成功,记录指针指向记录结束标志

? FOUND() EOF() FOUND()与EOF() EOF()函数
– FIND命令(注:该命令仅能查找数值、字符值) 注

– SEEK函数(相当SEEK、FOUND()连用)

? 索引函数
ORDER([工作区/别名]) 返回主控索引文件或标识 ▲TAG(n) 返回已打开的第n个索引文件或标识 ▲KEY(n)或SYS(14,n) 返回第n个索引的索引表达式 或



相关文章:
《VFP》 第三章习题
VFP》 第三章习题_IT认证_资格考试/认证_教育专区。《VFP》 第三章习题 ...7、用户使用 CREATE TABLE-SQL 命令创建表的结构,字段类型必须用单个字母表示. ...
VFP6教程第3章 数据库的基本操作
VFP6教程第3章 数据库的基本操作 暂无评价|0人阅读|0次下载|举报文档 第3 章 数据库的基本操作前面我们学习了自由表的知识、表的建立、表的基本操作也是简单方...
vfp三本授课计划表
vfp三本授课计划表 - 嘉兴学院教师学期授课计划 学院:数信学院 主讲教师: 辅导教师: 课程名称:数据库系统 授课班级: 2010/2011 学年第 2 学期 总课时:64 学...
2016-上机作业3-VFP程序设计题
2016-上机作业3-VFP程序设计题_IT认证_资格考试/认证_教育专区。SSS ...VFP与表操作相关程序设计... 11页 免费 vfp程序设计作业:程序设... 暂无评价...
数据库管理系统应用 VFP 3
数据库管理系统应用 VFP 3_计算机软件及应用_IT/计算机_专业资料。在线练习 ...teacher B、js C、B D、jsb 4、用表设计器创建一个自由表,能实现的操作是...
VFP数据库与程序设计第三版课本习题答案
VFP数据库与程序设计第三版课本习题答案_IT认证_资格考试/认证_教育专区。习题一 一. 单选题 1. B 2. A 3. C 4. D 5. C 6. B 7. A 习题二 一....
VFP试卷及答案3
VFP试卷及答案3_IT认证_资格考试/认证_教育专区。试卷编号:9469 所属语言:Visual...第 2 题(10.0 分) 一、基本操作题 1、建立自由表'货运表'(不要求输入...
VFP实验指导 实验三
VFP实验指导 实验三 - 实验 3:变量、函数和表达式实验 1.实验目的: ? 掌握各种变量、函数和表达式的使用方法 2.实验内容: 3.2.1 系统变量实验 (1)用系统...
vfp复习题3
vfp 复习题 3 满分:49 分 姓名:___ 1、单项选择题(本题共计 20 分) 1、如果要对自由表某一字段的数据值建立唯一性保护机制(即表中所有字段的值不重复)...
VFP_实验2-3 数据表记录的查找、统计及文件操作
VFP_实验2-3 数据表记录的查找、统计及文件操作_计算机软件及应用_IT/计算机_...先建立索引或排序。 (4)如果要将数据表文件转换成其它软件系统能够接收的格式,...
更多相关标签: