第11-12章 表和数据库

上传人:今*** 文档编号:107399547 上传时间:2019-10-19 格式:PPT 页数:39 大小:448.50KB
返回 下载 相关 举报
第11-12章 表和数据库_第1页
第1页 / 共39页
第11-12章 表和数据库_第2页
第2页 / 共39页
第11-12章 表和数据库_第3页
第3页 / 共39页
第11-12章 表和数据库_第4页
第4页 / 共39页
第11-12章 表和数据库_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《第11-12章 表和数据库》由会员分享,可在线阅读,更多相关《第11-12章 表和数据库(39页珍藏版)》请在金锄头文库上搜索。

1、第11-12章 数据库和表,主要内容,介绍数据库、数据表的基本概念 数据库和数据表的建立 编辑表中的数据、记录修改与删除 表的索引等有关操作。,概念,数据库(.dbc) 就是一个关于某一特定主题或目标的信息集合。一个数据库是由一个或多个表组成的,数据库可以看成是数据表的容器. 表(.dbf) 一组相关联的数据按行和列排列的二维表格 记录(record):表的每一行称为一个记录. 字段(field):表的每一列称为一个字段. 关键字(key):若某个字段值能唯一地确定一个记录,该字段称为关键字. 索引(index):将一个表按照某种特定的顺序排列.,数据库表和自由表 属于一个数据库的表称为数据库

2、表 独立存在的表称为自由表,创建数据表,设计数据表结构 使用“表设计器”新建表 在表中添加记录 修改表结构 基本命令 创建数据表:create 打开数据表:use 关闭数据表:use 添加(空)记录:append blank 修改表结构:modify structure,查看表中的数据,使用“浏览”窗口(相应命令:browse) 编辑/浏览方式 添加方式 BROWS FIELDS 姓名,期中 BROWSE FREEZE 期中 其他查看记录的命令:LIST 与DISPLAY LIST FIELDS FieldList Scope FOR lExpression1 WHILE lExpressio

3、n2 DISPLAY FIELDS FieldList Scope FOR lExpression1 WHILE lExpression2,范围是如下之一: ALL 全部记录 NEXT n 包括当前记录开始的n条记录 RECORD n 只对第n条记录操作 REST 当前记录开始到文件尾。,For 对范围内的所有记录执行该命令;若没有指定范围默认为ALL,移动指针,移动指针的命令: 绝对移动:Go bottom|top| 相对移动:Skip n|-n 与指针相关的部分函数 Bof() 测试指针是否指向文件头 Eof() 测试指针是否指向文件尾 Reccount() 返回数据表的记录数 Recno

4、() 返回当前指针的指向的记录号,修改表结构,使用表设计器:MODIFY STRUCTURE 使用命令:ALTER TABLE (修改结构) CREATE TABLE(建立结构) CREATE TABLE Student(xh c(10), xm c(6), xb l, csrq d(8), zy c(20), sm m, zp g) 可以建立包含xh、xm、xb、csrq、zy、sm、zp等字段的一个新的数据表Student.dbf。,编辑表中的数据,批替换命令: REPLACE 字段名1 WITH 表达式1 , 字段名2 WITH 表达式2 . 范围 FOR 条件 WHILE 条件 若没有

5、范围,只对当前记录进行替换操作。,生成新表与追加记录 以当前表为基础,生成新表: COPY TO FIELDS FOR 复制当前表结构: COPY STRUCTURE TO FIELDS 从其他表中追加记录: APPEND FROM FIELDS FOR ,删除记录 逻辑删除与物理删除 逻辑删除:将记录打上删除标记 物理删除:将记录从表中移去 菜单操作 在浏览窗口中删除记录:单击记录左边的方框。 菜单“表”“删除记录” 菜单“表”“彻底删除”,逻辑删除:DELETE 范围 条件 恢复打上删除标记记录: RECALL 物理删除 : PACK 删除所有记录 : ZAP 与删除记录有关的系统设置:

6、SET DELETE ON|OFF默认,使用命令删除记录,删除记录命令示意,正常记录,打上逻辑删除 标记的记录,DELETE,RECALL,物理删除 不能恢复的记录,PACK,ZAP,DELETE ALL PACK,有选择的只对部分记录操作 SET FILTER TO 界面: 表/属性/数据过滤器 取消过滤条件: SET FILTER TO 有选择的显示部分字段 BROWSE|LIST|DISPLAY FIELDS SET FIELDS TO 界面: 表/属性/字段筛选 显示所有字段: SET FIELDS TO ALL,过滤数据表,11.6 数据表的索引,建立索引的最直接的理由是为了排序。

7、11.6.1 基本概念 1. 索引与索引表达式 数据表的索引:按指定的索引表达式对数据表建立的一个文件索引文件。 索引文件:是一个记录号的列表(指针列表),它指向待处理的记录,并确定了记录的处理顺序,即按新顺序存储着数据表所对应的记录号。 索引表达式:表中的字段或字段的组合,又称为索引字段。 索引并不改变表中所存储数据的顺序,它只改变VFP读取每条记录的顺序。 可以利用索引对数据表中的数据进行排序,以便加速检索数据的速度。还可以选择记录、控制重复字段值的输入并支持表间的关系操作。索引对于数据库内表之间创建关联也很重要。,建立索引文件,索引类型 主索引:可保证字段输入值的唯一性,一个数据表只能有

8、一个主索引并且只能在数据库表中建立。 候选索引:可保证字段输入值的唯一性,允许建立多个候选索引 普通索引:允许出现重复的字段值。 唯一索引:打开索引后,相同字段值的记录只显示一个。,数据表的索引,新建索引: 在表设计器中建立索引 命令方式 : INDEX ON TAG ASCENDING | DESCENDING 打开|关闭索引 SET ORDER TO 建立复杂的索引 包含多个字段的索引表达式 如:按性别与入校成绩进行索引,其表达式应为 INDE ON 性别+STR(入校成绩) TAG XBCJ,建立和打开索引,索引应遵循原则,(1)为了提高速度,用普通索引、候选索引或主索引 (2)控制字段

9、的重复值对数据库“表”用“主索引”或“候选索引”,对于“自由表”,用“候选索引”。,与索引相关的查找命令 FIND | SEEK 若找到相应记录,则FOUND()函数值为.T. 顺序查找命令 : LOCATE FOR 继续查找命令 : CONTINUE,查找记录,【例11-15】下述命令在学生表std_da中查找第一个姓李的同学,并显示该同学的信息: USE std_da INDEX ON xm TAG xm SET ORDER TO TAG xm FIND 李 DISP,【例11-16】下述命令在学生表std_da中查找第一个出生日期为1981年3月12日的同学,并显示该同学的信息: USE

10、 std_da INDEX ON csrq TAG csrq SET ORDER TO TAG csrq SEEK CTOD(“03/12/1981“) ?FOUND() DISP,【例11-17】下述命令在学生表中查找姓李的同学,并显示该同学的信息: CLEAR USE STD_DA LOCATE FOR xm = “李“ DISP CONTINUE DISP,VFP可以同时打开32767个表,每个表都在不同的工作区中。 工作区切换: SELECT | 编号1-32767;或A-J;或用Alias指定的名称 Use in alias (1) 在当前工作区打开和关闭表 USE cj (2) 在

11、最低可用工作区中打开表 可以在USE命令IN子句后面加工作区0。 USE cj IN 0 说明:在一个工作区中,不能同时打开多个表。 (4) 关闭所有工作区中打开的表 使用命令CLOSE ALL可以关闭所有工作区中已打开的表,并将1号工作区置为当前工作区。,多表操作,引用其他工作区中打开的表,指定非当前工作区中表的字段值: 别名-字段名 或 别名.字段名 STD_cj.总成绩 B.总成绩 可以在一个表所在的工作区之外,使用表名或表别名来明确标识该表。 例: USE STD_CJ IN 2 DISP b.总成绩 &注意命令所工作区必须有打开的数据表,使用“数据工作期”窗口,使用“数据工作期”窗口

12、 “数据工作期”窗口是VFP提供的一个管理工作区的工具。使用“数据工作期”窗口,可以查看在一个VFP工作期中已打开表的列表,还可以在工作区中打开表、关闭表。,SET RELATION TO 关键字表达式 INTO 工作区别名1|表别名1 设置表间临时关系的步骤: 1.在不同工作区打开父表和子表 2.子表按关键字表达式中的关键字段建立索引(或指定已存在的索引为主控索引) 3.在父表工作区执行命令SET RELATION TOINTO 表间临时关系可以实现指针的联动 例1:指针的联动 (LSGX.PRG) 例2:利用表(XS.DBF/CJ.DBF) A.显示所有学生的姓名、入校成绩、总成绩(LSG

13、X_2.PRG) B.为所有会计专业学生平时加10 (LSGX_3.PRG) 。,设置表间临时关系,close ALL CLEAR USE xs IN 1 & 在1号工作区中打开xs表(主表) USE cj IN 2 & 在2号工作区中打开cj表(从表) SELECT cj & 选定从表工作区 INDE ON 学号 TAG xh & &从表建立索引 SELECT xs & 选定主表工作区 SET RELATION TO 学号 INTO cj & 创建主表与从表的之间的关联 list fields 姓名,入校成绩,b.总成绩,CLEAR CLOSE ALL SELE 1 USE XS INDE

14、ON 学号 TAG XH SELE 2 USE CJ SET RELATION TO 学号 INTO A LIST 姓名,A.专业,平时 WAIT repl all 平时 WITH 平时+10 FOR A.专业=“会计“ LIST 姓名,A.专业,平时,【例12-2】设有一个单科(VFP编程)成绩表:d_cj.dbf(xh(C,10), cj(N,3),试用d_cj.dbf中的成绩来修改cj2.dbf中的相应成绩。相应的命令如下: *lsgx_修改成绩.PRG USE TCH_PK LOCATE FOR 课程名 = “VFP编程“ no = 课程代号 SELECT 2 USE d_cj IND

15、EX ON 学号 TAG xh SELECT 1 USE cj2 SET RELATION TO 学号 INTO b REPL ALL 成绩 WITH b-成绩 FOR 学号 = b-学号 AND 课程代号=NO 注意:有的时候需要将“多表”设为主表,“一表”设为从表。 3. 关联单个表中的记录 可以在单个表中创建记录间的关系,即自引用关系。若需要的所有信息都存储在单个表中,这种关系很有用。 【例12-3】如果遍历xs表中的班级,随着记录指针从一个班级到另一个班级的移动,每个班级的学生自动更改。,若要创建自引用关系,可以两次打开同一个表,在一个工作区中打开一个表,并使用USE AGAIN命令在

16、另外工作区中再次打开此表,然后使用索引来关联记录。例如,可以使用以下代码,根据“zy”(专业)字段对xs表进行排序,然后创建索引标识ZY2,并以此建立并浏览一个 自引用关联:lsgx_自关联.prg SELECT 0 USE xs ALIAS xs SELECT 0 USE xs AGAIN ALIAS xs_a INDEX ON zy TAG ZY2 SET ORDER TO ZY2 SELECT xs SET RELATION TO zy INTO xs_a ADDITIVE SELECT xs_a BROWSE NOWAIT SELECT xs BROWSE NOWAIT 在“命令窗口”依次执行上述命令,在“数据工作期”窗口中浏览表xs和xs_a,当在xs“浏览”窗口中移动记录指针时,会自动刷新xs_a“浏览”窗口,并在其中显示隶属于选定专业的学生,如图12-2

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号