第3章 数据库与表的基本操作_第1页
第3章 数据库与表的基本操作_第2页
第3章 数据库与表的基本操作_第3页
第3章 数据库与表的基本操作_第4页
第3章 数据库与表的基本操作_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第3章章 数据库与表的基本操作数据库与表的基本操作上篇上篇 语言基础语言基础主要内容:主要内容:l表的建立与修改表的建立与修改( (CREATE、MODIFY) )l表的维护命令表的维护命令( (LIST、REPLACE、COPY) )l记录维护命令记录维护命令( (GO、INSERT、DELETE、SORT、INDEX) )l数据的查询数据的查询( (LOCATE、SEEK) )l数据的统计数据的统计( (COUNT、SUM、AVERAGE、TOTAL) )l表的关联表的关联( (SET RELATION TO、 SET SKIP TO) )本章重点:本章重点:l掌握表的维护命令掌握表的维

2、护命令l掌握记录的维护命令掌握记录的维护命令l掌握数据的查询和统计命令掌握数据的查询和统计命令3.1.1 表结构的建立表结构的建立l在在Visual FoxPro系统中,一张二维表对应一个数据表,系统中,一张二维表对应一个数据表,称为表文件(扩展名为称为表文件(扩展名为.dbf)。)。l一张二维表由表名、表头、表的内容三部分组成,一个数一张二维表由表名、表头、表的内容三部分组成,一个数据表则由据表则由数据表名、数据表的结构、数据表的记录数据表名、数据表的结构、数据表的记录三要素三要素构成。构成。l定义数据表的结构,即定义数据表的字段个数、字段名、定义数据表的结构,即定义数据表的字段个数、字段名

3、、字段类型、字段宽度、小数位数及是否以该字段建立索引字段类型、字段宽度、小数位数及是否以该字段建立索引等。等。3.1 自由表的建立与修改自由表的建立与修改 表表3.1 学生表学生表.dbf例如:建立学生表例如:建立学生表.dbf的表结构。的表结构。学号学号姓名姓名性别性别出生日期出生日期专业专业电话电话学籍信息学籍信息照片照片1110070102 刘刘 悦悦.T.08/13/91软件工程软件工程 81820143menogen1110070103 霍国安霍国安.T.05/03/91土木工程土木工程 81820123menogen1110070104 刘思哲刘思哲.T.08/04/91土木工程土

4、木工程 81820167menogen1110070128 朱朱 迪迪.F.01/15/93土木工程土木工程 81820198menogen1110070230 陈陈 琪琪.F.06/26/92土木工程土木工程 81820154menogen1110070231 董董 乐乐.F.05/17/91土木工程土木工程 81820173menogen1210070101 周周 炜炜.T.08/11/91测绘工程测绘工程 81820578menogen1210070103 任任 楠楠.F.11/12/91测绘工程测绘工程 81820798menogen2310070137 贾贾 超超.T.04/25/9

5、3软件工程软件工程 81820467menoGen2310070118 穆穆 乐乐.F.10/04/92软件工程软件工程 81820799menogen2320080119 刘刘 波波.F.08/25/91信息安全信息安全 81820673menogen2320080122 刘宇航刘宇航.T.02/09/93信息安全信息安全 81820165menogen表表3.2 学生表结构学生表结构1. 设计表的结构设计表的结构字段序号字段序号字段名字段名类型类型字段宽度字段宽度1学号学号字符型字符型 C102姓名姓名字符型字符型 C63性别性别逻辑型逻辑型 L14出生日期出生日期日期型日期型 D85专业

6、专业字符型字符型 C106电话电话字符型字符型 C87学籍信息学籍信息备注型备注型 M48照片照片通用型通用型 G4 用命令创建表用命令创建表 格式格式1:Create Table ( ( 类型类型( (长度长度) ) , 类型类型( (长度长度) ) ) 格式格式2:Create 用表设计器创建表用表设计器创建表 方法:文件方法:文件 新建新建 “表表”选项选项新建文件新建文件表设计器表设计器( (字字段名、字段类型、字段宽度和字段索引段名、字段类型、字段宽度和字段索引) ) 保存。保存。 用表向导创建表用表向导创建表 方法:方法: 把已有的表作为把已有的表作为“样本样本”,在向导的引导下,

7、通过筛,在向导的引导下,通过筛选、修改操作完成新表的创建。选、修改操作完成新表的创建。 2. 表结构的建立表结构的建立方法方法1: Create Table 学生表学生表( (学号学号 C( (10) ),姓名姓名 C( (6) ),性别性别 L,; 出生日期出生日期 D,专业专业 C(10),电话电话 C(8),学籍信息学籍信息 M,照片照片 G) )方法方法2: Create 学生表学生表方法方法3: 利用表设计器利用表设计器说明:说明:l 新表缺省情况下存放在新表缺省情况下存放在“C:Program Files Microsoft Visual StudioVfp98”目录下。目录下。l

8、 可以用可以用 “SET DEFAULT TO ”命令改变当前目录。命令改变当前目录。 例如:例如:SET DEFAULT TO D:2. 表结构的建立表结构的建立3.1.2 表数据的输入与修改表数据的输入与修改 1. 表数据的输入表数据的输入 创建表时立即输入数据创建表时立即输入数据创建表时,如果表中所有字段的属性已定义完成,可按创建表时,如果表中所有字段的属性已定义完成,可按“确确定定”按钮保存表结构。按钮保存表结构。在在“系统系统”窗口中选择窗口中选择“是是”按钮,可以立即进入表按钮,可以立即进入表“浏览浏览”或或“编辑编辑”窗口,完成表中数据的输入。窗口,完成表中数据的输入。 以追加方

9、式输入数据以追加方式输入数据菜单方式:菜单方式:“显示显示”“浏览浏览|编辑编辑”“显示显示”“追加方式追加方式” 在在“编辑编辑”窗口或窗口或“浏览浏览”窗口,双击该备注型或通窗口,双击该备注型或通用型字段。用型字段。 按按Ctrl+PgDn键,进入备注型或通用型字段的数据编键,进入备注型或通用型字段的数据编辑窗口。辑窗口。 通用型字段窗口也可用命令打开。通用型字段窗口也可用命令打开。 格式:格式:MODIFY GENERAL 2. 备注型和通用型数据的输入备注型和通用型数据的输入方法:利用表设计器修改表结构方法:利用表设计器修改表结构 菜单方式菜单方式 “文件文件”“打开打开”表的名字表的

10、名字“显示显示”“表设计器表设计器” 命令方式命令方式 格式:格式:MODIFY STRUCTURE说明:用命令方式修改表结构时必须先打开相应的表文件。说明:用命令方式修改表结构时必须先打开相应的表文件。例如:修改学生表的结构,在例如:修改学生表的结构,在“照片照片”字段后添加新字段字段后添加新字段“党员否党员否” L,并修改,并修改“性别性别”字段属性为字段属性为C( (2) ) 。3.1.3 表结构的修改表结构的修改1. 表的关闭表的关闭 命令格式:命令格式: USE &关闭当前打开的表;关闭当前打开的表; CLOSE ALL &关闭所有打开的数据库和表;关闭所有打开的数据库和表; CLE

11、AR ALL &关闭所有打开的表;关闭所有打开的表; 利用文件菜单的利用文件菜单的“退出退出”命令命令 在命令窗口中输入命令在命令窗口中输入命令QUIT3.1.4 表的打开与关闭表的打开与关闭 菜单方式:利用菜单方式:利用“文件文件”菜单的菜单的“打开打开”命令。命令。 命令格式:命令格式:USE 说明:说明:l打开表时必须指定表所在的路径,默认为缺省路径。打开表时必须指定表所在的路径,默认为缺省路径。l若要修改结构或记录应在打开对话框中选定若要修改结构或记录应在打开对话框中选定 “独占独占” 复选复选框,否则打开的表是只读的,不能修改。框,否则打开的表是只读的,不能修改。l已打开的表总有一个

12、已打开的表总有一个记录指针记录指针,指针所指的记录称为,指针所指的记录称为当前当前记录记录。表刚打开时,记录指针指向第一个记录。表刚打开时,记录指针指向第一个记录。2. 表的打开表的打开3.2.1 表记录的显示表记录的显示格式:格式:LIST | DISPLAY FIELDS FOR | WHILE OFF 功能:显示当前表中指定范围满足一定条件的记录。功能:显示当前表中指定范围满足一定条件的记录。 说明:说明:l子句:子句:用来确定执行该命令的记录范围。用来确定执行该命令的记录范围。 ALL:所有记录。所有记录。 RECORD :第第N个记录。个记录。 NEXT :从当前记录起的从当前记录起

13、的N个记录。个记录。 REST:从当前记录起到最后一个记录止的所有记录。从当前记录起到最后一个记录止的所有记录。3.2 表的维护命令表的维护命令l OFF:不显示记录号。不显示记录号。l LIST:滚屏连续显示,缺省范围时默认为所有记录。滚屏连续显示,缺省范围时默认为所有记录。l DISPLAY:分屏显示分屏显示,缺省范围时默认为当前记录。缺省范围时默认为当前记录。 LIST与与DISPLAY ALL命令等价。命令等价。l FOR:显示指定范围内所有满足条件的记录。显示指定范围内所有满足条件的记录。l WHILE:仅在当前记录符合条件时开始依次筛选记仅在当前记录符合条件时开始依次筛选记录,直到

14、遇到不满足条件的记录时为止。录,直到遇到不满足条件的记录时为止。例如:例如:GO 5 LIST NEXT 4 FOR 性别性别=.F. LIST NEXT 4 WHILE 性别性别=.F.3.2.1 表记录的显示表记录的显示命令的格式与书写规则:命令的格式与书写规则:1. 命令格式命令格式 VFP 的命令总是由一个称为命令字的动词开头,后随一的命令总是由一个称为命令字的动词开头,后随一个宾语和若干个命令子句,说明命令的操作对象、操作结果个宾语和若干个命令子句,说明命令的操作对象、操作结果和操作条件。和操作条件。 具体格式:具体格式: 说明:说明:l:必选项:必选项 :可选项:可选项 | :任选

15、项:任选项l:选择、确定命令操作的记录范围。:选择、确定命令操作的记录范围。l:从表中选择符合条件的记录。:从表中选择符合条件的记录。l:选取命令操作的字段范围。:选取命令操作的字段范围。例如:例如:USE 学生表学生表 LIST NEXT 3 LIST FOR 成绩成绩600 AND 性别性别=男男 COPY TO XS FIELDS 学号学号,姓名姓名 FOR 性别性别=“女女” 2. 书写规则书写规则 一行只能写一条命令,以回车表示结束。一行只能写一条命令,以回车表示结束。 用空格来分隔每条命令中的各个短语,如果两个短语之用空格来分隔每条命令中的各个短语,如果两个短语之间有其他分界符,则

16、空格可以省略。间有其他分界符,则空格可以省略。 一行写不下时,用续行符一行写不下时,用续行符“;”在行末进行分行,并在下行在行末进行分行,并在下行连续书写。连续书写。 命令中的英文字母大小写可以混合使用。命令中的英文字母大小写可以混合使用。 命令动词和子句中的短语可以用其前四个字母缩写表示。命令动词和子句中的短语可以用其前四个字母缩写表示。例例3.1 以学生表为例:以学生表为例: 显示显示“经贸英语经贸英语”专业学生的学号、姓名、电话。专业学生的学号、姓名、电话。 LIST FIELDS 学号学号,姓名姓名,电话电话 FOR 专业专业= 经贸经贸英语英语 列出列出1991年出生的学生的姓名和出

17、生日期年出生的学生的姓名和出生日期, 不显示记录号。不显示记录号。 LIST 姓名姓名,出生日期出生日期 FOR YEAR( (出生日期出生日期) )=1991 OFF 显示学生表中第二条记录。显示学生表中第二条记录。 LIST RECORD 2 或或 DISPLAY RECORD 23.2.1 表记录的显示表记录的显示 显示第显示第3个记录开始的个记录开始的5个记录。个记录。 GO 3 | LIST RECORD 3 LIST NEXT 5 | DISPLAY NEXT 5 显示第显示第3个记录到第个记录到第5个记录。个记录。 GO 3 | LIST RECORD 3 LIST NEXT 3

18、 | DISPLAY NEXT 3 显示第显示第3个记录到最后一个记录为止的所有记录。个记录到最后一个记录为止的所有记录。 GO 3 | LIST RECORD 3 LIST REST | DISPLAY REST3.2.1 表记录的显示表记录的显示1. 表文件的复制表文件的复制( (从表复制出表从表复制出表) )格式:格式:COPY TO FIELDS FOR | WHILE 功能:将当前表复制成一个由文件名指定的新表功能:将当前表复制成一个由文件名指定的新表 。说明:说明:l新表文件中的字段顺序由新表文件中的字段顺序由FIELDS确定,缺省确定,缺省表示新表的结构与原表的结构完全相同。表示

19、新表的结构与原表的结构完全相同。l新表中的记录由新表中的记录由、选项确定。同时缺省选项确定。同时缺省、表示将原表的全部记录都复制到新表中。表示将原表的全部记录都复制到新表中。l若范围、条件和字段名表都缺省,表示将原表进行备份。若范围、条件和字段名表都缺省,表示将原表进行备份。3.2.2 表的复制表的复制 :新表文件名不能与原表文件同名,若原表文新表文件名不能与原表文件同名,若原表文件中有备注型字段,则相应的件中有备注型字段,则相应的.FPT备注文件将同时被复制。备注文件将同时被复制。例例3.2 将学生表中所有女生的记录复制到新表将学生表中所有女生的记录复制到新表XS中,新表中,新表中只包含学号

20、、姓名、性别和专业字段。中只包含学号、姓名、性别和专业字段。 USE 学生表学生表 COPY TO XS FIELDS 学号学号,姓名姓名,性别性别,专业专业; FOR .NOT. 性别性别 & .NOT. 性别等价于性别性别等价于性别=.F. USE XS LIST思考:思考:复制商品表中第复制商品表中第4个到第个到第7个记录到商品表个记录到商品表3 。 USE 商品表商品表 GO 4 COPY TO 商品表商品表3 NEXT 4 2. 表结构的复制表结构的复制格式:格式:COPY STRUCTURE TO FIELDS 功能:将当前表复制为文件名指定的表且只复制结构不复制功能:将当前表复制

21、为文件名指定的表且只复制结构不复制数据。数据。 说明:说明:l命令执行前,需复制的表文件必须是打开的。执行后生成命令执行前,需复制的表文件必须是打开的。执行后生成的新表文件只有结构,且新表文件是关闭的。的新表文件只有结构,且新表文件是关闭的。l:确定新表结构的字段名:确定新表结构的字段名, ,中的字中的字段必须是原表文件中具有的字段名。若省略该选项,则原样段必须是原表文件中具有的字段名。若省略该选项,则原样复制当前表文件的结构。复制当前表文件的结构。3.2.2 表的复制表的复制例例3.3 将学生表的结构复制成学生表将学生表的结构复制成学生表1,复制后只包含学,复制后只包含学号、姓名和专业字段号

22、、姓名和专业字段, ,并将复制后的新表结构显示出来。并将复制后的新表结构显示出来。 USE 学生表学生表 COPY STRU TO 学生表学生表 FIELDS 学号学号,姓名姓名,专业专业 USE 学生表学生表1 LIST STRUCTURE2. 表结构的复制表结构的复制3.2.3 表数据的替换表数据的替换格式:格式:REPLACE WITH , , WITH . FOR |WHILE 功能:用功能:用的值替换当前表中指定范围满足条件记的值替换当前表中指定范围满足条件记录的多个字段值。录的多个字段值。说明:说明:l该命令适合对当前表进行成批地、有规律地修改。该命令适合对当前表进行成批地、有规律

23、地修改。l、同时缺省时,仅替换同时缺省时,仅替换当前记录当前记录。 l的类型必须与字段类型一致,的类型必须与字段类型一致,的值不的值不能超出字段宽度,否则数据无效。能超出字段宽度,否则数据无效。 例例3.4 将成绩表选修课程号为将成绩表选修课程号为001且成绩高于且成绩高于80分分( (含含80分分) )的学生成绩加的学生成绩加5分。分。 USE 成绩表成绩表 REPLACE 成绩成绩 WITH 成绩成绩+5; FOR 课程号课程号= 001 AND 成绩成绩=80思考:思考:REPLACE 成绩成绩 WITH 成绩成绩+5 将商品表中产地为广东的商品单价全部打将商品表中产地为广东的商品单价全

24、部打8折替换。折替换。 USE 商品表商品表 REPLACE 单价单价 WITH 单价单价*0.8 FOR 产地产地= 广东广东 3.2.3 表数据的替换表数据的替换l记录号:记录号:用于标识数据记录在表文件中的物理顺序。用于标识数据记录在表文件中的物理顺序。l记录指针记录指针是一个指示器,它始终指向当前表中正在操作处是一个指示器,它始终指向当前表中正在操作处理的那条记录,此记录被称为理的那条记录,此记录被称为当前记录当前记录。如果要对某条记录。如果要对某条记录进行处理,必须移动记录指针,使其指向该记录。进行处理,必须移动记录指针,使其指向该记录。l在任意时刻指针只能指向唯一的一条记录,每个表

25、中在任意时刻指针只能指向唯一的一条记录,每个表中有且有且只有一个只有一个当前记录。当前记录。3.3 记录维护命令记录维护命令3.3.1 记录指针的定位记录指针的定位格式格式1:GO|GOTO RECORD 功能:将记录指针定位到功能:将记录指针定位到指定的记录上。指定的记录上。说明:说明:的值表示记录的物理记录号。的值表示记录的物理记录号。例例3.5 绝对定位命令的用法。绝对定位命令的用法。 GOTO 2 ?RECNO( )( ) GO 3 ?RECNO( )( )格式格式2:GO|GOTO TOP|BOTTOM功能:将记录指针定位到表文件的首记录或尾记录。功能:将记录指针定位到表文件的首记录

26、或尾记录。说明:说明:TOP:将记录指针移动到表的首记录。将记录指针移动到表的首记录。 BOTTOM:将记录指针动到表的最后一条记录。将记录指针动到表的最后一条记录。 记录指针的绝对定位记录指针的绝对定位格式:格式:SKIP 功能:记录指针从当前记录向前(或后)移动若干个记录。功能:记录指针从当前记录向前(或后)移动若干个记录。说明:说明:l:表示移动的记录个数。若:表示移动的记录个数。若的的值为正值,表示向后移动记录;否则,表示向前移动记录。值为正值,表示向后移动记录;否则,表示向前移动记录。l缺省缺省时,表示向后移动时,表示向后移动1个记录。个记录。l如果记录指针已经如果记录指针已经移过移

27、过文件的最后一个记录,则文件的最后一个记录,则RECNO()()函数值等于文件中的记录总数加函数值等于文件中的记录总数加1,EOF()()函数返回逻辑真值。函数返回逻辑真值。l如果记录指针已经移到第一个记录的前面,则如果记录指针已经移到第一个记录的前面,则BOF()()函数返函数返回逻辑真值,否则返回逻辑假值。回逻辑真值,否则返回逻辑假值。 记录指针的相对定位记录指针的相对定位例例3.6 USE 学生表学生表 SKIP 4 ?RECNO( )( ) SKIP -3 ?RECNO( )( ) GO BOTTOM ?EOF( )( ) SKIP 1 ?EOF( )( ) GO TOP ?BOF(

28、)( ) SKIP -1 ?BOF( )( ) 记录指针的相对定位记录指针的相对定位1. 插入记录插入记录格式:格式:INSERT BEFORE BLANK功能:在当前表文件的指定位置插入新记录或空记录。功能:在当前表文件的指定位置插入新记录或空记录。说明:说明:lINSERT:在当前记录之后插入新记录。在当前记录之后插入新记录。lINSERT BEFORE:在当前记录之前插入新记录。在当前记录之前插入新记录。lINSERT BLANK:在当前记录之后插入空记录。在当前记录之后插入空记录。lINSERT BEFORE BLANK:在当前记录之前插入空记录。在当前记录之前插入空记录。例例3.7

29、在成绩表的第在成绩表的第2号记录前插入一条新记录。号记录前插入一条新记录。 USE 成绩表成绩表 GO 2 INSERT BEFORE3.3.2 记录的插入与追加记录的插入与追加格式格式1:APPEND BLANK格式格式2:APPEND FROM FIELDS FOR | WHILE功能:从指定的表中读入数据,并添加到功能:从指定的表中读入数据,并添加到当前表的末尾当前表的末尾。 说明:说明:追加记录时应先将需要追加记录的表文件打开。追加记录时应先将需要追加记录的表文件打开。例例3.8 将将XS表中会计学专业学生的记录追加到学生表的末尾。表中会计学专业学生的记录追加到学生表的末尾。 USE

30、学生表学生表 APPEND FROM XS FOR 专业专业= 会计学会计学 2. 追加记录追加记录格式格式3:INSERT INTO (,) VALUES( (表达式表达式1, ,表达式表达式2, ,) )功能:在当前表的末尾追加一个新记录,并直接输入数据。功能:在当前表的末尾追加一个新记录,并直接输入数据。说明:字段名缺省时说明:字段名缺省时, ,表示新插入记录包括原表中所有字段。表示新插入记录包括原表中所有字段。例例3.9 往成绩表追加一条记录往成绩表追加一条记录(1100070102,006,90) )。 INSERT INTO 成绩表成绩表( (学号学号, ,课程号课程号, ,成绩成

31、绩) ); VALUES ( (1100070102,006,90) )2. 追加记录追加记录1. 逻辑删除记录逻辑删除记录逻辑删除是给指定的记录加删除标记逻辑删除是给指定的记录加删除标记“*”,可以恢复。,可以恢复。格式:格式:DELETE FOR|WHILE功能:对当前表中指定范围内满足条件的记录作删除标记。功能:对当前表中指定范围内满足条件的记录作删除标记。说明:说明:和和同时缺省则仅删除同时缺省则仅删除当前记录当前记录。例例3.10 逻辑删除学生表中男生的记录。逻辑删除学生表中男生的记录。 DELETE FOR 性别性别思考:思考:在商品表的第在商品表的第2个记录和第个记录和第9个记录

32、上打删除标记。个记录上打删除标记。 GO 2 DELETE | DELETE RECORD 2 GO 9 DELETE | DELETE RECORD 93.3.3 记录的删除与恢复记录的删除与恢复格式:格式:RECALL FOR|WHILE功能:将当前表文件中指定范围内满足条件的已作删除标功能:将当前表文件中指定范围内满足条件的已作删除标记的记录恢复,即去掉这些删除记录的删除标记。记的记录恢复,即去掉这些删除记录的删除标记。说明:说明: lRECALL命令与命令与DELETE命令相对应,它可以去掉被逻命令相对应,它可以去掉被逻辑删除记录的删除标记。辑删除记录的删除标记。l和和同时缺省则仅恢复

33、同时缺省则仅恢复当前记录当前记录。例例3.11 恢复学生表中逻辑删除的记录。恢复学生表中逻辑删除的记录。 RECALL FOR 性别性别 2. 恢复逻辑删除记录恢复逻辑删除记录格式:格式:PACK 功能:将当前表中功能:将当前表中所有带删除标记的记录所有带删除标记的记录全部真正删除掉。全部真正删除掉。说明:说明:l物理删除某条记录,首先必须先执行逻辑删除操作。物理删除某条记录,首先必须先执行逻辑删除操作。l物理删除后记录将不能被恢复。物理删除后记录将不能被恢复。例例3.12 物理删除学生表中软件工程专业学生记录。物理删除学生表中软件工程专业学生记录。 USE 学生表学生表 DELETE FOR

34、 专业专业= 软件工程软件工程 PACK3. 物理删除记录物理删除记录格式:格式:ZAP 功能:物理删除当前表的所有记录。功能:物理删除当前表的所有记录。说明:说明:ZAP命令等价于命令等价于DELETE ALL和和 PACK两条命令。两条命令。 4. 记录清除命令记录清除命令排序:将关键字段值相同的记录按顺序存放在一起,生成一排序:将关键字段值相同的记录按顺序存放在一起,生成一个新的表文件。个新的表文件。 格式:格式:SORT TO ON /A|/D/C , /A|/D/C. FOR|WHILEFIELDS 功能:对当前表按指定的字段进行排序,生成新的表文件。功能:对当前表按指定的字段进行排

35、序,生成新的表文件。说明:说明:l排序字段的数据类型允许是排序字段的数据类型允许是N、C、D、L型。型。l当有多个关键字段时,先按当有多个关键字段时,先按的值排列,其值相的值排列,其值相同时再按同时再按的值排列。的值排列。3.3.4 记录的排序记录的排序( (SORT) )l /A 表示升序、表示升序、/D 表示降序、表示降序、/C 表示不区分大小写,表示不区分大小写,默默认升序。认升序。l 同时缺省同时缺省和和时,表示对所有记录排序。时,表示对所有记录排序。l 缺省缺省时,表示新表包含原表的所有字段。时,表示新表包含原表的所有字段。l 该命令执行后当前表不变,产生的新表不会自动打开。该命令执

36、行后当前表不变,产生的新表不会自动打开。3.3.4 记录的排序记录的排序例例3.13 将学生表中男生记录按学号降序排列,并将结果保存将学生表中男生记录按学号降序排列,并将结果保存到学生表到学生表1中。中。 USE 学生表学生表 SORT TO 学生表学生表1 ON 学号学号 /D FOR 性别性别 USE 学生表学生表1 LIST思考:思考:将商品表进行排序,按产地升序排序,产地相同按价格将商品表进行排序,按产地升序排序,产地相同按价格降序排序,排序后只包含商品名称、单价、产地等字段。降序排序,排序后只包含商品名称、单价、产地等字段。 USE 商品表商品表 SORT TO 商品表商品表2 ON

37、 产地产地 /A, 单价单价 /D; FIELDS 商品名称商品名称,单价单价,产地产地3.3.4 记录的排序记录的排序3.3.5 记录的索引记录的索引1. 排序与索引相同点排序与索引相同点 按照指定的关键字段来重新排列表中数据记录的顺序。按照指定的关键字段来重新排列表中数据记录的顺序。2. 排序与索引的不同点排序与索引的不同点 排序是从物理上对表进行重新整理,索引是从逻辑上排序是从物理上对表进行重新整理,索引是从逻辑上对表进行重新整理。排序和索引后分别增加排序文件和索对表进行重新整理。排序和索引后分别增加排序文件和索引文件。引文件。 当对表执行插入、修改、删除操作时,必须对表重新当对表执行插

38、入、修改、删除操作时,必须对表重新排序,而索引能够自动更新。排序,而索引能够自动更新。索引按扩展名分两类:索引按扩展名分两类: 单索引文件单索引文件 只包含一个索引的索引文件,扩展名为只包含一个索引的索引文件,扩展名为.IDX。 复合索引文件复合索引文件 可以包含多个索引的索引文件,扩展名为可以包含多个索引的索引文件,扩展名为.CDX。每个每个索引都有一个索引标识索引都有一个索引标识( (Index Tag) ),代表一种记录逻辑,代表一种记录逻辑顺序顺序。复合索引文件有两种类型:复合索引文件有两种类型:l结构复合索引文件结构复合索引文件 ( (Structural Compound Inde

39、x) )l非结构复合索引文件非结构复合索引文件 ( (Independent Compound Index) )3. 索引的种类索引的种类 结构复合索引文件由结构复合索引文件由VFP系统自动命名,与相应的表系统自动命名,与相应的表文件同名文件同名;非结构复合索引文件不与表文件同名,由用户非结构复合索引文件不与表文件同名,由用户自己命名。自己命名。 当打开一个表时,系统便自动查找一个结构复合索引当打开一个表时,系统便自动查找一个结构复合索引文件,如果找到便自动打开,并随表的关闭而同时关闭;文件,如果找到便自动打开,并随表的关闭而同时关闭;非结构复合索引文件必须由指定命令打开和关闭。非结构复合索引

40、文件必须由指定命令打开和关闭。两者的区别:两者的区别: 主索引主索引主索引是指索引关键字不允许出现重复值的索引。主索引是指索引关键字不允许出现重复值的索引。只有数据库表才能建立主索引只有数据库表才能建立主索引。每一个表只能建立一个主索引。每一个表只能建立一个主索引。 侯选索引侯选索引侯选索引也是一个不允许在指定字段和表达式中出现重侯选索引也是一个不允许在指定字段和表达式中出现重复值的索引。复值的索引。数据库表和自由表都可以建立侯选索引。数据库表和自由表都可以建立侯选索引。一个表可以建立多个侯选索引。一个表可以建立多个侯选索引。结构复合索引文件按功能分四类:结构复合索引文件按功能分四类: 唯一索

41、引唯一索引 允许索引关键字有重复的值,当有重复值出现时,索引允许索引关键字有重复的值,当有重复值出现时,索引文件只保存重复值的第一次值。文件只保存重复值的第一次值。 数据库表和自由表都可以建立唯一索引。数据库表和自由表都可以建立唯一索引。 普通索引普通索引 是一个最简单的索引,允许关键字值的重复出现,适合是一个最简单的索引,允许关键字值的重复出现,适合用来进行表中记录的排序和查询。用来进行表中记录的排序和查询。 数据库表和自由表都可以建立普通索引。数据库表和自由表都可以建立普通索引。 命令方式命令方式格式:格式:INDEX ON TAG FOR ASCENDING|DESCENDING CAN

42、DIDATEUNIQUE功能:对当前表文件按指定的关键字建立结构复合索引文件。功能:对当前表文件按指定的关键字建立结构复合索引文件。说明:说明:l:可以是单一字段,也可以是多个字段组成的表可以是单一字段,也可以是多个字段组成的表达式,表达式中各字段的类型只能是达式,表达式中各字段的类型只能是N、C、D和和L。当表达式是多当表达式是多个字段时,字段类型应转换成同一类型的表达式。个字段时,字段类型应转换成同一类型的表达式。lTAG :为该索引定义一个标识。为该索引定义一个标识。lFOR :表示只对满足条件的记录建立索引。表示只对满足条件的记录建立索引。lASCENDING表示升序,表示升序,DES

43、CENDING表示降序,默认升序。表示降序,默认升序。lCANDIDATE:表示候选索引,默认为普通索引。表示候选索引,默认为普通索引。4. 结构复合索引文件的建立结构复合索引文件的建立例例3.14 为学生表建立一个结构复合索引文件,其中包括为学生表建立一个结构复合索引文件,其中包括2个个索引:索引: 记录以姓名降序排列,索引为记录以姓名降序排列,索引为唯一索引型。唯一索引型。 USE 学生表学生表 INDEX ON 姓名姓名 TAG XM DESCENDING UNIQUE LIST 记录以姓名降序排列,姓名相同时按出生日期降序排列,记录以姓名降序排列,姓名相同时按出生日期降序排列,索引为索

44、引为普通普通索引。索引。 INDEX ON 姓名姓名+DTOC( (出生日期出生日期) ) DESC TAG XMRQ LIST 菜单方式菜单方式方法:方法:打开表文件,选择打开表文件,选择【显示显示】|【表设计器表设计器】命令,在命令,在表设计器对话框,选择表设计器对话框,选择“索引索引”选项卡。选项卡。l 若要改变索引名称,在若要改变索引名称,在“索引名索引名”编辑框中键入索引名称。编辑框中键入索引名称。l 若要改变索引类型,在若要改变索引类型,在“类型类型”列点击列点击“类型类型”列表框的下列表框的下三角,弹出一列表,根据需要选中索引类型。三角,弹出一列表,根据需要选中索引类型。l 若要

45、改变索引表达式,在若要改变索引表达式,在“表达式表达式”编辑框中键入索引表达编辑框中键入索引表达式,或点击其右按钮,弹出式,或点击其右按钮,弹出“表达式生成器表达式生成器”对话框。在该对对话框。在该对话框中编辑索引表达式后,点击话框中编辑索引表达式后,点击“确定确定”按钮。按钮。 确定主控索引确定主控索引格式:格式:SET ORDER TO |TAG ASCENDING|DESCENDING功能:重新指定打开的索引文件中的主索引。功能:重新指定打开的索引文件中的主索引。说明:说明:l当前建立的索引自动成为主控索引。当前建立的索引自动成为主控索引。l:表示索引建立的次序号。:表示索引建立的次序号

46、。lTAG :用标识名将该索引指定为主控索引。:用标识名将该索引指定为主控索引。lSET ORDER TO:表示取消主控索引,表中记录将按物:表示取消主控索引,表中记录将按物理顺序输出。理顺序输出。5. 索引文件的使用索引文件的使用例例3.15 为学生表建立一个结构复合索引文件,其中包括为学生表建立一个结构复合索引文件,其中包括2个个索引。索引。 记录按出生日期降序排列,为普通索引。记录按出生日期降序排列,为普通索引。 记录以姓名升序排列,姓名相同时按专业升序排列,索记录以姓名升序排列,姓名相同时按专业升序排列,索引为唯一索引。引为唯一索引。 分别指定第一个和第二个索引为主控索引。分别指定第一

47、个和第二个索引为主控索引。 USE 学生表学生表 INDEX ON 出生日期出生日期 TAG RQ DESC INDEX ON 姓名姓名+专业专业 TAG XMZY UNIQUE SET ORDER TO TAG RQ SET ORDER TO TAG XMZY 或或SET ORDER TO 2 l当表中的记录被修改时,系统会自动地更新所打开的索当表中的记录被修改时,系统会自动地更新所打开的索引文件,及时反映数据的变化。引文件,及时反映数据的变化。l若索引文件没有打开,则索引文件不能自动更新。可用若索引文件没有打开,则索引文件不能自动更新。可用REINDEX命令重建索引,也可用命令重建索引,也

48、可用INDEX ON命令再次建立命令再次建立索引,两者功能相同。索引,两者功能相同。格式:格式:REINDEX 功能:更新已建立的索引文件。功能:更新已建立的索引文件。 索引文件的更新索引文件的更新 USE 学生表学生表 INDEX ON 出生日期出生日期 TO RQIDX &建立单索引文件建立单索引文件 CLOSE INDEX &关闭单索引文件关闭单索引文件 APPEND LIST USE 学生表学生表 INDEX RQIDX &打开单索引文件打开单索引文件 LIST REINDEX LIST例例3.16 将学生表的将学生表的RQIDX单索引文件重新索引。单索引文件重新索引。格式:格式:DE

49、LETE TAG ALL|, . 功能:删除当前打开的结构复合索引文件的索引标识。功能:删除当前打开的结构复合索引文件的索引标识。说明:说明:lALL用于删除结构复合索引文件的所有索引标识。用于删除结构复合索引文件的所有索引标识。l若索引文件的所有索引标识都被删除,则该索引文件也若索引文件的所有索引标识都被删除,则该索引文件也被删除。被删除。例例3.17 删除学生表中指定的索引标识。删除学生表中指定的索引标识。 USE 学生表学生表 DELETE TAG RQ DELETE TAG ALL 索引的删除索引的删除3.4.1 查询命令查询命令1. 顺序查询命令顺序查询命令特点:特点:可以在没有进行

50、排序或索引的无序表中进行任意条可以在没有进行排序或索引的无序表中进行任意条件的查询,但顺序查询速度和效率较低。件的查询,但顺序查询速度和效率较低。格式:格式:LOCATE FOR 功能:在当前表指定范围中查找满足条件的功能:在当前表指定范围中查找满足条件的第一个记录第一个记录。说明:说明:lCONTINUE命令:命令:继续查找下一个满足条件的记录。该继续查找下一个满足条件的记录。该命令必须在命令必须在LOCATE命令之后使用,否则出错。命令之后使用,否则出错。l若找到满足条件的记录,若找到满足条件的记录,FOUND()返回返回.T. ,否则返回,否则返回.F.。l:指定查找范围,缺省时在整个表

51、中查找。指定查找范围,缺省时在整个表中查找。3.4 查询与统计查询与统计例例3.18 在学生表中查找信息安全专业学生记录。在学生表中查找信息安全专业学生记录。 USE 学生表学生表 LOCATE FOR 专业专业= 信息安全信息安全 ? FOUND ( ) DISPLAY CONTINUE ? FOUND ( ) DISPLAY思考:在学生表中查找思考:在学生表中查找1993年出生的学生信息。年出生的学生信息。 LOCATE FOR YEAR( (出生日期出生日期) )=19932. 索引查询索引查询格式:格式:SEEK 功能:在已确定主控索引的表文件中查找功能:在已确定主控索引的表文件中查找

52、值值与与值相匹配的值相匹配的第一个记录第一个记录。说明:说明:lSEEK命令可以查找命令可以查找C、N、D、L表达式的值,表达式的值,的类型必须与的类型必须与的类型相同。的类型相同。l表达式为字符串时,必须用定界符括起来。表达式为字符串时,必须用定界符括起来。l表达式为日期常量时,必须用大括号括起来。表达式为日期常量时,必须用大括号括起来。l由于索引文件中与由于索引文件中与值相同的记录总是排在值相同的记录总是排在一起,可用一起,可用SKIP命令来逐个查询。命令来逐个查询。例例3.19 用用SEEK命令在学生表中查找男生记录。命令在学生表中查找男生记录。 INDEX ON 性别性别 TAG XB

53、 SEEK .T. DISPLAY SKIP思考:思考:用用SEEK命令在学生表中查找命令在学生表中查找1993年出生的学生信息。年出生的学生信息。 INDEX ON YEAR( (出生日期出生日期) ) TAG RQ SEEK 1993 ? FOUND( ) DISPLAY 2. 索引查询索引查询1. 计数命令计数命令格式:格式:COUNT FOR|WHILE TO 功能:统计当前表中指定范围内满足条件的记录个数。功能:统计当前表中指定范围内满足条件的记录个数。说明:说明:l和和:缺省时统计表中所有记录个数。缺省时统计表中所有记录个数。lTO :将计算结果保存在将计算结果保存在中,否则中,否

54、则统计结果显示在主窗口的状态条中。统计结果显示在主窗口的状态条中。例例3.20 统计学生表中女生人数和总人数。统计学生表中女生人数和总人数。 COUNT FOR NOT 性别性别 COUNT TO ZS3.4.2 统计命令统计命令格式:格式:SUM FOR | WHILE TO 功能:对当前表指定范围内满足条件的记录按指定的各数值功能:对当前表指定范围内满足条件的记录按指定的各数值表达式分别求和。表达式分别求和。说明:说明:l缺省缺省:表示对所有数值型字段求和。:表示对所有数值型字段求和。l中表达式的个数与内存变量的个数一致。中表达式的个数与内存变量的个数一致。l缺省缺省和和时表示全部记录。时

55、表示全部记录。例例3.21 统计学生成绩表中各科成绩的总分,结果存储在相应统计学生成绩表中各科成绩的总分,结果存储在相应的内存变量中。的内存变量中。 SUM 数学数学, ,计算机计算机, ,英语英语 TO X1, ,X2, ,X32. 求和命令求和命令格式:格式:AVERAGE FOR |WHILE TO 功能:对当前表指定范围内满足条件的记录按指定的各数功能:对当前表指定范围内满足条件的记录按指定的各数值表达式分别求平均值。值表达式分别求平均值。例例3.22 统计学生成绩表中的各科成绩的平均分,结果存储统计学生成绩表中的各科成绩的平均分,结果存储在相应的内存变量中。在相应的内存变量中。 AV

56、ERAGE 数学数学, ,计算机计算机, ,英语英语 TO Y1, ,Y2, ,Y3 ?Y1,Y2,Y33. 求平均值命令求平均值命令格式:格式:CALCULATE FOR |WHILE TO 功能:对当前表指定范围内满足条件的记录进行指定的计功能:对当前表指定范围内满足条件的记录进行指定的计算工作。算工作。说明:说明:中的表达式可以是下列函数:中的表达式可以是下列函数: AVG( () ):求平均值:求平均值 SUM( () ):求和:求和 CNT( )( ):统计个数:统计个数 MAX( () ):求最大值:求最大值 MIN( () ):求最小值:求最小值4. 综合计算命令综合计算命令例例

57、3.23 计算学生成绩表中学生总数、数学成绩的总分、计计算学生成绩表中学生总数、数学成绩的总分、计算机成绩的平均分、英语的最高分和最低分。算机成绩的平均分、英语的最高分和最低分。 USE 学生成绩表学生成绩表 CALC CNT(),SUM( (数学数学),),AVG( (计算机计算机),),MAX( (英语英语),),; MIN( (英语英语) ) TO S1, ,S2, ,S3, ,S4,S5 ? S1,S2,S3,S4,S54. 综合计算命令综合计算命令格式:格式:TOTAL TO ON FIELDS FOR |WHILE 功能:在当前表中,分别对与功能:在当前表中,分别对与值相同的记录的

58、数值相同的记录的数值型字段求和,并将结果存入一个新表。值型字段求和,并将结果存入一个新表。说明:说明:l 分类汇总前,当前表必须按关键字排序或索引。分类汇总前,当前表必须按关键字排序或索引。l 汇总命令执行后,将生成一个新的表文件。汇总命令执行后,将生成一个新的表文件。l 汇总文件的结构与当前表的结构完全相同,汇总记录个数汇总文件的结构与当前表的结构完全相同,汇总记录个数由由的值确定的值确定 。l 缺省缺省时将所有数值型字段的值进行汇总。时将所有数值型字段的值进行汇总。5. 分类汇总命令分类汇总命令例例3.24 将成绩表按学号对成绩字段进行分类汇总。将成绩表按学号对成绩字段进行分类汇总。 US

59、E 成绩表成绩表 INDEX ON 学号学号 TAG XH TOTAL TO CJ1 ON 学号学号 FIELDS 成绩成绩 USE CJ1 LIST FIELDS 学号学号, ,成绩成绩思考:对成绩表按课程号对成绩字段进行分类汇总。思考:对成绩表按课程号对成绩字段进行分类汇总。 INDEX ON 课程号课程号 TAG KCH TOTAL TO CJ2 ON 课程号课程号 FIELDS 成绩成绩 USE CJ2 LIST FIELDS 课程号课程号,成绩成绩3.5.1 工作区工作区l VFP系统同时提供系统同时提供32767个工作区,系统默认值为个工作区,系统默认值为 1 区。区。任意时刻只有

60、一个工作区是当前工作区,任意时刻只有一个工作区是当前工作区,用户只能在当前工用户只能在当前工作区对打开的当前表进行操作,而且每个工作区中只能打开作区对打开的当前表进行操作,而且每个工作区中只能打开一个表。一个表。l每一个工作区用工作区号或别名来标识。每一个工作区用工作区号或别名来标识。 工作区号:工作区号:用数字用数字132767来标识来标识32767个不同的工作区。个不同的工作区。别名:别名:前前10工作区用工作区用AJ十个字母来标识,称为工作区的十个字母来标识,称为工作区的别名。别名。3.5 表的关联表的关联l系统启动时,系统启动时,1号工作区是当前工作区,若想改变当前工号工作区是当前工作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论