第 2 章 表的建立与操作

60
第 2 第 第第第第第第第 第第第第第第第第第第第 第第第第第第第第第第第第 第第第第 ,, 第第第第第第第第第第第第第第第第第第第第第第第第

Upload: yehudi

Post on 08-Jan-2016

68 views

Category:

Documents


0 download

DESCRIPTION

第 2 章 表的建立与操作. 首先介绍数据库表的创建,表的编辑修改等操作方法,内容涉及界面交互操作和命令两种。 基本内容之后介绍排序与索引。. 2.2 表的建立. 2.2.1 表结构设计 在人事工资管理中,经常会遇到表下所示的二维表。. Visual FoxPro 采用关系数据模型,能方便地将二维表作为 “ 表 ” 存储到计算机的存储器中。. 建表时,二维表的列标题将成为表的字段,标题栏下方的内容输入到表中成为表的数据,每一行数据称为表的一个记录。 建表时要先确定以下两个要素: ( 1 )表文件名; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 2 章 表的建立与操作

第 2 章 表的建立与操作

首先介绍数据库表的创建,表的编辑修改等操作方法,内容涉及界面交互操作和命令两种。 基本内容之后介绍排序与索引。

Page 2: 第 2 章 表的建立与操作

2.2 表的建立

2.2.1 表结构设计 在人事工资管理中,经常会遇到表下所示的二维表。

Page 3: 第 2 章 表的建立与操作

Visual FoxPro 采用关系数据模型,能方便地将二维表作为“表”存储到计算机的存储器中。

建表时,二维表的列标题将成为表的字段,标题栏下方的内容输入到表中成为表的数据,每一行数据称为表的一个记录。

建表时要先确定以下两个要素: ( 1 )表文件名; ( 2 )表结构,各字段的字段名、字段类型和字段宽度。1. 表文件名 表文件名可使用不超过 255 个字符(字母、汉字、数字或下

划线)的名称,第一个字符必须是字母、汉字或下划线。表文件的扩展名为 .dbf 或 .DBF ,

例如:建立一个自由表,可以命名为“人事表”或“ rsb” 。

Page 4: 第 2 章 表的建立与操作

2. 表结构

二维表的各列称为字段,表的结构描述通过对表中各个字段的属性定义来实现。

字段的属性描述内容包括字段名称、字段类型和字段宽度,对于数值型字段还包括小数位数。

(1) 字段名 字段的命名规则与内存变量的命名规则类似,以字母(汉

字)或下划线开头,由字母、数字和下划线组成,但最多 10 个字符。

注意,同一个表中的字段名不能相同。

Page 5: 第 2 章 表的建立与操作

(2) 字段类型

Visual FoxPro 定义了 13 种字段数据类型,常用的字段类型有 11 种,见下表所示。

Page 6: 第 2 章 表的建立与操作
Page 7: 第 2 章 表的建立与操作

(3) 字段宽度

字符型、数值型和浮动数值型等三种类型的字段宽度可以改变 , 其它类型字段有唯一确定的宽度,不能改变。

在建立表结构时,应根据要存储数据的实际需要设定合适的宽度。 字符型字段宽度定义时应考虑所存放字符串的最大长度 . 例如,描述人的姓名字段,考虑到中国人的姓名绝大多数为三个汉字,

再顾及到少数人的四个汉字,可以取姓名字段的宽度为 8 。 在定义数值形和浮动数值型字段宽度时,应考虑到正负号和小数点,带

小数的数值型字段宽度计算如下: 字段宽度 =1 (正负号) + 整数位数 +1 (小数点) + 小数位数 例如,数值型字段宽度为 7 ,小数位数为 2 位,则能存放的最大数值为

9999.99 ,最小数值为 -999.99 。

Page 8: 第 2 章 表的建立与操作

根据上述规定,为人事表设计出表结构,表名为 rsb 。

Page 9: 第 2 章 表的建立与操作

2.2.2 表结构建立 1. 文件位置设

定 约定用户文件

均建立在指定目录下。文件位置设定操作步骤如下:

步骤一:选定【工具】菜单的【选项】命令,出现如图所示界面;

Page 10: 第 2 章 表的建立与操作

步骤二:选定【文件位置】选项卡,在列表中选定【默认目录】选项,按【修改】按钮,出现如图所示【更改文件位置】对话框;

步骤三:选定【使用( U )默认目录】复选框,在“定位( L )默认目录”文本框键入路径 D:\Visual FoxPro Exercise (或通过文本框右侧标有三个圆点的对话按钮选定路径);

步骤四:在【更改文件位置】对话框按【确定】按钮返回【选项】界面,按【确定】按钮关闭该界面。

可用命令: SET DEFAULT TO D:\Visual FoxPro Exercise

Page 11: 第 2 章 表的建立与操作

2. 交互方式建立表结构 [ 例 2-1] 利用交互方式建立 rsb 表的结构。

步骤一: 开始建表:选定【文件】菜单的【新建】命令→选定如图所示的【新建】对话框中【表】选项按钮→按【新建文件】按钮,出现【创建】对话框。

Page 12: 第 2 章 表的建立与操作

步骤二:打开表设计器:在【创建】对话框中的“输入表名”文本框输入表名 rsb ,按【保存】按钮,出现如图所示表 rsb.dbf 设计器。

Page 13: 第 2 章 表的建立与操作

步骤三:设定各字段的属性值:设定各字段的属性值。 例如:先在“字段名”下方的文本框输入编号→在“类型”

列表框选定字符型→在“宽度”文本框输入 4 (或用标有上下箭头的微调按钮将数值调整至 4 )。

设定完第一字段,再依次设定其它字段。

Page 14: 第 2 章 表的建立与操作

步骤四:保存:字段的属性值设定完成后,按【确定】按钮,当询问“现在输入数据记录吗?”。

若按【否】按钮则关闭表设计器窗口,建立表结构结束。若按【是】按钮,则出现 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))

Page 15: 第 2 章 表的建立与操作

2.2.3 表记录数据的输入

利用交互方式建立表结构后,若在出现输入记录询问对话框时按【是】按钮,则出现记录编辑窗口,供用户输入数据记录。以 rsb.dbf 为例,则记录编辑窗口如图所示。

在数据输入窗口中,光标首先停留在第一个记录的第一个字段上,输入相应的数据后,移动光标到其它字段并输入数据,依此方法完成一条记录的数据输入。重复上述操作,依次输入其它数据记录。

Page 16: 第 2 章 表的建立与操作

具体操作时应注意以下问题:

( 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 。

Page 17: 第 2 章 表的建立与操作

具体操作时应注意以下问题:

( 5 )对备注型字段的输入,当光标位于该字段时,双击鼠标左键或按下 Ctrl+PgDn 键进入编辑器,输入完字符型数据后关闭编辑器,此时 memo 变为 Memo (表示该字段非空)。

( 6 )对通用型字段的输入,当光标位于该字段时,双击鼠标左键或按下 Ctrl+PgDn 键进入编辑器,此时可选定【编辑】菜单的【插入对象】命令,插入图形、电子表格或声音等多媒体数据文件,然后关闭编辑器,此时 gen 变为 Gen(表示该字段非空)。

( 7 )在输入数据的过程中,可将编辑窗口转换为浏览窗口,方法为选定【显示】菜单的【浏览】命令。

( 8)记录数据输入结束,按 Ctrl+W保存退出,若放弃已经输入的数据按 Ctrl+Q。

Page 18: 第 2 章 表的建立与操作

2.3 表的编辑修改

2.3.1 表文件的打开与关闭

一般来说 , 在进行各种 表 操 作 之前先 要打开 表 。刚创 建 的 表 则自 动处于打开状态,在 其 它情况下 可 用 如下方法打开表。

1. 用菜单打开表 使用【文件】菜单中

的 【打开 】 命 令 , 出现 如 图 所 示 的 【 打开】对话框。

若要对表进行编辑修改操作,则必须选定【独占】复选框

Page 19: 第 2 章 表的建立与操作

2. 用 USE 命令打开和关闭表

USE [[< 文件名 > [EXCLUSIVE | SHARED]] 在当前工作区中打开或关闭表。打开时,若该表有备注型或

通用型字段,则自动打开同名的 .FPT 文件。 缺省 < 文件名 > 表示关闭当前工作区中已经打开的表。 例如 : USE rsb &&打开 rsb.dbf USE && 关闭 ( 1 )用 EXCLUSIVE 选项,则以独占方式打开表。用 SHARED 选项,

则以共享方式打开表,此时表结构和表数据只读,不能编辑修改。 ( 2 )已打开的一个表有一个指针与其对应,指针所指的记录称为当前记

录。表刚打开时,记录指针指向第一个记录。 ( 3 )表操作结束后及时关闭,以便将内存中的数据保存到外存的表中

该工作区中原来打开的表自动关闭

Page 20: 第 2 章 表的建立与操作

3. 关闭表的其它方法

CLEAR ALL :关闭所有的表,并选择工作区 1 ,释放所有内存变量、用户定义的菜单和窗口。

CLOSE ALL :关闭所有打开的数据库和表,并选择工作区 1 ,关闭各种设计器和项目管理器。

CLOSE DATABASE [ALL] :关闭当前数据库和其中的表,若无打开的数据库,则关闭所有自由表,并选择工作区 1 。带 ALL 则关闭所有数据库和其中的表,以及所有已经打开的自由表。

CLOSE TABLES [ALL] :关闭当前数据库中所有的表,但不关闭数据库。若无打开的数据库,则关闭所有自由表。带 ALL 则关闭所有数据库中所有的表和所有自由表,但不关闭数据库。

除以上命令之外,还可通过退出 Visual FoxPro 来关闭已打开的表。选

定【文件】菜单中的【退出】命令,或在【命令】窗口键入命令 QUIT 。

Page 21: 第 2 章 表的建立与操作

2.3.2 表结构的显示与修改

1. 表结构显示 LISP | DISPLAY STRUCTURE [TO PRINTER [PROMPT] | TO FILE < 文件名 >] 显示当前已经打开表的结构。选项 TO PRINTER 和 TO FILE < 文件名 > 含义与在变量显示命令中的含义相同。

[ 例 2-2] 显示“人事表”的结构。 在【命令】窗口依次键入如下两条命令: USE rsb && 在当前工作区打开表 rsb LIST STRUCTURE && 显示表 rsb 的结构

Page 22: 第 2 章 表的建立与操作

2. 浏览方式表结构修改

在表已经打开的情况下,可以采用如下两种方法之一打开【表设计器】窗口修改表结构。

( 1 )选定【显示】菜单的【表设计器】命令 ( 2 )在【命令】窗口键入命令 MODIFY STRUCTURE 【表设计器】窗口出现后,可以按照需要修改字段属性,也

可以利用【插入】按钮在任何位置增加字段,或利用【删除】按钮删除字段。

表结构修改完成后,可选择窗口的【确定】按钮或【取消】按钮对所做出的修改进行确认或取消。

( 1 )【确定】按钮与 Ctrl+W键作用相同。 ( 2 )【取消】按钮与 Ctrl+Q键作用相同。

Page 23: 第 2 章 表的建立与操作

3. 命令方式表结构修改

ALTER TABLE < 表文件名 > ADD | ALTER [COLUMN] < 字段名 > < 字段类型 > [(< 字段宽度 >[,< 小数位数 >])] 在 < 表文件名 > 指定的数据表中增加一个字段或修改指定字段的属性。 ADD [COLUMN] 子句的 < 字段名 > 用于指定增加的字段,字段属性由 <

字段类型 > [(< 字段宽度 >[,< 小数位数 >])] 规定。 例如: ALTER TABLE rsb ADD COLUMN 毕业院校 C(20) ALTER [COLUMN] 子句的 < 字段名 > 用于指定要修改的字段,用户可

以用 < 字段类型 > [(< 字段宽度 >[,< 小数位数 >])] 重新指定字段的属性。 例如: ALTER TABLE rsb ALTER 毕业院校 C(16)

Page 24: 第 2 章 表的建立与操作

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 命令修改一个表结构后,该表自动处于打开状态。

Page 25: 第 2 章 表的建立与操作

2.3.3 记录的显示与修改

1. 浏览方式记录显示与修改 打开【浏览】窗口可选择下述界面操作方式或命令方式之一。 ( 1 )界面操作方式:打开表,选定【显示】菜单的【浏览】命令。 ( 2 )命令方式:在【命令】窗口依次发出以下命令: USE rsb && 打开 rsb BROWSE && 浏览命令 当字段或记录较多时,可单击滚动条两端的箭头或拖曳其中的滑块,使表

数据记录在窗口中滚动显示。 通过【显示】菜单下的【浏览】和【编辑】命令可以在浏览显示格式和编

辑显示格式之间切换。 注意:若要修改记录,必须以独占方式打开表

记录数据修改时,只要单击字段的某位置,就可根据光标指示进行修改。

Page 26: 第 2 章 表的建立与操作

2. 命令方式显示记录

LIST | DISPLAY [[FIELDS] < 表达式表 > ] [< 范围 >] [FOR <条件 1>] [WHILE <条件 2>] [OFF] [TO PRINTER [PROMPT] | TO FILE < 文件名 >] 功能:按指定范围和条件筛选出记录并显示出来,或送到指

定的目的地。 LIST 和 DISPLAY 的功能有所不同, LIST 以滚动方式输出,

DISPLAY 为分屏显示。 为了让用户了解显示内容所在的记录,命令自动显示记录号,若不需要显示记录号,则在命令中使用 OFF 选项。

选项 TO PRINTER 和 TO FILE < 文件名 > 含义与在变量显示命令中的含义相同。其它四个子句的使用和书写规则如下:

Page 27: 第 2 章 表的建立与操作

(1)FIELDS子句

FIELDS 子句指定要显示的字段,相当于关系运算的“投影”操作。

保留字 FIELDS 可以省略 < 表达式表 > 用来列出需要显示的内容,表达式之间

用“,”号分隔。

[ 例 2-3] 显示 rsb 中职工的编号 , 姓名 , 性别和年龄。 可在命令窗口键入如下命令: USE rsb LIST 编号 , 姓名 , 性别 ,YEAR(DATE())-YEAR( 出生日期 )

Page 28: 第 2 章 表的建立与操作

(2) 范围子句

用来确定该命令涉及的记录,范围有 4 种限定方法: ALL :所有记录; NEXT(n) :从当前记录开始的 n 个记录; RECORD(n) :第 n 个记录; REST :从当前记录开始到最后一个记录的所有记录。 例如: USE rsb && 打开 rsb ,记录指针指向第 1 记录 LIST 编号 , 姓名 , 性别 , 出生日期 NEXT(4) 命令动词为 LIST 时,范围子句缺省时默认为 ALL 。而当

命令动词为 DISPLAY 时,范围子句缺省时默认为当前记录。

Page 29: 第 2 章 表的建立与操作

(3)FOR子句

FOR 子句的 < 条件 1> 为逻辑表达式,它指定记录选择的条件,相当于关系运算的“选择”操作,在指定的范围内筛选出符合条件的记录。

例如: USE rsb LIST 姓名 FOR 婚否 =.T. REST (4)WHILE子句 WHILE 子句也用于指明操作条件,但仅在当前记录符合 < 条

件 2> 时才开始依次筛选记录,一旦遇到不满足 <条件 2> 的记录就停止操作。

例如: USE rsb LIST 姓名 , 出生日期 , 婚否 WHILE YEAR( 出生日期 )<1975

Page 30: 第 2 章 表的建立与操作

(5) 命令和子句的书写规则

( 1 )命令动词与子句、子句与子句、子句内的各部分(例如: FOR 与 < 条件 1> )之间必须用空格隔开,各子句的次序可以任意排列。例如:

LIST FOR 婚否 =.F. WHILE YEAR(出生日期 )<1975 姓名 ,出生日期 ,婚否 ( 2 )所有命令动词、各子句和内部函数中的保留字都可只写前 4 个字母,而且英文字母大小写等效。例如 :

MODIFY STRUCTURE MODI STRU 或 modi stru ( 3 )一条命令的长度可达 8192 个字符,若一行写不完,

可在适当位置插入续行标志“ ;” 并回车,在下一行继续输入该命令的其余部分。

( 4)命令动词、子句和函数中的保留字,以及命令中的分隔符号和数字均要用半角符号,不能用全角符号

Page 31: 第 2 章 表的建立与操作

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 子句的使用同显示命令中相同。 ADDITI

VE 用于备注型字段,表示将表达式值添加到字段的原有内容之后,而不是取代。

Page 32: 第 2 章 表的建立与操作

4. 记录定位

存取数据先要进行记录定位,记录定位就是将记录指针指向某个记录,使之成为当前记录。表刚打开时,记录指针指向第一个记录。

【浏览】窗口打开后,使用【表】菜单的【移动记录】命令可以移动记录指针来改变当前记录。

(1) 绝对定位命令 GO[TO] TOP|BOTTOM 功能:将记录指针定位在表的第一个记录或最后一个记录。 [GO[TO]] < 数值表达式 > 功能:将记录指针定位在 < 数值表达式 > 指出的记录。 例如: USE rsb GOTO 4 && 指针移动到 4 号记录 ? RECNO() && 显示当前记录号 4

Page 33: 第 2 章 表的建立与操作

(2) 相对定位命令

SKIP [< 数值表达式 >] 功能:从当前记录开始相对移动记录指针, < 数值表达式 >

表示移动记录的个数。 当 < 数值表达式 > 为负值时,指针向文件头移动,当 < 数值

表达式 > 为正值时,指针向文件尾移动。 < 数值表达式 > 缺省时默认为 1 。

例如: USE rsb && 打开 rsb ,当前记录为第一个记录 SKIP –1 && 指针向文件头移动 1 ? RECNO(),BOF() && 显示 1,.T. SKIP 2 && 指针向文件尾移动 2 ? RECNO(),BOF() && 显示 3,.F.

Page 34: 第 2 章 表的建立与操作

2.3.4 记录的追加

追加记录就是向表的末尾添加记录。1. 交互操作方法 【浏览】窗口,选择【表】菜单【追加新记录】命令,即可

在当前浏览的表最后记录的下面产生一个空白记录,供追加新记录。

将光标定位在各字段,输入完数据关闭窗口。 除此之外,【浏览】窗口,选择【显示】菜单中【追加方式】命令,出现追加新记录窗口后输入记录数据。

注意 :【表】菜单【追加新记录】命令一次只能追加一个记录,而【显示】菜单【追加方式】命令一次可追加多个记录。

Page 35: 第 2 章 表的建立与操作

2. APPEND 、 INSERT 命令

APPEND [BLANK] 使用 BLANK 子句能在表末尾追加一条空白记录,留待以后添入数据。若缺省 BLANK 子句就会出现记录编辑窗口,窗口内有空白的记录等待用户输入数据。

INSERT 命令也可用来插入表记录 命令格式: INSERT [BLANK] [BEFORE] 使用 BEFORE 子句能在当前记录之前插入新记录。缺省该子句则在当前记录之后插入新记录。

使用 BLANK 子句立即插入一条空白记录,若缺省该子句,则出现记录编辑窗口等待用户输入记录。

Page 36: 第 2 章 表的建立与操作

3. INSERT INTO 命令

INSERT INTO 命令可直接在表尾追加一个新记录,并直接将提供的数据输入记录。

INSERT TO < 表名 >[(< 字段名 1>[,< 字段名 2>,……])] VALUES(< 表达式 1>[,< 表达式 2>,……]) 利用 INSERT INTO 命令追加记录时,表不必事先打开,但是

要求字段与表达式的类型必须相同。 例如 : INSERT INTO rsb( 编号 , 姓名 , 性别 , 出生日期 ) VALUES ; ("0007"," 张兵 ","男 ",{^1955/08/18}) 若字段名全部省略,就须按表结构的字段顺序添写 VALUES子句的所有表达式。

Page 37: 第 2 章 表的建立与操作

2.3.5 记录的删除与恢复 删除记录一般需要两步 : (1) 加删除标记 ;(2) 将带有删除标

记的记录从表中删除。 在物理删除前可以恢复。

1. 逻辑删除 在【浏览】窗口单击该记录行最左的删除标记列,就会出现删除标记“■” 。

使用下面的命令作删除标记。 DELETE [< 范围 >] [FOR < 条件 1>] [WHILE < 条件 2>] 功能:对当前表在指定 < 范围 > 内满足 <条件 1> 和 < 条件

2>] 的记录作删除标记。若可选项都缺省,只指当前记录。

Page 38: 第 2 章 表的建立与操作

2.物理删除

PACK 功能:从表中将带有删除标记的记录物理删除。 [ 例 2-5] 物理删除部门代码为“ B02” 的职工记录。 键入如下命令: USE rsb DELETE FOR RIGHT( 部门代码 ,3)="B02" LIST PACK LIST

Page 39: 第 2 章 表的建立与操作

3. 记录恢复

在【浏览】窗口单击记录的删除标记列,删除标记“■”消失即可。或使用下面的命令去掉删除标记。

RECALL [< 范围 >] [FOR < 条件 1>] [WHILE < 条件 2>] 对当前表在指定 < 范围 > 内满足 <条件 1> 和 < 条件 2>] 的记

录去掉删除标记。若可选项都缺省只恢复当前记录。 [ 例 2-6] “逻辑删除部门代码为 A01”记录,恢复所有职称为副教授的职工记录。

USE rsb DELETE FOR RIGHT( 部门代码 ,3)="A01" LIST RECALL FOR ALLTRIM( 职称 )=“ 副教授” LIST

Page 40: 第 2 章 表的建立与操作

4. 记录清除

物理删除当前表中的所有记录,则可以使用如下命令 ZAP 执行 ZAP 相当于执行 DELETE ALL 和 PACK 两条命令,ZAP 将影响当前表中的所有记录,慎用。

Page 41: 第 2 章 表的建立与操作

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

Page 42: 第 2 章 表的建立与操作

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

Page 43: 第 2 章 表的建立与操作

( 2 ) < 通配字段名 > 指字段名中可包含通配符 *和?号, FIELDS LIKE 子句表示 < 通配字段名 > 指出的字段, FIELDS EXCEPT子句表示取 < 通配字段名 > 以外的字段。

( 3 ) TYPE子句指出复制得到的文件类型,若缺省则为数据表类型。若需要复制出其它类型文件必须使用 TYPE子句,规定如下:

TYPE XLS :新文件为 Excel 文件,扩展名为 .XLS 。 TYPE SDF :新文件为文本文件,扩展名为 .TXT ,数据间无分隔符,

无定界符。 TYPE DELIMITED :新文件为文本文件,扩展名为 .TXT ,数据间分隔

符为“,”号,定界符为双引号。 TYPE DELIMITED WITH < 定界符 > :新文件为文本文件,扩展名为 .T

XT ,数据间分隔符为“,”号,定界符用 < 定界符 > 指定。 TYPE DELIMITED WITH BLANK :新文件为文本文件,扩展名为 .TXT ,

数据间分隔符为空格,定界符为双引号。 TYPE DELIMITED WITH TAB :新文件为文本文件,扩展名为 .TXT ,

数据间分隔符为制表符,定界符为双引号。

Page 44: 第 2 章 表的建立与操作

3. 表结构复制

COPY STRUCTURE TO < 文件名 > [FIELDS < 字段名表 >] 功能:仅复制当前表的结构,不复制其中的数据。 若使用 FIELDS 选项,则新表的结构只包含其指明的字段,

同时也决定了这些字段在新表中的排列次序。 例如: USE rsb COPY STRUCTURE TO rsb4 FIELDS 姓名 , 工作日期 , 职称 USE rsb4 LIST STRUCTURE

Page 45: 第 2 章 表的建立与操作

2.4.2 逻辑表设置

“ 选择”是对表的常见操作,在命令中可用 FOR子句、 WHILE 子句或 FIELDS子句来选择记录和字段。但是,仅在执行命令时生效一次。使用过滤器和字段表等逻辑表可以一直有效。

1. 过滤器 过滤器可以将不满足条件的记录“屏蔽”起来。 SET FILTER TO [< 条件 >] 功能:从当前表过滤出符合 < 条件 > 的记录,不符合 < 条件 > 的记录将被

“屏蔽”,随后的操作仅限于满足过滤条件的记录。缺省 <条件 > 时取消所设置的过滤器。

例如 : USE rsb SET FILTER TO ALLTRIM( 职称 )="讲师 " SET FILTER TO

Page 46: 第 2 章 表的建立与操作

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

Page 47: 第 2 章 表的建立与操作

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 通配字段名 ]

功能:将当前数据表按指定的一个或多个字段进行排序,并将排序的结果保存到一个新的数据表中。

Page 48: 第 2 章 表的建立与操作

[ 例 2-8] 对 rsb.dbf 分别按以下要求排序:( 1 )按工作日期先后顺序排列,结果仅包含编号,姓名,性别,工作日期,职称这 5 个字段,并存入表 px1.dbf 中。( 2 )将已婚的职工按性别的降序排序,当性别相同时按姓名的升序排序,结果仅包含编号,姓名,性别,工作日期,职称,婚否这 6 个字段,并存入表 px2.dbf 中。( 1 )命令序列如下:USE rsbSORT TO px1 ON 工作日期 FIELDS 编号 , 姓名 , 性别 ,工作日期 , 职称USE px1LIST

Page 49: 第 2 章 表的建立与操作
Page 50: 第 2 章 表的建立与操作

( 2 )命令序列如下:USE rsbSORT TO px2 ON 性别 /D, 姓名 /A FOR 婚否 FIELDS 编号 , 姓名 , 性别 , 工作日期 , 职称 , 婚否USE px2LIST

Page 51: 第 2 章 表的建立与操作

2.5.2 索引1.索引的概念 索引是按索引表达式使数据表中的记录有序地进行逻辑排列的技术。索引不改变当前数据表记录的物理顺序,而是建立一个与数据表相对应的索引文件。

2.索引的类型按文件扩展名分为 2 类:

单索引文件( *.IDX )和复合索引文件( *.CDX ) 按索引功能分为 4 类:

主索引、候选索引、普通索引和唯一索引。

Page 52: 第 2 章 表的建立与操作

索引类型 建立命令 关键字值重复 索引个数 说明

主索引 CREATE TABLEALTER TABLE

不允许 仅可一个 用于数据库表,可用于在永久关系中建立参照完整性

候选索引 INDEXCREATE TABLEALTER TABLE

可以多个 可用作主关键字,用于在永久关系中建立参照完整性

普通索引 INDEX 允许 可作为一对多永久关系中的“ ”多方

唯一索引 允许,但输出无重复值

主要用于兼容旧版本,对于关键字值相同的记录,索引中只列出其中的第一个记录

索引功能分类表

Page 53: 第 2 章 表的建立与操作

3.索引的建立命令格式:

INDEX ON < 索引关键字表达式 > TO < 单索引文件名 > | TAG < 索引标识名> [OF < 复合索引文件名 >] [FOR < 条件 >] [COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE]

功能:建立索引文件或建立索引标识。

TO 子句用于建立单索引文件

TAG 子句用于建立复合索引标识或复合索引文件

用于指定非结构复合索引文件的名字

用来指定单索引文件为压缩的

分别用于指定升序或降序

表示建立唯一索引

表示建立候选索引

Page 54: 第 2 章 表的建立与操作

[ 例 2-9] 为数据表 gzb.dbf 按基本工资从小到大建立单索引文件 jbgz.idx ,按实发工资从高到低建立单索引文件 sfgz.idx 。USE gzbINDEX ON 基本工资 TO jbgz && 单索引文件总是按索引关键字

升序排列LIST && 记录已按基本工资升序排列INDEX ON – 实发工资 TO sfgz

&& 给实发工资取负号后使索引关 键字表达式按升序排列,以求 实发工资按降序排列

LIST && 记录已按实发工资降序排列

[ 例 2-10] 为 rsb.dbf 按下列要求建立结构复合索引文件。( 1 )记录以姓名降序排列,索引标识 xm ,索引类型为普通索引;( 2 )记录以出生日期升序排列,索引标识 csrq ,索引类型为唯一索引;( 3 )记录以职称降序排列,职称相同的按出生日期降序排列,索引标识 zccsrq ,索引类型为候选索引;

Page 55: 第 2 章 表的建立与操作

USE rsbINDEX ON 姓名 TAG xm DESCENDINGLISTINDEX ON 出生日期 TAG csrq UNIQUELISTINDEX ON 职称 +DTOS( 出生日期 ) TAG zccsrq DESCENDING CANDIDATELIST

Page 56: 第 2 章 表的建立与操作

利用表设计器来建立索引 在“索引名”文本框中输入索引标识

在“类型”列表框中,选定索引类型

在“表达式”文本框中,输入索引关键字表达式

向上箭头为升序索引,向下箭头为降序索引

如果需要,可输入筛选条件表达式

Page 57: 第 2 章 表的建立与操作

4.索引的使用①打开和关闭单索引文件同时打开数据表和单索引文件的命令命令格式:USE < 表文件名 > INDEX 〈单索引文件名表〉功能:在打开数据表的同时打开一个或多个索引文件。如果索引文件有多个,文件之间用逗号分隔,并确定第一个索引文件为主控索引文件。 先打开数据表,然后才打开单索引文件的命令命令格式:SET INDEX TO 〈单索引文件名表〉 [ADDITIVE]功能:打开当前表的一个或多个单索引文件并确定第一个单索引文件为主控索引文件。

Page 58: 第 2 章 表的建立与操作

单索引文件的关闭命令CLOSE INDEXS或SET INDEX TO[ 例 2-11] 使用索引示例。USE gzb INDEX jbgz,sfgz && 打开 jbgz.idx 和 sfgz.idx ,

前者为主控索引LISTCLOSE INDEXS

请对比下面的命令:USE gzbSET INDEX TO jbgz,sfgzLISTSET INDEX TO

Page 59: 第 2 章 表的建立与操作

②复合索引文件的打开和主控索引的确定 同时打开数据表和指定主控索引命令格式:USE < 表文件名 > ORDER < 数值表达式 > | TAG < 索引标识名 > [OF < 复合索引文件名 >] [ASCENDING | DESCENDING]功能:在打开数据表的同时指定主控索引。结构复合索引不用指定索引文件名。 先打开数据表再指定主控索引命令格式: SET ORDER TO < 数值表达式 > | TAG < 索引标识名 > [OF < 复合索引文件名 >] [ASCENDING | DESCENDING] [ADDITIVE]功能:为当前表指定主控索引。结构复合索引不用指定索引文件名。

Page 60: 第 2 章 表的建立与操作

[ 例 2-12] 改变 rsb.dbf 的主控索引USE rsb ORDER TAG xm && 指定索引标识 XM 为主控索引LIST && 记录按姓名降序排列SET ORDER TO && 取消主控索引SET ORDER TO 2 && 指定索引标识 CSRQ 为主控索引LIST && 记录按出生日期升序排列SET ORDER TO TAG zccsrq && 指定索引标识 ZCCSRQ 为主控索引LIST && 记录按职称降序、出生日期降序

排列重新索引命令格式:REINDEX功能:重建打开的索引文件。④ 删除索引 删除索引文件。 删除索引标识命令格式:DELETE TAG ALL | < 索引标识 1> [ ,索引标识 2] [OF < 复合索引文件名 >]功能:删除打开的复合索引文件的索引标识。