第4章_数据库、表的进一步操作_第1页
第4章_数据库、表的进一步操作_第2页
第4章_数据库、表的进一步操作_第3页
第4章_数据库、表的进一步操作_第4页
第4章_数据库、表的进一步操作_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章第四章 Visual FoxProVisual FoxPro数据库及其操作数据库及其操作 ContentsContents4.1表的排序和索引表的排序和索引 124.4表之间的永久关系与表之间的永久关系与 参照完整性参照完整性4.5 自由表自由表4.3 多个表的同时使用多个表的同时使用 34.2 表的统计操作表的统计操作4 54.1 表的排序和索引4.1.1 4.1.1 排序排序v排序是将记录按需要的顺序重新排列,产排序是将记录按需要的顺序重新排列,产生一个新的数据表文件,实现从物理上对生一个新的数据表文件,实现从物理上对数据记录的重新排列。数据记录的重新排列。 格式:格式:SORT T

2、O SORT TO ON ON 1 /A|/D,/A|/D,/A|/D2/A|/D FOR FOR FIELDS FIELDS 对对studentstudent表中的所有记录,先按专业由高表中的所有记录,先按专业由高到低,再按入学成绩由低到高进行排序。到低,再按入学成绩由低到高进行排序。4.1.2 4.1.2 索引的概念及类型索引的概念及类型v索引是按索引关键字的值对表中的记录进行索引是按索引关键字的值对表中的记录进行排序排序的一种方法。的一种方法。F索引的目的是加快查询的速度F索引关键字可以是表中的单个字段或几个字段的组合F记录的物理顺序由表文件(.dbf)存储,而记录的逻辑顺序由索引文件存

3、储(.idx或.cdx)F索引文件仅存储记录的逻辑顺序,记录数据依然由表文件存储,故索引文件必须同表一起使用4.1 4.1 表的排序和索引索引类型索引类型建立范围建立范围可否重复可否重复可建数量可建数量主索引主索引数据库表数据库表无重复值无重复值1 1候选索引候选索引数据库表数据库表自由表自由表无重复值无重复值N N唯一索引唯一索引数据库表数据库表自由表自由表只保留第一个只保留第一个重复值重复值N N普通索引普通索引数据库表数据库表自由表自由表可重复可重复N Nv索引的类型索引的类型4.1 4.1 表的排序和索引4.1.3 4.1.3 创建索引创建索引1 1、在表设计器中建立索引、在表设计器中

4、建立索引例:以例:以teacherteacher表的表的“编号编号”字段建立候选索引,索引名字段建立候选索引,索引名为为bhbh;以;以“部门代码部门代码”字段建立降序普通索引,索引名为字段建立降序普通索引,索引名为“部门代码部门代码”。4.1 4.1 表的排序和索引2 2、用命令方式建立索引、用命令方式建立索引INDEX ON INDEX ON TO TO | | TAG TAG OF OF FOR FOR COMPACT ASCENDING | DESCENDINGUNIQUE | COMPACT ASCENDING | DESCENDINGUNIQUE | CANDIDATECANDID

5、ATEFTOTO建立单索引,扩展名建立单索引,扩展名.idx.idxFTAGTAG建立复合索引,扩展名建立复合索引,扩展名.cdx.cdx用命令为用命令为studentstudent表的表的“出生日期出生日期”建立索引,索引保存建立索引,索引保存在名为在名为“出生日期出生日期”的独立索引文件中的独立索引文件中F复合索引表达式:复合索引表达式:“先按先按,再按,再按” 两字段用+连接,故都要转换为字符型为为studentstudent表建立普通索引,要求先按性别升序排列,性表建立普通索引,要求先按性别升序排列,性别相同再按出生日期升序排列。别相同再按出生日期升序排列。4.1 4.1 表的排序和索

6、引独立索引文件:只包含一个排序方案,扩展名为独立索引文件:只包含一个排序方案,扩展名为.idx.idx复合索引文件:可包含多个排序方案,各个索引之间复合索引文件:可包含多个排序方案,各个索引之间以索引标识区分,扩展名为以索引标识区分,扩展名为.cdx.cdx结构复合索引文件:文件名与其表文件名相同,打开表时会自动打结构复合索引文件:文件名与其表文件名相同,打开表时会自动打开索引文件开索引文件非结构复合索引文件:文件名在创建时用户给定,打开表时不会自动非结构复合索引文件:文件名在创建时用户给定,打开表时不会自动打开索引文件,需用户用命令打开打开索引文件,需用户用命令打开例例:teacher表(编

7、号,姓名)表(编号,姓名)Index on 编号编号 to bh.idx 独立索引,存放于独立索引,存放于bh.idx文件中文件中Index on 姓名姓名 to xm.idx 独立索引,存放于独立索引,存放于xm.idx文件中文件中Index on 编号编号 tag bhIndex on 姓名姓名 tag xm 结构复合索引,存放于结构复合索引,存放于teacher.cdx文件中文件中Index on 编号编号 tag bh of zgbhIndex on 姓名姓名 tag xm of zgxx 非结构复合索引,存放于非结构复合索引,存放于zgbh.cdx文件中文件中非结构复合索引,存放于非

8、结构复合索引,存放于zgxxb.cdx文件中文件中4.1 4.1 表的排序和索引4.1.4 4.1.4 使用索引使用索引1 1打开索引文件打开索引文件( (自学自学) ) SET INDEX TO SET INDEX TO 2 2设置当前索引:控制当前记录顺序的索引。设置当前索引:控制当前记录顺序的索引。F格式格式1 1:SET ORDER TOSET ORDER TO |TAG |TAG ASCENDING |DESCENDING ASCENDING |DESCENDINGF格式格式2 2:USE USE ORDER TAG ORDER TAG 例:例:1 1、按入学成绩建立索引,索引标识、

9、按入学成绩建立索引,索引标识rxcjrxcj。 2 2、设置、设置rxcjrxcj为主控索引。为主控索引。 3 3、取消主控索引,恢复原来的物理顺序。、取消主控索引,恢复原来的物理顺序。4.1 4.1 表的排序和索引3.3.使用索引快速定位使用索引快速定位索引查找的主要目的和索引查找的主要目的和locatelocate相仿,都是为了相仿,都是为了快速定位,提高查找速度。快速定位,提高查找速度。v索引查找的前提:索引查找的前提:相应字段需建立索引,并成为主控索引。相应字段需建立索引,并成为主控索引。1 1、索引查找姓名为、索引查找姓名为“王立王立”的记录。的记录。 2 2、索引查找基本工资为、索

10、引查找基本工资为36003600的记录。的记录。4.4.删除索引(自学)删除索引(自学)DELELE TAG ALL|DELELE TAG ALL|,2 SeekSeek:C:C(需使用定界符)(需使用定界符),N,L,D,N,L,D,变量变量4.1 4.1 表的排序和索引4.2 4.2 表的统计操作表的统计操作( (自学自学) )v累加求和累加求和F对于表中数值型字段求和。对于表中数值型字段求和。FSUM SUM FOR FOR TO TO |TO |TO v求平均值求平均值F对于表中数值型字段求平均值。对于表中数值型字段求平均值。FAVERAGE AVERAGE FOR FOR TO TO

11、 |TO |TO v统计记录个数统计记录个数FCOUNT COUNT FOR FOR TO TO |TO |TO 4.3 4.3 多区操作多区操作显示学生姓名及其选修的课程号和总成绩。显示学生姓名及其选修的课程号和总成绩。4.3 4.3 多区操作多区操作USE studentUSE studentUSE scoreUSE scoreLIST LIST 姓名姓名, ,课程号课程号, ,总成绩总成绩4.3.14.3.1工作区的概念工作区的概念把内存里用于存储某一张表的空间称作工作区。把内存里用于存储某一张表的空间称作工作区。所以打开表就是把它从磁盘调入内存的某一个工作所以打开表就是把它从磁盘调入内

12、存的某一个工作区。区。 一个工作区在某一时刻只能打开一张表一个工作区在某一时刻只能打开一张表,如果,如果一个工作区中已经打开了一张表,再在这个工作区一个工作区中已经打开了一张表,再在这个工作区中打开另一张表时,原来的表会自动关闭。所以,中打开另一张表时,原来的表会自动关闭。所以,若需要若需要同时使用多个表同时使用多个表,则须在不同的工作区去打,则须在不同的工作区去打开不同的表。开不同的表。4.3 多个表的同时使用v工作区标识工作区标识VFPVFP最多可以设置最多可以设置3276732767个工作区。为了标识工个工作区。为了标识工作区,有三种表示方法:作区,有三种表示方法:F工作区的区号工作区的

13、区号:从:从1 1开始,直到开始,直到3276732767。 0 是一个特殊的区号,用于标识未被使用的最小的是一个特殊的区号,用于标识未被使用的最小的区区F系统别名:系统别名:前前1010个工作区,还可用个工作区,还可用A A、B B、C C、D D、E E、F F、G G、H H、I I、J J来标识来标识F用户别名:用户别名:打开一个表时,通过打开一个表时,通过aliasalias设置一个标识。设置一个标识。 若没有设置,默认用户别名和表名相同若没有设置,默认用户别名和表名相同表刚刚打开时,表刚刚打开时,1 1号工作区为号工作区为当前工作区当前工作区,在,在当前工作区中打开的表,称为当前工

14、作区中打开的表,称为当前工作表当前工作表。所以。所以前面操作打开的表都是打开在前面操作打开的表都是打开在1 1号工作区中的。号工作区中的。4.3 多个表的同时使用4.3.2 4.3.2 选择工作区选择工作区1.工作区的选择工作区的选择FSELECT SELECT F可用可用SELECT()SELECT()返回当前工作区的区号返回当前工作区的区号4.3 多个表的同时使用分别在分别在1号工作区和号工作区和4号工作区打开号工作区打开student表与表与course表,在未使用的最小工作区打开表,在未使用的最小工作区打开score表,表,并返回该区区号。并返回该区区号。补充:补充:多表操作下表的打开

15、和关闭多表操作下表的打开和关闭vUSE USE IN IN 工作区标识工作区标识 ALIAS ALIAS 用户用户别名别名 AGAIN AGAINF用用ININ来指定表打开的工作区来指定表打开的工作区FALIASALIAS:为该工作区起一个用户别名,缺省则用表名作:为该工作区起一个用户别名,缺省则用表名作为工作区的别名。为工作区的别名。FAGAINAGAIN:若要在不同的工作区中打开同一张表,再次打:若要在不同的工作区中打开同一张表,再次打开时一定要加开时一定要加AGAINAGAIN关键字。关键字。在在3 3号工作区再次打开号工作区再次打开scorescore表,并指定别名为表,并指定别名为“

16、成绩成绩”补充:补充:多表操作下表的打开和关闭多表操作下表的打开和关闭v多表操作下表的关闭多表操作下表的关闭FUSE IN USE IN 工作区标识工作区标识 FCLOSE ALLCLOSE ALL 关闭所有工作区中的表并关闭所有相关的索引、格式和备注文件以及数据库文件等,并选择1号工作区为当前工作区。关闭关闭3号工作区内的表号工作区内的表关闭所有工作区内的表关闭所有工作区内的表4.3 4.3 多区操作多区操作例:例:显示每个学生的姓名及其选修的课程号和总显示每个学生的姓名及其选修的课程号和总成绩成绩USE studentUSE studentUSE score IN 2USE score I

17、N 2LIST LIST 姓名姓名, ,课程号课程号, ,总成绩总成绩2.非当前工作区数据的使用非当前工作区数据的使用F工作区别名-字段名或工作区别名.字段名4.3 多个表的同时使用例:例:显示每个学生的姓名及其选修的课程号和总显示每个学生的姓名及其选修的课程号和总成绩成绩USE studentUSE studentUSE score IN 2USE score IN 2LIST LIST 姓名姓名,b.,b.课程号课程号,b-,b-总成绩总成绩4.3.3 4.3.3 建立表间临时关联建立表间临时关联表间的临时关联是指在不同工作区的两个表间表间的临时关联是指在不同工作区的两个表间建立记录指针同

18、步移动的关系。建立记录指针同步移动的关系。建立关联后,当前工作区中的表(建立关联后,当前工作区中的表(父表父表)的指)的指针移动后,被关联的表(针移动后,被关联的表(子表子表)的指针会自动移)的指针会自动移动到相关记录。由于这种关联在其中一个表关闭动到相关记录。由于这种关联在其中一个表关闭后,表之间的关联就消失,所以称为后,表之间的关联就消失,所以称为临时关联临时关联。前提前提:建立关联的表必须有一个相同的字段,:建立关联的表必须有一个相同的字段,4.3 多个表的同时使用v建立临时关联的步骤建立临时关联的步骤F确认两张表谁为父表,谁为子表F被关联的表(子表)必须以共同字段建立索引,并设置为主控

19、索引。v建立临时关联的命令建立临时关联的命令SET RELATION TO SET RELATION TO 关键字段名关键字段名 INTO INTO 工作区标识工作区标识 F若执行若执行SET RELATION TOSET RELATION TO命令,则取消关联。命令,则取消关联。例:显示每个学生的姓名及其选修的课程号和总例:显示每个学生的姓名及其选修的课程号和总成绩成绩4.3 多个表的同时使用4.3 4.3 多区操作多区操作v方法:方法:scorescore为父表、为父表、studentstudent为子表为子表Use studentIndex on 学号学号 tag xhSele 2Use

20、 scoreSet relation to 学号学号 into 1List a.姓名姓名,课程号课程号,总成绩总成绩1区区Index on2区区Set relaton to4.4 4.4 永久联系与参照完整性永久联系与参照完整性数据完整性数据完整性是指保证数据正确的特性。包括实体完整是指保证数据正确的特性。包括实体完整性、域完整性、参照完整性。性、域完整性、参照完整性。1 1 实体完整性实体完整性v实体完整性是保证表中记录唯一的特性,即在一个实体完整性是保证表中记录唯一的特性,即在一个表中不允许有重复的记录。表中不允许有重复的记录。2 2 域完整性与约束规则域完整性与约束规则用于控制字段值的输

21、入范围。用于控制字段值的输入范围。v规则规则通过书写表达式,控制字段取值有效范围。通过书写表达式,控制字段取值有效范围。F复合表达式须拆分复合表达式须拆分v信息信息 当输入的字段值违反有效性规则时的提示信息。当输入的字段值违反有效性规则时的提示信息。F提示信息必然是字符型数据,勿忘定界符。提示信息必然是字符型数据,勿忘定界符。4.4 4.4 永久联系与参照完整性永久联系与参照完整性v默认值默认值当字段经常出现某个值时,可设置其为默认值,当字段经常出现某个值时,可设置其为默认值,这样可提高输入数据的效率。这样可提高输入数据的效率。F设置默认值时,一定按数据类型的格式输入。设置默认值时,一定按数据

22、类型的格式输入。例:以例:以studentstudent表为例,设学生的性别字段取值只表为例,设学生的性别字段取值只能为能为“男男”或女,否则出现或女,否则出现“性别应该为男或性别应该为男或女!女!”的报错信息,性别默认值是的报错信息,性别默认值是“男男”。4.4 4.4 永久联系与参照完整性永久联系与参照完整性3 3 参照完整性与表之间的关联参照完整性与表之间的关联 通过建立通过建立主索引主索引,实现了数据的实体完整性;,实现了数据的实体完整性;通过设置通过设置字段有效性字段有效性,实现了域完整性,实现了域完整性; ;而数据的而数据的参照完整性参照完整性,则是在,则是在永久关联永久关联的基础

23、的基础上建立的。上建立的。v参照完整性参照完整性参照完整性是参照完整性是控制数据一致性控制数据一致性的规则,当对表的规则,当对表中的数据进行中的数据进行插入、更新或删除插入、更新或删除操作时,通过参操作时,通过参照引用相互关联的另一个表中的数据来检查对表照引用相互关联的另一个表中的数据来检查对表的数据操作是否正确,以保持已定义的表间关系。的数据操作是否正确,以保持已定义的表间关系。4.4 4.4 永久联系与参照完整性永久联系与参照完整性v参照完整性规则参照完整性规则F更新:当更新:当父表父表中的关键字值被修改时所用规则中的关键字值被修改时所用规则 级联:用新的关键字值更新子表中的所有相关记录。

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

25、立索引若是一对一,则一表建主索引、另一表建候选索引若是一对多,则父表建立主索引、子表建立普通索引若是多对多,则引入第三个表,转化为两个一对多处理F拖拽父表主索引到子表相应索引即可(2)(2)设置参照完整性约束。设置参照完整性约束。F“数据库数据库”“清空数据库清空数据库”F右击关联,在参照完整性编辑器中编辑参照完整性右击关联,在参照完整性编辑器中编辑参照完整性4.4 4.4 永久联系与参照完整性永久联系与参照完整性例:建立例:建立“学生学生”数据库中的数据库中的studentstudent表、表、scorescore表和表和coursecourse表之间的永久关联。并设置表之间的永久关联。并设

26、置studentstudent表表和和scorescore表之间的更新规则是表之间的更新规则是“级联级联”,删除规则,删除规则是是“限制限制”,插入规则,插入规则“限制限制”;设置;设置scorescore表和表和coursecourse表之间的更新规则是表之间的更新规则是“级联级联”,删除规则,删除规则是是“忽略忽略”,插入规则,插入规则“忽略忽略”。4.4 4.4 永久联系与参照完整性永久联系与参照完整性永永久久关关联联1 1:1 11 1:N N父表建立主索引,子表建立候选索引父表建立主索引,子表建立候选索引父表建立主索引,子表建立普通索引父表建立主索引,子表建立普通索引建立数据库表之间

27、的参照完整性建立数据库表之间的参照完整性两张表两张表三张表三张表找准中间表,分析其与两边表的关系,然后建立索引找准中间表,分析其与两边表的关系,然后建立索引临临时时关关联联1 1:1 11 1:N N两张两张表表三张表三张表找准中间表后,在两边表建立索引,中间表建立关系。注意:找准中间表后,在两边表建立索引,中间表建立关系。注意:在建立第二个关系时,须在最后加上在建立第二个关系时,须在最后加上additiveadditive参数,以防止第参数,以防止第二个关系取代第一个关系二个关系取代第一个关系一张表建立索引(一张表建立索引(Index onIndex on),另一张表建立关),另一张表建立关

28、系(系(set relation toset relation to)一方表建立索引(一方表建立索引(Index onIndex on),多方表建立关系(),多方表建立关系(set set relation torelation to)多方表建立索引(多方表建立索引(Index onIndex on),一方表建立关系(),一方表建立关系(set set relation torelation to),此时要说明哪个表是多方表(),此时要说明哪个表是多方表(set skip set skip to to )在多表操作时,使多表协同操作,提高数据查询的速度和正确性在多表操作时,使多表协同操作,提高数据查询的速度和正确性临时关系与永久关系建立方法总结临时关系与永久关系建立方法总结v临时关系是用来控制相关表之间指针的联动;而临时关系是用来控制相关表之间指针的联动;而永久关系主要是用来存储相关表之间的参照完整永久关系主要是用来存储相关表之间的参照完整性。性。v临时关系既适用于数据库表,也适用于自由表;临时关系既适用于数据库表,也适用于自由表;而永久关系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论