第5讲 数据表与数据库-3.ppt

上传人:s****8 文档编号:69247981 上传时间:2023-01-01 格式:PPT 页数:35 大小:2.21MB
返回 下载 相关 举报
第5讲 数据表与数据库-3.ppt_第1页
第1页 / 共35页
第5讲 数据表与数据库-3.ppt_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《第5讲 数据表与数据库-3.ppt》由会员分享,可在线阅读,更多相关《第5讲 数据表与数据库-3.ppt(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、可视化程序设计可视化程序设计Visual FoxPro 第第3章章 数据表与数据库数据表与数据库 课前回顾课前回顾数据库表与自由表的区别:数据库表与自由表的区别:(1)数据库表可以使用长表名和长字段名()数据库表可以使用长表名和长字段名(128)个字符,)个字符,自由表是短文件名,字段名的最大长度是自由表是短文件名,字段名的最大长度是10个字符。个字符。(2)可以为数据库表设置字段级规则和记录级规则,自由表)可以为数据库表设置字段级规则和记录级规则,自由表不能。不能。(3)数据库表可设置主索引、候选索引、唯一索引和普通索)数据库表可设置主索引、候选索引、唯一索引和普通索引,参照完整性和表之间的

2、关联,自由表只能设置候选索引、引,参照完整性和表之间的关联,自由表只能设置候选索引、唯一索引和普通索引。唯一索引和普通索引。3.5 表的排序与索引表的排序与索引3.6 表的查询表的查询3.7 表的统计与汇总表的统计与汇总3.5 表的排序与索引表的排序与索引 表文件中的记录通常是按其表文件中的记录通常是按其输入先后输入先后的的物理物理顺序顺序排列存放的,因此,表中记录的排列是没有排列存放的,因此,表中记录的排列是没有规则的。使用排序或索引技术可以使表记录按照规则的。使用排序或索引技术可以使表记录按照一定的顺序排列。一定的顺序排列。3.5.1 表的排序表的排序 排序是根据表的某些字段值从排序是根据

3、表的某些字段值从物理上重新排列记录物理上重新排列记录,产,产生一个生一个新表新表。新表与原表内容相同,只是记录的排列顺序不。新表与原表内容相同,只是记录的排列顺序不同。同。SORT TOSORT TO ONON /A/D/C1/A/D/C ,/A/D/C2/A/D/C FIELDS FIELDS FOR FOR ASCENDING|DESCENDINGASCENDING|DESCENDING对当前表文件按照指定的字段排序,并产生一个新的表文件。对当前表文件按照指定的字段排序,并产生一个新的表文件。升序升序/降序降序不区分大小写不区分大小写多重排序中,对所有排序多重排序中,对所有排序字段按升(降

4、)序排列字段按升(降)序排列【例例3.323.32】对对“学生学生”表按表按“出生年月出生年月”升序排序,生成新表升序排序,生成新表“学学生出生年月生出生年月”,新表中包含学号、姓名、性别、出生年月字段。,新表中包含学号、姓名、性别、出生年月字段。USE USE 学生学生SORT ONSORT ON 出生年月出生年月 TO TO 学生出生年月学生出生年月;FIELDS FIELDS 学号学号,姓名姓名,性别性别,出生年月出生年月USE USE 学生出生年月学生出生年月 BROWSE BROWSE 【例例3.33】对对“学生学生”表先按表先按“性别性别”升序排序,再按升序排序,再按“入入学成绩学

5、成绩”降序排序,生成新表降序排序,生成新表“学生入学成绩学生入学成绩”。USE 学生学生SORT ON 性别性别,入学成绩入学成绩/D TO 学生入学成绩学生入学成绩USE 学生入学成绩学生入学成绩BROWSE3.5.2 表的索引表的索引1索引的概念索引的概念 索引是按照表文件中某个关键字段或表达式,以升序或索引是按照表文件中某个关键字段或表达式,以升序或降序的排列方式对表中的记录进行降序的排列方式对表中的记录进行逻辑排序。逻辑排序。索引不改变表中数据的物理顺序,而是另外建立一个索索引不改变表中数据的物理顺序,而是另外建立一个索引文件。引文件。按入学成绩按入学成绩索引生成的索引生成的索引文件索

6、引文件按入学成绩按入学成绩排序生成的排序生成的表?表?排序与索引的区别:排序与索引的区别:(1)索引文件的记录号值没改变。)索引文件的记录号值没改变。(2)索引文件只包含索引关键字值和记)索引文件只包含索引关键字值和记录原表中的记录号两个字段。录原表中的记录号两个字段。(3)索引文件必须和原数据表同时使用。)索引文件必须和原数据表同时使用。(4)修改表中的记录数据后,系统会自)修改表中的记录数据后,系统会自动更新索引文件。动更新索引文件。2索引的类型索引的类型(1)按功能分:)按功能分:索引类型索引类型功能功能建立索引建立索引的个数的个数主索引主索引指定的字段或表达式中指定的字段或表达式中不允

7、许出现重复值不允许出现重复值,只,只能在能在数据库表数据库表中建立中建立1个个候选索引候选索引指定的字段或表达式中指定的字段或表达式中不允许出现重复值不允许出现重复值,在,在数据库表和自由表数据库表和自由表中都可以建立中都可以建立多个多个惟一索引惟一索引允许指定的字段或表达式存在重复值,但允许指定的字段或表达式存在重复值,但重复重复值在索引文件中只出现一次值在索引文件中只出现一次,即只保留,即只保留第一次第一次出现的重复值出现的重复值多个多个普通索引普通索引允许指定的字段或表达式的值重复,并且索引允许指定的字段或表达式的值重复,并且索引文件中也文件中也允许出现重复值允许出现重复值多个多个(2)

8、按文件扩展名分类)按文件扩展名分类 单索引文件单索引文件是根据一个关键字或关键字表达式建立的是根据一个关键字或关键字表达式建立的索引文件,其扩展名为索引文件,其扩展名为.IDX。单索引文件不会随表的打开。单索引文件不会随表的打开而自动打开。而自动打开。复合索引文件复合索引文件可以包含多个索引,扩展名为可以包含多个索引,扩展名为.CDX,可,可分为分为结构复合索引文件结构复合索引文件及及非结构复合索引文件非结构复合索引文件两类。两类。结构复合索引文件与表文件的结构复合索引文件与表文件的主文件名相同主文件名相同,会自动,会自动随着表文件同步打开、关闭和更新。在表设计器中创建的随着表文件同步打开、关

9、闭和更新。在表设计器中创建的索引均为结构复合索引。索引均为结构复合索引。非结构复合索引文件主文件名与表文件非结构复合索引文件主文件名与表文件主文件名不同主文件名不同,不会随表的打开而打开。不会随表的打开而打开。3 3建立索引文件建立索引文件 在索引文件中,结构复合索引文件既可以在表设计器在索引文件中,结构复合索引文件既可以在表设计器中建立,又可以使用命令建立,单索引文件和非结构复合中建立,又可以使用命令建立,单索引文件和非结构复合索引文件只能使用命令建立。索引文件只能使用命令建立。(1 1)用表设计器创建索引)用表设计器创建索引 在在“表设计器表设计器”中建立的索引是结构化复合索引中建立的索引

10、是结构化复合索引.CDX.CDX。其索引的种类可以是主索引、候选索引、普通索引和惟一其索引的种类可以是主索引、候选索引、普通索引和惟一索引,默认是普通索引。索引,默认是普通索引。【例例3.343.34】在在“教学教学”数据库的数据库的“学生学生”表中,按表中,按“学号学号”字段的升序建立主索引,按字段的升序建立主索引,按“出生年月出生年月”字段的降序建字段的降序建立普通索引。立普通索引。选择索引选择索引类型类型弹出表达弹出表达式生成器式生成器主索引主索引(2)命令方式命令方式INDEX ON TO|TAG OF ASCENDING|DESCENDING UNIQUE|CANDIDATE ADD

11、ITIVE 为打开的表建立索引文件或在复合索引文件中添加索引标识为打开的表建立索引文件或在复合索引文件中添加索引标识建立单索引建立单索引文件文件建立结构复建立结构复合索引文件合索引文件建立非结构建立非结构化复合索引化复合索引文件文件升序或降序,升序或降序,默认升序默认升序建立唯一索引建立唯一索引或候选索引或候选索引建立新索引建立新索引时,不关闭时,不关闭原来打开的原来打开的索引索引【例例3.353.35】将学生表按将学生表按“性别性别”和和“出生年月出生年月”字段建立单索引文件。字段建立单索引文件。USE USE 学生学生INDEX ON INDEX ON 性别性别+DTOC(+DTOC(出生

12、年月出生年月)TO)TO 性别出生性别出生LIST LIST 学号学号,姓名姓名,性别性别,出生年月出生年月【例例3.373.37】将学生表按将学生表按“入学成绩入学成绩”、“专业专业”建建立非结构复合索引,索引文件名为学生立非结构复合索引,索引文件名为学生1 1。USE USE 学生学生INDEX ON INDEX ON 入学成绩入学成绩 TAG TAG 入学成绩入学成绩 OF OF 学生学生1 1INDEX ON INDEX ON 专业专业 TAG TAG 专业专业 OF OF 学生学生1 1LIST LIST 学号学号,姓名姓名,性别性别,入学成绩入学成绩,专业专业【例例3.363.36

13、】将学生表按将学生表按“姓名姓名”建立结构复合建立结构复合索引,该索引为候选索引。索引,该索引为候选索引。USE USE 学生学生INDEX ON INDEX ON 姓名姓名 TAG TAG 姓名姓名 CANDIDATECANDIDATELIST LIST 学号学号,姓名姓名,性别性别,出生年月出生年月4打开与关闭索引打开与关闭索引 刚建立的索引文件处于打开状态;刚建立的索引文件处于打开状态;结构复合索引文件在打开表的同时会自动打开;结构复合索引文件在打开表的同时会自动打开;单索引和非结构复合索引文件必须由用户打开单索引和非结构复合索引文件必须由用户打开。(1)使用命令打开索引)使用命令打开索

14、引 USE INDEX 在打开表的同时打开在打开表的同时打开中列出的索引文中列出的索引文件,并默认第一个索引文件为控制索引文件。件,并默认第一个索引文件为控制索引文件。SET INDEX TO 在表已经打开后,打开在表已经打开后,打开中列出的索引中列出的索引文件,并默认第一个索引文件为控制索引文件。文件,并默认第一个索引文件为控制索引文件。(2)关闭索引文件)关闭索引文件 USE 关闭表的同时关闭所有打开的索引文件。关闭表的同时关闭所有打开的索引文件。SET INDEX TO 关闭除结构复合索引文件外的索引文件。关闭除结构复合索引文件外的索引文件。5 5指定控制索引指定控制索引 打开单索引文件

15、时,默认第一个索引文件为控制索引文件打开单索引文件时,默认第一个索引文件为控制索引文件 打开复合索引文件时,必须重新指定控制索引。打开复合索引文件时,必须重新指定控制索引。SET ORDER TOSET ORDER TO|TAG TAGOFOF ASCENDING|DESCENDING ASCENDING|DESCENDING【功能功能】为打开的文件重新指定控制索引。为打开的文件重新指定控制索引。SET ORDER TOSET ORDER TO SET ORDER TO 0 SET ORDER TO 0 取消当前的控制索引,表中记录按物理顺序显示。取消当前的控制索引,表中记录按物理顺序显示。指

16、定打开索引文件时指定打开索引文件时“索引文件表索引文件表”中的索引中的索引文件序号为控制索引。文件序号为控制索引。指定该单索引为指定该单索引为控制索引。控制索引。指定该索引标指定该索引标识为控制索引识为控制索引【例例3.393.39】“学生学生”表中已建立结构复合索引,包含表中已建立结构复合索引,包含“学号学号”、“姓名姓名”和和“出生年月出生年月”三个索引标识,其中三个索引标识,其中“出生年月出生年月”按降序索引。利按降序索引。利用命令按不同的索引标识显示记录。用命令按不同的索引标识显示记录。USE USE 学生学生&结构复合索引文件结构复合索引文件“学生学生.CDX.CDX”自动打开自动打

17、开SET ORDER TO TAG SET ORDER TO TAG 学号学号LIST&LIST&按学号升序显示记录按学号升序显示记录SET ORDER TO TAG SET ORDER TO TAG 姓名姓名LIST&LIST&按姓名升序显示记录按姓名升序显示记录SET ORDER TO TAG SET ORDER TO TAG 出生年月出生年月LIST&LIST&按出生年月降序显示记录按出生年月降序显示记录【例例3.403.40】“教师教师”表已按表已按“教师号教师号”和和“职称职称”建立单索引,使用命令打开建立单索引,使用命令打开索引文件并显示记录。索引文件并显示记录。USE USE 教

18、师教师SET INDEX TO SET INDEX TO 教师号教师号,职称职称&打开单索引文件打开单索引文件“教师号教师号.IDX.IDX”和和“职称职称.IDX.IDX”LISTLIST&按教师号索引显示记录按教师号索引显示记录SET ORDER TO 2SET ORDER TO 2LIST LIST&按职称索引显示记录按职称索引显示记录6索引文件更新索引文件更新 REINDEX 将所有打开的索引文件中的索引或索引标识按当前数据将所有打开的索引文件中的索引或索引标识按当前数据表的内容重新索引。表的内容重新索引。7删除索引标识删除索引标识 DELETE TAG ALL DELETE TAG

19、删除结构复合索引文件中的索引标识。删除结构复合索引文件中的索引标识。ALL:表示删除所有索引标识。:表示删除所有索引标识。1用命令用命令“INDEX ON 姓名姓名 TAG index_name UNIQUE”建立索引,建立索引,其索引其索引类类型是型是 A.主索引主索引 B.候候选选索引索引 C.普通索引普通索引 D.惟一索引惟一索引2以下关于主索引和侯选索引的叙述正确的是以下关于主索引和侯选索引的叙述正确的是 A)主索引和侯选索引都能保证表记录的惟一性主索引和侯选索引都能保证表记录的惟一性 B)主索引和侯选索引都可以建立在数据库表和自由表上主索引和侯选索引都可以建立在数据库表和自由表上 C

20、)主索引可以保证表记录的惟一性,而侯选索引不能主索引可以保证表记录的惟一性,而侯选索引不能D)主索引和侯选索引是相同的概念主索引和侯选索引是相同的概念 3在表设计器的在表设计器的“字段字段”选项卡中可以创建的索引是选项卡中可以创建的索引是 A)唯一索引唯一索引 B)候选索引候选索引 C)主索引主索引 D)普通索引普通索引 4在在Visual FoxPro中,建立索引的作用之一是中,建立索引的作用之一是 A)节省存储空间)节省存储空间 B)便于管理)便于管理 C)提高查询速度)提高查询速度 D)提高查询和更新的速度)提高查询和更新的速度5在在Visual FoxPro中,相当于主关键字的索引是中

21、,相当于主关键字的索引是 A)主索引)主索引 B)普通索引)普通索引 C)惟一索引)惟一索引 D)排序索引)排序索引DADCA6在指定字段或表达式中不允许出现重复值的索引是在指定字段或表达式中不允许出现重复值的索引是A)惟一索引惟一索引 B)惟一索引和候选索引惟一索引和候选索引 C)惟一索引和主索引惟一索引和主索引 D)主索引和候选索引主索引和候选索引7在在Visual FoxPro中,数据库表中不允许有重复记录是通过指定中,数据库表中不允许有重复记录是通过指定_来实现的。来实现的。D主索引或候选索引主索引或候选索引3.6 表的查询表的查询 两类查询命令:顺序查询和索引查询。两类查询命令:顺序

22、查询和索引查询。顺序查询顺序查询是按记录的是按记录的原始顺序原始顺序逐条记录进行逐条记录进行查询,不需要对表建立索引,当表中的记录很多查询,不需要对表建立索引,当表中的记录很多时,查询速度较慢。时,查询速度较慢。索引查询索引查询是在是在索引文件索引文件中查找满足条件的记中查找满足条件的记录,能明显提高查询效率。录,能明显提高查询效率。3.6.1顺序查询顺序查询1.顺序查询命令顺序查询命令2.LOCATE 3.4.FOR 5.WHILE 在指定的范围内,按记录的顺序从上向下查找满足条件在指定的范围内,按记录的顺序从上向下查找满足条件的第一条记录。的第一条记录。2继续查找命令继续查找命令CONTI

23、NUE与与LOCATE命令连用,继续查找满足条件的下一条记录。命令连用,继续查找满足条件的下一条记录。缺省时为缺省时为ALLUSE USE 学生学生 LOCATE FOR LOCATE FOR 性别性别=女女.AND.AND.入学成绩入学成绩=510=510?FOUND()?FOUND()DISPLAY DISPLAY 学号学号,姓名姓名,性别性别,入学成绩入学成绩 CONTINUECONTINUE?FOUND()?FOUND()DISPLAY DISPLAY 学号学号,姓名姓名,性别性别,入学成绩入学成绩 CONTINUECONTINUE?FOUND()?FOUND()【例例3.41】在在“

24、学生学生”表中查询性别为女,入表中查询性别为女,入学成绩等于学成绩等于510分的记录。分的记录。3.6.2索引查询索引查询 在建立了索引的表中进行快速查找。在建立了索引的表中进行快速查找。VFP提供了两种索引提供了两种索引查询命令:查询命令:FIND|SEEK FIND和和SEEK命令均能实现在索引文件中按索引关命令均能实现在索引文件中按索引关键字查找满足条件的第一条记录。键字查找满足条件的第一条记录。【说明说明】(1)FIND:适用于适用于C、N常量和常量和C变量,字符常量不须使用变量,字符常量不须使用定界符。定界符。字符型变量,必须使用宏代换函数。字符型变量,必须使用宏代换函数。(2)SE

25、EK:适用于适用于C、N、D和和L表达式。表达式。当表达式为当表达式为C、D和和L常量时,必须使用定界符常量时,必须使用定界符。表达式为变量时,直接。表达式为变量时,直接使用,不可用宏代换函数。使用,不可用宏代换函数。(3)如果查找)如果查找成功成功,则记录指针指向逻辑顺序中,则记录指针指向逻辑顺序中符合条件的符合条件的第一条记录第一条记录。这时。这时FOUND()为为.T.,EOF()为为.F.,RECNO()返回该记录的记录号;返回该记录的记录号;如果检索如果检索失败失败,记录指针指向,记录指针指向文件尾部文件尾部,FOUND()为为.F.,EOF()为为.T.,RECNO()为当前表的总

26、记录数加为当前表的总记录数加1,且状态栏显示:没有找到。且状态栏显示:没有找到。(4)若要查询后面的记录是否符合条件,需用)若要查询后面的记录是否符合条件,需用SKIP命令。命令。【例例3.423.42】按学号查找按学号查找“学生学生”表。表。USE USE 学生学生 INDEX ON INDEX ON 学号学号 TO TO 学号学号&按学号建立单索引文件按学号建立单索引文件 FIND 07010002 FIND 07010002&FIND&FIND查询字符型常量不加定界符查询字符型常量不加定界符 DISPLAY DISPLAY 学号学号,姓名姓名,入学成绩入学成绩 SEEK 07010003

27、 SEEK 07010003&SEEK&SEEK查询字符型常量必须加定界符查询字符型常量必须加定界符 DISPLAY DISPLAY 学号学号,姓名姓名,入学成绩入学成绩 X=07020003X=07020003 FIND&X FIND&X&FIND&FIND查询字符型变量需用宏代换函数查询字符型变量需用宏代换函数“&”DISPLAY DISPLAY 学号学号,姓名姓名,入学成绩入学成绩 SEEK XSEEK X&SEEK&SEEK可直接查询字符型变量可直接查询字符型变量 DISPLAY DISPLAY 学号学号,姓名姓名,入学成绩入学成绩3.7数据表的统计与汇总数据表的统计与汇总 在实际应用

28、中,经常要对数据表中的数据进在实际应用中,经常要对数据表中的数据进行各种运算,行各种运算,Visual FoxPro提供了计数、求提供了计数、求和、求平均值和汇总等功能,可以方便地为用户和、求平均值和汇总等功能,可以方便地为用户统计汇总出需要的数据信息。统计汇总出需要的数据信息。1.计数命令:计数命令:统计指定范围内满足条件的记录个数。统计指定范围内满足条件的记录个数。COUNT FOR|WHILE TO缺省值为缺省值为ALL将统计结果保存将统计结果保存在内存变量中在内存变量中2.求和命令:求和命令:对指定范围内满足条件的数值型字段纵向求和。对指定范围内满足条件的数值型字段纵向求和。SUM F

29、OR|WHILE TO|TO ARRAY 3.求平均值命令:求平均值命令:对当前表中指定范围内满足条件的数值型字对当前表中指定范围内满足条件的数值型字段纵向求平均值。段纵向求平均值。AVERAGE FOR|WHILE TO|TO ARRAY 【例例】求求“学生学生”表中男同学的人数、入学成绩之和、入学表中男同学的人数、入学成绩之和、入学成绩平均值,结果分别存到变量成绩平均值,结果分别存到变量x,y,z中。中。USE 学生学生 count to x FOR 性别性别=男男 sum 入学成绩入学成绩 to y for 性别性别=男男 average 入学成绩入学成绩 to z for 性别性别=男

30、男 4 数据表分类汇总数据表分类汇总对数据表中对数据表中关键字关键字值相同记录的数值型字段进行分类求和。值相同记录的数值型字段进行分类求和。TOTAL ON TO FIELDS FOR|WHILE【说明说明】(1)必须先对原数据表按指定的关键字索引或排序。)必须先对原数据表按指定的关键字索引或排序。(2)只对数值型字段分类汇总,而其它类型字段只取相同)只对数值型字段分类汇总,而其它类型字段只取相同关键字第一条记录的字段值。关键字第一条记录的字段值。【例例3.473.47】在在“教师教师”表中,按表中,按“职称职称”字段汇总,生成新字段汇总,生成新表表“职称工资汇总职称工资汇总”。USE USE 教师教师 INDEX ON INDEX ON 职称职称 TO TO 职称职称 BROWSE BROWSE TOTAL TO TOTAL TO 职称工资汇总职称工资汇总 ON ON 职称职称 USE USE 职称工资汇总职称工资汇总 BROWSE BROWSE CLOSE ALL CLOSE ALL作业作业实验实验3.4P91(8-16)P95(8-11)国二练习第国二练习第7套套国二练习第国二练习第29套套

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁