600 likes | 752 Views
第 2 章 表的建立与操作. 首先介绍数据库表的创建,表的编辑修改等操作方法,内容涉及界面交互操作和命令两种。 基本内容之后介绍排序与索引。. 2.2 表的建立. 2.2.1 表结构设计 在人事工资管理中,经常会遇到表下所示的二维表。. Visual FoxPro 采用关系数据模型,能方便地将二维表作为 “ 表 ” 存储到计算机的存储器中。. 建表时,二维表的列标题将成为表的字段,标题栏下方的内容输入到表中成为表的数据,每一行数据称为表的一个记录。 建表时要先确定以下两个要素: ( 1 )表文件名;
E N D
第2章 表的建立与操作 首先介绍数据库表的创建,表的编辑修改等操作方法,内容涉及界面交互操作和命令两种。 基本内容之后介绍排序与索引。
2.2 表的建立 2.2.1 表结构设计 在人事工资管理中,经常会遇到表下所示的二维表。
Visual FoxPro采用关系数据模型,能方便地将二维表作为“表”存储到计算机的存储器中。 建表时,二维表的列标题将成为表的字段,标题栏下方的内容输入到表中成为表的数据,每一行数据称为表的一个记录。 建表时要先确定以下两个要素: (1)表文件名; (2)表结构,各字段的字段名、字段类型和字段宽度。 1.表文件名 表文件名可使用不超过255个字符(字母、汉字、数字或下划线)的名称,第一个字符必须是字母、汉字或下划线。表文件的扩展名为.dbf或.DBF, 例如:建立一个自由表,可以命名为“人事表”或“rsb”。
2. 表结构 二维表的各列称为字段,表的结构描述通过对表中各个字段的属性定义来实现。 字段的属性描述内容包括字段名称、字段类型和字段宽度,对于数值型字段还包括小数位数。 (1)字段名 字段的命名规则与内存变量的命名规则类似,以字母(汉字)或下划线开头,由字母、数字和下划线组成,但最多10个字符。 注意,同一个表中的字段名不能相同。
(2)字段类型 Visual FoxPro定义了13种字段数据类型,常用的字段类型有11种,见下表所示。
(3)字段宽度 字符型、数值型和浮动数值型等三种类型的字段宽度可以改变,其它类型字段有唯一确定的宽度,不能改变。 在建立表结构时,应根据要存储数据的实际需要设定合适的宽度。 字符型字段宽度定义时应考虑所存放字符串的最大长度. 例如,描述人的姓名字段,考虑到中国人的姓名绝大多数为三个汉字,再顾及到少数人的四个汉字,可以取姓名字段的宽度为8。 在定义数值形和浮动数值型字段宽度时,应考虑到正负号和小数点,带小数的数值型字段宽度计算如下: 字段宽度=1(正负号)+整数位数+1(小数点)+小数位数 例如,数值型字段宽度为7,小数位数为2位,则能存放的最大数值为9999.99,最小数值为-999.99。
根据上述规定,为人事表设计出表结构,表名为rsb。根据上述规定,为人事表设计出表结构,表名为rsb。
2.2.2 表结构建立 1.文件位置设定 约定用户文件均建立在指定目录下。文件位置设定操作步骤如下: 步骤一:选定【工具】菜单的【选项】命令,出现如图所示界面;
步骤二:选定【文件位置】选项卡,在列表中选定【默认目录】选项,按【修改】按钮,出现如图所示【更改文件位置】对话框;步骤二:选定【文件位置】选项卡,在列表中选定【默认目录】选项,按【修改】按钮,出现如图所示【更改文件位置】对话框; 步骤三:选定【使用(U)默认目录】复选框,在“定位(L)默认目录”文本框键入路径D:\Visual FoxPro Exercise(或通过文本框右侧标有三个圆点的对话按钮选定路径); 步骤四:在【更改文件位置】对话框按【确定】按钮返回【选项】界面,按【确定】按钮关闭该界面。 可用命令:SET DEFAULT TO D:\Visual FoxPro Exercise
2.交互方式建立表结构[例2-1] 利用交互方式建立rsb表的结构。 步骤一: 开始建表:选定【文件】菜单的【新建】命令→选定如图所示的【新建】对话框中【表】选项按钮→按【新建文件】按钮,出现【创建】对话框。
步骤二:打开表设计器:在【创建】对话框中的“输入表名”文本框输入表名rsb,按【保存】按钮,出现如图所示表rsb.dbf设计器。
步骤三:设定各字段的属性值:设定各字段的属性值。步骤三:设定各字段的属性值:设定各字段的属性值。 例如:先在“字段名”下方的文本框输入编号→在“类型”列表框选定字符型→在“宽度”文本框输入4(或用标有上下箭头的微调按钮将数值调整至4)。 设定完第一字段,再依次设定其它字段。
步骤四:保存:字段的属性值设定完成后,按【确定】按钮,当询问“现在输入数据记录吗?”。步骤四:保存:字段的属性值设定完成后,按【确定】按钮,当询问“现在输入数据记录吗?”。 若按【否】按钮则关闭表设计器窗口,建立表结构结束。若按【是】按钮,则出现rsb.dbf记录编辑窗口,供用户输入记录数据。 3. 命令方式建立表结构 命令格式如下: CREATE [TABLE <表名> (<字段名> <类型代号> (<字段宽度>[,<小数位数>]) [,<字段名> <类型代号> (<字段宽度>[,<小数位数>])]……)] 在命令窗口键入如下命令: CREATE TABLE gzb(编号 C(4),基本工资 N(8,2),岗位津贴 N(7,2),; 奖励 N(7,2),应发工资 N(8,2),水电 N(7,2),保险 N(7,2),; 实发工资 N(8,2))
2.2.3 表记录数据的输入 利用交互方式建立表结构后,若在出现输入记录询问对话框时按【是】按钮,则出现记录编辑窗口,供用户输入数据记录。以rsb.dbf为例,则记录编辑窗口如图所示。 在数据输入窗口中,光标首先停留在第一个记录的第一个字段上,输入相应的数据后,移动光标到其它字段并输入数据,依此方法完成一条记录的数据输入。重复上述操作,依次输入其它数据记录。
具体操作时应注意以下问题: (1)表的数据通过编辑窗口按记录逐个字段输入。一旦在最后一个记录的任何一个字段输入数据,系统将自动提供下一记录的输入位置。 (2)若输入的数据充满整个字段,则光标自动移到下一字段,否则,需要按回车键才能将光标移到下一字段。 (3)逻辑型字段只能接收T,t,Y,y(表示“真”),F,f,N,n(表示“假”)中的任何一个字符。 (4)日期型字段应注意日期格式和日期的有效性,默认格式mm/dd/yy输入。若按格式yy.mm.dd输入,则须在命令窗口键入如下命令: SET DATE ANSI SET DATE USA和SET DATE AMERICA后均使日期输入或显示格式变化。 若要显示年份的前两位(世纪标志),则可键入如下命令: SET CENTURY ON 若取消世纪标志,则可使用命令SET CENTURY OFF。
具体操作时应注意以下问题: (5)对备注型字段的输入,当光标位于该字段时,双击鼠标左键或按下Ctrl+PgDn键进入编辑器,输入完字符型数据后关闭编辑器,此时memo变为Memo(表示该字段非空)。 (6)对通用型字段的输入,当光标位于该字段时,双击鼠标左键或按下Ctrl+PgDn键进入编辑器,此时可选定【编辑】菜单的【插入对象】命令,插入图形、电子表格或声音等多媒体数据文件,然后关闭编辑器,此时gen变为Gen(表示该字段非空)。 (7)在输入数据的过程中,可将编辑窗口转换为浏览窗口,方法为选定【显示】菜单的【浏览】命令。 (8)记录数据输入结束,按Ctrl+W保存退出,若放弃已经输入的数据按Ctrl+Q。
2.3 表的编辑修改 2.3.1 表文件的打开与关闭 一般来说, 在进行各种表操作之前先要打开表。刚创建的表则自动处于打开状态,在其它情况下可用如下方法打开表。 1. 用菜单打开表 使用【文件】菜单中的【打开】命令,出现如图所示的【打开】对话框。 若要对表进行编辑修改操作,则必须选定【独占】复选框
2. 用USE命令打开和关闭表 USE [[<文件名> [EXCLUSIVE | SHARED]] 在当前工作区中打开或关闭表。打开时,若该表有备注型或通用型字段,则自动打开同名的.FPT文件。 缺省<文件名>表示关闭当前工作区中已经打开的表。 例如: USE rsb &&打开rsb.dbf USE &&关闭 (1)用EXCLUSIVE选项,则以独占方式打开表。用SHARED选项,则以共享方式打开表,此时表结构和表数据只读,不能编辑修改。 (2)已打开的一个表有一个指针与其对应,指针所指的记录称为当前记录。表刚打开时,记录指针指向第一个记录。 (3)表操作结束后及时关闭,以便将内存中的数据保存到外存的表中 该工作区中原来打开的表自动关闭
3.关闭表的其它方法 CLEAR ALL:关闭所有的表,并选择工作区1,释放所有内存变量、用户定义的菜单和窗口。 CLOSE ALL:关闭所有打开的数据库和表,并选择工作区1,关闭各种设计器和项目管理器。 CLOSE DATABASE [ALL]:关闭当前数据库和其中的表,若无打开的数据库,则关闭所有自由表,并选择工作区1。带ALL则关闭所有数据库和其中的表,以及所有已经打开的自由表。 CLOSE TABLES [ALL]:关闭当前数据库中所有的表,但不关闭数据库。若无打开的数据库,则关闭所有自由表。带ALL则关闭所有数据库中所有的表和所有自由表,但不关闭数据库。 除以上命令之外,还可通过退出Visual FoxPro来关闭已打开的表。选定【文件】菜单中的【退出】命令,或在【命令】窗口键入命令QUIT。
2.3.2 表结构的显示与修改 1. 表结构显示 LISP | DISPLAY STRUCTURE [TO PRINTER [PROMPT] | TO FILE <文件名>] 显示当前已经打开表的结构。选项TO PRINTER和TO FILE <文件名>含义与在变量显示命令中的含义相同。 [例2-2] 显示“人事表”的结构。 在【命令】窗口依次键入如下两条命令: USE rsb && 在当前工作区打开表rsb LIST STRUCTURE&& 显示表rsb的结构
2. 浏览方式表结构修改 在表已经打开的情况下,可以采用如下两种方法之一打开【表设计器】窗口修改表结构。 (1)选定【显示】菜单的【表设计器】命令 (2)在【命令】窗口键入命令MODIFY STRUCTURE 【表设计器】窗口出现后,可以按照需要修改字段属性,也可以利用【插入】按钮在任何位置增加字段,或利用【删除】按钮删除字段。 表结构修改完成后,可选择窗口的【确定】按钮或【取消】按钮对所做出的修改进行确认或取消。 (1)【确定】按钮与Ctrl+W键作用相同。 (2)【取消】按钮与Ctrl+Q键作用相同。
3.命令方式表结构修改 ALTER TABLE <表文件名> ADD | ALTER [COLUMN] <字段名> <字段类型> [(<字段宽度>[,< 小数位数>])] 在<表文件名>指定的数据表中增加一个字段或修改指定字段的属性。 ADD [COLUMN]子句的<字段名>用于指定增加的字段,字段属性由<字段类型> [(<字段宽度>[,< 小数位数>])]规定。 例如: ALTER TABLE rsb ADD COLUMN 毕业院校 C(20) ALTER [COLUMN] 子句的<字段名>用于指定要修改的字段,用户可以用<字段类型> [(<字段宽度>[,< 小数位数>])]重新指定字段的属性。 例如: ALTER TABLE rsb ALTER 毕业院校 C(16)
ALTER TABLE <表文件名> DROP [COLUMN] <字段名3> | RENAME COLUMN <字段名1> TO <字段名2> 功能:在<表文件名>指定的数据表中删除指定的字段或修改指定的字段名。 RENAME [COLUMN]子句将<字段名1>指定的字段更名为<字段名2>。 例如: ALTER TABLE rsb RENAME COLUMN 毕业院校 TO 毕业院校A DROP [COLUMN] 子句指定删除一个字段。 例如: ALTER TABLE rsb DROP 毕业院校A 注意,用ALTER TABLE命令修改一个表结构后,该表自动处于打开状态。
2.3.3 记录的显示与修改 1. 浏览方式记录显示与修改 打开【浏览】窗口可选择下述界面操作方式或命令方式之一。 (1)界面操作方式:打开表,选定【显示】菜单的【浏览】命令。 (2)命令方式:在【命令】窗口依次发出以下命令: USE rsb && 打开 rsb BROWSE && 浏览命令 当字段或记录较多时,可单击滚动条两端的箭头或拖曳其中的滑块,使表数据记录在窗口中滚动显示。 通过【显示】菜单下的【浏览】和【编辑】命令可以在浏览显示格式和编辑显示格式之间切换。 注意:若要修改记录,必须以独占方式打开表 记录数据修改时,只要单击字段的某位置,就可根据光标指示进行修改。
2. 命令方式显示记录 LIST | DISPLAY [[FIELDS] <表达式表> ] [<范围>] [FOR <条件1>] [WHILE <条件2>] [OFF] [TO PRINTER [PROMPT] | TO FILE <文件名>] 功能:按指定范围和条件筛选出记录并显示出来,或送到指定的目的地。 LIST和DISPLAY的功能有所不同,LIST以滚动方式输出,DISPLAY为分屏显示。 为了让用户了解显示内容所在的记录,命令自动显示记录号,若不需要显示记录号,则在命令中使用OFF选项。 选项TO PRINTER和TO FILE <文件名>含义与在变量显示命令中的含义相同。其它四个子句的使用和书写规则如下:
(1)FIELDS子句 FIELDS子句指定要显示的字段,相当于关系运算的“投影”操作。 保留字FIELDS可以省略 <表达式表>用来列出需要显示的内容,表达式之间用“,”号分隔。 [例2-3] 显示rsb中职工的编号,姓名,性别和年龄。 可在命令窗口键入如下命令: USE rsb LIST 编号,姓名,性别,YEAR(DATE())-YEAR(出生日期)
(2)范围子句 用来确定该命令涉及的记录,范围有4种限定方法: ALL:所有记录; NEXT(n):从当前记录开始的n个记录; RECORD(n):第n个记录; REST:从当前记录开始到最后一个记录的所有记录。 例如: USE rsb && 打开rsb,记录指针指向第1记录 LIST 编号,姓名,性别,出生日期 NEXT(4) 命令动词为LIST时,范围子句缺省时默认为ALL。而当命令动词为DISPLAY时,范围子句缺省时默认为当前记录。
(3)FOR子句 FOR子句的<条件1>为逻辑表达式,它指定记录选择的条件,相当于关系运算的“选择”操作,在指定的范围内筛选出符合条件的记录。 例如: USE rsb LIST 姓名 FOR 婚否=.T. REST (4)WHILE子句 WHILE子句也用于指明操作条件,但仅在当前记录符合<条件2>时才开始依次筛选记录,一旦遇到不满足<条件2>的记录就停止操作。 例如: USE rsb LIST 姓名,出生日期,婚否 WHILE YEAR(出生日期)<1975
(5)命令和子句的书写规则 (1)命令动词与子句、子句与子句、子句内的各部分(例如:FOR与<条件1>)之间必须用空格隔开,各子句的次序可以任意排列。例如: LIST FOR 婚否=.F. WHILE YEAR(出生日期)<1975 姓名,出生日期,婚否 (2)所有命令动词、各子句和内部函数中的保留字都可只写前4个字母,而且英文字母大小写等效。例如: MODIFY STRUCTURE MODI STRU 或 modi stru (3)一条命令的长度可达8192个字符,若一行写不完,可在适当位置插入续行标志“;”并回车,在下一行继续输入该命令的其余部分。 (4)命令动词、子句和函数中的保留字,以及命令中的分隔符号和数字均要用半角符号,不能用全角符号
3. 命令方式记录修改 REPLACE <字段1> WITH <表达式1> [ADDITIVE] [,<字段2> WITH <表达式2>] [ADDITIVE]]……[<范围>] [FOR <条件1>] [WHILE <条件2>] 在当前打开表的指定记录中,将有关字段的值用相应的表达式值来替换。若<范围>与<条件>等选项都缺省,只对当前记录的有关字段进行替换。该命令对<范围>内符合<条件>的记录用<表达式i>的值来替换<字段i>。 [例2-4] USE rsb GO 6 REPLACE 职称 WITH "副教授",单位代码 WITH "A01" 范围子句、FOR子句和WHILE子句的使用同显示命令中相同。ADDITIVE用于备注型字段,表示将表达式值添加到字段的原有内容之后,而不是取代。
4. 记录定位 存取数据先要进行记录定位,记录定位就是将记录指针指向某个记录,使之成为当前记录。表刚打开时,记录指针指向第一个记录。 【浏览】窗口打开后,使用【表】菜单的【移动记录】命令可以移动记录指针来改变当前记录。 (1) 绝对定位命令 GO[TO] TOP|BOTTOM 功能:将记录指针定位在表的第一个记录或最后一个记录。 [GO[TO]] <数值表达式> 功能:将记录指针定位在<数值表达式>指出的记录。 例如: USE rsb GOTO 4 && 指针移动到4号记录 ? RECNO() && 显示当前记录号4
(2)相对定位命令 SKIP [<数值表达式>] 功能:从当前记录开始相对移动记录指针,<数值表达式>表示移动记录的个数。 当<数值表达式>为负值时,指针向文件头移动,当<数值表达式>为正值时,指针向文件尾移动。<数值表达式>缺省时默认为1。 例如: USE rsb && 打开rsb,当前记录为第一个记录 SKIP –1 && 指针向文件头移动1 ? RECNO(),BOF() && 显示1,.T. SKIP 2 && 指针向文件尾移动2 ? RECNO(),BOF() && 显示3,.F.
2.3.4 记录的追加 追加记录就是向表的末尾添加记录。 1. 交互操作方法 【浏览】窗口,选择【表】菜单【追加新记录】命令,即可在当前浏览的表最后记录的下面产生一个空白记录,供追加新记录。 将光标定位在各字段,输入完数据关闭窗口。 除此之外,【浏览】窗口,选择【显示】菜单中【追加方式】命令,出现追加新记录窗口后输入记录数据。 注意:【表】菜单【追加新记录】命令一次只能追加一个记录,而【显示】菜单【追加方式】命令一次可追加多个记录。
2. APPEND、INSERT命令 APPEND [BLANK] 使用BLANK子句能在表末尾追加一条空白记录,留待以后添入数据。若缺省BLANK子句就会出现记录编辑窗口,窗口内有空白的记录等待用户输入数据。 INSERT命令也可用来插入表记录 命令格式:INSERT [BLANK] [BEFORE] 使用BEFORE子句能在当前记录之前插入新记录。缺省该子句则在当前记录之后插入新记录。 使用BLANK子句立即插入一条空白记录,若缺省该子句,则出现记录编辑窗口等待用户输入记录。
3. INSERT INTO命令 INSERT INTO命令可直接在表尾追加一个新记录,并直接将提供的数据输入记录。 INSERT TO <表名>[(<字段名1>[,<字段名2>,……])] VALUES(<表达式1>[,<表达式2>,……]) 利用INSERT INTO命令追加记录时,表不必事先打开,但是要求字段与表达式的类型必须相同。 例如: INSERT INTO rsb(编号,姓名,性别,出生日期) VALUES ; ("0007","张兵","男",{^1955/08/18}) 若字段名全部省略,就须按表结构的字段顺序添写VALUES子句的所有表达式。
2.3.5 记录的删除与恢复 删除记录一般需要两步: (1) 加删除标记;(2) 将带有删除标记的记录从表中删除。 在物理删除前可以恢复。 1. 逻辑删除 在【浏览】窗口单击该记录行最左的删除标记列,就会出现删除标记“■” 。 使用下面的命令作删除标记。 DELETE [<范围>] [FOR <条件1>] [WHILE <条件2>] 功能:对当前表在指定<范围>内满足<条件1>和<条件2>]的记录作删除标记。若可选项都缺省,只指当前记录。
2.物理删除 PACK 功能:从表中将带有删除标记的记录物理删除。 [例2-5] 物理删除部门代码为“B02”的职工记录。 键入如下命令: USE rsb DELETE FOR RIGHT(部门代码,3)="B02" LIST PACK LIST
3.记录恢复 在【浏览】窗口单击记录的删除标记列,删除标记“■”消失即可。或使用下面的命令去掉删除标记。 RECALL [<范围>] [FOR <条件1>] [WHILE <条件2>] 对当前表在指定<范围>内满足<条件1>和<条件2>]的记录去掉删除标记。若可选项都缺省只恢复当前记录。 [例2-6]逻辑删除部门代码为“A01”记录,恢复所有职称为副教授的职工记录。 USE rsb DELETE FOR RIGHT(部门代码,3)="A01" LIST RECALL FOR ALLTRIM(职称)=“副教授” LIST
4.记录清除 物理删除当前表中的所有记录,则可以使用如下命令 ZAP 执行ZAP相当于执行DELETE ALL和PACK两条命令,ZAP将影响当前表中的所有记录,慎用。
2.4 表复制与逻辑表设置 2.4.1 表复制 1. 复制任何文件 COPY FILE <文件名1> TO <文件名2> 功能:从<文件名1>复制到<文件名2>。若对数据表进行复制,该表必须处于关闭状态,例如: CLOSE ALL COPY FILE rsb.dbf TO rsb1.dbf 注意,用COPY FILE复制带有备注文件的表时,除安排一条命令复制表文件之外,还要安排一条命令复制备注文件。 例如,复制带有备注文件的rsb表,可用如下两条命令: COPY FILE rsb.dbf TO rsb1.dbf COPY FILE rsb.fpt TO rsb1.fpt
2. 表内容复制 COPY TO <文件名> [<范围>] [FOR <条件1>] [WHILE <条件2>] [FIELDS <字段名表> | FIELDS LIKE <通配字段名> | FIELDS EXCEPT <通配字段名>][TYPE XLS | SDF | DELIMITED [WITH <定界符> | WITH BLANK | WITH TAB] 将当前表中选定的部分记录和部分字段复制成一个新表或其它类型文件. (1)对于含有备注型、通用型字段的表,在复制扩展名为.DBF的表文件的同时,自动复制扩展名为.FPT文件。例如: USE rsb COPY TO rsb2 COPY TO rsb3 FIELDS 编号,姓名,性别 FOR ALLTRIM(职称)="副教授" USE rsb2 LIST USE rsb3
(2)<通配字段名>指字段名中可包含通配符*和?号,FIELDS LIKE子句表示<通配字段名>指出的字段,FIELDS EXCEPT子句表示取<通配字段名>以外的字段。 (3)TYPE子句指出复制得到的文件类型,若缺省则为数据表类型。若需要复制出其它类型文件必须使用TYPE子句,规定如下: TYPE XLS:新文件为Excel文件,扩展名为.XLS。 TYPE SDF:新文件为文本文件,扩展名为.TXT,数据间无分隔符,无定界符。 TYPE DELIMITED:新文件为文本文件,扩展名为.TXT,数据间分隔符为“,”号,定界符为双引号。 TYPE DELIMITED WITH <定界符>:新文件为文本文件,扩展名为.TXT,数据间分隔符为“,”号,定界符用<定界符>指定。 TYPE DELIMITED WITH BLANK:新文件为文本文件,扩展名为.TXT,数据间分隔符为空格,定界符为双引号。 TYPE DELIMITED WITH TAB:新文件为文本文件,扩展名为.TXT,数据间分隔符为制表符,定界符为双引号。
3. 表结构复制 COPY STRUCTURE TO <文件名> [FIELDS <字段名表>] 功能:仅复制当前表的结构,不复制其中的数据。 若使用FIELDS 选项,则新表的结构只包含其指明的字段,同时也决定了这些字段在新表中的排列次序。 例如: USE rsb COPY STRUCTURE TO rsb4 FIELDS 姓名,工作日期,职称 USE rsb4 LIST STRUCTURE
2.4.2 逻辑表设置 “选择”是对表的常见操作,在命令中可用FOR子句、WHILE子句或FIELDS子句来选择记录和字段。但是,仅在执行命令时生效一次。使用过滤器和字段表等逻辑表可以一直有效。 1.过滤器 过滤器可以将不满足条件的记录“屏蔽”起来。 SET FILTER TO [<条件>] 功能:从当前表过滤出符合<条件>的记录,不符合<条件>的记录将被“屏蔽”,随后的操作仅限于满足过滤条件的记录。缺省<条件>时取消所设置的过滤器。 例如: USE rsb SET FILTER TO ALLTRIM(职称)="讲师" SET FILTER TO
2. 字段表 过滤器用于限定命令操作能涉及的记录,而字段表可用于限定命令操作能起作用的字段。 SET FIELDS TO [<字段名1>[,<字段名2>……] | ALL LIKE <通配字段名> | ALL EXCEPT <通配字段名>] <通配字段名>指字段名中可包含通配符*和?号,ALL LIKE子句表示<通配字段名>指出的字段,ALL EXCEPT子句表示取<通配字段名>以外的字段。不带任何参数的SET FIELDS TO命令将屏蔽掉所有字段。 SET FIELDS ON | OFF 决定字段表有效或失效。 [例2-7] 对rsb设置字段表,使有效字段为出生日期和工作日期。 USE rsb SET FIELDS TO ALL LIKE ????日期 SET FIELDS OFF
2.5 排序与索引 2.5.1 排序 排序就是按表中的字段重新排列记录顺序。排序后生成一个新表,新表的记录按新的物理顺序排列。 命令格式: SORT TO <新文件名> ON <字段名1> [/A|/D] [/C][,<字段名2> [/A|/D] [/C] ...] [ASCENDING | DESCENDING] [<范围>] [FOR <条件1>] [WHILE <条件2>] [FIELDS <字段名表> | FIELDS LIKE 通配字段名| FIELDS EXCEPT通配字段名] 功能:将当前数据表按指定的一个或多个字段进行排序,并将排序的结果保存到一个新的数据表中。
[例2-8]对rsb.dbf分别按以下要求排序: (1)按工作日期先后顺序排列,结果仅包含编号,姓名,性别,工作日期,职称这5个字段,并存入表px1.dbf中。 (2)将已婚的职工按性别的降序排序,当性别相同时按姓名的升序排序,结果仅包含编号,姓名,性别,工作日期,职称,婚否这6个字段,并存入表px2.dbf中。 (1)命令序列如下: USE rsb SORT TO px1 ON 工作日期 FIELDS 编号,姓名,性别,工作日期,职称 USE px1 LIST
(2)命令序列如下: USE rsb SORT TO px2 ON 性别/D,姓名/A FOR 婚否 FIELDS 编号,姓名,性别,工作日期,职称,婚否 USE px2 LIST