第4章_数据库、表的进一步操作

上传人:小** 文档编号:54723177 上传时间:2018-09-18 格式:PPT 页数:35 大小:3.46MB
返回 下载 相关 举报
第4章_数据库、表的进一步操作_第1页
第1页 / 共35页
第4章_数据库、表的进一步操作_第2页
第2页 / 共35页
第4章_数据库、表的进一步操作_第3页
第3页 / 共35页
第4章_数据库、表的进一步操作_第4页
第4页 / 共35页
第4章_数据库、表的进一步操作_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《第4章_数据库、表的进一步操作》由会员分享,可在线阅读,更多相关《第4章_数据库、表的进一步操作(35页珍藏版)》请在金锄头文库上搜索。

1、第四章 Visual FoxPro数据库及其操作,Contents,4.4表之间的永久关系与 参照完整性,4.5 自由表,4.2 表的统计操作,4.1 表的排序和索引,4.1.1 排序 排序是将记录按需要的顺序重新排列,产生一个新的数据表文件,实现从物理上对数据记录的重新排列。格式:SORT TO ON /A|/D,/A|/D FOR FIELDS 对student表中的所有记录,先按专业由高到低,再按入学成绩由低到高进行排序。,4.1.2 索引的概念及类型 索引是按索引关键字的值对表中的记录进行排序的一种方法。 索引的目的是加快查询的速度 索引关键字可以是表中的单个字段或几个字段的组合 记录

2、的物理顺序由表文件(.dbf)存储,而记录的逻辑顺序由索引文件存储(.idx或.cdx) 索引文件仅存储记录的逻辑顺序,记录数据依然由表文件存储,故索引文件必须同表一起使用,4.1 表的排序和索引,索引的类型,4.1 表的排序和索引,4.1.3 创建索引 1、在表设计器中建立索引,例:以teacher表的“编号”字段建立候选索引,索引名为bh;以“部门代码”字段建立降序普通索引,索引名为“部门代码”。,4.1 表的排序和索引,2、用命令方式建立索引 INDEX ON TO | TAG OF FOR COMPACT ASCENDING | DESCENDINGUNIQUE | CANDIDATE

3、 TO建立单索引,扩展名.idx TAG建立复合索引,扩展名.cdx 用命令为student表的“出生日期”建立索引,索引保存在名为“出生日期”的独立索引文件中 复合索引表达式:“先按,再按” 两字段用+连接,故都要转换为字符型 为student表建立普通索引,要求先按性别升序排列,性别相同再按出生日期升序排列。,4.1 表的排序和索引,例:teacher表(编号,姓名) Index on 编号 to bh.idx 独立索引,存放于bh.idx文件中 Index on 姓名 to xm.idx 独立索引,存放于xm.idx文件中Index on 编号 tag bh Index on 姓名 ta

4、g xm 结构复合索引,存放于teacher.cdx文件中Index on 编号 tag bh of zgbh Index on 姓名 tag xm of zgxx,非结构复合索引,存放于zgbh.cdx文件中,非结构复合索引,存放于zgxxb.cdx文件中,4.1 表的排序和索引,4.1.4 使用索引 1打开索引文件(自学)SET INDEX TO 2设置当前索引:控制当前记录顺序的索引。 格式1:SET ORDER TO |TAG ASCENDING |DESCENDING 格式2:USE ORDER TAG 例:1、按入学成绩建立索引,索引标识rxcj。2、设置rxcj为主控索引。3、取

5、消主控索引,恢复原来的物理顺序。,4.1 表的排序和索引,3.使用索引快速定位索引查找的主要目的和locate相仿,都是为了快速定位,提高查找速度。 索引查找的前提:相应字段需建立索引,并成为主控索引。1、索引查找姓名为“王立”的记录。2、索引查找基本工资为3600的记录。 4.删除索引(自学) DELELE TAG ALL|,Seek:C(需使用定界符),N,L,D,变量,4.1 表的排序和索引,4.2 表的统计操作(自学),累加求和 对于表中数值型字段求和。 SUM FOR TO |TO 求平均值 对于表中数值型字段求平均值。 AVERAGE FOR TO |TO 统计记录个数 COUNT

6、 FOR TO |TO ,4.3 多区操作,显示学生姓名及其选修的课程号和总成绩。,4.3 多区操作,USE studentUSE scoreLIST 姓名,课程号,总成绩,4.3.1工作区的概念把内存里用于存储某一张表的空间称作工作区。所以打开表就是把它从磁盘调入内存的某一个工作区。 一个工作区在某一时刻只能打开一张表,如果一个工作区中已经打开了一张表,再在这个工作区中打开另一张表时,原来的表会自动关闭。所以,若需要同时使用多个表,则须在不同的工作区去打开不同的表。,4.3 多个表的同时使用,工作区标识VFP最多可以设置32767个工作区。为了标识工作区,有三种表示方法: 工作区的区号:从1

7、开始,直到32767。 0 是一个特殊的区号,用于标识未被使用的最小的区 系统别名:前10个工作区,还可用A、B、C、D、E、F、G、H、I、J来标识 用户别名:打开一个表时,通过alias设置一个标识。 若没有设置,默认用户别名和表名相同表刚刚打开时,1号工作区为当前工作区,在当前工作区中打开的表,称为当前工作表。所以前面操作打开的表都是打开在1号工作区中的。,4.3 多个表的同时使用,4.3.2 选择工作区 1.工作区的选择 SELECT 可用SELECT()返回当前工作区的区号,4.3 多个表的同时使用,分别在1号工作区和4号工作区打开student表与course表,在未使用的最小工作

8、区打开score表,并返回该区区号。,补充:多表操作下表的打开和关闭,USE IN 工作区标识 ALIAS 用户别名 AGAIN 用IN来指定表打开的工作区 ALIAS:为该工作区起一个用户别名,缺省则用表名作为工作区的别名。 AGAIN:若要在不同的工作区中打开同一张表,再次打开时一定要加AGAIN关键字。 在3号工作区再次打开score表,并指定别名为“成绩”,补充:多表操作下表的打开和关闭,多表操作下表的关闭 USE IN 工作区标识 CLOSE ALL 关闭所有工作区中的表并关闭所有相关的索引、格式和备注文件以及数据库文件等,并选择1号工作区为当前工作区。 关闭3号工作区内的表 关闭所

9、有工作区内的表,4.3 多区操作,例:显示每个学生的姓名及其选修的课程号和总成绩 USE student USE score IN 2 LIST 姓名,课程号,总成绩,2.非当前工作区数据的使用 工作区别名-字段名或工作区别名.字段名,4.3 多个表的同时使用,例:显示每个学生的姓名及其选修的课程号和总成绩USE student USE score IN 2 LIST 姓名,b.课程号,b-总成绩,4.3.3 建立表间临时关联表间的临时关联是指在不同工作区的两个表间建立记录指针同步移动的关系。建立关联后,当前工作区中的表(父表)的指针移动后,被关联的表(子表)的指针会自动移动到相关记录。由于这

10、种关联在其中一个表关闭后,表之间的关联就消失,所以称为临时关联。前提:建立关联的表必须有一个相同的字段,,4.3 多个表的同时使用,建立临时关联的步骤 确认两张表谁为父表,谁为子表 被关联的表(子表)必须以共同字段建立索引,并设置为主控索引。 建立临时关联的命令SET RELATION TO 关键字段名 INTO 工作区标识 若执行SET RELATION TO命令,则取消关联。 例:显示每个学生的姓名及其选修的课程号和总成绩,4.3 多个表的同时使用,4.3 多区操作,方法:score为父表、student为子表 Use student Index on 学号 tag xh Sele 2 U

11、se score Set relation to 学号 into 1 List a.姓名,课程号,总成绩,1区 Index on,2区 Set relaton to,4.4 永久联系与参照完整性,数据完整性是指保证数据正确的特性。包括实体完整性、域完整性、参照完整性。1 实体完整性 实体完整性是保证表中记录唯一的特性,即在一个表中不允许有重复的记录。,2 域完整性与约束规则用于控制字段值的输入范围。 规则通过书写表达式,控制字段取值有效范围。 复合表达式须拆分 信息当输入的字段值违反有效性规则时的提示信息。 提示信息必然是字符型数据,勿忘定界符。,4.4 永久联系与参照完整性,默认值当字段经常

12、出现某个值时,可设置其为默认值,这样可提高输入数据的效率。 设置默认值时,一定按数据类型的格式输入。例:以student表为例,设学生的性别字段取值只能为“男”或女,否则出现“性别应该为男或女!”的报错信息,性别默认值是“男” 。,4.4 永久联系与参照完整性,3 参照完整性与表之间的关联 通过建立主索引,实现了数据的实体完整性;通过设置字段有效性,实现了域完整性;而数据的参照完整性,则是在永久关联的基础上建立的。 参照完整性参照完整性是控制数据一致性的规则,当对表中的数据进行插入、更新或删除操作时,通过参照引用相互关联的另一个表中的数据来检查对表的数据操作是否正确,以保持已定义的表间关系。,

13、4.4 永久联系与参照完整性,参照完整性规则 更新:当父表中的关键字值被修改时所用规则 级联:用新的关键字值更新子表中的所有相关记录。 限制:若子表中有相关记录则禁止更新。 忽略:允许更新,不管子表中的相关记录。 删除:当父表中记录被删除时所用规则 级联:删除子表中所有相关记录。 限制:若子表中有相关记录则禁止删除。 忽略:允许删除,不管子表中的相关记录。 插入:当在子表中插入或更新记录时所用规则 限制:若父表中不存在匹配的关键字值,则禁止插入。 忽略:允许插入。,4.4 永久联系与参照完整性,设置参照完整性的步骤: (1)建立表之间的“永久关联”。 确定各表之间的关系 以公共字段建立索引若是

14、一对一,则一表建主索引、另一表建候选索引若是一对多,则父表建立主索引、子表建立普通索引若是多对多,则引入第三个表,转化为两个一对多处理 拖拽父表主索引到子表相应索引即可 (2)设置参照完整性约束。 “数据库”“清空数据库” 右击关联,在参照完整性编辑器中编辑参照完整性,4.4 永久联系与参照完整性,例:建立“学生”数据库中的student表、score表和course表之间的永久关联。并设置student表和score表之间的更新规则是“级联”,删除规则是“限制”,插入规则“限制”;设置score表和course表之间的更新规则是“级联”,删除规则是“忽略”,插入规则“忽略”。,4.4 永久联

15、系与参照完整性,临时关系与永久关系建立方法总结,临时关系是用来控制相关表之间指针的联动;而永久关系主要是用来存储相关表之间的参照完整性。 临时关系既适用于数据库表,也适用于自由表;而永久关系只适用于数据库表。 临时关系在表打开时建立并生效,表关闭后该关系也自动解除。永久关系永久地保存在数据库中而不必在每次使用表时重新创建。 建立临时关系的子表必须建立索引,父表可以不建立索引。而永久关系必须在两张表中根据公共字段都建立索引,而且父表必须建立主索引。,临时关系与永久关系的区别,4.5.2 1、将自由表添加到数据库 (1)菜单 (2)命令 ADD TABLE 2、从数据库中移出表 (1)菜单 (2)命令 REMOVE TABLE ,4.5 自由表,自由表不属于任何数据库;数据库表属于某一数据库。 自由表不支持长表名和长字段名;数据库表支持。 自由表不能限定数据的输入和输出格式;数据库表可以。 自由表无法保证实体完整性,不能创建主索引;数据库表可以创建一个主索引保证实体完整性。 自由表无法设置字段有效性,不能实现域完整性;数据库表可以设置字段有效性、记录有效性及触发器等,可实现域完整性。 自由表无法创建永久关系,不能实现表间的参照完整性;数据库表可以。,自由表和数据库表间的区别,小结,

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

当前位置:首页 > 商业/管理/HR > 宣传企划

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