1、4.2 数据表操作命令,数据表结构的显示与修改命令 数据表结构的复制 数据表记录的显示、插入与追加 数据表记录的修改 数据表记录的删除,一、数据表结构的显示与修改,显示表结构命令 格式1:LIST STRUCTURE TO PRINTER TO FILE 格式2:DISPLAY STRUCTURE TO PRINTER TO FILE 功能:在主窗口显示当前打开的数据表结构。,2. 修改表结构命令 格式:MODIFY STRUCTURE 【注意】必须以独占方式打开数据表,否则认为是共享方式,即为只读方式,不能进行修改操作。即先use abc exclusive 系统会产生备份文件*.bak,
2、*.tbk,二、数据表结构的复制,COPY STRUCTURE TO FIELDS 说明:缺省时,得到的新表结构与原表一样,否则仅复制指定的字段,并且排列顺序与指定的中各字段的排列顺序相同。,TOP,BOTTOM,三、数据表记录的显示、插入与追加,显示表记录命令 格式:LIST|DISPLAY FIELDS FOR TO PRINTER|TO FILE 功能:输出指定范围内满足条件的记录内容 例如:use studentlistlist all fields 姓名,学号,性别,use student list all fields 姓名,学号,性别,:表示显示的行,4种选择:all(可省略):
3、全部记录record n :第n条记录next n :从当前记录开始共n条记录rest :当前记录开始到文件尾 例如:use studentlist next 2list record 3 姓名,学号,专业list rest 姓名,学号,1,23 3,4,5,6,OFF:不显示记录号 TO PRINTER|TO FILE : 前者表示把结果输出打印,后者表示把结果存在一个指定路径的文本文件中,即一个txt文件中,不指定路径即为默认路径。,例如:在D:vfp文件夹下有名为gzb的数据表,包含有工号,姓名,性别,出生日期,职称,婚否(逻辑型,已婚为.T.,未婚为.F.)工资,备注,通用等字段。 (
4、1)显示表中工资高于1000的记录;use d:vfpgzblist for 工资1000,例如:在D:vfp文件夹下有名为gzb的数据表,包含有工号,姓名,性别,出生日期,职称,婚否(逻辑型,已婚为.T.,未婚为.F.)工资,备注,通用等字段。 (2)显示表中工资高于1000且未婚的人员记录;use d:vfpgzblist for 工资1000.AND. 婚否=.F. 或list for 工资1000 .AND. .not.婚否,例如:在D:vfp文件夹下有名为gzb的数据表,包含有工号,姓名,性别,出生日期,职称,婚否(逻辑型,已婚为.T.,未婚为.F.)工资,备注,通用等字段。 (3)
5、显示表中工资高于1000,或性别为 “男”的人员记录,每个记录只显示姓名,性别,工资3个字段。 use d:vfpgzb list for 工资1000 OR 性别=男; fields 姓名,性别,工资,例如:在D:vfp文件夹下有名为gzb的数据表,包含有工号,姓名,性别,出生日期,职称,婚否(逻辑型,已婚为.T.,未婚为.F.)工资,备注,通用等字段。 (4)显示表中第三个记录以后的80年代出生的人员记录. use d:vfpgzb list for year(出生日期)=1980 AND year(出生日期)3,2、插入记录命令: 格式:INSERT BLANK BEFORE 功能:如果
6、不带BEFORE选项,则默认在当前记录之后插入一条新记录,否则在当前记录之前插入一条新记录。带BLANK选项,表示在当前记录之后或之前自动插入一条空记录但不会弹出数据录入的窗口。 【注意】插入新记录后,其后面所有记录的记录号要自动加1。,例如:use d:vfpgzbgo 7insertinsert beforeinsert blank before,3、数据表记录的追加,(1)在当前表中增加新记录: 格式:APPEND BLANK 功能:在当前数据表的末尾增加新记录,记录号是原来的总记录数加1。 例如:use d:student表1append 这时进入屏幕编辑状态。,2.从其他表中追加记录
7、 APPEND FROM 范围 FIELDS type 功能:将存储设备上一个数据表(文本文件)的记录追加到当前记录表的尾部。,例如,将student表中女同学记录的学号,姓名,性别三个字段的数据追加到nx表中。 use d:nx append from student for 性别=女; fields 学号,姓名,性别,分两类共三条命令:屏幕编辑修改 browse change(edit)成批替换修改 replace 命令格式: 1、浏览修改命令BROWSE FIELDS LOCK FREEZE NOAPPEND NOMODIFY,四、数据表记录修改,LOCK :锁定窗口左端的个字段。 例如
8、:use studentbrow lock 2,FREEZE :将光标冻结在指定字段上,用户仅能对该字段进行修改。 例如:use studentbrow freeze 姓名,NOAPPEND:禁止追加记录 使用此命令后,只能修改已有记录,“显示”菜单的“追加方式”以及“表”菜单的“追加记录”命令都不能使用。 NOMODIFY:只供浏览数据表,禁止修改表中已有记录,但是允许追加新纪录。,2、成批替换修改命令 REPLACE with , with for条件 功能:用指定表达式的值替换当前数据表内指定范围内满足指定条件的指定字段的数据。 注意:缺省范围和条件短语时,只对当前记录进行替换。,例如:
9、在D盘根目录下已有gzb(工资表),包含工号,姓名,性别,出生年月,职称,工资,奖金,备注,通用字段。 (1)修改表中数据,使所有人员工资涨100元。use d:gzbreplace 工资 with 工资+100 all,例如:在D盘根目录下已有gzb(工资表),包含工号,姓名,性别,出生年月,职称,工资,奖金,备注,通用字段。 (2)在表中增加一个记录,各字段内容分别为2000105,蒋大伟,男,10/14/1960,工程师,5200,1500,并使其记录号为5。use d:gzbgo 5insert blank beforereplace 工号 with “2000105“,姓名 with
10、 “蒋大伟“,性别 with “男“,出生年月 with 10/14/1960, 职称 with “工程师“,工资 with $5200,奖金 with $1500,例如:在D盘根目录下已有gzb(工资表),包含工号,姓名,性别,出生年月,职称,工资,奖金,备注,通用字段。 (3)年终奖金,高工每人在原基础上增加1.5倍,工程师增加1.2倍,助工增加1倍。 use d:gzb replace all 奖金 with 奖金*2.5 for 职称=“高工“ replace all 奖金 with 奖金*2.2 for 职称=“工程师“ replace all 奖金 with 奖金*2 for 职称
11、=“助工“,在vfp中,删除记录分成两步: 逻辑删除:只是对记录做了删除标记,在系统默认状态(SET DELETE OFF)下仍可以对记录进行操作,并且使用逻辑删除的数据可以恢复。 物理删除:把记录真正从数据表删除,并且一旦删除,记录不可恢复。,五、数据表记录删除,(1)逻辑删除命令 DELETE for条件 说明:缺省和条件语句时,仅对当前记录做删除标志; 可以用DELETE()函数来检测当前记录是否带有删除标志。,隐藏不隐藏 带删除标记的记录:SET DELETE ONOFF 说明:使用SET DELETE ON,则所有带删除标记的记录被“屏蔽”,不能被显示也不能被修改;系统默认状态是SE
12、T DELETE OFF。,use student listset delete on use student list,(2)取消逻辑删除标记 RECALL for条件 while条件 说明:省略范围和条件选项时,仅去掉当前记录的删除标志;,(3)物理删除PACK 功能:把当前数据表中有删除标记的记录彻底删除。 例如:前面例中使用SET DELETE ON命令,虽然有删除标记的记录不显示,但是记录号仍然不会发生变化。 pack,(4)物理删除全部记录,ZAP,DELETE ALL PACK,注意:一旦使用ZAP命令,则原表数据无法恢复,请谨慎使用!,复制数据表命令,格式: COPY TO F
13、IELDS FOR WHILE TYPE ,文件类型:SDF 和DELIMITED ,特别需要熟悉的几条命令,Copy to 复制数据表 Replace 成批替换 Delete 逻辑删除pack 物理删除带删除标记的记录zap 物理删除所有记录,Sort toon 物理排序,表结构的基本操作,记录的基本操作,创建表 CREAT,打开表 USE,显示 LIST STRUCTURE 修改MODIFY STRUCTURE 复制 COPY STRUCTURE,显示 LIST | DISPLAY 追加/插入 APPEND/INSERT 指针移动 GO/SKIP 复制 COPY 删除 DELETE/PACK 修改 REPLACE,存,