《第5章自由表的创建及操作.ppt》由会员分享,可在线阅读,更多相关《第5章自由表的创建及操作.ppt(46页珍藏版)》请在课桌文档上搜索。
1、,数据库技术及应用,第5章 自由表的创建及操作,5.1 设计数据表5.2 建立自由表5.3 表记录的输入5.4 表的操作与使用 5.5 表的排序与索引5.6 查询与统计命令5.7 使用多个表5.8 习题,5.1 设计数据表,设计一张二维表格:,表5.1 学生情况表,XSQK(no C(9),name C(8),sex C(2),birth D,nation C(10),clan C(4),note M NULL,photo G NULL),表5.2“xsqk.dbf”表结构,XSQK(no C(9),name C(8),sex C(2),birth D,nation C(10),clan C(
2、4),note M NULL,photo G NULL),5.2 建立自由表,VFP提供了三种建立对象的方法:向导、设计器、命令。,使用“表设计器”建表(xsqk.dbf),使用“表向导”建表(xscj.dbf),表5.3“xscj.dbf”表结构,使用命令建表(xscj.dbf),(1)新建表命令CREATE 语法:CREATE|?,【例5.1】新建一个学生成绩表(xscj.dbf)。CREATE xscj,【例5.2】在命令窗口中输入命令:CREATE TABLE xscj(no c(9),courseid c(3),score n(5,1)NULL,term n(1,0),detail
3、m NULL)可以建立“xscj.dbf”的表文件结构,(2)复制表结构命令COPY STRUCTURE,语法:COPY STRUCTURE TO FIELDS,【例5.3】在命令窗口中输入以下命令行,实现与使用“表向导”建表相同的功能。USE xsqk.dbfCOPY STRUCTURE TO xscj FIELDS no,noteUSE xscj&打开新建的表DISPLAY STRUCTURE&显示表结构,(3)复制数据表命令COPY TO,语法:COPY TO FORWHILEFIELDSTYPE,5.3 表记录的输入,VFP输入数据方式:,浏览(Browse)方式,编辑(Edit)方式
4、,追加(Append)方式,命令方式,APPEND命令语法:APPENDBLANK,5.4 表的操作与使用,打开和关闭表,格式:USE 功能:使用参数可以打开一个已经存在的数据表。使用不带参数的USE命令可以关闭已打开的数据表。,说明:表打开时,若该表有备注型或通用型字段,则自动打开同名的.FPT文件。已打开的表总有一个记录指针,指针所指的记录称为当前记录。表刚打开时,记录指针指向第一个记录。按下【Esc】键、或者选择“文件|关闭”菜单项关闭的只是“浏览”窗口,相应的数据表文件并没有关闭,仍在内存中。,浏览表数据,(1)调整字段顺序,(2)改变显示时的列宽,(3)拆分“浏览”窗口,(4)打开浏
5、览窗口命令,格式:BROWSE FIELDSLOCKFREEZE,【例5.4】BROWSE命令应用示例。USE xsqkBROWSE FIELDS no,name,sex,birth FREEZE name&冻结字段&浏览BROWSE LOCK 2&浏览表,锁定左端两个字段的内容,(5)显示记录命令,【例5.5】显示“xsqk.dbf”表中所有学生的“no”,“name”,“sex”和“birth”。USE xsqkLIST ALL FIELDS no,name,sex,birthUSE,LIST/DISPLAY,(1)在浏览窗口中从键盘修改,修改表数据,(2)替换字段,格式:REPLACE
6、范围 FOR|WHILE 字段名1 WITH 表达式1,字段名2 WITH 表达式2,作用范围有4种限定方法。ALL代表所有记录;NEXT 代表从当前记录起的N个记录;RECORD 代表第N个记录;REST代表从当前记录起到最后一个记录止的所有记录。FOR子句的为逻辑表达式,它指定选择记录的条件。WHILE子句也用于指明操作条件,但它仅在当前记录符合时开始依次筛选记录,一旦遇到不满足条件的记录时就停止操作。,在编辑任一字段中的数据以后,如果将光标移出该字段,VFP就会自动保存对该字段所做的任何更改。因此,在将光标移出该字段之前,可以单击工具栏中的“撤消”按钮来撤消对该字段的修改。,(1)记录过
7、滤,过滤表数据,【例5.6】只浏览“xsqk.dbf”表中的女生记录。USE“xsqk.dbf”SET FILTER TO xsqk.sex=“女”BROWSE,(2)字段过滤,【例5.8】只浏览“xsqk.dbf”表中的女生记录的“no”、“name”、“birth”三个字段。USE“xsqk.dbf”SET FILTER TO xsqk.sex=“女”SET FIELDS TO xsqk.no,xsqk.name,xsqk.birthBROWSE,定位表记录,【例5.10】记录指针移动示例。USE“xsqk.dbf”?RECNO()&显示当前记录号为1SKIP 5&记录指针向下移动5条?R
8、ECNO()&显示当前记录号为6SKIP 2&记录指针向上移动2条?RECNO()&显示当前记录号为4GO BOTTOM&记录指针移到最后一条记录?EOF()&显示.F.,说明最后一条记录并不是文件尾?RECCOUNT()&显示共有记录7条SKIP&记录指针再向下移一条?EOF()&显示.T.,说明记录指针已到文件尾?RECNO()&显示当前记录号为8USE,命令格式:GO BOTTOM|TOP|命令格式:SKIP n|-n,删除表记录,说明:这里所说的“删除”与平时所理解的删除是不同的。记录被删除时,实际上这条记录在数据表中只是被加上了一个删除标记,数据仍然完好地存在于数据表当中,并没有真正
9、被删除,还有机会被还原。如果要把这条记录从数据表中真正删除掉,需要用到“彻底删除”命令。,(1)做删除标记(即逻辑删除),(2)条件删除,【例5.11】使用“表”菜单删除“xsqk.dbf”表中所有女生的记录。,(3)使用DELETE命令,【例5.12】使用DELETE命令实现例5.11的功能。USE“xsqk.dbf”DELETE ALL FOR xsqk.sex=“女”BROWSE,SET DELETED ON/OFF,(4)彻底删除,语法:PACK功能:将数据表中所有具有删除标记的记录从表文件中删掉。说明:使用该命令应以独占方式使用表,PACK为物理删除命令,一旦执行,无法恢复。,(5)
10、删除全部记录,语法:ZAP功能:从表中彻底删除所有记录。说明:发出ZAP命令相当于执行DELETE ALL命令后再执行PACK命令,但ZAP更快。这时必须是以独占方式使用表。ZAP命令破坏性极大,应慎用。,恢复表记录,RECALL,说明:记录的恢复是指去掉删除标记,但已被物理删除的记录是不可恢复的。,表结构的操作,(1)显示表结构命令 DISPLAY/LIST STRUCTURE,(2)修改表结构 MODIFY STRUCTURE,5.5 表的排序与索引,通常情况下,数据表中的各条记录是按输入顺序排列的,然而许多时候则需要按某种特定的次序排列。例如,在学生情况表中要求记录按学号高低排序。,VF
11、P提供了物理排序和逻辑排序两种方法:物理排序方法是另外生成一个与原表类似但各记录已按要求排好序的数据表文件;逻辑排序方法即索引方法,是在原表的基础上生成一个简单的排序索引表,在其中仅记载各记录的记录号及应有的排列顺序。,物理排序,格式:SORT ON/ASC/DESC TO,【例5.13】将“xsqk.dbf”表中的所有记录,先按出生日期的降序再按学号的升序进行物理排序。USE xsqk.dbfSORT ON birth/DESC,no/ASC TO XsPxUSE XsPx.dbfBROWSE&显示的排序结果USE,索引的概念,数据表记录一般是按照其输入的顺序进行存储和显示的。这不便于用户查
12、找自己需要的信息。通过以数据表中的某些字段的值为依据建立的索引文件,便可以重新排列数据表中的记录。而记录在数据表中的实际存储位置并未改变。索引起作用后,增删或修改表的记录时索引文件会自动更新。,索引的类型,(2)索引项的类型,索引的建立,(1)在“表设计器”对话框中建立索引,指定索引,索引类型,索引表达式,(2)用命令建立索引,【例5.14】使用命令为“xsqk.dbf”表创建以“no”为索引关键字的按升序排列的候选索引。USE xsqk.dbfINDEX ON no TAG number ASCENDING CANDIDATE,索引的删除,前者可以删除索引文件中指定的索引,后者则删除全部索引
13、。,删除索引的办法是在“表设计器”中使用“索引”选项卡,选中需要删除的索引,单击“删除”命令按钮即可删除。也可以使用命令方式删除。删除索引的命令格式为:DELETE TAG OF,OF 或DELETE TAG ALLOF,索引的使用,1打开和关闭索引文件,命令格式:SET INDEX TO功能:打开当前表的一个或多个索引文件并确定中的第一个索引文件为主控索引文件。该命令常用于打开单索引文件或非结构复合索引文件。当仅用SET INDEX TO命令时,将关闭除结构复合索引文件外的所有索引文件。,2确定主控索引项,对于复合索引,在打开索引文件后,还须确定主控索引项。确定主控索引项可以使用交互或命令方
14、式:,【例5.15】设置“xsqk.dbf”表的“no”索引关键字为当前索引,并按降序排列记录。USE xsqkSET ORDER TO no DESCENDINGBROWSE,5.6 查询与统计命令,查询和统计是数据库应用的重要内容。查询就是按照给定的条件在表中查找所需要的记录。这里只介绍两种传统的查询方法:顺序查询和索引查询。实际应用中,经常要对数据库中的数据进行统计计算,例如统计记录个数,对数值型字段求和、求平均值、分类汇总等。,数据表的查询,1顺序查询命令,【例5.16】在“xsqk.dbf”数据表中查找姓朱的同学。USE xsqkLOCATE FOR name=朱DISPLAYCON
15、TINUEDISPLAYUSE,2索引查询命令,索引查询依赖二分法算法来实现,在210个记录中寻找一个满足给定条件的记录,不超过10次比较就能进行完毕;而顺序查询最多需比较1024次。可见顺序查询速度较慢,适用于记录数较少的表。索引查询速度很快,但其算法要求表的记录是有序的,这就需要事先对表进行索引或排序。,【例5.17】在“xsqk.dbf”表中快速查找1980年6月1日出生的学生。USE xsqkSTORE 1980/06/01 TO rqINDEX ON birth TAG CSRQSEEK rqDISPLAY&显示1980年6月1日出生的学生记录内容,数据表的统计,1计数命令,【例5.
16、18】统计“xsqk.dbf”表中1982年以前出生的学生人数。USE xsqkCOUNT FOR YEAR(birth)1982 TO rs82?rs82USE,2求和与求平均命令,【例5.19】计算“xscj.dbf”数据表中学号为“000802101”的学生第1学期所有课程成绩的总分与平均分。USE xscj.dbfSUM score FOR no=000802101.AND.term=1 to nS1AVERAGE score FOR no=000802101.AND.term=1;to nS2 USE?nS1?nS2,3汇总命令,数据表中的记录在指定的关键字进行排序的基础上,可以对这
17、些记录进行分类求和,即分别对同一类别所有记录的数值型字段的值进行求和汇总。对数据表进行分类求和之后,将把结果存入一个与原表结构相同的新数据表中,原数据表中关键字值相同的一组记录汇总后将生成新表中的一条对应记录,因而原数据表中此关键字有多少个不同的值,在生成的新表文件中便有多少条记录。,格式:TOTAL ON TO,5.7 使用多个表,工作区,(1)工作区号 表打开后才能进行操作,实际上打开表就是把它从磁盘调入内存的某个工作区。VFP提供了32767个工作区,编号从1到32767。每个工作区只允许打开一个表,在同一工作区打开另一个表时,以前打开的表就会自动关闭。反之,一个表只能在一个工作区打开,
18、在其未关闭时若试图在其它工作区打开它,VFP会显示信息框提示出错信息“文件正在使用”。如果在同一时刻需要打开多个表,则只需要在不同的工作区中打开不同的表就可以,刚进入系统时,系统总是默认在1号工作区中工作。,(2)别名 前10个工作区除使用110为编号外,还依次用AJ十个字母来表示,后者称为工作区别名。其实表也有别名,并可用命令“USE ALIAS”来指定。例如命令“USE XSQK ALIAS stu_data”即指定stu_data为“XSQK.DBF”的别名。,(3)选择工作区命令格式:SELECT|功能:选定某个工作区,用于打开一个表。说明:命令“SELECT 0”表示选定当前尚未使用
19、的最小号工作区,该命令使用户不必记忆工作区号,以后要切换到某工作区,只要在SELECT命令中使用便可。要引用非当前工作区中的表的字段,应当加上要引用表所在工作区的表别名,引用格式为:“别名.字段名”。,【例5.20】分别在不同的工作区打开表“xsqk.dbf”和“xscj.dbf”。CLOSE ALL&关闭所有打开的表,当前工作区为1号SELECT 1&选定1号工作区为当前工作区USE xsqkSELECT 0&2号工作区未打开过表,选定2号工作区 USE xscjSET&打开“数据工作期”窗口查看当前打开的多个表,数据工作期,5.8 习题,一、选择题1要限制数据库表中字段的重复值,可以使用(
20、)。A)主索引或候选索引B)候选索引或普通索引 C)主索引或普通索引D)普通索引2主文件名与表的主文件名相同,并且随表的打开而自动打开,在增加记录或修改索引关键字值时会随着自动更新的索引文件是()。A)复合索引文件B)结构复合索引文件 C)非结构复合索引文件D)单一索引文件3若要恢复用DELETE命令加上删除标记的记录,应该使用()。A)RECALL命令B)按ESC键 C)RELEASE命令D)ROUND命令,4不带索引文件名SET INDEX TO命令的作用是()。A)关闭索引文件B)打开所有的索引文件 C)删除索引文件D)重新建立索引文件5表结构中空值(NULL)的含义是()。A)空格B)
21、0 C)默认值D)尚未输入6在表文件已经打开时,打开索引文件的命令是()。A)USEB)INDEX WITH C)SET INDEX TO D)INDEX ON7利用()命令,可以在浏览窗口浏览表中的数据。A)LIST B)BROWSE C)MODIFY STRUD)USE,8一个表中多个备注(MEMO)字段的内容是存放在()。A)这个表文件中B)一个备注文件中 C)多个备注文件中D)一个文本文件中9命令“TOTAL ON 姓名 TO DSK”中DSK是()。A)库文件B)字段变量 C)表文件D)文本文件二、填空题1同一个表的多个索引可以创建在一个索引文件中,索引文件主文件名与表的主文件名同名
22、,索引文件的扩展名为,这种索引称为。2设置结构复合索引文件中的索引标识JIAGE为主索引的命令是。3选择当前未使用的最小编号工作区的命令是。4数据库表有3种索引类型,即、和。5引用非当前工作区中表的字段的格式是。,三、简答题1索引表的方法有哪些?2VFP中的索引有哪几种?四、上机题1建立“学生情况”表和“学生成绩”表。并添加几条记录,进行修改和删除操作。(1)用“编辑”菜单进行表的修改操作。(2)给前3个记录做删除标记,然后再恢复操作。(3)将性别是“女”的记录做删除标记,然后再彻底删除。2将“学生情况”表,按要求建立索引文件:(1)按“学号”建立索引文件。(2)按“出生日期”建立索引文件。,