实验22数据表记录的定位删除与索引

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验2-2数据表记录的定位、删除与索引一、实验目的掌握用数据工作期和命令打开、关闭表的操作;理解记录指针的概念,掌握记录指针的绝对定位、相对定位命令;熟悉函数EOF(),BOF(),RECNO()的使用;掌握表记录的删除操作,理解逻辑删除和物理删除的概念;掌握单项索引文件、结构复合索引文件和非结构复合索引文件的概念及索引文件的建立、打开与使用;理解表使用时的物理顺序和逻辑顺序。二、实验准备预习表记录指针的定位方法;理解表记录的各种删除概念与操作;预习排序和索引的概念及相关操作,主要包括:什么是排序;什么是单项索引文件,它是如何建立及打开的,它与表文件的关系;什么是复合索引文件(包括结构复合索引文件和非结构复合索引文件),他们与单项索引文件有什么区别?是如何建立及打开的,它们与表文件的关系;确定主控索引的意义。班级14国贸1学号140108100421姓名张懿慧三、实验内容1.表文件的打开、关闭操作用数据工作期同时打开“职工”、“销售”和“商品”三个表文件,然后关闭其中的两个文件。用USE打开、关闭“职工”、“销售”和“商品”表文件,在数据工作期观察打开的情况。2.移动及测试记录指针以三个数据表文件为基础,熟悉表记录指针的移动方法以及表处理的常用函数。当执行LIST、DISPLAY、GO、SKIP等语句后,测试EOF()、BOF()、RECNO()等函数的值,特别注意当文件指针在表文件的首记录、末记录和文件头、文件尾时,测试函数的返回值。在命令窗口输入如下命令(注意输入一条命令要键入回车键),并在有?处记录下命令的执行结果。USE职工GO5?RECNO()回答:5SKIP3?RECNO()回答:8GOBOTTOM?RECNO(),EOF()回答:10;.F.SKIP?RECNO(),EOF()回答:11;.T.GOTOP?RECNO(),BOF()回答:1;.F.SKIP-1?RECNO(),BOF()回答:1;.F.?FCOUNT()回答:9?RECCOUNT()回答:10USE销售?FCOUNT()回答:3?RECCOUNT()回答:103.对表文件的记录进行显示和简单的编辑(1)显示“职工”表的前三条记录,再显示最后三条记录。回答:(写出正确的命令,下同)USE职工GO1GOBOTTOMSKIP-2LISTREST(2)将“职工”表中所有基本工资大于2000的已婚女职工,其基本工资在原有基础上调10%,并用DISPLAY命令显示修改前后的记录。回答:DISOLAYFOR婚否=.T..AND.性别=”女”.AND.基本工资2000EPLACE基本工资WITH基本工资*1.1FOR婚否=.T..AND.性别=”女”.AND.基本工资2000(3)在命令窗口设置SETDELETEDON,逻辑删除职工表中在1978年以后出生的女职工记录,用LIST命令显示结果,再将打上删除标记的记录恢复,并用DISPLAY命令检查恢复是否正确。回答:SETDELETEDONDELETEFOR出生日期({^1978-01-01}.AND.性别=’女’ListRECALLFOR出生日期({^1978-01-01}.AND.性别=’女’BROWSELASTDISPLAYFOR出生日期({^1978-01-01}.AND.性别=’女’(4)在命令窗口设置SETDELETEDOFF,将第(3)题再做一遍,注意结果有什么不一样。回答:SETDELETEDOFFDELETEFOR出生日期({^1978-01-01}.AND.性别=’女’ListRECALLFOR出生日期({^1978-01-01}.AND.性别=’女’DISPLAYFOR出生日期({^1978-01-01}.AND.性别=’女’4.有一个工资表文件,其表结构及记录如表2-14和表2-15所示,用REPLACE命令计算每位职工的应发金额和实发金额。回答:USE工资ReplaceALL应发工资WITH基本工资+岗位津贴+其他发款REPLACEALL实发工资WITH基本工资+岗位津贴+其他发款-其他扣款LIST表2-15工资.DBF的数据5.建立排序文件(1)单字段排序:将职工表按照出生日期的升序排列显示。回答:USE职工LISTSORTTO职工出生日期升序ON出生日期/AUSE职工出生日期升序LIST(2)多字段排序:将职工表按性别排序,性别相同的情况下再按基本工资的升序排列。表2-14工资.DBF的结构回答:USE职工SORTON性别,基本工资/ATOzgxbgzUSEzgxbgzLIST6.建立单项及复合索引文件(1)建立单项索引文件,按职工表的基本工资字段的逻辑顺序排列。回答:USE职工INDEXon基本工资tozggzLIST(2)建立单项索引文件,按出生日期的逻辑顺序排列。回答:USE职工INDEXon出生日期tozgrqLIST(3)建立结构复合索引文件的索引标识,按姓名的升序索引。回答:USE职工INDEXON姓名TAGzgxm1LIST(4)建立结构复合索引文件的索引标识,按出生日期的降序索引。回答:USE职工INDEXON出生日期TAGzgrq2DESCENDINGLIST(5)建立非结构复合索引文件的索引标识,按出生日期的升序排列。回答:USE职工INDEXon出生日期TagcsrqofFJGLIST(6)建立非结构复合索引文件的索引标识,按基本工资、出生日期的升序索引。回答:USE职工INDEXonSTR(基本工资,6,2)+DTOS(出生日期)TAGzggzrqofFIGLIST(7)用一条命令打开所有的索引文件,并确定主索引文件或标识,在屏幕上显示索引结果。回答:USE职工SETINDEXTOzggz,zgrq,职工,fjgSETORDERTOzggzLIST(8)建立一个单项索引文件,使其按照基本工资降序排列。回答:USE职工INDEXon3000-基本工资tozggz2LIST(9)利用表设计器对建立的索引标识情况进行检查。四、实验2-2报告1.通过上述实验,请回答下列问题(1)LIST________=DISPLAY,而DISPLAY________=LIST。回答:recno();all(2)执行了LIST命令后,EOF()=_____。回答:.T.(3)执行了GOTOP命令后,BOF()=.T.,对吗?为什么?回答:不对;GOTOP之后指针只是指到了首记录而非文件头,而BOF()是表头测试函数,因此应该BOF()=.F.(4)如何用LIST/DISPLAY命令显示备注字段内容?回答:用LIST/DISPLAYALL命令显示备注型字段内容(5)你认为用REPLACE对表文件记录进行修改,与用BROWSE命令修改有什么不同?回答:BROWSE是显示文件记录然后对文件记录进行修改,REPLACE直接对文件记录进行修改,而且REPLACE可以批量修改(6)SETDELETEDON/OFF语句对被逻辑删除的记录有何影响?回答:使用SETDELETEDON对逻辑删除标志有效,删除标记的记录不参与处理。使用SETDELETEDOFF对逻辑删除标志无效,删除标记的记录参与处理。(7)通过实验,请你归纳当EOF()为.T.时,RECNO()为多少?当BOF()为.T.时,RECNO()为多少?回答:11和1(8)用SORT命令建立排序文件后,紧接着用LIST命令却看不到排序结果,为什么?回答:用SORT命令建立排序文件后,会产生一个新表,排序内容在新建的新表里,要USR新表再LIST浏览(9)建立索引文件时,有一个可选参数[UNIQUE],它有什么意义?你能举例说明吗?回答:当多个记录的索引表达式值相同时,只有其中第一个记录的值记入索引文件。例一:INDEXON婚否TAGHFOFFJGUNIQUE&&按婚否建唯一索引标识HF加到非结构复合索引文件FJG.cdx中(10)请总结一下表的排序与表索引有什么不同。回答:不同:1.建索引是在系统中建立一个索引表,在查找记录的时候可以通过这个表迅速找到。排序是将表在系统中按一个键值的进行的,改变了记录的物理顺序。2.排序后会产生一个新表,其记录按新的顺序重新编排记录,而原文件保持不变。索引文件是表文件的辅助文件,必须和表文件同时使用。3.由于索引表是按关键字进行的逻辑排序,且只有两个字段,因此大大提高了排序速度,而且只占用了很小的存储空间。2.实验完成情况及存在问题

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功