第5章 vfp数据库基础_第1页
第5章 vfp数据库基础_第2页
第5章 vfp数据库基础_第3页
第5章 vfp数据库基础_第4页
第5章 vfp数据库基础_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

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

文档简介

1、第第5章章 数据查询数据查询第第5章章 数据查询数据查询学习目的与要求:学习目的与要求: 数据查询是数据库应用的重要内容,本章数据查询是数据库应用的重要内容,本章围绕数据查询介绍了查询的概念、命令和一种强有围绕数据查询介绍了查询的概念、命令和一种强有力的查询工具力的查询工具-查询设计器,用户可以利用它快查询设计器,用户可以利用它快速检索在表和视图中所需要的信息。本章另外一个速检索在表和视图中所需要的信息。本章另外一个重要的概念是视图的设计与使用,它将帮助用户对重要的概念是视图的设计与使用,它将帮助用户对数量庞大的信息按新的方法重新加工、过滤筛选。数量庞大的信息按新的方法重新加工、过滤筛选。使用

2、者不必直接接触到复杂的数据表,也能方便自使用者不必直接接触到复杂的数据表,也能方便自如地使用数据。所以读者必需掌握查询和视图这两如地使用数据。所以读者必需掌握查询和视图这两个概念,并为学习下一章打好基础个概念,并为学习下一章打好基础。第第5章章 数据查询数据查询5.1 5.1 ListList和和DisplayDisplay查询查询 5.25.2 表中记录定位表中记录定位 5.35.3 查询和视图查询和视图 5.4 5.4 上上 机机 实实 训训5.5 5.5 本章习题本章习题5.1 List和和Display查询查询 5.1.1 List查询查询 格式:LIST OFF FIELDS FOR

3、 WHILE TO PRINTER PROMPT / TO FILE 功能:显示当前表中的全部或部分记录和数据。参数描述:OFF:使用OFF时,不显示记录号,否则显示每个记录号。:范围为可选项,可根据需要选择ALL、RECORD(N) 、NEXT(N)、REST中的任一个参数,表示记录显示的范围。其中,ALL表示显示所有记录。 RECORD(N)表示显示第N条记录。 NEXT(N)表示显示从当前指针开始连续N条记录。 REST表示显示从当前指针开始直到最后一条记录。 FIELDS :若省略,则显示当前表中的所有字段,否则显示指定的字段。如果备注型字段名出现在中,则它的内容按50个字符列宽显示。

4、 FOR/WHILE:该子句表示只选择满足条件记录,省略时则显示限定的全部记录。 注意:FOR/WHILE的区别在于:FOR是在指定范围内的所有的记录,而WHILE则为指定范围内的第一个记录到第一个不满足条件的记录。 TO PRINTER PROMPT / TO FILE :指定记录列表的输出方向。TO PRINTER PROMPT指定输出到打印机。PROMPT参数的使用方法同前。TO FILE 指定输出到所指定的文本文件中。 5.1.2 Display查询查询格式:DISPLAY OFF FIELDS FOR WHILE TO PRINTER PROMPT / TO FILE DISPLAY

5、和和LIST功能基本相同,都是显示记录,不同之处功能基本相同,都是显示记录,不同之处是是DISPLAY当显示满一屏后暂停,按任意键后继续显示;当显示满一屏后暂停,按任意键后继续显示;而而LIST则滚屏显示,直到最后一条记录显示完为止。还有一则滚屏显示,直到最后一条记录显示完为止。还有一个不同,当没有可选项时,只显示当前记录。个不同,当没有可选项时,只显示当前记录。5.1.3 Browse查询查询 格式:BROWSE FIELDS FREEZELEDITREDITPARTITIONNOLINKLAST FOR 功能:打开当前表的浏览窗口,可实现在窗口中浏览、打开当前表的浏览窗口,可实现在窗口中浏

6、览、修改、删除数据记录。修改、删除数据记录。参数描述: Fields 、FREEZE: 指定显示和编指定显示和编辑的表的字段;辑的表的字段;LEDIT:设置分区按记录方式浏览;设置分区按记录方式浏览;REDIT:设置分区按编辑方式浏览;设置分区按编辑方式浏览;PARTITION:设置左右分区的大小;设置左右分区的大小;NOLINK:取消左右分区的连接;取消左右分区的连接;LAST:按最后一次关闭浏览窗口的方式打开浏览窗口。按最后一次关闭浏览窗口的方式打开浏览窗口。FOR :指定在浏览窗口中显示的记录指定在浏览窗口中显示的记录所要求满足的条件。所要求满足的条件。说明:1BROWSE命令可以带有很

7、多任选项,命令格式中命令可以带有很多任选项,命令格式中只介绍了只介绍了BROWSE命令的最基本的任选项,详细内容请参命令的最基本的任选项,详细内容请参考帮助文档。考帮助文档。 2对上列命令格式中的可选短语说明如下:对上列命令格式中的可选短语说明如下:1)范围)范围LIST命令中范围的缺省值是命令中范围的缺省值是ALL。DISP命令中范围的命令中范围的缺省值取决于缺省值取决于FOR短语,如果有短语,如果有FOR短语,则缺省值是短语,则缺省值是ALL;如果没有;如果没有FOR短语,短语, 则缺省值是则缺省值是NEXT 1(即当前(即当前记录)。记录)。 BROW命令中范围的缺省值是命令中范围的缺省

8、值是ALL, 但是指定了但是指定了NEXT n时,时, 只显示当前记录只显示当前记录2)FOR 条件条件FOR短语只在命令中指定的范围内起作用。短语只在命令中指定的范围内起作用。 LIST、 DISP、 BROW命令中命令中FOR短语的缺省值都是短语的缺省值都是 .T.。 3)FIELDS 字段名表字段名表FIELDS的缺省值是数据库记录中的所有字段的缺省值是数据库记录中的所有字段。 【例5.1】LIST、DISPLAY 和BROWSE操作举例。USE D:学生 &打开一个数据表文件LIST NEXT 2 &显示从当前记录开始的两条记录LIST 姓名, 性别 &显示所有记录中的指定字段值DIS

9、P &只显示当前记录DISP ALL &分屏显示所有的记录DISP ALL 姓名,性别 FOR 系部编号=1 &选择显示符合条件的所有记录BROW &全屏幕浏览所有的记录BROW FIELDS 姓名,性别 &全屏幕浏览各记录中指定的字段5.2 表中记录定位表中记录定位 为了标识当前记录,系统在打开的表中设置为了标识当前记录,系统在打开的表中设置了记录指针,当前记录就是记录指针所指向的记了记录指针,当前记录就是记录指针所指向的记录。用户要改变当前记录,录。用户要改变当前记录, 是通过移动当前表中是通过移动当前表中的记录指针实现的。的记录指针实现的。记录定位就是将记录指针移到指定的记录上,记录定位

10、就是将记录指针移到指定的记录上,记录指针指向的记录称为当前记录。记录指针指向的记录称为当前记录。Visual Foxpro 6.0系统提供了下列绝对定位和相对定位系统提供了下列绝对定位和相对定位两类命令。两类命令。 5.2.1 go和skip 1. 记录的绝对定位命令记录的绝对定位命令这是一类与当前记录指针位置无关的记录定位命令, 其命令格式有: 格式一:GOTO RECORD /TOP/BOTTOMIN| 格式二:GO RECORD /TOP/BOTTOMIN|格式三: IN|功能:将记录指针直接定位到指定的记录上。参数描述:指定一个物理记录号,记录指针移至该记录上。TOP:将记录指针移到表

11、的第一个记录上(表的顶部)。 BOTTOM:将记录指针移到表的最后一个记录上(表的底部)。IN|:移动指定工作区或指定的文件别名的记录指针。说明: RECORD可省略。的值必须大于0,且不大于当前表文件的记录个数。如果越出记录的最大、最小范围,系统将提示出界。【例5.2】记录的绝对定位命令举例。USE D:学生 &刚打开的数据表文件, 记录指针指向第一条记录 3 &记录指针指向了第三条记录GO 2 &记录指针指向了第二条记录GO TOP &记录指针指向了首记录GO BOTTOM &记录指针指向了尾记录2. 记录的相对定位命令记录的相对定位命令 这是和当前记录位置有关的记录指针定位命令, 即以当

12、前记录指针位置为基准, 上、 下移动记录指针。格式:SKIP 功能:相对当前记录,将记录指针向前或向后作相对若干条记 录的移动。参数描述: :使记录指针作相对移动的记录数据。说明:1)该命令只取用数值表达式结果值的整数部分。当其结果值为正整数n时,该命令驱动记录指针下移n条记录;当其结果值为负整数n时,该命令驱动记录指针上移n条记录。2)省略选择项,约定为向下移动一条记录,即SKIP 等价于SKIP 1。 【例5.3】记录的相对定位命令举例。USE D:学生 &刚打开的数据表文件, 记录指针指向第一条记录SKIP 3 &向下移动三条记录, 即指针指向第四条记录 BROW &查看记录指针的移动情

13、况SKIP -1 &记录指针向上移动一条记录, 即指向第三条记录DISP &显示当前记录SKIP 2*3-7 &记录指针指向第二条记录DISP &显示当前记录5.2.2 顺序查询定位(Locate) 按表记录的物理顺序或逻辑顺序, 进行逐条查询满足条件的记录的方式, 叫作顺序查询。但顺序查询的速度较慢,特别是数据量大而查找目标又排在表记录的后边的情况。 1LOCATE命令命令格式:LOCATE FOR WHILE 功能:按顺序搜索表,将记录指针定位在满足指定逻辑表达式 的第一个记录上。参数描述:指定要定位的记录范围。只有在范围内的记录被定位。LOCATE命令的默认范围是ALL。FOR :LOC

14、ATE命令按顺序搜索当前表以找到满足逻辑表达式的第一个记录。 WHILE :指定一个条件,只要逻辑表达式计算值为真,就继续查找记录。换句话说,只要遇到第一个不满足条件的记录就停止搜索。说明:1)被搜索的表不必有索引。2)若LOCATE发现一个满足条件的记录,就将记录指针定位在该记录上。可以使用RECNO()返回该记录的记录号,同时FOUND()函数返回“真”,EOF()函数返回“假”。如果没有找到,则将记录指针指向范围的最后一个记录,同时将FOUND()函数值置为“假”,屏幕上显示“已到定位范围末尾”。3)该命令只能查找满足条件的第一条记录。4)如果执行SET EXACT OFF命令后,再用L

15、OCATE命令查找字符型数据时,不要求字符型数据精确匹配。 5)顺序查找命令中,如果缺省 FOR条件 ,则指定范围中的每一条记录都是符合条件的记录,显然这种查询是没有意义的,故 FOR条件不能缺省。 若表中有多条满足条件的记录,当已经找到一条满足条件的记录后,还想继续查找后面满足条件的记录时,可以使用 CONTINUE 命令继续向后查找满足条件的记录。2CONTINUE命令命令格式:CONTINUE 功能:继续查找下一条满足条件的记录。说明:1)CONTINUE是用在LOCATE之后继续查找满足同一条件的记录的命令,它继续LOCATE的操作。在指定的范围内,逐条记录查找满足条件的记录。 当找到

16、第一个满足条件的记录后, 该记录成为当前记录(即数据库的记录指针指向所找到的记录)。如果还要按指定的范围和条件继续查询,应当反复使用CONTINUE命令,直到在指定的范围内找不到满足条件的记录为止。 如果CONTINUE命令成功地查找到了一条记录,RECNO()函数将返回该记录的记录号,并且 FOUND()函数返回逻辑“真”值和EOF()返回逻辑“假”值。如果CONTINUE命令没有查找到满足条件的记录,RECNO()函数返回在table plus one中的记录数, FOUND()函数返回逻辑“假”值,并且EOF()函数返回逻辑“真”值。 2)CONTINUE命令只有和LOCATE命令配合起

17、来, 才能使用。【例5.4】从数据表学生.dbf中顺序查找性别等于女的三条记录。为此,顺序执行下列命令: USE D:学生LOCATE FOR 性别=女 &执行顺序查找命令DISP &显示找到的第一条记录COMTINUE &继续顺序查找DISP &显示找到的第二条记录CONTINUE &再执行一次顺序查找命令DISP &显示找到的第三条记录5.2.3 索引查询定位(Find和Seek ) 用LOCATE命令查询的优点是不论表中的记录是否有序都能进行查找,而其主要的缺点是查找速度慢,仅适合记录较少的表。为了解决这一问题,Visual Foxpro 6.0系统提供了二条快速查询命令:FIND和SE

18、EK。 按用户指定的查找条件, 在索引文件中找到与之匹配的索引关键值, 则记录指针会立即指向数据库表文件中对应的记录, 这种查询方式叫做索引查询定位(或称快速查询)。显然,进行索引查询定位的表, 必须是以所查找的关键字进行索引,并且是以此为主索引打开的表。1FIND命令:命令: 格式:FIND / 功能:它在已经建立索引并且表文件和索引文件均已打开的表中查找索引关键值与指定的字符串或数值型常量相匹配的第一条记录。如果找到,则设置该记录为当前记录,并且将FOUND()函数的值置为“真”;如果没有找到与其相符的记录,则将记录指针指向表的末尾,且将FOUND()函数的值置为“假”,将EOF()函数的

19、值置为“真”。 说明:1)所查询数据必须和主索引关键字相对应。2)查询的值可以是字符串,也可以是数值。不能查询日期型数据和逻辑型数据。通常字符串可以不加字符串界定符,但是当字符串有前导空格时,则必须用定界符括起来;如果要查找的字符串是以定界符开始时,就必须用不同的定界符将其括起来。3)执行SET EXACT OFF(默认状态)命令后,再用FIND命令查找字符串时,字符串可以是索引表达式值的全部或是从首字符开始的一个子串。如果执行了SET EXACT ON命令后再用FIND命令来查找字符串,则字符串只能和索引表达式的值精确匹配,即只能是索引表达式的值的全部。4)查找字符串时,只要索引表达式(建立

20、索引文件时使用的索引表达式)是字符型的,就可以使用FIND命令查找,并要求组成索引表达式的字段必须是字符型的。5)FIND命令仅限于查找、 型数据, 但是不能查找字符型表达式或数值型表达式。6)当表中的记录和要查找的关键值匹配的记录不止一个时, 如何能找到其他匹配记录?因为数据库是被索引过的,所以能匹配的记录肯定在所找到的记录的下面,因为符合条件的记录是在一起的,因此可用SKIP命令配合DISP命令查找,直到发现某条记录不满足条件时为止,此记录以后的记录肯定不符合条件。可以用SKIP命令加判断命令实现2. SEEK命令命令格式:SEEK 功能:在打开的索引文件中快速查找与相匹配的第一条记录,若

21、找到,则设置该记录为当前记录。说明:1):指定SEEK搜索的关键字。可以是空字符串。2)SEEK命令不仅可以查找字符串和常数,它还可以查找字符型、数值型、日期型或逻辑型表达式的值。用SEEK命令查找字符串常量时,字符串常量必须放在定界符中。3)SEEK命令中的表达式必须和索引表达式的类型相同。 【例5.5】索引查询定位命令举例。USE D:学生INDEX ON 姓名 TO xm &以姓名建立索引SEEK 徐小小 ? FOUND() &显示结果为.T.,表示找到SEEK 徐 &模糊查找姓徐的同学? FOUND() &显示结果为.T.,表示找到SET EXACT ON &设置精确匹配SEEK 徐

22、? FOUND() &显示结果为.F.,表示没找到表5-1 顺序查询和快速查询的比较3.顺序查询和快速查询比较顺序查询和快速查询比较LocateFindSeek查询内容查询内容可以是字符型、数值型、日可以是字符型、数值型、日期型、逻辑型表达式,还可期型、逻辑型表达式,还可以查找备注型字段以查找备注型字段可以是字符型、数值型可以是字符型、数值型字符串常量或常数,日期型表达字符串常量或常数,日期型表达式或逻辑型字段式或逻辑型字段对表的要求对表的要求无论是否建立了索引文件均无论是否建立了索引文件均可方便地查询可方便地查询必须建立并打开索引文件,只必须建立并打开索引文件,只能在主控索引文件查询能在主控

23、索引文件查询同同FIND命令的特点命令的特点可使用(范围)子句限定查可使用(范围)子句限定查询范围,可与询范围,可与CONTINUE命命令配合使用,找出表中全部令配合使用,找出表中全部符合条件的记录符合条件的记录在整个表中查询,只能找出满在整个表中查询,只能找出满足条件的第一条记录可与足条件的第一条记录可与SKIP命令配合使用,找出表中全部命令配合使用,找出表中全部符合条件的记录符合条件的记录同同FIND查询速度查询速度慢慢快快快快5.2.4 对话查询定位 l格式:GETEXPR TO TYPE ; DEFAULT l功能:通过命令GETEXPR启动表达式生成器对话框,从而创建表达式,并把表达

24、式存入内存变量或数组元素中,然后通过LOCATE命令宏代换进行查询,此命令常用于程序中。 例如:通过GETEXPR获取LOCATE命令中查询条件,以实现任意条件的查询。如图5.1所示。 GETEXPR 输入查询条件 TO CX TYPE L;输入条件错误 DEFAULT 性别=女 图5.1 对话查询窗口 5.3 查询和视图 5.3.1 查询文件的建立及有关操作 查询文件可通过向导和设计器两种方法来创建。查询设计器提供了一种强有力的检索方式,用户可利用它快速检索存储在表和视图中的信息,从中快速查找到满足条件的记录,对记录进行排序、分组并将查询结果以报表、表文件或图形的方式输出。 如果仅从一个表中

25、检索记录,就称为单表查询,否则为多表查询。所生成的查询文件的默认扩展名为.QPR。1用查询向导创建查询用查询向导创建查询 启动查询向导方式:1)在主窗口下打开【文件】菜单,选择【新建】命令。2)单击新建对话框中的【查询】单选按钮,确定建立文件的类型是查询文件。3)单击新建查询对话框中的【查询向导】按钮,出现向导选取对话框, 4)在向导选取对话框中选择要建立的查询类型,并单击【确定】按钮。 图5.2向导选取对话框 查询向导的步骤查询向导的步骤 步骤1:字段选取。选择数据库,数据库中的表和表中的字段。字段选择完成后,单击【下一步】。如图5.3所示。 图5.3字段选取对话框步骤2:为表建立关系。如果

26、用户的查询是建立在多个表的基础上,在第一步完成后,即可进入查询向导的第二步为表建立关系。如果是单表查询,不会出现此步骤。如果用户建立多个表的查询,则出现如图5.4所示的对话框。在对话框左边的下拉列表中选择建立关系的父表关键字,在右边的下拉列表中选择建立关系的子表关键字,然后单击【添加】按钮,将设定关系添加到关系列表框中。关系设置完成后单击【下一步】进入到步骤2a字段选取对话框。图5.4为表建立关系在此对话框中,通过只从两个表中选择匹配的记录或任意一个表中的所有记录,以限制用户的查询。默认情况下,只包含匹配的记录。单击【下一步】进入到步骤3。如图5.5所示。图5.5字段选取对话框步骤3:筛选记录

27、 在此对话框中根据查询条件的要求,在各个项的下拉列表中选择满足查询条件要求的字段、关系运算符和用于筛选表达式的样本值。单击【预览】按钮,可查看基于筛选条件的记录。用户也可以创建两个表达式,然后用【与】连接返回同时满足两个指定条件的记录, 如果用【或】连接,则返回至少满足其中一个指定条件的记录,如图5.6所示。图5.6筛选记录对话框 步骤4:排序记录 在【可用字段】列表框中选择用于排序的字段,然后单击【添加】按钮,将选定的字段添加到【选定字段】列表中。在查询结果中,记录输出的先后顺序与【选定字段】列表中字段位置有关,排在最前面的字段优先级最高。当然也可单击【移去】按钮,将不需要的排序字段移动到【

28、可用字段】列表中。【升序】或【降序】单选按钮,确定结果是按升序排序还是按降序排序。如图5.7所示。图5.7排序记录对话框步骤4a:限制记录限制记录就是限制查询结果中记录的输出数量。在【部分类型】栏中,用户根据需要选择要限制的类型。在【数量】栏中确定要输出的记录个数。【预览】按钮可以查看增加限制条件后返回的记录情况,如图5.8所示。图5.8限制记录对话框步骤5:完成在此对话框中有三种选择:单击【保存查询】单选按钮,将建立的查询文件以文件形式保存在磁盘上。单击【保存并运行查询】单选按钮,则先将建立的查询文件存盘,然后运行该查询文件。单击【保存查询并修改于查询设计器】单选按钮,先将建立的查询文件存盘

29、,然后将他调入查询设计器,以便用户对其进行修改。单击完成按钮,结束创建查询的操作,如图5.9所示。 图5.9完成对话框【例【例5.6】根据选课表创建交叉数据表,查询每个学生所】根据选课表创建交叉数据表,查询每个学生所选课程的总成绩。选课程的总成绩。步骤步骤1:选取查询输出字段。:选取查询输出字段。在图在图5.2向导选取对话框中选择向导选取对话框中选择【交叉表向导】【交叉表向导】,单击,单击【确定】【确定】按钮,按钮,出现出现【步骤【步骤1-字段选取】字段选取】对话框。对话框。1)在该对话框中单击)在该对话框中单击【数据库和表】【数据库和表】下拉列表,选择成绩管理数据下拉列表,选择成绩管理数据库

30、文件,再选选课表文件。库文件,再选选课表文件。2)在可用字段列表中将学号、课程号、成绩三个字段依次移到)在可用字段列表中将学号、课程号、成绩三个字段依次移到【选【选定字段】定字段】列表中,设置结果如图列表中,设置结果如图5.10所示。所示。 步骤2:设置布局。在该对话框中,将【可用字段】列表中的“学号”字段拖到【行】的位置,将“课程号”字段拖到【列】的位置,将“成绩”字段拖到【数据】框中,操作结果如图5.11所示。图5.11 交叉表的定义布局对话框步骤步骤3:设置分类汇总列。:设置分类汇总列。在该对话框中,通过从在该对话框中,通过从【总和】【总和】和和【小计】【小计】区域选择合区域选择合适的单

31、选按钮,提供的统计类型有适的单选按钮,提供的统计类型有“求和求和”、“计数计数”、“平均平均”、“最大最大”和和“最小最小”共五种;提供四种小计方式,共五种;提供四种小计方式,单击单击【数据求和】【数据求和】单选按钮,对行数据求和,并把求和结果单选按钮,对行数据求和,并把求和结果放在最右边的放在最右边的【汇总】【汇总】列;单击列;单击【含数据的单元个数】【含数据的单元个数】单选单选按钮,对每行有数据的列进行计数,并把求和结果放在最右按钮,对每行有数据的列进行计数,并把求和结果放在最右边的边的【计数】【计数】列;单击列;单击【表总计的百分比】【表总计的百分比】单选按钮,计算单选按钮,计算各行数据

32、总和在整个查询数据总和中所占的比例,并把计算各行数据总和在整个查询数据总和中所占的比例,并把计算结果放在最右边的结果放在最右边的【百分比】【百分比】列;单击列;单击【无】【无】单选按钮,则单选按钮,则查询结果中不出现汇总列。查询结果中不出现汇总列。本例中,单击总和栏中的本例中,单击总和栏中的【求和】【求和】单选按钮,单击单选按钮,单击【小【小计】计】栏中的栏中的【数据求和】【数据求和】单选按钮,设置结果如图单选按钮,设置结果如图5.12所示。所示。 图5.12 交叉表的加入总结信息对话框步骤步骤4:完成。:完成。在该对话框中,用户根据需要选择一个单选按钮,再单在该对话框中,用户根据需要选择一个

33、单选按钮,再单击击【完成】【完成】按钮,出现另存为对话框,将该交叉表保存,然后按钮,出现另存为对话框,将该交叉表保存,然后执行查询。查询结果如图执行查询。查询结果如图5.13所示。所示。图5.13 例5.6查询结果注意:交叉表向导只能对单表操作。2用查询设计器创建查询用查询设计器创建查询1)打开查询设计器窗口)打开查询设计器窗口可以通过以下所提供的多种方法之一来打开查询设计器:可以通过以下所提供的多种方法之一来打开查询设计器:从【项目管理器】启动【查询设计器】从【项目管理器】启动【查询设计器】在在【项目管理器】【项目管理器】中选择中选择【数据】【数据】选项卡,再选取选项卡,再选取【查询】【查询

34、】项,单击项,单击【新建】【新建】,进入查询设计方式选择对话框后单击,进入查询设计方式选择对话框后单击【新【新建查询】建查询】,则启动,则启动【查询设计器】【查询设计器】。从【文件】菜单启动查询设计器从【文件】菜单启动查询设计器选择系统菜单中的选择系统菜单中的【文件】【文件】|【新建】【新建】命令,在命令,在【新建】【新建】对对话框中选中话框中选中【文件类型】【文件类型】下的下的【查询】【查询】单选项,再单击右边的单选项,再单击右边的【新建文件】新建文件】按钮,也可启动按钮,也可启动【查询设计器】【查询设计器】使用使用CREATE QUERY命令也可启动【查询设计器】对话命令也可启动【查询设计

35、器】对话框,框, 在创建新的查询时,在创建新的查询时,Visual Foxpro 6.0将打开将打开【添加表或【添加表或视图】视图】对话框,如图对话框,如图5.14所示。所示。单击单击【选定】【选定】栏中的栏中的【表】【表】或或【视图】【视图】单选按钮,以确定单选按钮,以确定添加表文件还是视图文件;然后在添加表文件还是视图文件;然后在【数据库中的表】【数据库中的表】列表中选列表中选择数据库表、自由表或视图,再单击择数据库表、自由表或视图,再单击【添加】【添加】按钮,重复此步按钮,重复此步操作,可选择多个用于查询的表或视图。如果用户要选择的表操作,可选择多个用于查询的表或视图。如果用户要选择的表

36、或视图没有出现在或视图没有出现在【数据库中的表】【数据库中的表】列表中,可单击列表中,可单击【其他】【其他】按钮,在出现的按钮,在出现的【打开】【打开】对话框中选择查询中要使用的表或视对话框中选择查询中要使用的表或视图,并单击图,并单击【确定】【确定】按钮。选择完成后,单击按钮。选择完成后,单击【关闭】【关闭】按钮,按钮, 图5.14 添加表或视图对话框【查询设计器】窗口,如图5.15所示。图5.15查询设计器窗口2)设置查询选定查询字段 根据查询文件的需要,选择查询结果中应包含的字段。操作方法与用向导设计查询的方法相同。在本示例中先在【查询设计器】中选择【字段】选项卡,然后从可用字段列表框中

37、选择:学生.学号、学生.姓名等字段,如图5.16所示。图5.16字段选项卡选择联接选项卡,如果建立的查询是基于多表操作,用户可以使用【联接】选项卡设置表之间的联接条件。在Visual Foxpro 6.0中表间的联接有四种类型,分别是:Inner Join:内部联接,是根据关联字段,将满足联接条件的记录输出,此类型是默认的,也是最常用的;Right Outer Join:右联接,将关联条件右侧表的全部记录输出,以及满足联接条件左侧表中记录输出;Left Outer Join:左联接,将关联条件左侧表的全部记录输出,以及满足联接条件右侧表中记录输出;Full Join:完全联接,将所有满足和不满

38、足联接条件的记录都包含在结果中。如图5.17所示。图5.17联接选项卡设置筛选记录选择表中符合条件的部分记录是查询的重要任务。利用查询设计器中的【筛选】选项卡,可设置选择记录的条件,将满足条件的记录在输出结果中输出。如图5.18所示。 【条件】列表中包含如下几项:=(等于):指字段值与实例栏中给定的值相等;LIKE:表示【字段名】栏中给出的字段值与【实例】栏中给出的文本值之间执行不完全匹配,它主要针对字符类型。例如,如设置查询条件为“学生.学号 LIKE S”,那么诸如“学号”字段前一位为S的记录都满足该条件;=(精确匹配):表示在【字段名】栏中给出的字段值与【实例】栏中给出的文本值之间执行完

39、全匹配检查,它也主要是针对字符类型的;(大于):即为【字段名】栏中给出的字段的值应大于【实例】栏中给出的值;=(大于等于):即为【字段名】栏中给出的字段的值应大于或等于【实例】栏中给出的值;(小于):即为【字段名】栏中给出的字段的值应小于【实例】栏中给出的值;Is Null:指定字段必须包含NULLl值;Between(在中间):指定输出字段的值应大于或等于【实例】栏中的最小值,而小于或等于【实例】栏中的最大值,【实例】栏中给出最大值和最小值之间应用逗号分开;In(在之中):指定输出字段的值必须是【实例】栏中所给出值中的一个,在【实例】栏中给出的各值之间以逗号分隔。此外,【联接】选项卡中的【否

40、】列用于指定.NOT.条件,【逻辑】列用于设置各联接条件和筛选条件之间的逻辑关系(无、.AND.和.OR.),【大小写】列用于指定是否区分条件中和实例中的大小写。下方的【插入】和【移去】按钮分别用于增加或移去查询条件。在设置筛选条件时,我们应注意如下几点:在设置筛选条件时,我们应注意如下几点:(1) 备注字段和通用字段不能用于设置查询条件;备注字段和通用字段不能用于设置查询条件;(2) 逻辑值的前后必须使用句点号,如逻辑值的前后必须使用句点号,如.T.;(3) 只有当字符串与查询的表中字段名相同时,要用引号只有当字符串与查询的表中字段名相同时,要用引号将字符串括起来,否则将字符串括起来,否则

41、不要用引号将字符串括起来;不要用引号将字符串括起来;(4) 日期不必用花括号括起来。日期不必用花括号括起来。(5) 本例中的筛选条件是系部编号为本例中的筛选条件是系部编号为5且选择且选择C2课程的学生课程的学生情况。情况。图5.18筛选选项卡设置查询结果排序 排序决定了查询输出结果中记录输出的先后顺序,通过排序决定了查询输出结果中记录输出的先后顺序,通过【排序依据】选项卡设置查询的排序次序,方法同在用查询向选项卡设置查询的排序次序,方法同在用查询向导设计查询一样。首先从导设计查询一样。首先从【选定字段】框中选定要使用的字段,框中选定要使用的字段,并把它们移到【排序条件】框中,然后利用并把它们移

42、到【排序条件】框中,然后利用【排序选项】(从(从中选择升序或降序)来设置排序条件。如果还需要添加用于排中选择升序或降序)来设置排序条件。如果还需要添加用于排序的字段,可以重复以上的操作步骤。如图序的字段,可以重复以上的操作步骤。如图.5.19所示。所示。图5.19排序依据选项卡设置数据的分组查询 所谓分组就是将一组相似的记录压缩到一个结果记录中,所谓分组就是将一组相似的记录压缩到一个结果记录中,这样就可完成基于一组记录的计算,如图这样就可完成基于一组记录的计算,如图5.20所示。所示。图5.20分组依据选项卡【例【例5.7】利用选课表文件,求出各门课程的平均成绩】利用选课表文件,求出各门课程的

43、平均成绩。操作步骤如下:操作步骤如下:(1) 打开查询设计器,添加选课表,在打开查询设计器,添加选课表,在【字段】【字段】选项卡中双击课程号,选项卡中双击课程号,添加到添加到【选定字段】【选定字段】中,再单击中,再单击【函数和表达式】【函数和表达式】右边的按钮,出现【右边的按钮,出现【表表达式】生成器;达式】生成器;(2) 在在【数学】【数学】下拉式列表框中双击下拉式列表框中双击AVG(expN),在),在【来源于表】【来源于表】下拉框中选择课程表,在下拉框中选择课程表,在【字段】【字段】列表框中双击列表框中双击“课程成绩课程成绩”,单击【确,单击【确定】,即在定】,即在【函数和表达式】【函数

44、和表达式】框中自动生成了框中自动生成了“AVG(课程课程.课程成绩课程成绩)”这个这个表达式,用以计算课程表中课程成绩的平均值。表达式,用以计算课程表中课程成绩的平均值。(3) 单击单击【添加】【添加】按钮,该表达式被添加到按钮,该表达式被添加到【选定字段】【选定字段】列表框中,列表框中,将来查询结果中就会有一列数据求平均值;将来查询结果中就会有一列数据求平均值;(4) 单击单击【分组依据】【分组依据】选项卡,进入选项卡,进入【分组依据】【分组依据】窗口,在窗口,在【可用字【可用字段】段】中选择课程中选择课程.课程号,再单击课程号,再单击【添加】【添加】按钮,该字段即成为分组字段,按钮,该字段

45、即成为分组字段,运行后结果如图运行后结果如图5.21所示。所示。 图5.21分组查询与AVG()联合使用运行窗口杂项的设置 经过以上五个步骤,基本上已生成了一个比较全面的查询。接下来还经过以上五个步骤,基本上已生成了一个比较全面的查询。接下来还可以通过查询设计器中的可以通过查询设计器中的【杂项】【杂项】选项卡做最后的处理。选项卡做最后的处理。单击单击【杂项】【杂项】选项卡,可以看到其间包括选项卡,可以看到其间包括【无重复记录】【无重复记录】、【交叉数【交叉数据表】、【全部】、【百分比】据表】、【全部】、【百分比】这四个复选框和一个微调按钮。这四个复选框和一个微调按钮。选中选中【无重复记录】【无

46、重复记录】复选框:将清除查询结果中的重复记录。复选框:将清除查询结果中的重复记录。选中选中【交叉数据表】【交叉数据表】复选框:将查询结果以交叉表的格式传递给数据复选框:将查询结果以交叉表的格式传递给数据表。表。在在【列在前面的记录】【列在前面的记录】栏中,用户可以设置记录的数目或百分比。如栏中,用户可以设置记录的数目或百分比。如果单击果单击【全部】【全部】复选框则输出全部记录;如果单击复选框则输出全部记录;如果单击【记录个数】【记录个数】文本框,文本框,则按在文本框中输入记录的个数,输出列在前面的部分记录。如果单击则按在文本框中输入记录的个数,输出列在前面的部分记录。如果单击【百分比】【百分比

47、】复选框,则按在其上文本框中输入的百分比数值,输出列在前复选框,则按在其上文本框中输入的百分比数值,输出列在前面的部分记录。如图面的部分记录。如图5.22所示。所示。图5.22杂项选项卡设置查询输出结果 查询检索的信息,可输出到不同的目的地,以用作不同的查询检索的信息,可输出到不同的目的地,以用作不同的用途。如果没有选定输出的目的地,查询结果将显示在浏览窗用途。如果没有选定输出的目的地,查询结果将显示在浏览窗口中。但应特别注意,用户不能对显示在浏览窗口中的数据进口中。但应特别注意,用户不能对显示在浏览窗口中的数据进行修改,数据是只读的。查询输出目的可以是浏览窗口、临时行修改,数据是只读的。查询

48、输出目的可以是浏览窗口、临时表、表、图形、屏幕、报表、标签等。选择结果的去向方法如表、表、图形、屏幕、报表、标签等。选择结果的去向方法如下:下:单击【单击【查询设计器工具】查询设计器工具】中的中的【查询去向】【查询去向】按钮,或者从按钮,或者从【查询】【查询】菜单中选择菜单中选择【查询去向】【查询去向】,可看到如图所示的,可看到如图所示的【查询【查询去向】去向】对话框对话框。如图如图5.23所示所示。图5.23查询去向选卡对话框中的按钮含义如下:对话框中的按钮含义如下: 【浏览】【浏览】:将查询结果显示在浏览窗口中,这是查询缺省:将查询结果显示在浏览窗口中,这是查询缺省设置;设置; 【临时表】

49、【临时表】:将查询结果保存在一个由用户命名的临时只:将查询结果保存在一个由用户命名的临时只读表中。多次查询的结果可放在不同的表内。该表可用于浏览读表中。多次查询的结果可放在不同的表内。该表可用于浏览数据,制作报表等,直到用户关闭它们;数据,制作报表等,直到用户关闭它们;【表】【表】:将查询的结果保存在一个由用户命名的(:将查询的结果保存在一个由用户命名的(.DBF )中,此时查询的结果是真正的存放到磁盘上的,多次查询的结中,此时查询的结果是真正的存放到磁盘上的,多次查询的结果可放在不同的表内;果可放在不同的表内;【图形】【图形】:将查询结果以图形格式显示出来;:将查询结果以图形格式显示出来;【

50、屏幕】【屏幕】:将查询结果在:将查询结果在Visual Foxpro 6.0主窗口或当前主窗口或当前活动输出窗口中显示出来;活动输出窗口中显示出来;【报表】【报表】:将查询结果输出送到一个报表文件(:将查询结果输出送到一个报表文件(.FRX)中;)中;【标签】【标签】:将查询结果输出送到一个标签文件(:将查询结果输出送到一个标签文件(.LBX)中。)中。【例【例5.8】利用选课表文件,求出各门课程的平均成绩,将】利用选课表文件,求出各门课程的平均成绩,将查询结果以图形格式显示查询结果以图形格式显示。前四步操作步骤如【例前四步操作步骤如【例5.7】所示。】所示。(5) 单击单击【查询设计器工具】

51、【查询设计器工具】中的中的【查询去向】【查询去向】按钮,在按钮,在图图5.23 所示所示的对话框中选择的对话框中选择【图形】【图形】按钮,单击确定。出现图形向导对话框。按钮,单击确定。出现图形向导对话框。(6) 在该对话框中,将在该对话框中,将Avg_成绩字段拖到成绩字段拖到【数据系列】【数据系列】列表中,作为列表中,作为图表的图形显示数据,在从图表的图形显示数据,在从【可用字段】【可用字段】列表中将课程号字段拖到图形下列表中将课程号字段拖到图形下面的面的【坐标轴】【坐标轴】框作为参考值。如图框作为参考值。如图5.24所示。单击所示。单击【下一步】【下一步】,进入选,进入选择图形样式。择图形样

52、式。 图5.24 图形向导对话框 (7) 在该对话框中,提供了在该对话框中,提供了12种图表样式,选择其一即可。种图表样式,选择其一即可。单击单击【下一步】【下一步】,进入完成对话框。,进入完成对话框。(8) 在在【为图形键入一个标题】【为图形键入一个标题】文本框中输入图表名字,文本框中输入图表名字,单击单击【完成】【完成】按钮,出现另存对话框,在对话框中输入名字,按钮,出现另存对话框,在对话框中输入名字,执行查询出现如图执行查询出现如图5.25所示的结果。所示的结果。图5.25例5.8运行结果 运行查询 在完成了查询的设计工作并指定了结果输出去向后,可通过以下五种方式之一运行查询:在查询设计

53、器区域内单击右键,在弹出菜单中选择【运行查询】 ;在【项目管理器】中选定查询的名称,然后选定【运行】按钮;在【查询】菜单中选择【运行查询】:在命令窗口中键入DO 查询名.qpr。单击系统常用菜单上的【运行】按钮。5.3.2 视图的建立及有关操视图的建立及有关操作视图是从一个或多个表中导出的一个虚拟表,它的数据取视图是从一个或多个表中导出的一个虚拟表,它的数据取自于已有的数据库表,但在数据库中并没有保存它的数据,只自于已有的数据库表,但在数据库中并没有保存它的数据,只是保存了它的定义及关系。视图和查询类似,均可从一个或多是保存了它的定义及关系。视图和查询类似,均可从一个或多个表中提取符合条件的记

54、录。但它们的区别是视图不但可以从个表中提取符合条件的记录。但它们的区别是视图不但可以从表中提取符合条件的记录,而且还可以修改提取的记录值,并表中提取符合条件的记录,而且还可以修改提取的记录值,并把修改后的结果返回到原表中,从而更新该表文件。查询只能把修改后的结果返回到原表中,从而更新该表文件。查询只能查看结果,不能修改记录的值。查看结果,不能修改记录的值。 视图有两种类型,一种是本地视图,另一种是远程视图。利用Visual Foxpro 6.0的表文件和本地服务器上所有的表文件数据建立的视图称为本地视图;通过ODBC从远程数据库源建立的视图称为远程视图。视图可通过向导和设计器两种方法来创建。

55、1利用视图设计器创建视图利用视图设计器创建视图视图是属于某个数据库的,它作为数据库的一部分存在于视图是属于某个数据库的,它作为数据库的一部分存在于数据库文件中。只有当数据库文件打开时,才能使用包含在其数据库文件中。只有当数据库文件打开时,才能使用包含在其中的视图。所以创建视图之前要首先打开一个数据库文件,然中的视图。所以创建视图之前要首先打开一个数据库文件,然后再打开视图设计器。后再打开视图设计器。新建一个视图新建一个视图后出现【视图设计器】窗口系统首先要求向【视图设计器】中添加表或视图,添加完成后,如图5.26所示。 图5.26视图设计器窗口【例5.9】根据学生表、课程表和选课表建立视图,含

56、有学生的学号、姓名、性别和高等数学成绩,记录号按学号升序排列。操作步骤简述如下:1)打开数据库单击【文件】菜单的【打开】命令,打开一个“成绩管理”数据库文件。2)新建一个视图步骤同上所述,在视图设计器的窗口中,添加学生表、课程表和选课表。3)设置字段选项卡单击【字段】选项卡标签,依次选择学生.学号、学生.姓名、学生.性别和课程.成绩添加到【选定字段】列表中。如图5.27所示。图5.27字段选项卡4)设置联接选项卡单击【连接】选项卡标签,设置连接条件为:课程.课程号=选课.课程号;选课.学号=学生.学号。连接类型为内部连接。如图5.28所示。图5.28联接选项卡 5)设置筛选选项卡单击【筛选】选

57、项卡标签,设置筛选条件为:课程.课程名=“高等数学”如图5.29所示图5.29筛选选项卡6)设置排序依据单击【排序依据】选项卡标签,设置排序条件:按学号升序排序。如图5.30所示。 图5.30排序依据选项卡 7)运行视图 单击菜单【查询】|【运行查询】命令,显示结果如图5.31所示。图5.31运行视图窗口8)保存视图文件)保存视图文件关闭视图窗口,将出现如图关闭视图窗口,将出现如图5.32所示的保存对话框,在保所示的保存对话框,在保存对话框中输入视图文件的名字,单击存对话框中输入视图文件的名字,单击【确定】【确定】按钮。按钮。图5.32保存视图文件窗口2 2数据库视图的操作数据库视图的操作视图

58、是一个“虚拟表”,处理视图类似处理表。它不但可以用来显示和更新数据,而且还可以通过调整它的属性来提高性能。1)打开视图。在项目管理器中先选择一个数据库,再选择视图名,然后单击【浏览】按钮,在【浏览】窗口中显示视图。使用命令的方式访问视图。OPEN DATABASEUSE INBROWSE2)关闭视图使用命令的方式关闭在工作区中打开的视图。USE IN3)重新命名视图建立一个视图以后,还可以为其重新命名视图,进行视图的重新命名。在项目管理器中先选择一个数据库,再右击要重新命名的视图后出现快捷菜单。然后单击【重命名】命令,出现一对话框后,就可为视图输入新的名称。使用RENAME VIEW TO命令

59、重新命名视图。4)删除视图视图同表一样也是可以删除的,删除视图可以使用【项目管理器】或使用DELETE VIEW命令。在【项目管理器】中选择一个数据库,再选择要删除的视图,然后单击【移去】按钮,即可删除所选的视图。使用DELETE VIEW命令。注意:在重新命名和删除视图之前,必须打开包含要删除视图的数据库并设置其为当前数据库。5)修改视图在【项目管理器】中先选择一个数据库,再选择视图名,然后单击【修改】按钮,在视图设计器窗口中进行修改。使用命令的方式修改视图。MODIFY VIEWREMOTE5.3.35.3.3带参数的视图带参数的视图 在前面所建立的视图中,对记录的筛选都是在设计阶段就在前

60、面所建立的视图中,对记录的筛选都是在设计阶段就确定了。为了避免每取一部分记录值就要建立视图的情况,确定了。为了避免每取一部分记录值就要建立视图的情况,Visual Foxpro 6.0创建了具有提示输入值来查询信息的视图,创建了具有提示输入值来查询信息的视图,称为参数化视图,这样的视图具有更大的灵活性和更强的适应称为参数化视图,这样的视图具有更大的灵活性和更强的适应性。性。下面,我们通过例子来说明创建参数化视图的步骤。下面,我们通过例子来说明创建参数化视图的步骤。【例5.10】根据学生表建立视图“系部学生”,给出用户指定系部代号的学生信息。步骤1打开数据库 用菜单或命令方式打开成绩管理数据库。

温馨提示

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

评论

0/150

提交评论