您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第5章 vfp数据库基础资料
第5章数据查询第5章数据查询学习目的与要求:数据查询是数据库应用的重要内容,本章围绕数据查询介绍了查询的概念、命令和一种强有力的查询工具----查询设计器,用户可以利用它快速检索在表和视图中所需要的信息。本章另外一个重要的概念是视图的设计与使用,它将帮助用户对数量庞大的信息按新的方法重新加工、过滤筛选。使用者不必直接接触到复杂的数据表,也能方便自如地使用数据。所以读者必需掌握查询和视图这两个概念,并为学习下一章打好基础。第5章数据查询5.1List和Display查询5.2表中记录定位5.3查询和视图5.4上机实训5.5本章习题5.1List和Display查询5.1.1List查询格式:LIST[OFF][FIELDS字段名列表][范围][FOR条件][WHILE条件][TOPRINTER[PROMPT]/TOFILE文本文件名]功能:显示当前表中的全部或部分记录和数据。参数描述:[OFF]:使用OFF时,不显示记录号,否则显示每个记录号。[范围]:范围为可选项,可根据需要选择ALL、RECORD(N)、NEXT(N)、REST中的任一个参数,表示记录显示的范围。其中,ALL表示显示所有记录。RECORD(N)表示显示第N条记录。NEXT(N)表示显示从当前指针开始连续N条记录。REST表示显示从当前指针开始直到最后一条记录。FIELDS字段名列表:若省略字段名表列,则显示当前表中的所有字段,否则显示指定的字段。如果备注型字段名出现在字段名表列中,则它的内容按50个字符列宽显示。[FOR条件/WHILE条件]:该子句表示只选择满足条件记录,省略时则显示范围限定的全部记录。注意:FOR条件/WHILE条件的区别在于:FOR条件是在指定范围内的所有的记录,而WHILE条件则为指定范围内的第一个记录到第一个不满足条件的记录。[TOPRINTER[PROMPT]/TOFILE文本文件名]:指定记录列表的输出方向。TOPRINTER[PROMPT]指定输出到打印机。[PROMPT]参数的使用方法同前。TOFILE文本文件名指定输出到所指定的文本文件中。5.1.2Display查询格式:DISPLAY[OFF][FIELDS字段名列表][范围][FOR条件][WHILE条件][TOPRINTER[PROMPT]/TOFILE文本文件名]DISPLAY和LIST功能基本相同,都是显示记录,不同之处是DISPLAY当显示满一屏后暂停,按任意键后继续显示;而LIST则滚屏显示,直到最后一条记录显示完为止。还有一个不同,当没有可选项时,只显示当前记录。5.1.3Browse查询格式:BROWSE[FIELDS字段名表][FREEZE字段][LEDIT][REDIT][PARTITION表达式][NOLINK][LAST][FOR逻辑型表达式]功能:打开当前表的浏览窗口,可实现在窗口中浏览、修改、删除数据记录。参数描述:Fields字段名表、FREEZE字段:指定显示和编辑的表的字段;LEDIT:设置分区按记录方式浏览;REDIT:设置分区按编辑方式浏览;PARTITION表达式:设置左右分区的大小;NOLINK:取消左右分区的连接;LAST:按最后一次关闭浏览窗口的方式打开浏览窗口。FOR逻辑型表达式:指定在浏览窗口中显示的记录所要求满足的条件。说明:1.BROWSE命令可以带有很多任选项,命令格式中只介绍了BROWSE命令的最基本的任选项,详细内容请参考帮助文档。2.对上列命令格式中的可选短语说明如下:1)范围LIST命令中范围的缺省值是ALL。DISP命令中范围的缺省值取决于FOR短语,如果有FOR短语,则缺省值是ALL;如果没有FOR短语,则缺省值是NEXT1(即当前记录)。BROW命令中范围的缺省值是ALL,但是指定了NEXT〈n〉时,只显示当前记录2)FOR〈条件〉FOR短语只在命令中指定的范围内起作用。LIST、DISP、BROW命令中FOR短语的缺省值都是.T.。3)FIELDS〈字段名表〉FIELDS的缺省值是数据库记录中的所有字段。【例5.1】LIST、DISPLAY和BROWSE操作举例。USED:\学生&&LISTNEXT2&&LIST姓名,性别&&DISP&&DISPALL&&DISPALL姓名,性别FOR系部编号=’1’&&BROW&&BROWFIELDS姓名,性别&&全屏幕浏览各记录中指定的字段5.2表中记录定位为了标识当前记录,系统在打开的表中设置了记录指针,当前记录就是记录指针所指向的记录。用户要改变当前记录,是通过移动当前表中的记录指针实现的。记录定位就是将记录指针移到指定的记录上,记录指针指向的记录称为当前记录。VisualFoxpro6.0系统提供了下列绝对定位和相对定位两类命令。5.2.1go和skip1.记录的绝对定位命令这是一类与当前记录指针位置无关的记录定位命令,其命令格式有:格式一:GOTO[RECORD数值表达式]/TOP/BOTTOM[IN工作区号|表别名]格式二:GO[RECORD数值表达式]/TOP/BOTTOM[IN工作区号|表别名]格式三:数值表达式[IN工作区号|表别名]功能:将记录指针直接定位到指定的记录上。参数描述:数值表达式:指定一个物理记录号,记录指针移至该记录上。TOP:将记录指针移到表的第一个记录上(表的顶部)。BOTTOM:将记录指针移到表的最后一个记录上(表的底部)。IN工作区号|表别名:移动指定工作区或指定的文件别名的记录指针。说明:RECORD可省略。数值表达式的值必须大于0,且不大于当前表文件的记录个数。如果越出记录的最大、最小范围,系统将提示出界。【例5.2】记录的绝对定位命令举例。USED:\学生&&刚打开的数据表文件,记录指针指向第一条记录3&&GO2&&GOTOP&&GOBOTTOM&&记录指针指向了尾记录2.记录的相对定位命令这是和当前记录位置有关的记录指针定位命令,即以当前记录指针位置为基准,上、格式:SKIP[数值表达式]功能:相对当前记录,将记录指针向前或向后作相对若干条记录的移动。参数描述:数值表达式:使记录指针作相对移动的记录数据。说明:1)该命令只取用〈数值表达式〉结果值的整数部分。当其结果值为正整数n时,该命令驱动记录指针下移n条记录;当其结果值为负整数n时,该命令驱动记录指针上移n条记录。2)省略选择项数值表达式,约定为向下移动一条记录,即SKIP等价于SKIP1。【例5.3记录的相对定位命令举例。USED:\学生&&刚打开的数据表文件,记录指针指向第一条记录SKIP3&&向下移动三条记录,BROW&&SKIP-1&&记录指针向上移动一条记录,即指向第三条记录DISP&&SKIP2*3-7&&DISP&&显示当前记录5.2.2顺序查询定位(Locate)按表记录的物理顺序或逻辑顺序,进行逐条查询满足条件的记录的方式,叫作顺序查询。但顺序查询的速度较慢,特别是数据量大而查找目标又排在表记录的后边的情况。1.LOCATE命令格式:LOCATE[范围][FOR条件][WHILE条件]功能:按顺序搜索表,将记录指针定位在满足指定逻辑表达式的第一个记录上。参数描述:[范围]:指定要定位的记录范围。只有在范围内的记录被定位。LOCATE命令的默认范围是ALL。[FOR条件]:LOCATE命令按顺序搜索当前表以找到满足逻辑表达式的第一个记录。[WHILE条件]:指定一个条件,只要逻辑表达式计算值为真,就继续查找记录。换句话说,只要遇到第一个不满足条件的记录就停止搜索。说明:1)被搜索的表不必有索引。2)若LOCATE发现一个满足条件的记录,就将记录指针定位在该记录上。可以使用RECNO()返回该记录的记录号,同时FOUND()函数返回“真”,EOF()函数返回“假”。如果没有找到,则将记录指针指向范围的最后一个记录,同时将FOUND()函数值置为“假”,屏幕上显示“已到定位范围末尾”。3)该命令只能查找满足条件的第一条记录。4)如果执行SETEXACTOFF命令后,再用LOCATE命令查找字符型数据时,不要求字符型数据精确匹配。5)顺序查找命令中,如果缺省FOR〈条件〉,则指定范围中的每一条记录都是符合条件的记录,显然这种查询是没有意义的,故FOR〈条件〉不能缺省。若表中有多条满足条件的记录,当已经找到一条满足条件的记录后,还想继续查找后面满足条件的记录时,可以使用CONTINUE命令继续向后查找满足条件的记录。2.CONTINUE命令格式:CONTINUE功能:继续查找下一条满足条件的记录。说明:1)CONTINUE是用在LOCATE之后继续查找满足同一条件的记录的命令,它继续LOCATE的操作。在指定的范围内,逐条记录查找满足条件的记录。当找到第一个满足条件的记录后,该记录成为当前记录(即数据库的记录指针指向所找到的记录)。如果还要按指定的范围和条件继续查询,应当反复使用CONTINUE命令,直到在指定的范围内找不到满足条件的记录为止。如果CONTINUE命令成功地查找到了一条记录,RECNO()函数将返回该记录的记录号,并且FOUND()函数返回逻辑“真”值和EOF()返回逻辑“假”值。如果CONTINUE命令没有查找到满足条件的记录,RECNO()函数返回在tableplusone中的记录数,FOUND()函数返回逻辑“假”值,并且EOF()函数返回逻辑“真”值。2)CONTINUE命令只有和LOCATE命令配合起来,才能使用。【例5.4】从数据表学生.dbf中顺序查找性别等于女的三条记录。为此,顺序执行下列命令:USED:\LOCATEFOR性别=’女’&&DISP&&显示找到的第一条记录COMTINUE&&DISP&&CONTINUE&&再执行一次顺序查找命令DISP&&显示找到的第三条记录5.2.3索引查询定位(Find和Seek)用LOCATE命令查询的优点是不论表中的记录是否有序都能进行查找,而其主要的缺点是查找速度慢,仅适合记录较少的表。为了解决这一问题,VisualFoxpro6.0系统提供了二条快速查询命令:FIND和SEEK。按用户指定的查找条件,在索引文件中找到与之匹配的索引关键值,则记录指针会立即指向数据库表文件中对应的记录,这种查询方式叫做索引查询定位(或称快速查询)。显然,进行索引查询定位的表,必须是以所查找的关键字进行索引,并且是以此为主索引打开的表。1.FIND命令:格式:FIND字符型常量/数值型常量功能:它在已经建立索引并且表文件和索引文件均已打开的表中查找索引关键值与指定的字符串或数值型常量相匹配的第一条记录。如果找到,则设置该记录为当前记录,并且将FOUND()函数的值置为“真”;如果没有找到与其相符的记录,则将记录指针指向表的末尾,且将FOUND()函数的值置为“假”,将EOF()函数的值置为“真”。说明:1)所查询数据必须和主索引关键字相对应。2)查询的值可以是字符串,也可以是数值。不能查询日期型数据和逻辑型数据。通常字符串可以不加字符串界定符,但是当字符串有前导空格时,则必须用定界符括起来;如果要查找的字符串是以定界符开始时,就必须用不同的定界符将其括起来。3)执行SETEXACTOFF(默认状态)命令后,再用FIND命令查找字符串时,字符串可以是索引表达式值的全部或是从首字符开始的一个子串。如果执行了SETEXACTON命令后再用FIND命令来查找字符串,则字符串只能和索引表达式的值精确匹配,即只能是索引表达式的值的全部。4)查找字符串时,只要索引表达式(建立索引文件时使用的索引表达式)是字符型的,就可以使用FIND命令查找,并要求组成索引表达式的字段必须是字符型的。5)FIND命令仅限于查找C、N型数据,但是不能查找字符型表达式或数值型表达式。6)当表中的记录和
本文标题:第5章 vfp数据库基础资料
链接地址:https://www.777doc.com/doc-3972462 .html