第 3 章 表的建立与操作
510 likes | 698 Views
第 3 章 表的建立与操作. 辽东学院 · 信息技术学院 崔晓斐. 本章基本内容. 3.1 数据表的建立和修改 3.2 数据表的维护命令 3.3 表的排序与索引 3.4 数据的检索 3.5 数据的统计 3.6 多表操作. 3.1 数据表的建立和修改. 表由结构和数据两部分组成。创建一个表,首先要设计和建立表结构,然后再输入数据。. 3.1.1 建立表的结构. 设计表结构 就是定义各个字段的属性,包括字段名、字段类型、字段宽度和小数位数等。
第 3 章 表的建立与操作
E N D
Presentation Transcript
第3章 表的建立与操作 辽东学院·信息技术学院 崔晓斐
本章基本内容 • 3.1 数据表的建立和修改 • 3.2 数据表的维护命令 • 3.3 表的排序与索引 • 3.4 数据的检索 • 3.5 数据的统计 • 3.6 多表操作 信息技术学院 崔晓斐 制作
3.1 数据表的建立和修改 表由结构和数据两部分组成。创建一个表,首先要设计和建立表结构,然后再输入数据。 3.1.1 建立表的结构 设计表结构就是定义各个字段的属性,包括字段名、字段类型、字段宽度和小数位数等。 建立表最简单和直接的方法就是使用表设计器,用户需要在表设计器中依次输入或选择字段、类型和宽度等,这些是建立表所需要的基本内容。最后单击“确定”命令按钮则完成了对表的建立。此时在数据库设计器中将显示新建立的表,同时会出现对话框提示是否立即输入记录。如果选择“是”,则立刻可以输入记录;如果选择“否”,则暂时不输入记录。 信息技术学院 崔晓斐 制作
1、字段名 字段名即关系的属性名或表的列名。一个表由若干列(字段)构成,每个列都必须有一个惟一的名字——字段名,将来可以通过字段名直接引用表中的数据。在中文Visual FoxPro中字段名可以是汉字或合法的西文标识符。 • 自由表字段名最长为10个字符。 • 数据库表字段名最长为128个字符。 • 字段名必须以字母或汉字开头。 • 每字段名可以由字母、汉字、数字和下划线组成。 • 字段名中不能包含空格。 信息技术学院 崔晓斐 制作
2、字段类型和宽度和小数位数 字段的数据类型决定存储在字段中的值的数据类型,数据类型通过宽度限制可以决定存储数据的数量或精度。 3、空值 表设计器上可以看到字段有“NULL”选项,它表示是否允许字段为空值。空值与空(或空白)字符串、数值0等具有不同的含义,空值就是缺值或还没有确定值,比如表示价格的一个字段值,空值表示没有定价,而数值0可能表示免费。 一个字段是否允许为空值与实际应用有关,比如作为关键字的字段是不允许为空值的,那些在插入记录时允许暂缺的字段值往往允许为空值。 信息技术学院 崔晓斐 制作
1. 字符型数据 字符型数据(Character)是指用各种文字字符表示的数据,包括26个英文大小写字母、10个阿拉伯数字、各种汉字、专用符号和空格等,最大长度可达254个字符。 注意:如果将阿拉伯数字定义为字符型数据时,它不具备数学上的数值含义,不能参加数学运算,如电话号码,邮编等。 2. 数值型数据 数值型数据(Numeric)是指可以进行算术运算的数据,包含0~9的阿拉伯数字、小数点与正负号,最多为20个字节。一般将需要参加数学运算的数据定义成数值型。 信息技术学院 崔晓斐 制作
3. 整型数据 整型数据(Integer)是不包含小数点部分的数值型数据,以二进制形式存储,占用4个字节。 4. 浮点型数据 浮点型数据(Float)是数值型数据的一种,在存储形式上采取浮点格式。它由尾数、阶数及字母E组成,最多20个字节。 5. 双精度型数据 双精度型数据(Doub1e)是具有更高精度的数值型数据,占用8个字节的存储空间。 信息技术学院 崔晓斐 制作
6. 货币型数据 货币型数据(Currency)表示货币量的数据,第一个数字前面有$符号,占用8个字节,小数位最长4位。 7. 逻辑型数据 逻辑型数据(Logic)是用来进行各种逻辑判断的数据,只有两个值,即真(.T.)和假(.F.),长度固定为1位,占用1个字节。 8. 日期型数据 日期型数据(Date)是用来专门表示日期的数据。 存储格式为“YYYYMMDD”,共占用8个字节。 信息技术学院 崔晓斐 制作
9. 日期时间型数据 日期时间型数据(Date Time)是描述日期和时间的数据。其字符存储格式为“YYYYMMDDHHMMSS”,保存在两个4字节的整数中。 10. 备注型数据 备注型数据(Memo)用于存放数据较长的字符型数据类型,数据宽度为4,用来存放Visual FoxPro的内部指针,实际的数据存放在与数据表文件同名的.FPT文件中,并且所存放的内容只受磁盘空间的限制。 信息技术学院 崔晓斐 制作
11. 通用型数据 通用型数据(General)用于存储OLE(Object Linking and Embedding)对象,只能用于数据表中字段的定义。该字段包含了对OLE对象的引用,而OLE对象的具体内容可以是一个电子表格、文档、图片等。通用型数据长度固定为4位,实际数据长度仅受磁盘空间的限制。宽度为4个字节。 12. 字符型数据(二进制) 13. 备注型数据(二进制) 信息技术学院 崔晓斐 制作
3种建立自由表方法: • 菜单建立 • (1) “新建”-”表”-“新建文件”-选择保存类型和保存路径-“保存”-“表设计器” ; • (2) “字段”-按设计的表结构依次输入相关内容-“确定” • 在项目管理器中建立表 • 则表属于这个项目,在项目中可以建立自由表和数据库表 • 用命令Create • CREATE [<表名>/?] • 表的扩展名为.DBF 信息技术学院 崔晓斐 制作
3.1.2 表数据的录入 • 在Visual FoxPro中,向表中录入数据通常有以下几种方法: (1)在创建表结构结束时,立即向表中录入数据。 (2)在表结构创建完成后,打开所创建的表,以追加方式进行数据的录入。 (3)使用命令“APPEND”。 • 日期字段的录入:注意日期格式 • 备注字段的录入:双击打开编辑窗口直接编辑 • 通用字段的录入:双击打开编辑窗口/编辑/插入对象 • 例:向学生成绩表中添加一个新记录: • “0511011802”,“王丽丽”,80,97,67,81 • Use 学生成绩 • browse • append 信息技术学院 崔晓斐 制作
3.1.3 表数据的显示和修改 浏览窗口的操作 1、打开浏览窗口: • 菜单方式:显示/浏览 • 命令方式:browse [FIELDS 字段名表] 例:BROWSE命令的使用。 BROWSE FIELDS 姓名,性别,专业,出生日期 2、两种显示格式的转换:浏览与编辑 信息技术学院 崔晓斐 制作
3.1.4 表的打开与关闭 1.表的打开 • 菜单方式:文件/打开 • 命令方式:USE 表名 2.表的关闭 • 菜单方式:文件/退出 , 关闭按钮 • 命令方式:USE, CLOSE ALL 3.工作区 • 工作区号:1~32767,工作区别名:1~10可以用字母A~J表示,11~32767可以用W11~W32767指定 信息技术学院 崔晓斐 制作
工作区的选择 格式:SELECT<工作区号>|<工作区别名> 功能:将<工作区号>指定的工作区选择成当前工作区,或将打开的<工作区别名>指定的表所在的工作区选择为当前工作区。 说明: (1)用SELECT命令选定的工作区称为当前工作区,在默认情况下,Visual FoxPro启动后将自动选定1号工作区为当前工作区。 (2)命令SELECT 0的功能是选定当前尚未使用的最小编号的工作区为当前工作区, (3)若要切换到另一个工作区中,可以使用SELECT<工作区号>或直接使用SELECT <工作区别名>,注意,只有已打开的表才可在SELECT命令中使用其别名。 信息技术学院 崔晓斐 制作
3.1.5 表结构的显示和修改 显示表结构 • 菜单方式:显示/表设计器 • 命令方式:LIST/DISPLAY STRUCTURE 必须先打开表,才能显示 修改表结构 • 菜单方式:显示/表设计器,项目管理器/修改 • 命令方式:MODIFY STRUCTURE 信息技术学院 崔晓斐 制作
3.2 数据表的维护命令 3.2.1 命令的书写规则 在Visual FoxPro中,使用命令时要遵守以下规则: • (1)每条命令以命令动词开头,命令动词、命令子句和命令选项及其内部各部分之间必须用空格来隔开。 • (2)一条命令一行写不下,可在合适的位置输入续行符(;)并回车,然后在下一行继续键入该命令。但命令的最后一行不能以分号结尾。 • (3)命令动词、各短语中的关键字、函数名都可以简写为前4个字符,且不区分大小写。 • (4)注释命令:&和* 信息技术学院 崔晓斐 制作
3.2.2 记录的显示 • DISPLAY|LIST [FIELDS 字段列表][范围][FOR 条件|WHILE 条件][OFF][TO PRINT]|[TO FILE 文件名] • DISPLAY不加范围只对当前记录操作 • LIST与DISPLAY ALL结果一样,只是滚屏显示和分屏显示区分 • FIELDS将表中要含有的字段名写在后面 • 范围子句: • ALL 表示全部记录 • RECORD <N> 表示仅对第N个记录进行操作 • NEXT <N> 表示从当前记录开始向下的共N个记录(包括当前记录) • REST 表从当前记录开始到最后一个记录为止的所有记录(包括当前记录) • FOR和WHILE只使用一个即可,一般用FOR • OFF为不显示记录号 Use 学生信息表 list all list next 2 list record 5 list rest 例:将“学生成绩”表记录另存为名为“学生成绩.txt”的文本文件 例:显示“学生成绩”表中成绩大于90的姓名和成绩 信息技术学院 崔晓斐 制作
3.2.3 表的复制 复制文件:copy file 文件名1 to 文件名2 • 功能:从<文件名l>文件复制得<文件名2>文件。 • 相关参数和选项含义的说明: • 若对表进行复制,该表必须处于关闭状态。 • <文件名l>和<文件名2>都可使用通配符*号和?号。 • 可以复制任何类型的文件,复制的文件与原文件可以不在一个路径下。必须加文件扩展名 Copy file pictures\乌龟.bmp to 乌龟x.jpg 信息技术学院 崔晓斐 制作
复制表文件:copy to <文件名> [<范围>] [for <条件>][while <条件>][fields <字段名表>] • 功能:将当前表中指定的记录和字段复制成一个新表或其他类型的文件。 • 相关参数和选项含义的说明: • (1)首先要打开被复制的表。 • (2)对于含有备注型字段的表,系统在复制扩展名为.DBF的文件的同时自动复制扩展名为.FPT的备注文件。 例:将学生信息表中88年以后出生的学生信息拷贝到学生.dbf中 Use 学生信息 Copy to 学生 for year(出生日期)>=1988 信息技术学院 崔晓斐 制作
复制表结构:copy structure to 表文件名 [fields 字段名表] • 功能:将当前打开的表结构部分或全部复制为<表文件名>所指定的一个表结构,仅复制当前表的结构,不复制其中的数据。 • 相关参数和选项含义的说明: • (1)<表文件名>:指定生成新表结构的表文件名。 • (2)FIELDS <字段名表>:指定在新表中所包含的字段及顺序。若省略该子句,则按字段原来的顺序复制全部字段。 信息技术学院 崔晓斐 制作
3.2.4 记录的定位 1、绝对移动:GO 数值表达式︱TOP︱BOTTOM • 功能:其中<数值表达式>是记录号,即直接按记录号定位;TOP是表头,当不使用索引时是记录号为1的记录,使用索引时是索引项排在最前面的索引对应的记录。BOTTOM是表尾,当不使用索引时是记录号最大的那条记录,使用索引时是索引项排在最后面的索引项对应的记录。 GOTO和GO命令是等价的。 2、相对移动:SKIP [数值表达式] • 功能:以当前记录为起点,向前或向后移动若干条记录位置。如果是正数则向后移动,如果是负数则向前移动。SKIP是按逻辑顺序定位,即如果使用索引时,是按索引项的顺序定位的。 信息技术学院 崔晓斐 制作
Use 学生信息 go 1 skip -1 ?recno(),bof(),eof() go bottom skip ?recno(),bof(),eof() skip 4 disp skip -2 disp insert • 记录指针的移动范围 • 记录指针指向的记录为当前记录 • 记录首标记是指向表文件第一条记录的前面,即记录指针在第一条记录之前,此时BOF()值为.T. • 记录指针指向表文件最后一条记录的后面,即记录指针在最后一条记录之后,此时EOF()值为.T. • 记录指针指向表文件的顶时,指针位于TOP,即表的第一条记录,此时BOF()值为.F. • 记录指针指向表文件的尾时,指针位于BOTTOM,即表的最后一条记录,此时EOF()值为.F. 首标记 BOF()=.T. TOP 1 …… BOTTOM 信息技术学院 崔晓斐 制作 EOF()=.T. 尾标记
3.2.5 记录的追加 菜单操作方式 • 打开表,进入“浏览窗口”,单击“表”菜单中的“追加新记录”,此时在表尾追加一条新的空记录,用户即可向该空记录中填入数据。若要再追加一条记录,重复操作即可。 命令操作方式:append [blank] • 功能:在当前已打开的表文件末尾追加新记录。若该表文件已有n条记录,执行该命令后,则从第n+1条记录开始追加;若表文件尚无记录,则从第1号记录开始追加。 • 相关参数和选项含义的说明: • BLANK:若有该子句,则在表的末尾追加一条新的空白记录,不出现记录“编辑”窗口,但用户可以使用BROWSE、REPLACE等命令编辑新记录;若无该子句,则在表的末尾追加一条新的空白记录,并进入“编辑”窗口,输入记录数据后,会自动出现下一个新的记录位置,依次类推,最后完成记录的追加。 信息技术学院 崔晓斐 制作
3.2.6 记录的删除和恢复 1.置删除标记的命令(DELETE) • 格式:DELETE [范围] [FOR 条件表达式] • 功能:逻辑删除或置删除标记,如果不用FOR短语指定逻辑条件,则只逻辑删除当前一条记录;如果用FOR短语指定了条件表达式,则逻辑删除使该逻辑表达式为真的所有记录。 • 在浏览窗口中做删除标记 2. 设置遮盖带删除标记记录的环境 • 命令格式为:SET DELETE ON/OFF • 设置为ON时,遮盖带“*”号的记录 • 设置为OFF时,不遮盖带“*”号的记录,系统默认为“OFF”。 • 例:删除学生信息表中性别是男生的记录 • Use 学生信息 • Delete for 性别=“男” 信息技术学院 崔晓斐 制作
3、恢复记录的命令(RECALL) • 格式:RECALL[范围][FOR 条件表达式 ] • 被逻辑删除的记录可以恢复,如果不用FOR短语指定逻辑条件,则只恢复当前一条记录,如果当前记录没有删除标记,则该命令什么都不做。如果用FOR短语指定了条件表达式,则恢复使该辑表达式为真的所有记录。 4、物理删除有删除标记的记录(PACK) • 物理删除有删除标记记录的命令是PACK,执行该命令后所有有删除标记的记录将从表中被物理地删除,并且不可能再恢复。 5、物理删除表中的全部记录(ZAP) • 使用ZAP命令可以物理删除表中的全部记录,不管是否有删除标记。该命令只是删除全部记录,并没有删除表,执行完该命令后表结构依然存在。 • DELETE ALL + PACK==ZAP 信息技术学院 崔晓斐 制作
3.2.7 表数据的替换 菜单方式:先浏览表,表/替换字段 命令方式:REPLACE [范围][FOR 条件] 字段名1 WITH 表达式1[,字段名2 WITH 表达式2]…… • 功能:对指定范围内符合条件的记录用表达式1的值替换字段名1的值,用表达式2的值替换字段名2的值等。 • 当省略范围和条件时,只对当前记录的指定字段进行替换。 • 各表达式的类型要与相应字段的类型一致。 例:将学生成绩表中所有记录的政治成绩减少10分 Use 学生成绩 Replace all 政治 with 政治-10 信息技术学院 崔晓斐 制作
总 结 • 建立表(使用表设计器建立) • 在项目管理器中建立自由表 • 使用“文件”菜单建立自由表 • 使用create命令建立表 • 数据追加 • 追加多条记录 • 菜单方式:先浏览表,显示/追加方式 • 命令方式:先浏览表,APPEND • 追加一条记录 • 菜单方式:先浏览表,表/追加新记录 • 命令方式:先浏览表,APPEND BLANK 信息技术学院 崔晓斐 制作
表的打开与关闭 • 菜单方式:文件/打开/选择表名 • 命令方式:USE 表名 , USE/CLOSE ALL • 显示表结构 • 菜单方式:显示/表设计器 • 命令方式:LIST/DISPLAY STRUCTURE • 修改表结构 • 菜单方式:显示/表设计器 • 命令方式:MODIFY STRUCTURE • 浏览表(用窗口形式显示,可直接修改数据) • 菜单方式:显示/浏览“表名” • 命令方式:BROWSE 信息技术学院 崔晓斐 制作
显示表记录(在空白区域显示,不能修改数据)显示表记录(在空白区域显示,不能修改数据) • LIST/DISPLAY [范围][FOR 条件][FIELDS 字段表] • 表的复制 • 文件的复制:COPY FILE 文件1 TO 文件2 • 表文件的复制:前提---打开表 • COPY TO <文件名> [<范围>] [FOR <条件>][FIELDS <字段名表>] • 表结构的复制:前提---打开表 • COPY STRUCTURE TO 表文件名 [FIELDS 字段名表] • 记录指针的定位 • 绝对定位:GO N/TOP/BOTTOM • 相对定位:SKIP ±N 信息技术学院 崔晓斐 制作
删除表记录: • 逻辑删除 • 菜单方式:表/删除记录 • Delete [范围] [for 条件] • Delete 表示逻辑删除当前的记录 • 记录恢复 • 菜单方式:表/恢复记录 • Recall [范围] [For 条件] • Recall 表示恢复当前的加逻辑删除标记的记录 • 物理删除 • 菜单方式:表/彻底删除 • Pack 表示彻底删除加删除标记的记录 • Zap 表示彻底删除表中所有记录,只保留表结构 • Delete All + Pack = Zap • 替换表数据:replace 信息技术学院 崔晓斐 制作
3.3 表的排序与索引 3.3.1 排序文件的建立和使用 • 排序:根据表中某些字段的值重新排列记录,结果放在一个新表。这个新的表文件的内容可与原来的表文件完全相同,也可以是原来的表文件的一部分,但原表文件不变。 • 命令格式:SORT TO 新文件名 ON 字段名1 [/A][/D][/C][,字段名2[/A][/D][/C]…] [范围][FOR/WHILE 条件] [FIELDS 字段名表] • 若ON后面带多个字段时,表示按多个字段排序,这种排序也称为多重排序。 例:打开学生信息表,按表中性别字段降序进行排序,如果 性别字段值相同,则按出生日期升序排序,并将排序结果 存放到默认路径下的pxb.dbf中。 use学生信息 sort on 性别/D,出生日期 to pxb use pxb list 信息技术学院 崔晓斐 制作
3.3.2 索引文件的基本概念 • 索引,用于快速显示、查询数据,是指对表中的有关记录按照指定的索引关键字表达式的值的升序或降序进行排列,并生成一个相应的索引文件。其中索引关键字表达式可以是表中的一个字段名,也可是包含有若干个字段名的任意合法的表达式。 • 在索引文件中主要包含各有关记录的索引关键字表达式的值和相应记录在原表中的记录号,且在索引文件中,一个记录的索引关键字表达式的值与其记录号是一一对应的。因此,索引文件比被原表要小得多。 • 对同一个表,可根据不同的处理要求创建多个不同的索引文件,来建立不同的逻辑顺序。索引具有自动更新的特性 信息技术学院 崔晓斐 制作
例:打开“学生信息.dbf”,分别以“学号”, • “ 姓名”,“ 出生日期”,“ 性别”为关键字 • 建立单索引文件,其索引文件名分别为 • “xh”,“xm”,“csrq”,“xb”。 • Index on 学号 to xh • Index on 姓名to xm • Index on出生日期 to csrq • Index on 性别 to xb • 例:将csrq设为主索引文件 • use学生信息 • set order to csrq • 索引文件的类型:单索引文件(.IDX)和复合索引文件(.CDX)。 • 单索引文件IDX:一个索引文件只能对一个字段或字段组合建立索引 • 单索引文件的建立:index on 字段名 to 单索引文件名 • 单索引文件的打开: Set index to 索引文件名表 • 单索引文件的关闭:Set index to • 主控索引的指定:set order to 数值|单索引文件名 信息技术学院 崔晓斐 制作
复合索引文件:一个索引文件可对多个字段建立多个索引,共有4种类型:主索引、候选索引、普通索引、唯一索引复合索引文件:一个索引文件可对多个字段建立多个索引,共有4种类型:主索引、候选索引、普通索引、唯一索引 • 主索引:数据库表可以建立,自由表不能建立,并且一个表只能建立一个主索引。索引字段值无重复值。 • 候选索引:数据库表和自由表都能建立。一个表可以建立多个候选索引。索引字段值无重复值。 • 普通索引:数据库表和自由表都能建立。一个表可以建立多个普通索引。索引字段值可以重复。 • 唯一索引:数据库表和自由表都能建立。一个表可以建立多个普通索引。索引字段值可以重复,但只记录惟一的值 信息技术学院 崔晓斐 制作
复合索引文件的建立 • 用表设计器创建:建立结构复合索引文件 • 命令方式创建:命令格式:INDEX ON 索引关键字 TAG 索引名 [OF 非结构复合索引文件名] [FOR 条件] [Ascending/Descending] [Unique/Candidate] Unique 惟一索引 Candidate 候选索引 没有参数 普通索引 主索引不能使用命令建立 • 指定主控索引: • 菜单方式:表/属性/工作区属性:索引顺序 • 指定:Set order to [数值表达式]|[tag] 索引名 [ascending/descending] • 取消:set order to • 说明:用命令建立的索引立即起作用,用表设计器建立的索引要指定主控 • 结构复合索引文件的修改和删除:在表设计器中进行 信息技术学院 崔晓斐 制作
注意: • 索引并不改变记录在表中的物理存储顺序,它只是改变VF处理记录的顺序 • 在自由表中,不能建立主索引 • 可以为一个表建立多个索引,但并不是索引建的越多越好 • 一个索引表达式可以包含多个字段 • 结构复合索引文件特性: • 索引文件名与表名相同 • 索引文件随着表的打开自动打开 • 在同一个索引文件中能包含多个索引 • 在添加、更改或删除记录时自动维护索引 • 允许使用组合索引关键字:按xsbh+xb组合字段建立索引 • 索引文件随着表文件的关闭而关闭 信息技术学院 崔晓斐 制作
3.4 数据的检索 3.4.1 顺序查询命令 条件定位记录位置:LOCATE FOR 条件 CONTINUE • 其中条件是查询或定位的表达式。功能:该命令执行后将记录指针定位在满足条件的第一条记录上,如果要使指针指向下一条满足LOCATE条件的记录,使用CONTINUE命令,如果没有记录再满足条件,则指针指向文件结束位置。 • 若查找到一个满足条件的记录可用函数RECNO()返回该记录号,此时函数FOUND()返回值为.T.;若找不到,此时函数FOUND()返回值为.F. ,EOF()返回值为.T.。 use学生信息 locate for left(姓名,2)=“李" disp Locate for 性别="男" continue disp 信息技术学院 崔晓斐 制作
3.4.2 索引查询命令 • 格式:SEEK <表达式> • 功能:查找索引关键字满足表达式值的第一条记录。如果找到,则将记录指向该记录,如果找不到,则在状态栏中显示“没有找到”的提示信息。 必须先建立索引文件 • (1)<表达式>的类型必须和索引关键字表达式的类型一致,且<表达式>可以是常量、变量或表达式(由常量、变量、运算符等构成的合法的表达式)。 • (2)可以查询除备注型和通用型外的任何类型数据,但注意每一种类型的定界符。 • (3)若找到,则RECNO()可返回该记录的记录号,FOUND()返回.T.;如果找不到,则FOUND()返回.F.,EOF()返回.T.。 • FIND 字符串|数字 • 只能查询字符和数值 • 字符串可以不加定界符 use 学生成绩 index on 计算机 to cj n=78 seek n Disp ?found() 信息技术学院 崔晓斐 制作
3.5 数据的统计(先打开表) 1、记录个数的统计(COUNT) • 格式:COUNT [<范围>] [FOR 条件] [TO<内存变量>] • 说明:省略[范围]项与用ALL相同,即在全表内统计。省略[内存变量]项,统计结果显示在屏幕上,否则存到给定的内存变量中。 2、数值求和(SUM) • 格式:SUM [<范围>] [FOR 条件] 字段名表 [TO<内存变量表>] • 功能:在指定的范围内,对满足条件的记录,计算字段名表中数值字段的纵向和,并将这些值赋给内存变量表中对应的内存变量。 • 说明:省略可选项是对数据库中所有数值型字段纵向求和,结果显示在屏幕上。 use 学生信息 count to x count to y for 性别="男" count to z for 性别="女" ?x,y,z 信息技术学院 崔晓斐 制作
3、计算平均值(AVERAGE) • 格式:AVERAGE [<范围>] [FOR 条件] 字段名表 [TO<内存变量表>] • 功能:在指定的范围内,对满足条件的记录,计算字段名表中各数值字段的平均值,并将这些值赋值给内存变量表中对应的内存变量。 4、分类汇总命令(TOTAL) • 格式:TOTAL ON <关键字表达式> [<范围>] [FIELDS FieldName][FOR 条件] TO <文件名> • 功能:将一个打开的表的数值型字段按关键字表达式进行分类汇总,结果存放到一个新表中。 • 注意:首先对要分类的字段建立索引,并设置成主控索引,再进行分类汇总,对数值型字段求和 use 学生成绩 average 计算机 to p1 Sum 计算机to p2 ?p1,p2 1.打开”学生成绩表” 2. index on left(学号,8) to xhsy 3. total on left(学号,8) to cjhz 信息技术学院 崔晓斐 制作
总 结 • 排序 • SORT TO新文件名ON 字段名1 [/A][/D][/C][,字段名2[/A][/D][/C]…][范围][FOR/WHILE 条件] [FIELDS 字段名表] • To… on…前后顺序可颠倒 • 表的统计 • 记录个数的统计(COUNT) • COUNT [<范围>] [FOR 条件] [TO<内存变量>] • 数值求和(SUM) • SUM [<范围>] [FOR 条件] 字段名表 [TO<内存变量表>] • 计算平均值(AVERAGE) • AVERAGE [<范围>] [FOR 条件] 字段名表 [TO<内存变量表>] • 省略[范围],则相当于ALL 信息技术学院 崔晓斐 制作
索引文件 • 单索引文件(IDX) • 建立:index on 索引关键字 to 单索引文件名 • On…to…前后顺序可颠倒 • 打开: Set index to 索引文件名表 • 关闭:Set index to • 指定主控索引:set order to 数值|单索引文件名 • 复合索引文件(CDX) • 非结构复合索引文件 • 索引文件名与表名不同名,不随表的打开而打开,需单独打开 • 结构复合索引文件 • 索引文件名同表名,随表的打开而自动打开,数据自动更新 • 主索引 • 候选索引 • 普通索引 • 惟一索引 信息技术学院 崔晓斐 制作
3.6 多表操作 3.6.1 表的关联 1.关联的概念 在每一个打开的数据表中都有一个记录指针,用来指示当前记录。所谓关联,就是在不同工作区的表之间按照一定的条件建立一种临时的联动关系,使一个表的记录指针的移动时,另一个表的记录指针也能随之移动。可见,表的关联和表的连接是不同的,关联并未产生一个新表,而连接则产生一个新表。 信息技术学院 崔晓斐 制作
2.关联的条件 建立关联的两个表,用来建立关联的表称为父表,被关联的表称为子表。在执行涉及这两个表数据的命令时,父表记录指针的移动,会使子表记录指针自动移到满足关联条件的记录上。 关联条件通常要求比较不同表的两个字段关键字是否相等,所以除要在关联命令中指明这两个字段表达式外,还必须为子表的字段表达式建立索引,并设置为主控索引。 信息技术学院 崔晓斐 制作
3.表的关联类型 表的关联可分为以下几种类型: • 一一关系:在一一关系中,父表的每一个记录只对应于子表中的一个不同的记录。 • 多一关系:在多一关系中,父表中的多条记录对应于子表中的一个记录。 • 一多关系:在一多关系中,父表中的一个记录对应于子表中的多条记录。 信息技术学院 崔晓斐 制作
4.表的关联的建立 ①建立关联的命令 • 格式:SET RELATION TO<字段表达式1>INTO<子表工作区号或别名1>……<字段表达式N>INTO<子表工作区号或别名N>[ADDITIVE] • 功能:以当前表为父表并按指定的字段表达式与一个或多个子表建立关联。 • 相关参数和选项含义的说明: • (1)使用本命令时,父表必须在当前工作区中打开,与其相关联的子表也必须在相应的工作区中打开。 • (2) <字段表达式>:用来指定父表中作为关联条件的字段表达式,其值将与相应子表主控索引的索引关键字表达式值进行比较。 • (3) <别名>:用来指定要与父表建立关联的相应子表。可以使用子表所在的工作区的编号或别名。 • (4) ADDITIVE:表示在建立关联时不取消以前建立的关联。缺省该选项时,将取消已建立的关联 信息技术学院 崔晓斐 制作
②关联的取消 • 格式:SET RELATION TO • 功能:取消当前表与所有表之间的关联 • 使用多重工作区应该遵循的原则 • 在每一个工作区上只能打开一个表,在某一时刻只能选择一个工作区进行操作 • 同一个表通常不能在两个或两个以上的工作区上打开 • 正在进行操作的工作区称为当前工作区,在当前工作区上打开的表为当前表,使用select命令可以改变工作区,即重新选择当前工作区 • 在当前工作区可以访问其它工作区表中的数据 <别名>.<字段名>或<别名>—><字段名> 例:DISP 学号,姓名,班级,B.课程号,B.成绩 信息技术学院 崔晓斐 制作
例:在学生管理系统中建立数据库”学生”,将自由表学生信息表和学生成绩表添加到数据库中,用学号字段建立两表临时联系例:在学生管理系统中建立数据库”学生”,将自由表学生信息表和学生成绩表添加到数据库中,用学号字段建立两表临时联系 • Sele 1 &&设置1工作区为当前工作区 • 打开”学生信息” &&在1工作区打开表“学生信息” • Index on 学号 to xh1 &&为学生信息表的学号字段建立索引 • Set order to xh1 &&设置xh1为当前索引 • Sele 2 &&设置2工作区为当前工作区 • 打开”学生成绩” &&在2工作区打开表“学生成绩” • Index on 学号 to xh2 &&为学生成绩表的学号字段建立索引 • Set order to xh2 &&设置xh2为当前索引 • Sele 1 &&设置1工作区为当前工作区 • Set relation to 学号 into 学生成绩 • &&用1工作区的父表关联2工作区的子表 信息技术学院 崔晓斐 制作
习 题 • 58.建立项目,名为GLXT20,建立数据库,名为GL20,将考试目录中的自由表XSDA、XSCJDA、学生信息表和学生成绩表添加到此数据库中。新建表ZG20,要求表结构为:ZGBH(C,6),XM (C,8),SR(D),XB(C,2),HF(L)。 • 60.将学生信息表的最后一条记录修改为:0501990006,李利,女,法学,1988年11月7日,1.63,.T.;并删除表中的前两条记录。并对学生信息表按专业降序排序生成表PX。 信息技术学院 崔晓斐 制作