1 / 48

第 3 章 数据表的创建及操作

第 3 章 数据表的创建及操作. 3.1 数据表的创建. 3.2 数据表的维护. 3.3 数据表的排序、索引与查询. 3.4 数据表的统计与汇总. 3.5 多个数据表的使用. 退出. 3.1 数据表的创建. 3.1.1 创建数据表. 3.1.2 表数据的输入. 3.1.3 数据表文件的打开、关闭、显示和定位. 退出. 3.1.1 创建数据表. 1. 数据表结构的定义. ( 1 )文件名:表文件的主要标识 ( 2 )结构:字段名、类型、宽度 ( 3 )记录:标文件的基本数据. 2. 数据表的创建.

dakota
Download Presentation

第 3 章 数据表的创建及操作

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第3章 数据表的创建及操作 3.1 数据表的创建 3.2 数据表的维护 3.3 数据表的排序、索引与查询 3.4 数据表的统计与汇总 3.5 多个数据表的使用 退出

  2. 3.1 数据表的创建 3.1.1 创建数据表 3.1.2 表数据的输入 3.1.3 数据表文件的打开、关闭、显示和定位 退出

  3. 3.1.1 创建数据表 1.数据表结构的定义 (1)文件名:表文件的主要标识 (2)结构:字段名、类型、宽度 (3)记录:标文件的基本数据 2.数据表的创建 (1)命令方式:CREATE [<文件名>/?] (2)表向导 (3)表设计器

  4. 3.1.1 创建数据表 3.字段类型及命名 (1)字段名:必须以字母或汉字开头,可以包括字母、汉字、数字和下划线,不要超过10个字符。 示例:姓名、XB、班级BJ、班级2、班级_2 _XM、2班、“成绩”、班级:姓名 (2)字段类型:共13种。 (3)字段宽度:不同类型的字段具有不同的宽度。 (4)小数位:数值型数据需要规定小数位数。 (5)使用NULL值:可以指定字段是否接受NULL值,它是一个不存在的值。

  5. 3.1.2 表数据的输入 1.创建数据表时输入数据 备注型字段与通用型字段内容的输入:双击鼠标左键,进入相应的编辑窗口进行输入。 2.使用浏览窗口追加数据 命令格式:BROWSE 3.添加记录 命令格式:APPEND [BLANK] 4.插入记录 命令格式:INSERT [BEFORE] [BLANK]

  6. 3.1.3 数据表文件的打开、关闭、显示和定位 1.数据表文件的打开与关闭 命令格式:USE [<数据表文件名>] 示例:USE 学生表.DBF USE 2.数据表文件的显示 (1)结构的显示 格式:LIST STRUCTURE 或 DISPLAY STRUCTURE 示例:USE 学生表 LIST STRU

  7. (2)记录的显示 格式:LIST/DISPLAY [OFF] [<范围>] [[FIELDS] <表达式表>] [WHILE <条件>] [FOR <条件>] 说明:<范围>的可选值包括: RECORD n:第n条记录。 NEXT n:从当前记录开始以下的N条记录。 REST:从当前记录开始到文件末尾的所有记录。 ALL:全部记录。 示例:USE 学生表 LIST OFF FOR 班级=“注会” LIST FIELDS 学号,姓名,班级 DISP ALL

  8. 3.记录指针的定位 记录指针:用来指示表文件中记录位置的指针。 当前记录:指针当前所指向的记录。 (1)指针的绝对移动命令 格式:GO/GOTO [RECORD] <记录号> GO/GOTO TOP/BOTTOM 示例:USE 学生表 GO 3 DISP GOTO RECN 5 DISP GO TOP DISP

  9. (2)指针的相对移动命令 格式:SKIP [+/-] [<算术表达式>] 示例:USE 学生表 DISP SKIP DISP SKIP 3 DISP SKIP -2 DISP SKIP 6 DISP

  10. 3.2 数据表的维护 3.2.1 数据表结构的修改 3.2.2 显示和编辑数据表中的数据 3.2.3 删除数据表中的记录 3.2.4 文件的显示、复制、删除与更名 3.2.5 数组与数据表之间的数据交换 退出

  11. 3.2.1 数据表结构的修改 格式:MODIFY STRUCTURE 示例:USE 学生表 MODI STRU 3.2.2 显示和编辑数据表中的数据 1. 浏览修改命令BROWSE 格式:BROWSE [FIELDS <字段名表>] [LOCK <数值表达式>] [FREEZE <字段名>] [NOAPPEND] [NOMODIFY] [WIDTH <数值表达式>] [FOR <逻辑表达式>] [LEDIT] [REDIT]

  12. 1. 浏览修改命令BROWSE 示例:USE 学生表 BROWSE FIELDS 学号,姓名,性别,班级 BROWSE FREEZE 班级 BROWSE PARTITION 12 LEDIT BROWSE WIDTH 4 BROWSE NOAPPEND BROWSE NOMENU BROWSE LOCK 2 BROWSE FOR 班级=“注会” BROWSE NOMODIFY

  13. 2. CHANGE/EDIT命令 格式:CHANGE/EDIT [<范围>] [FIELDS <字段名表>] [WHILE <逻辑表达式>] [FOR <逻辑表达式>] 示例: USE 学生表.DBF CHANGE FIELDS 姓名,班级,家庭住址,电话 3. REPLACE命令 格式:REPLACE [<范围>] <字段1> WITH <表达式1> [ADDITIVE] [,<字段2> WITH <表达式2> [ADDITIVE] …] [FOR <条件>] [WHILE <条件>] 示例:USE 学生表.DBF GO 6 DISP REPLACE 姓名 WITH "李 青",性别 WITH "男" DISP

  14. 4. 修改通用型字段 格式:MODIFY GENERAL <通用型字段名表> [NOMODIFY] [NOWAIT] [IN SCREEN] 3.2.3 删除数据表中的记录 1. 逻辑删除数据表中的数据 格式:DELETE [<范围>] [WHILE<条件>] [FOR<条件>] 说明:SET DELETED ON/OFF 示例:USE 学生表.DBF GO 6 DELETE LIST SET DELETE ON LIST

  15. 2.恢复数据表中逻辑删除的数据 格式:RECALL [<范围>] [FOR <条件>] [WHILE <条件>] 示例:USE 学生表.DBF GO 6 DELETE DISP GO 6 RECALL DISP 3. 物理删除数据表中的数据 格式:PACK

  16. 4. 删除数据表中的所有记录 格式:ZAP 说明:SET SAFETY ON/OFF 3.2.4文件的显示、复制、删除与更名 1.文件目录的显示命令 格式:DIR/DIRECTORY [<盘符>] [<路径>] [<文件名描述>] 或 DISPLAY FILES [<盘符>] [<路径>] [<文件名描述>] 或 LIST FILES [<盘符>] [<路径>] [<文件名描述>] 示例:DIR DIR *.PRG DIR C:\*.*

  17. 2. 显示文件内容的命令 格式:TYPE <文件名> 3.文件的复制 (1)任意类型文件的复制 格式:COPY FILE <源文件名> TO <目标文件名> 示例:COPY FILE 学生表.DBF TO 学生表1.DBF COPY FILE 学生表.FPT TO 学生表1.FPT (2)数据表文件的复制 格式:COPY TO <新表文件名> [<范围>] [FIELDS <字段名表>] [FOR <逻辑表达式>] [WHILE <逻辑表达式>] 示例:USE 学生表.DBF COPY TO 学生表2 FOR 班级=“金融二”

  18. (3)数据表结构的复制 格式:COPY STRUCTURE TO <文件名> [FIELDS <字段名表>] 示例:USE 学生表.DBF COPY STRUCTURE TO 学生表3 FIELDS 班级,姓名,家庭住址,电话 USE 学生表3 LIST STRUCTURE 4.文件的更名 格式:RENAME <源文件名> TO <新文件名> 示例:RENAME E:\VFP\例题\学生表.DBF TO 学生名单.DBF RENAME E:\VFP\例题\学生表.DBF TO 学生名单.FPT

  19. 5.文件的删除 格式:ERASE <文件名>/? 或 DELETE FILE [<文件名>/?] 示例:ERASE 学生表3.DBF DELETE FILE 学生名单.DBF 6.从另外的数据表中向当前表文件添加记录 格式:APPEND FROM <文件名> [FIELDS <字段名表>] [WHILE <条件>] [FOR <条件>] 示例:USE 学生表 COPY STRU TO 学生表3 USE 学生表3 APPEND FROM 学生表

  20. 3.3 数据表的排序、索引与查询 3.3.1 数据表的排序 3.3.2 数据表的索引 3.3.3 数据表的查询 退出

  21. 3.3.1 数据表的排序 1. 概念 (1)数据表的排序:把数据表文件中的记录按照某个字段值的大小顺序重新排列。 (2)关键字:作为排序依据的字段。 (3)升序:按照关键字值从小到大的顺序进行排序。 (4)降序:按照关键字值由大到小的顺序进行排序。 (5)数据大小的比较规则: 如果是数值型、日期型的数据进行比较,则由其本身的大小决定;字符型数据由其ASCII码值确定,汉字由机内码确定大小。

  22. 2.命令格式 格式:SORT TO <文件名> ON <字段名1> [/A][/D][/C][,<字段名2> [/A][/D][/C]…][ASCENDING/DESCENDING][<范围>] [FOR <条件>] [WHILE <条件>] [FIELDS <字段名表>] 示例:USE 学生表 SORT TO STUDENT1 ON 班级,姓名/D USE STUDENT1 LIST USE 学生表 SORT TO 学生表_金融 ON 学号 FOR 班级=“金融二” USE 学生表_金融 LIST

  23. 3.3.2 数据表的索引 为什么使用索引? 1)排序造成了数据冗余,浪费存储空间 2)如果对数据表文件进行增、删、改操作时,需要重新进行排序 什么是索引文件? 1)索引文件是由指针构成的,这些指针逻辑上按照索引关键字进行排序。 2)索引文件和表文件分别进行存储,并不改变表中记录的物理位置。

  24. 3.3.2 数据表的索引 1.索引文件的类型 (1)独立索引文件:扩展名为.IDX,其各个索引文件只能包含一个单一的关键字或者组合关键字。 独立索引文件可分为:压缩索引文件和非压缩索引文件。 (2)复合索引文件:扩展名为.CDX,在一个复合索引文件中可以包含多个索引选项,每个索引选项叫做索引标识(Index Tag)。 复合索引文件有两种类型:结构复合索引文件(Structural Compound Index)和独立复合索引文件(Independent Compound Index)。

  25. 2.索引文件的建立 格式1(建立.IDX索引文件): INDEX ON <关键字表达式> TO <独立索引文件名> [FOR <条件>][UNIQUE] [COMPACT] [ADDITIVE] 示例:USE 学生表 INDEX ON 班级 TO 学生表_班级 LIST INDEX ON 班级+姓名 TO 学生表_班级_姓名 LIST INDEX ON 姓名 TO 学生表_姓名 FOR 班级=“注会” LIST

  26. 2.索引文件的建立 格式2(建立.CDX索引文件) INDEX ON <关键字表达式> TAG <标记名> [OF <复合索引文件名>][UNIQUE/CANDIDATE] [ASCENDING/DESCENDING] [ADDITIVE] [FOR <条件>] 示例:USE 学生表 INDEX ON 姓名 TAG 姓名 LIST USE 学生表 INDEX ON 班级+性别 TAG 班级_性别 OF 学生表_班级性别 LIST INDEX ON 班级TAG 班级 OF 学生表_班级性别 LIST

  27. 3.索引文件的打开与关闭 (1)有关概念 主控索引文件:在打开的索引文件中,排在最前面的索引文件 说明:1)索引文件不能脱离所依赖的数据表文件而单独使用 2)结构化复合索引文件将随着数据表文件的打开而自动打开,其它索引文件则需要使用索引文件的打开命令进行打开 3)数据表文件只按主控索引文件的顺序显示各记录 4)若主控索引文件为复合索引文件,则记录显示与存取的次序仍按各记录实际存放的顺序,只有用ORDER指定主标记后,才按主标记的次序显示与存取记录 5)对数据表文件进行增、删、改操作时,系统会自动修改所有打开的索引文件。

  28. (2)打开数据表文件的同时打开索引文件 格式:USE <表文件名>/? [INDEX <索引文件名表>/? [ORDER [<算术表达式>/<IDX索引文件名>/[TAG] <标记名> [OF <复合索引文件名>] [ASCENDING/DESENDING]]]] 说明:<算术表达式>的值表示该索引文件在<索引文件名表>中的顺序号,其规则为: 1)先对.IDX进行编号,然后是结构化.CDX中的索引标记,最后是独立.CDX文件中的索引标记 2)如果<算术表达式>的值为零,则记录将按记录号的顺序访问和显示。 示例:USE 学生表 INDEX 学生表_班级 USE 学生表 INDEX 学生表_班级, 学生表_班级_姓名,学生表_班级性别 ORDER TAG 班级_性别 OF 学生表_班级性别

  29. (3)在数据表文件己经打开的情况下打开索引文件(3)在数据表文件己经打开的情况下打开索引文件 格式:SET INDEX TO[<索引文件名表>/?] [ORDER<算术表达式>/<IDX索引文件名>/[TAG]<标记名> [OF <复合索引文件>] [ASCENDING/DESCENDING]] [ADDITIVE] 示例: USE 学生表 SET INDEX TO 学生表_班级, 学生表_班级_姓名 SET INDEX TO 学生表_班级性别 ORDER TAG 班级_性别 OF 学生表_班级性别 ADDITIVE (4)在打开的索引文件中设置主控索引 格式:SET ORDER TO [<算术表达式>/<IDX索引文件名>/[TAG] <索引标记名> [OF <复合索引文件名> [ ASCENDING / DESCENDING]]

  30. (4)在打开的索引文件中设置主控索引 示例:USE 学生表 SET INDEX TO 学生表_班级, 学生表_班级_姓名, 学生表_班级性别 SET ORDER TO 2 OF 学生表_班级性别 LIST SET ORDER TO 0 LIST SET ORDER TO TAG 班级_性别 OF 学生表_班级性别 LIST (5)关闭索引文件 格式:CLOSE ALL 或 CLOSE INDEXES

  31. 4. 重新索引 格式:REINDEX 5. 删除复合索引文件中的索引标记 格式:1)DELETE TAG <标记名1> [OF <复合索引文件名1>] [,<标记名2> [OF <复合索引文件名2>]] … 2)DELETE ALL [OF <复合索引文件名>] 3.3.3 数据表的查询 与数据表有关的几个函数 (1)表文件开始测试函数 格式:BOF([<工作区号或别名>]) 示例:USE 学生表 ?BOF() SKIP -1 ?BOF()

  32. (2)表文件结束测试函数 格式:EOF([<工作区号或别名>]) 示例:USE 学生表 GO BOTTOM ?EOF() SKIP ?EOF (3)记录号测试函数 格式:RECNO([<工作区号或别名>]) 示例:USE 学生表 ?RECNO() GO 4 ?RECNO()

  33. (4)测试查询结果函数 格式:FOUND([<工作区号或别名>]) 1. FIND命令 格式:FIND <字符串或数值> 示例:USE 学生表 INDEX ON 姓名 TO 学生表_姓名 FIND 于小丽 ?RECNO() DISP XM=“王 平” FIND &XM ?FOUND() DISP

  34. 2. SEEK命令 格式:SEEK <表达式> [ORDER <索引号>/IDX <索引文件名>/[TAG] <标识名> [OF <CDX文件名>] [ASCENDING/DESCENDING]] 示例:USE 学生表 INDEX 学生表_班级_学号 seek “金融二 ”+“99020202” DISP SET INDEX TO 学生表_姓名 SEEK “章闻天” DISP XM=“王 平” SEEK XM DISP

  35. 3. LOCATE和CONTINUE命令 格式:LOCATE [<范围>] FOR <条件> [WHILE<条件>] 示例:USE 学生表 LOCATE FOR 班级=“注会” DISP CONTINUE DISP

  36. 3.4 数据表的统计与汇总 3.4.1 数据表的统计 3.4.2 数据表的汇总 退出

  37. 3.4.1 数据表的统计 1. 计数命令 格式:COUNT [<范围>] [FOR <条件>] [WHILE <条件>] [TO <内存变量名>] 示例:USE 学生表 COUNT FOR 班级=“注会” TO AA ?AA COUNT TO BB ?BB 2. 求和命令 格式:SUM [<字段表达式表>] [<范围>] [TO <内存变量名表>/TO ARRAY <数组名>] [FOR <条件>] [WHILE <条件>]

  38. 2. 求和命令 示例:USE 分数 LIST SUM 成绩 FOR 学号=“99010301” TO CJ ?CJ 3. 求平均值命令 格式:AVERAGE [<表达式表>] [<范围>] [TO <内存变量名表>/TO ARRAY <数组名>] [FOR <条件>] [WHILE <条件>] 示例:USE 分数 LIST AVERAGE 成绩 FOR 学号=“99010301” TO CJPJ ?CJPJ

  39. 3.4.2 数据表的汇总 格式:TOTAL TO <新表文件名> ON <关键字> [FIELDS <字段名表>] [<范围>] [FOR <条件>] [WHILE <条件>] 说明:当前表必须按<关键字>进行过排序或索引 示例:USE 分数 LIST INDEX ON 学号 TO 分数表_学号 TOTAL TO 学号成绩 ON 学号 USE 学号成绩 COPY TO 成绩汇总 FIELDS 学号,成绩 USE 成绩汇总 LIST

  40. 3.5 多个数据表的使用 3.5.1 选择工作区的命令 3.5.2 数据表之间的关联 3.5.3 数据表之间的连接 3.5.4 数据表文件的更新 退出

  41. 3.5.1 选择工作区的命令 格式:SELECT <工作区号/别名> 说明:1)定义别名的命令格式:USE <数据表文件名> ALIAS <数据表文件的别名> 示例:USE 学生表 ALIAS XSB 2)工作区的区号可以用正整数表示,其中1到10号工作区也可以用英文字母A到J来表示 示例:SELECT A SELECT 1 SELECT XSB 3)当前工作区:最后被选择的工作区。使用其它工作区中字段的命令格式:<别名>.<字段名>或<别名>—><字段名> 示例:DISP 学号,姓名,班级,B.课程号,B.成绩 4)SELECT 0

  42. 3.5.2 数据表之间的关联 格式:SET RELATION TO [<关键字表达式1>/<数值表达式1> INTO <工作区号>/<别名>[,<关键字表达式2>/<数值表达式2> INTO <工作区号>/<别名>…][ADDITIVE]] 说明:1)<关键字表达式>的值必须是相关联的两个表文件共同具有的字段,<别名>表文件必须已经按关键字表达式建立了索引文件并处于打开状态。 2)当两个表文件建立关联后,当前表文件的记录指针移到某一记录时,被关联的表文件的记录指针也自动指向关键字值相同的记录上。如果被关联的表文件具有多个关键字值相同的记录,则指针只指向关键字值相同的第一条记录。如果被关联的表文件中没有找到匹配的记录,指针指向文件尾,即函数EOF()的值为.T.。 3)ADDITIVE与SET RELATION TO

  43. 3.5.2 数据表之间的关联 格式:SET RELATION TO [<关键字表达式1>/<数值表达式1> INTO <工作区号>/<别名>[,<关键字表达式2>/<数值表达式2> INTO <工作区号>/<别名>…][ADDITIVE]] 说明:3)如果命令中使用了<数值表达式>,则两个表文件按照记录号进行关联,这时<别名>表文件可以不用建立相关的索引文件。 4)当<别名>表文件中有多个关键字值相同的记录时,<别名>表文件的指针只能指向关键字值相同的第一条记录上,如果需要找到关键字值相同的多个记录,可以使用下面的命令: SET SKIP TO [<别名1> [,<别名2>]…] 5)如果需要切断当前数据表与特定数据表之间的关联,可以使用命令:SET RELATION OFF INTO <工作区号>/<别名>

  44. 3.5.2 数据表之间的关联 示例1:将数据表“分数”与“学生表”建立关联后,显示学生的学号、姓名、性别、班级、成绩等字段的内容。 SELECT 2 USE 学生表 INDEX ON 学号 TO 学生表_学号 SELECT 1 USE 分数 SET RELATION TO 学号 INTO B LIST 学号,B.姓名,B.性别,B.班级,课程号,成绩

  45. 3.5.2 数据表之间的关联 示例2:将“学生表”与“分数”仍按“学号”建立关联。 SELE B USE 分数 INDEX ON 学号 TO 分数_学号 SELE A USE 学生表 SET RELATION TO 学号 INTO B LIST 学号,姓名,班级,B.课程号,B.成绩 SET SKIP TO B LIST 学号,姓名,班级,B.课程号,B.成绩

  46. 3.5.3 数据表之间的连接 格式:JOIN WITH <工作区号>/<别名> TO <新表文件名> [FIELDS <字段名表>] FOR <连接条件> 示例:把已存在的数据表“分数”和“学生表”通过“学号”联接起来,生成新的数据表文件“学生分数”,新表文件中包含如下字段:学号、姓名、班级、课程号、成绩。 SELE A USE 学生表 SELE B USE 分数 JOIN WITH A FOR 学号=A.学号 TO 学生成绩 FIELDS 学号,A.姓名,A.班级,课程号,成绩 USE 学生成绩 LIST

  47. 3.5.4 数据表文件的更新 格式:UPDATE ON <关键字段名> FROM <工作区号>/<别名> REPLACE <字段名1> WITH <表达式1> [,<字段名2> WITH <表达式2> …] [RANDOM] 示例:假如在数据表“学生表”中增加了“总成绩”的字段,然后用数据表“分数”来计算学生的总成绩。 SELECT A USE 学生表 INDEX ON 学号 TO 学生表_学号 SELE B USE 分数 INDEX ON 学号 TO 分数_学号 SELE A UPDATE ON 学号 FROM B REPLACE 总成绩 WITH 总成绩+B.成绩

More Related