重要资料VFP表操作索引、统计、关联、连接等讲解
- 格式:doc
- 大小:709.00 KB
- 文档页数:44
vfp实验6表的索引、排序、统计
实验六表的索引、排序、统计
一、实验目的
1、理解表的4种索引类型,熟悉单项索引和复合索引的建立和应用;
2、掌握记录排序命令sort to的应用方法;
3、掌握表的常用统计命令;
二、实验内容
注意:数据文件务必存放在 D 盘!
用你的学号在D 盘下建立一个文件夹(如08514101),将文件正确保存到该文件夹中。
为方便文件打开和调试,可以用SET DEFAULT TO 修改系统的文件存放默认路径,如:SET DEFAULT TO D:\08514101
1、打开表xsda.dbf,完成以下操作:
(1)使用单项索引将表中的记录按出生日期降序
..排列显示,生成csrq.idx 文件;
(2)使用复合索引将表中的记录按性别显示不同地区的记录信息,索引标识符为xbjg;
(3)使用复合索引将表中的记录按性别降序显示男女学生的入学成绩信息,索引标识符为xbrxcj;
(4)制定当前索引为xbjg,重新显示操作(2)的结果;
2、利用表xsda.dbf的字段xh、xm、jg、rxcj和zy,生成排序文件zfpx.dbf,排序的文件按总分降序排列(sort to…on);
3、打开xscj.dbf表,分别统计不同科目的平均分,并将统计结果存在不同的变量中;
文件上交:
访问ftp://219.222.113.14,用户名:vfp8,密码:000,将你的文件以“实验
6学号姓名.rar”上传到“上传区”中,如“实验608514101蔡
梦雅.rar”。
3.5 表的索引
1. 基本概念
记录的顺序:
物理顺序:即表中记录的存储顺序。
⽤记录号表⽰。
逻辑顺序:表打开后被使⽤时记录的处理顺序。
索引:
指按表⽂件中某个关键字段或表达式建⽴记录的逻辑顺序。
它是由⼀系列记录号组成的⼀个列表,提供对数据的快速访问。
索引不改变表中记录的物理顺序。
表⽂件中的记录被修改或删除时,索引⽂件可⾃动更新。
索引关键字(索引表达式):⽤来建⽴索引的⼀个字段或字段表达式。
注意:1)⽤多个字段建⽴索引表达式时,表达式的计算结果将影响索引的结果;
2)不同类型字段构成⼀个表达式时,必须转换数据类型。
索引标识(索引名):
即索引关键字的名称。
必须以下划线、字母或汉字开头,且不可超过10个字。
索引类型:主索引、候选索引、普通索引、索引。
主索引:
组成主索引关键字的字段或表达式,在表的所有记录中不能有重复的值。
主索引只适⽤于数据库表的结构复合索引中。
⾃由表中不可以建⽴主索引;数据库中的每个表可以且只能建⽴⼀个主索引。
候选索引:
在指定的关键字段或表达式中不允许有重复值的索引。
在数据库表和⾃由表中均可为每个表建⽴多个候选索引。
普通索引:
也可以决定记录的处理顺序,但是允许字段中出现重复值。
在⼀个表中可以加⼊多个普通索引。
索引:
参加索引的关键字段或表达式在表中可以有重复值,但在索引对照表中,具有重复值的记录仅存储其中的第⼀个。
VFP表的基本操作第一课3月8日表的基本操作visual foxpro 是计算机优秀的数据库管理软件之一,采用了可视化的、面向对象的程序设计方法。
表的种类:自由表、数据库表表的基本操作:P11、创建项目2、将数据库添加到项目中13、表结构的修改[改字段名称]9、将自由表添加到数据库中10、数据库中移去表1.索引:在表设计器中建立索引;使用命令建立索引并保存在文本文件中;索引类型1、主索引在指定字段或表达式中不允许出现重复值的索引。
这样索引可以起到主关键字的作用。
一个表只能有一个主关键字,所以一个表只能有一个主索引。
2、候选索引候选索引和主索引具有相同的特性,即要求字段值唯一性。
建立候选索引的字段可以看成是候选关键字,所以一个表可以建立多个候选索引。
3、唯一索引索引项唯一,不是字段唯一。
指在使用相应索引时,重复的索引字段值只有唯一一个值(同一字段值的首次出现)出现在索引项中。
4、普通索引允许出现重复字段和索引项。
Ⅰ、在表设计器中建立索引例题:P28 一Ⅱ、用命令建立索引INDEX index on 索引表达式tag 索引名[OF 索引文件名][FOR 条件表达式] [ASC|DESC][UNIQUE|CANDIDA TE]默认的索引文件名与表同名,否则可以自行指定For 条件表达式给出索引条件,即只索引满足条件的记录;ASCENDING或DESCENDING 指明建立升或降序索引,默认升序;UNIQUE 指明建立唯一索引;CANDIDA TE 指明建立候选索引;删除索引delete TAG 索引名Index on 表达式TAG 索引名# 普通索引Index on 表达式TAG 索引名unique # 唯一索引Index on 表达式TAG 索引名candidate #候选索引可用alter table 建立主索引Alter table 表名add primary key 表达式tag 索引名2.为表格中的字段设置有效性规则、默认值、出错信息的设置:p28 一在表设计器中设置;使用SQL语句设置;Alter table 表名alter 字段名set check 规则error “出错信息”Alter table 表名alter 字段名set default 默认值1、常量类型数值型常量N整型常量I货币型常量Y字符型常量 C日期型常量 D 严格的日期格式:{^yyyy/mm/dd}逻辑型常量.L T.\.F.;.Y.\.N备注型M2、关系表达式运算符==和$仅适用于字符型数据.其他运算符适用于任何类型的数据,但除了日期型和日期时间型数据,数值型和货币型数据可以比较外,其它情况下,前后两个运算对象的数据类型要一致.1、数值型、货币型数据比较按数值大小比较2、日期、日期时间型数据比较越早的日期或时间越小,越晚的日期或日期越大{^2003-02-13}>{^2000-01-30}3、子串包含测试关系表达式”<字符型表达式1>$<字符型表达式2>”为子串包含测试,如果左字符串是右字符串的一个子字符串,则为真,否则为假.”计算机”$”计算机基础”,”计算机基础”$”计算机”,”计算机”$”计算机基础”>”计算机基础”$”计算机”.T. .F..T.3.对表进行初步操作P6 一用sql语句完成表的选择(SELE)、更新(UPDATE)、删除(DELETE)、插入(INSERT)Sele 字段名/表达式from 表名where 条件表达式update 表名set 字段名= 表达式where 条件表达式delete from 表名where 条件表达式insert into 表名(字段名1,字段名N)value(值1,值N)insert into 表名from array 数组名逻辑删除:物理删除:再上PACK命令即永久删除。
查询、统计和多表操作表文件中记录的顺序通常是人们在输入数据时按输入的先后次序存储的,并以记录号表示,这个顺序只反映了存放数据的先后顺序。
但在数据处理实际应用中,由于数据库十分庞大,为了高效方便地处理数据,常常需要对记录位置进行重新整理,并按某种指定的顺序对表记录进行处理。
例如,对学生成绩表按学号为序显示输出记录,以便查找;或按总分高低为序输出记录,以便进行比较等等。
对记录位置进行重新整理通常有排序和索引两种方法。
排序是对表文件进行物理位置的整理;索引是对表文件进行逻辑位置的整理。
一、排序表文件的排序操作就是根据表的某个关键字或关键字表达式重新排列表记录的位置。
执行排序操作后将生成一个新的表文件(称为:排序文件)。
新文件的结构和数据可以与源文件完全相同,也可以只取源文件的部分字段。
新文件不改变源文件内容和记录顺序。
【命令】 SORT TO<新文件名>ON <字段名1>[/A] [/D] [/C] [,<字段名2> [/A] [/D] [/C]…] [ASCENDING|DESCENDING][<范围>][FOR<条件>|WHILE<条件>][FIELDS<字段名表>| FIELDS LIKE<通配符>|FIELDS EXCEPT<通配符>]【功能】对当前表中指定范围内、满足条件的记录按指定字段升序或降序重新排序,并将排序结果存入新文件名中。
【说明】①排序结果存入由TO <新文件名>指定的表文件中,系统默认文件扩展名为.DBF。
②在ON子句中的字段名表示排序的关键字段。
当使用一个关键字时,叫“单重排序”;使用多个关键字时,叫“多重排序”。
在多重排序中,关键字有主次之分。
主关键字是指能够唯一标识某个记录的关键字;次关键字是指标识具有某种相同属性的某些记录的关键字。
在关键字表达式中,主关键字排在前面,次关键字排在后面。
VFP基础知识.doc1、V FP基础知识(1) 数据库系统基础知识1) 数据库、数据库管理系统、数据库系统等概念2) 关系模型、关系运算等⑵VFP集成环境1) VFP的用户界面2) VFP的环境设置3) 项目管理器的使用(3) 语言基础与程序设计1) 数据类型和数据存储2) 运算符、函数和表达式3) 命令格式4) 程序控制(分支结构、循环结构的使用)(4) VFP的文件类型2、数据库与表的处理(1) 表的创建与处理1) 表结构的创建与修改2) 记录的增加、修改、删除,记录的定位3) 表的索引,结构夏合索引文件,索引的使用4) 表的使用和工作区,表的打开方式(2) 数据库的创建与处理1) 数据库的创建与使用2) 数据库表的字段属性、表属性3) 表之间关系的创建与修改,相关表之间的参照完整性4) 连接和ODBC的概念3、查询(1) 杏询设计器功能与使用(2) Select-SQL语句的各种应用4、对象模型与事件模型⑴类和对象的概念,类的特点(2) 属性、事件与方法的概念(3) 基类、子类和父类,容器和控件(4) VFP的基类和容器类,基类的最小事件集、属性集(5) 对象的引用方法,对象属性的设置方法(6) 容器层次与类层次中的事件(7) 事件激发的顺序(8) 事件驱动与事件循环5、表单和控件⑴表单向导和表单设计器的使用(2) 表单的数据环境及其属性的设置(3) 表单的设计、处理及其管理(4) 常用对象/控件的创建及其处理:CheckBox,Column,ComboBox,CommandButton,CommandG roup,Container,DataEnviroment,EditBox,Form,FormSet,Grid,Header,Image, Label,ListBox,OptionButton,OptionGroup,Page,PageFrame5Separator,Shape5 Spinner5TextBox5 Timer, ToolBar6、菜单和工具栏(1) 表单的组成和设计,菜单设计器的使用,菜单程序的生成(2) 定制系统工具栏,创建日定义工具栏7、类的设计(1) 用户自定义类的创建与修改(2) 类库文件及其使用⑶类的应用8、应用程序设计(1) 构造应用程序的主程序(2) 应用程序的连编9、常用命令、函数、属性、事件和方法(1) 常用命令CREATE TABLE-SQL,ALTER TABLE-SQL,SELECT,USE,CLOSE TABLES, COPY STRUCTURE,COPY TO,RENNAME TABLE,BROWSE,APPEND,APPENDFROM,GO|GOTO,LOCATE,SEEK,SKIP.CONTINUE,EDIT,DELETE,DELETE-SQL,PACK, RECALL,ZAP,INSERT-SQL5REPLACE,UPDATE-SQL,SET EXCLUSIVE,SET FILTER, SET DELETED,SET INDEX,SET ORDER,GATHER,SCATTER,OPEN DATABASE, DELETE DATABASE,DISPLAY DATABASE,MODIFY DATABASE,VALIDATE DATABASE, SELECT-SQL, DO, DO FORM, REPORT, CALCULATE(2) 常用函数ABS()、ALLTRIM()、ASC()、AT()、BETWEEN。
vfp知识点归纳总结VFP具有许多重要的知识点和技术,以下是对VFP的知识点进行归纳总结:1. 数据库操作:VFP支持多种数据库引擎,包括本地DBF文件、SQL Server、Oracle等,可以通过ODBC、OLEDB等方式连接各种数据库,并且灵活处理数据,包括数据增删改查、事务控制、索引和关联等。
2. 数据表设计:VFP提供了丰富的数据表设计功能,可以定义各种数据类型、字段属性、索引和关联,支持多种数据表操作方式,包括创建、修改、删除、复制、导入和导出等。
3. 查询语句:VFP支持SQL查询语句,可以编写各种复杂的查询语句,包括SELECT、UPDATE、INSERT、DELETE等,可以实现对数据表的灵活查询和更新。
4. 表达式和函数:VFP支持丰富的表达式和函数,包括数学运算、字符串处理、日期时间计算、逻辑判断等,能够实现各种复杂的业务逻辑和数据处理操作。
5. 用户界面设计:VFP提供了丰富的用户界面设计功能,包括窗体、菜单、工具栏、对话框等,可以实现丰富的交互界面,支持多种对控件、事件和布局进行灵活设计和编程。
6. 报表设计:VFP提供了强大的报表设计功能,可以设计各种复杂的报表,包括表格、图形、图表、交叉报表等,支持对数据进行分组、汇总和统计,实现各种复杂的数据分析和报表输出。
7. 图形处理:VFP提供了图形处理功能,包括图像处理、绘图和打印等,可以实现各种复杂的图形操作,包括图像编辑、打印布局、打印预览等。
8. 数据集成:VFP支持将多种数据源进行集成,可以实现各种复杂的数据交换和集成操作,包括数据导入、数据导出、数据同步等。
9. 安全管理:VFP提供了丰富的安全管理功能,包括用户权限、数据加密、访问控制等,能够实现对数据和系统的安全管理。
总结:VFP是一款功能强大的数据库开发工具,具有丰富的数据库操作、用户界面设计、报表设计、图形处理、数据集成、安全管理等功能,是企业级应用开发和管理的首选工具之一。
VFP知识点总结Visual FoxPro(简称VFP)是一种数据库编程语言和集成开发环境,被广泛用于应用程序开发和数据库管理。
下面是关于VFP的主要知识点总结。
1.VFP的数据类型:VFP支持各种数据类型,包括字符型(Character), 数值型(Numeric), 日期型(Date), 逻辑型(Logical)等。
它还支持内置的复合数据类型如数组和对象。
2.VFP的数据操作:VFP提供了丰富的数据操作功能,包括数据的查询(SELECT...FROM...WHERE...等语句),数据的插入(INSERTINTO...VALUES.../INSERTINTO...SELECT...语句),数据的更新(UPDATE...SET...WHERE...语句),数据的删除(DELETEFROM...WHERE...语句)等。
3.VFP的表格和索引:VFP使用表格(Table)来存储数据,可以创建、修改和删除表格。
表格可以包含多个字段,每个字段有相应的数据类型和属性。
VFP还支持索引(Index)的创建,用于提高查询效率。
4.VFP的视图和报表:VFP支持视图(View)的创建和使用,视图是一种虚拟表格,它是由一个或多个实际表格中的数据组成的。
通过视图,可以简化复杂的数据查询操作。
此外,VFP还提供了报表(Report)生成工具,用于创建和打印专业的报表。
5.VFP的编程特性:VFP是一种面向对象的编程语言,支持面向对象的编程范式。
它提供了丰富的编程特性,如变量和常量的定义,条件语句(IF...ELSE...ENDIF),循环语句(DO...LOOP,FOR...ENDFOR),函数和过程的定义等。
此外,VFP还提供了可视化的界面设计工具,方便程序的开发和调试。
6.VFP的数据连接和交互:7.VFP的错误处理和调试:VFP具有良好的错误处理和调试机制,可以捕获和处理运行时错误。
它提供了错误处理语句(TRY...CATCH...FINALLY)、断言语句(ASSERT)和错误日志文件(ERRORLOG)等工具,方便开发者定位和解决问题。
vfp索引的名词解释Visual FoxPro(VFP)是一种基于关系数据库管理系统(RDBMS)的编程语言,用于开发Windows桌面应用程序和数据库应用程序。
在VFP中,索引是一种非常重要的数据结构,用于提高数据库的查询性能和数据访问速度,本文将对VFP索引的相关名词进行解释。
1. 索引索引是一种按照特定规则排序的数据结构,用于加快数据库的查询速度。
在VFP中,索引通常与表关联,根据指定的列或字段值创建。
索引可有助于快速定位和访问数据库中的数据,特别是对于大型数据库或需要频繁查询的表格。
2. 索引文件索引文件是存储索引相关信息的文件,通常与数据库文件分开存储。
索引文件包含了索引键值和对应的行指针,使得查询时能够迅速定位到符合条件的数据。
在VFP中,每个表可以有多个索引文件,每个索引文件对应一个索引。
3. 索引键值索引键值是用于排序和比较的值。
在VFP中,索引键值可以是单个列或多个列的组合,用于指定数据在索引中的位置。
通过使用索引键值,可以快速定位和访问特定数据,而不需要对整个表进行搜索。
4. 主索引主索引是一种特殊的索引,用于唯一地标识表中的每一行。
在VFP中,主索引常常与表的主键关联,确保每一行在主索引中具有唯一的键值。
主索引的创建可以加速根据主键进行检索和修改的操作。
5. 聚集索引聚集索引是按照索引键值对表中的数据进行重新排序的索引。
在VFP中,每个表只能有一个聚集索引。
聚集索引的主要作用是改变表中数据的物理存储顺序,使得邻近键值的数据也能够在磁盘上具有相邻的存储位置,从而提高查询效率。
6. 非聚集索引非聚集索引是在一个单独的数据结构中创建的索引,不改变表中数据的物理存储顺序。
非聚集索引可以根据索引键值快速定位到符合条件的数据行,并返回对应的行指针。
在VFP中,一个表可以有多个非聚集索引。
7. 唯一索引唯一索引是一种保证索引键值在索引中唯一的索引。
在VFP中,唯一索引可以用来确保表中的某个或某些列具有唯一性,避免重复数据的插入。
VFP讲稿(索引)索引一、索引的概念。
索引文件和表文件分别存储。
索引不改变表中记录的物理顺序。
二、四种索引类型:●主索引主索引不允许表中有重复的关键字,一个表只能有一个主索引。
●候选索引候选索引不允许表中有重复的关键字,一个表可有多个候选索引。
●唯一索引唯一索引允许表中有重复的关键字,但索引项不重复。
一个表可有多个唯一索引。
●普通索引普通索引允许表中有重复的关键字,索引项也对应重复。
一个表可有多个普通索引。
三、三种索引文件:●结构复合索引文件索引文件的扩展名是cdx,主名与表文件的主名相同。
一个结构复合索引文件可包含多个索引。
一个表只有一个结构复合索引文件。
●*非结构复合索引文件索引文件的扩展名是cdx,主名不能与表文件的主名相同。
一个非结构复合索引文件可包含多个索引。
一个表可有多个非结构复合索引文件。
●*独立索引文件索引文件的扩展名是idx。
一个索引文件只包含一个索引。
一个表可有多个独立索引文件。
四、建立索引1.在表设计器中建立索引只能建立结构复合索引文件。
2.用命令建立索引①结构复合索引●创建索引INDEX ON <关键字表达式> TAG <索引标识>[FOR <条件>][ASCENDING|DESCENDING][UNIQUE|CANDIDATE][ADDITIV E][COMPACT]说明:同一个表的所有索引都可保存在同一个索引文件中;索引文件的主名与表文件的主名相同;打开表时,索引文件自动打开。
主索引和候选索引必须属于该索引。
*②非结构复合索引●创建索引INDEX ON <关键字表达式> TAG <索引标识> OF <索引文件名> [FOR <条件>][ASCENDING|DESCENDING][UNIQUE][ADDITIVE][COMPACT] 说明:同一个表的所有索引都可保存在同一个索引文件中;索引文件的主名与表文件的主名不能相同;当在索引文件中创建第二个索引时,原索引文件可以不预先打开;索引文件不能自动打开;*③独立索引(.IDX)●创建索引INDEX ON <关键字表达式> TO <索引文件名>[ FOR <条件>][UNIQUE][COMPACT][ASCENDING][ADDITIVE]●打开表和索引USE <表名> INDEX <索引文件名序列>●打开索引SET INDEX TO <索引文件名> [ADDITIVE]●关闭索引SET INDEX TO说明:每一个索引都有一个独立的索引文件;索引文件的主名与表文件的主名可相同也可不同;只能升序;打开表时,索引文件不能自动打开。
VFP重要知识点1、VFP数据组织的层次由大到小依次是:数据库、表、记录和字段。
2、关系模型1)关系术语关系:二维表,Visual FoxPro的一个表文件。
元组:表中一行,记录。
属性:表中的一列,字段。
2)关系的基本运算选择:从关系中找出满足条件的记录。
(行)投影:从关系中选择若干属性组成新的关系。
(列)连接:将两个关系通过公共属性名连接成一个新的关系。
3、数据类型:字符型C、数值型N、日期型D、逻辑型L、备注型M、通用型G日期时间型、货币型、二进制字符型和二进制备注型。
4、VFP6变量名命名约定●使用字母,下划线和数字命名。
一般建议不采用汉字命名;●命名以字母或下划线开头;除自由表中字段名、索引的TAG标识名最多只能10个字符外,其他的命名可使用1~128个字符;●避免使用Visual FoxPro的保留字;●文件名的命名应遵循操作系统的约定。
5、对内存变量的赋值操作可以使用STORE命令或=进行。
6、显示内存变量可以使用LIST MEMORY或DISPLAY MEMORY命令。
前者为不分屏显示,后者为分屏显示。
7、内存变量可以使用SA VE命令保存,也可以使用RELEASE命令和CLEAR命令删除,还可以使用RESTORE 命令恢复。
8、数组必须先定义后使用,数组元素的赋值操作与内存变量的赋值操作基本相同。
DIMENSION | DECLARE <数组名1>(<数值表达式1>[,<数值表达式2>])9、运算符按其运算的结果可以分为五类:算术运算符、关系运算符、逻辑运算符、字符串运算符、日期运算符。
运算符的优先级有高低之分,最高的是算术运算符、字符串运算符和日期运算符,其次是关系运算符,最低的是逻辑运算符。
10、4、范围:指定命令可以操作的记录集。
范围有下列四种选择ALL 当前表中的全部记录。
NEXT <n> 从当前记录开始的连续N条记录。
RECORD <n> 当前表中的第N号记录。
三、Visual FoxPro数据库的基本操作(一)1.数据库和表的建立、修改与有效性检验:(1)表结构的建立与修改。
(2)表记录的浏览、增加、删除与修改。
(3)创建数据库,向数据库添加或从数据库删除表。
(4)设定字段级规则和记录级规则。
(5)表的索引:主索引、候选索引、普通索引、唯一索引。
2.多表操作:(1)选择工作区。
(2)建立表之间的关联:一对一关联、一对多关联。
(3)设置参照的完整性。
(4)表的联接JOIN:内部联接外部连接:左联接、右联接、完全联接。
(5)建立表间临时关系。
3.建立视图与数据查询:(1)查询文件的建立、执行与修改。
(2)视图文件的建立、查看与修改。
(3)建立多表查询。
综合知识:①文件类型②各种设计器和向导。
③工作方式:交互方式(命令方式、可视化操作)和程序运行方式。
讲解:(一) 文件类型1、数据库文件(2)表文件2(1)表单文件(3)菜单文件(.MNX和.MNT)3、程序文件(二) 各种设计器和向导。
(参考P69)1. 向导:是一种快捷设计工具。
2. 设计器:设计器一般比向导具有更强的功能。
3. 生成器:它的主要功能是,在VFP应用程序的构件中生成并加入某类控件。
(三) VFP 6.0的工作方式交互方式(命令方式、可视化操作)和程序运行方式。
1、菜单操作方式根据所需的操作从菜单中选择相应的命令(与WORD类似)。
每执行一次菜单命令,命令窗口中一般都会显示出与菜单对应的命令内容。
利用工具菜单中的向导可以很方便地完成常规任务。
2、命令交互方式根据所要进行的各项操作,采用人机对话方式在命令窗口中按格式要求逐条输入所需命令,按回车后,机器逐条执行。
3、程序执行方式先在程序编辑窗口中编完程序,再从程序菜单中选择执行,或从命令窗口中输入DO 命令,让机器执行。
(四) 设置工作环境?如何保存所作的修改1、步骤如下:⑴从“工具”菜单选择“选项”⑵在“选项”对话框中选择适当的选项卡⑶在指定的选项卡中选择需要设置的选项⑷最后单击“确定”按钮2、使用SET命令(设置临时工作环境)SET DEFAULT TO [Path] : 设置默认的工作目录SET DATE TO: 设置日期格式一、表的建立、修改:1. 表的概念表(数据表):是指存放在磁盘文件中的一张二维表。
操作考试重点(vfp中除了文件名等,都不区分大小写)表(dbf)通过菜单打开的方式时一定要看一看是否是独占的方式打开,否则有可能不能修改表,因为它是以只读的方式打开的。
索引:表设计器,命令[注意:索引名和索引表达式是两回事]关联:(一定要把书上的记住,在用join…in…建立关联的时候,join的顺序与on的顺序相反,例如:建立表供应商、订购单、职工、仓库的关联,“供应商join 订购单join 职工join 仓库on 职工.仓库号=仓库.仓库号on 订购单.职工号=职工.职工号on供应商.供应商号=订购单.供应商号”),在编辑关联的参照完整性的时候一定要记得先清理数据库,否则可能无法编辑参照完整性SQL与查询和视图(重要)基本查询语句的结构:select [distinct]字段名from 表名[where 条件][group by][having 条件][order by 字段(desc降序)]注意:Having 必须与group by 连用要使查询结果只显示前几项,可以用top,但是top必须与order by连用,例如:“select *top 3(也可以是百分数)from 职工order by 工资desc”查询结果的输出将查询结果存放到数组中into array +文件名将查询结果存放到临时文件中into cursor +文件名将查询结果存放到永久表中into dbf/table +表名将查询结果存放在文本文件中to file +文本名将查询结果直接输出到打印机to printerSQL的数据操纵功能表的建立:create table+表名[字段名]表的删除:drop table+表名(物理删除)记录的删除:delete from+表名+[where +条件]插入记录:insert into 表名[字段名] values(值)更新记录:update 表名set 字段名=新值表结构的修改:alter table +表名+add+字段名(增加字段)alter table +表名+alter+字段名(修改字段)alter table +表名+drop+字段名(删除字段)查询(qpr):新建(菜单和命令(create query)),打开方式(菜单和命令(do 查询名.qpr 注意:一定要跟后缀))查询的功能:查询所需的记录(查询的字段可以是全部,也乐意是部分,还可以重新运算的新表达式),可以查看所需要的SQL语句视图:与查询的不同点:视图必须在数据库里建立新建了视图之后不会产生新文件,而是保存在数据库中,视图可以用于数据的更新,所以视图设计器里多了一个更新选项卡,视图中也没有查询去向这一个选项表单(scx)表单中的caption(显示在屏幕上,便于用户识别)和name(引用表单的火某控件时使用的名字)属性的区别要注意使用向导建立的表单时什么样子编辑框注意readonly属性文本框注意passwordchar 表格控件列的数量columncount 数据源readsourcetype菜单(mnx mpr mpx均是菜单文件的扩展名,系统首先把编写的内容存放在mnx的文件中,然后自动编译mpr的文件,产生可运行的mpx文件)菜单的退出按钮:命令类型代码为:set sysmenu to default报表(frx)要会使用向导建立报表报表结构从上之下:标题、页标头、细节、页注脚。
考试⼤编辑与考⽣来共同探讨:VFP表的关联 所谓关联,就是当前表记录指针的移动,能引起别的表按某种条件相应地移动记录指针。
建⽴关联后,称当前表为主⽂件,与主⽂件建⽴关联的表为⼦⽂件。
1.⼀对⼀的关联 命令格式是: SET RELATION TO[<关联表达式l>]INTO(⼯作区号1)l(别名1) [,(关联表达式2>INTO(⼯作区号2>I(别名2>]…][AI)DITIVE] 该命令使当前表与INTO⼦句所指定的⼯作区上的表按表达式建⽴关联。
命令中各⼦句的含义是: (1)INTO⼦句指定⼦⽂件所在的⼯作区,<关联表达式>⽤于指定关联条件。
可以使⽤索引表达式建⽴关联。
⾸先在⼦⽂件中按某表达式建⽴索引并指定为主索引,然后使⽤某关联表达式建⽴关联,当关联成功后,每当主⽂件的记录指针移动时,Visual Fox—Pro就在⼦⽂件中查找索引表达式的值与主⽂件中关联表达式的值相匹配的记录,若找到了,则记录指针指向找到的第⼀条记录,如没有找到,则记录指针指向⽂件尾。
注意,索引表达式和关联表达式不⼀定相同,当然⼤多数情况下是相同的。
也可以使⽤数值表达式建⽴关联。
当主⽂件的记录指针移动时,⼦⽂件的记录指针移⾄ 和主⽂件中数值表达式值相等的记录。
(2)若选择ADDITIVE,则在建⽴新的关联的同时保持原先的关联,否则会去掉原先的关联。
(3)省略所有选项时,SET RELATION TO命令将取消与当前表的所有关联。
2.⼀对多的关联 前⾯介绍了⼀对⼀的关联,这种关联只允许访问⼦⽂件满⾜关联条件的第⼀条记录。
如果⼦⽂件有多条记录和主⽂件的某条记录相匹配,当需要访问⼦⽂件的多条匹配记录时,就需要建⽴⼀对多的关联。
命令格式是: SET SKIP TO[(别名1)[,(别名2)…] 该命令使当前表和它的⼦表建⽴⼀对多的关联。
命令中各⼦句的含义是: (1)别名指定⼦⽂件所在的⼯作区。
论VFP中的索引索引的作用类似于一本图书的章节内容目录——可以通过其准确查询相关内容和页码。
因此,在关系数据库中索引相当于一个表文件,在VFP中占有举足轻重的地位,值得我们探讨。
标签:VFP索引;索引文件1 索引简介一般情况下,表中记录的顺序由数据录入的先后顺序而定,并用记录号予以标识,因此,表中的记录无规律。
要想使无规律的记录有规律,VFP中提供了两种方法:一是排序法,二是索引法。
排序是对表中记录进行整理,按指定的关键字段排序,并将排序结果形成一个新的数据表,属于物理排序。
其缺点是:当原始的表文件被修改后,必须重新排序,排序时产生的新表文件,占用磁盘空间,当表较大时,排序处理太耗时,因此此法较少使用。
索引是根据某一字段的值进行逻辑排序,VFP在输出记录时,按照索引的顺序分别读取每一条记录,而这些记录的实际储存位置并未改变。
一般来讲,在数据库中,索引不会自动生成新的表文件,只是会生成有用的索引新文件。
但是,不能单独利用索引新文件来进行搜索,必须在表文件的密切配合下,才能加以利用。
因此,在一定意义上,可以将索引的优势概括为三点:(1)在数据检索上,利用索引使得搜索速度得到了质的提升,节约了搜索过程的时间;(2)可以精确定位数据库中每一行,甚至每一个字符的唯一性;(3)能够加强表与表之间的关联性,同时也加快了他们之间的连接。
2 索引的分类索引是根据某一特定关键字进行排序的,因此根据对关键字的不同要求,可以将索引分为以下四种不同的类型。
(1)主索引:主索引的关键字不允许出现重复值,因此,只能在数据库表中建立主索引,并且,一个数据库也只能建立唯一的主索引。
(2)候选索引:一般情况下,一个表中可以建立若干个候选索引,但是,候选索引却不允许关键字出现重复值。
(3)普通索引:普通索引可以认为是候选索引的进一步扩展,既允许一个表建立若干个普通的索引,同时也允许索引的关键出现重复值。
所以,可以将普通索引归类为默认类型的索引。
查询、统计和多表操作表文件中记录的顺序通常是人们在输入数据时按输入的先后次序存储的,并以记录号表示,这个顺序只反映了存放数据的先后顺序。
但在数据处理实际应用中,由于数据库十分庞大,为了高效方便地处理数据,常常需要对记录位置进行重新整理,并按某种指定的顺序对表记录进行处理。
例如,对学生成绩表按学号为序显示输出记录,以便查找;或按总分高低为序输出记录,以便进行比较等等。
对记录位置进行重新整理通常有排序和索引两种方法。
排序是对表文件进行物理位置的整理;索引是对表文件进行逻辑位置的整理。
一、排序表文件的排序操作就是根据表的某个关键字或关键字表达式重新排列表记录的位置。
执行排序操作后将生成一个新的表文件(称为:排序文件)。
新文件的结构和数据可以与源文件完全相同,也可以只取源文件的部分字段。
新文件不改变源文件内容和记录顺序。
【命令】 SORT TO<新文件名>ON <字段名1>[/A] [/D] [/C] [,<字段名2> [/A] [/D] [/C]…] [ASCENDING|DESCENDING][<范围>][FOR<条件>|WHILE<条件>][FIELDS<字段名表>| FIELDS LIKE<通配符>|FIELDS EXCEPT<通配符>]【功能】对当前表中指定范围内、满足条件的记录按指定字段升序或降序重新排序,并将排序结果存入新文件名中。
【说明】①排序结果存入由TO <新文件名>指定的表文件中,系统默认文件扩展名为.DBF。
②在ON子句中的字段名表示排序的关键字段。
当使用一个关键字时,叫“单重排序”;使用多个关键字时,叫“多重排序”。
在多重排序中,关键字有主次之分。
主关键字是指能够唯一标识某个记录的关键字;次关键字是指标识具有某种相同属性的某些记录的关键字。
在关键字表达式中,主关键字排在前面,次关键字排在后面。
执行排序操作时,先按主关键字排列,当在主关键字出现相同字段值时,再按次关键字排序。
③关键字段可以是N型、C型或D型,但不能是L型、M 型和G型数据。
即不可选用备注型或通用型字段来排序。
其中:N型以数值大者为大;C型以拼音顺序A~Z;D型以后面的日期为大。
④参数/A或ASCENDING表示升序排序;/D或DESCENDING表示降序排序。
省略时,表示升序;/C只适用于C型数据,选择/C时,不区分大小写字母,省略/C时,小写字母大于大写字母。
⑤省略<范围>、FOR<条件>/WHILE<条件>等子句,则对所有记录排序。
⑥FIELDS子句指新表中包含的字段,省略时,默认新表包含源表中所有字段。
<字段名表>可以包含其他工作区中的表文件字段,但必须使用别名调用格式:工作区号->字段名;或:别名->字段名;或:别名.字段名。
【例5-1】对表文件“学生.DBF”中的男生按入校总分降序排序,生成新文件“入校总分.DBF”,且新表中只包含学号、姓名、入校总分3个字段。
USE 学生BROWSE && 显示结果如图5-1所示。
图5-1 学生.DBF显示结果SORT TO 入校总分 ON 入校总分/D FIELDS 学号,姓名,入校总分USE 入校总分BROWSE && 显示结果如图5-2所示。
图5-2 入校总分.DBF显示结果【例5-2】对“教师.DBF”记录中享受政府津贴的教师按姓名升序排序,生成新文件“政府津贴.DBF”。
USE 教师BROWSE && 显示结果如图5-3所示。
图5-3 教师.DBF显示结果SORT TO 政府津贴 ON 姓名 FOR 政府津贴USE 政府津贴BROWSE && 显示结果如图5-4所示。
图5-4 政府津贴.DBF显示结果二、索引5.2.1 索引的概念Visual FoxPro的索引文件由指向.DBF文件记录的指针构成,这些指针指向表文件中的记录,在逻辑上按照指定索引关键字排序,索引并不改变表记录的物理顺序,只是与表记录建立一种逻辑关系。
索引和表(.DBF)分别存储在两个文件中。
在索引文件中,只包含索引关键字和记录号两个字段,每个关键字值对应表文件中的一个记录号,利用记录指针的移动确定记录的逻辑顺序。
索引是一种不可显示文件。
如果用户希望按照某种特定顺序查看和访问表记录,例如按总分从高到低的顺序查看学生表中的记录,可以按总分索引,然后根据这个索引关键字设置表中记录的顺序,并且按新的顺序访问表记录。
使用索引可以加速对表的查看和访问操作,这类似于一本书按目录快速查找内容。
1. 物理顺序、逻辑顺序与使用顺序记录储存在表文件中的实际排列顺序,称为物理顺序。
执行排序操作后,记录在排序文件中形成的顺序就是一种物理顺序。
按照某个关键字或关键字表达式在关键字与记录号之间建立的一种逻辑上的顺序,称为逻辑顺序。
执行索引操作后,索引关键字与记录号建立的顺序就是一种逻辑顺序。
实际操作的记录顺序,称为使用顺序。
使用顺序可以是物理顺序,也可以是逻辑顺序。
记录指针在表记录中的移动是按使用顺序进行的。
2. 索引的分类Visual FoxPro的索引分为单索引和复合索引。
只包含一个索引项的索引文件,称为单索引文件(又叫独立索引文件)。
单索引文件扩展名为.IDX。
包含有多个索引项的索引文件,称为复合索引文件。
在复合索引文件中每个索引项都有一个索引标识(Index Tag),代表索引的名称。
复合索引文件自动被压缩,以压缩方式储存,占有较小空间。
复合索引文件在使用时必须打开,而且在更新表文件数据时,必须使其处于活动状态。
复合索引文件扩展名为.CDX。
根据功能不同,复合索引可以分为主索引、候选索引、普通索引和唯一索引4种类型。
(1)主索引主索引是设定有主关键字的索引,主关键字能唯一确定记录的顺序,它不允许在指定字段中出现重复值。
如果在任何已经包含了重复数据的字段中指定主索引,Visual FoxPro 将返回一个错误信息。
例如,将姓名字段作为主索引关键字,若出现同名同姓人员,也即出现了关键字重复值,这样的关键字就不是主关键字。
主索引仅适用于表表,一个数据表只能创建一个主索引,自由表不能创建主索引。
(2)候选索引像主索引一样候选索引要求字段值的唯一性,它不包含 NULL值或重复值。
如果在任何包括重复数据的字段中指定候选索引,Visual FoxPro 将返回一个错误信息。
一个数据表或自由表中都可以建立多个候选索引。
(3)普通索引普通索引不要求字段值具有唯一性,可以决定记录的处理顺序,且允许字段中出现重复值。
一个数据表或自由表中可以有多个普通索引。
(4)唯一索引不允许两个记录具有相同的字段值,对于关键字值相同的记录,索引中只列入其中的第一个记录。
一个数据表或自由表中可以有多个普通索引。
复合索引文件分为有结构的结构复合索引文件和无非结构的独立复合索引文件。
结构复合索引文件的由Visual FoxPro自动命名,与表文件同名,它随表文件的打开而打开,在对表增加或删除记录时系统会自动维护。
独立复合索引文件与表文件不同名,且不随表文件的打开而打开。
打开独立复合索引文件要使用SET INDEX命令。
3. 永久关系与参照完整性主索引用于表表中主表或“被引用”表,在一个永久关系中建立参照完整性。
(1)永久关系指表中表之间的一种保存在数据表文件中的关系。
在表设计器中可以看到连接两个表索引之间的关系线。
(2)参照完整性在永久关系的相关表中,如果只对其中的一个表进行插入、更新或删除操作,就会影响到数据的完整性。
因此,参照完整性属于表表间规则,用于控制数据的一致性。
为了保持参照完整性,可以利用“参照完整性生成器”建立规则,控制记录在相关表中的插入、更新或删除。
5.2.2 索引的建立1. 命令方式【命令】 INDEX ON <索引关键字|索引关键字表达式> TO <单索引文件名> |TAG<索引标识名> [OF <复合索引文件名> ][FOR<条件>] [COMPACT] [ASCENDING|DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE]【功能】对当前表文件按指定关键字建立索引或增加索引标识。
【说明】①<索引关键字|索引关键字表达式> :指定建立索引文件的关键字。
可以是一个字段,也可以是多个字段组成的关键字表达式,多个字段之间用“十”或“一”连接,主关键字在最前面,且数据类型要相同。
<索引关键字>可以是N型、C型、D型。
②TO 子句建立单索引(.IDX)。
TAG子句建立复合索引(.CDX)及索引标识。
选项COMPACT 指定单索引为压缩文件。
③OF子句指定独立复合索引文件名。
缺省该子句表示建立结构复合索引文件。
④FOR<条件> 对符合条件的记录建立索引,缺省该条件则对所有记录建立索引。
⑤ASCENDING表示升序索引;DESCENDING表示降序索引;UNIQUE表示建立唯一索引;TAG CANDIDATE表示候选索引。
⑥ADDITIVE表示建立索引文件时,并不关闭先前的索引。
⑦索引文件不能单独使用,必须同表文件一起使用。
⑧该命令默认建立普通索引型索引文件。
【例5-3】对学生.DBF按入校总分建立单索引文件。
USE 学生INDEX ON 入校总分 TO ZFLIST【例5-4】学生.DBF建立复合索引,其中包含3个索引:(1)以姓名降序排列,索引标识为普通索引。
USE 学生INDEX ON 姓名 TAG xm DESCENDING**建立复合索引文件学生.CDX,xm为普通索引标识LIST(2)以性别升序排列,性别相同时以入校总分升序排列,索引标识为普通索引。
INDEX ON 性别+STR(入校总分,3 TAG xbzfa**关键字为性别+STR(入校总分,3,普通索引标识xbzfa加入学生.CDX中LIST(3)以性别升序排列,性别相同时以出生年月降序排列,索引标识为候选索引。
INDEX ON 性别-DTOC(出生年月 TAG xbcsd CANDIDATE** xbcsd为候选索引型索引标识,索引标识xbcsd加入学生.CDXLIST2. 菜单方式建立索引【菜单】单击“文件”菜单→单击“打开”命令→选中“表”选项→“显示”菜单→表设计器→“索引” 选项卡→“索引名”→“排序”→“类型”→“表达式”→单击“确定”按钮。
如图5-5所示。
图5-5 表设计器中”索引”选项卡【例5-5】利用表设计器建立或修改索引。
(1)选择“文件”菜单中的“打开”命令,选择表文件“学生.DBF”。