




已阅读5页,还剩82页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章 数据查询,(时间:6次课,12学时),第5章 数据查询,学习目的与要求: 数据查询是数据库应用的重要内容,本章围绕数据查询介绍了查询的概念、命令和一种强有力的查询工具-查询设计器,用户可以利用它快速检索在表和视图中所需要的信息。本章另外一个重要的概念是视图的设计与使用,它将帮助用户对数量庞大的信息按新的方法重新加工、过滤筛选。使用者不必直接接触到复杂的数据表,也能方便自如地使用数据。所以读者必需掌握查询和视图这两个概念,并为学习下一章打好基础。,第5章 数据查询,5.1 List和Display查询 5.2 表中记录定位 5.3 查询和视图 5.4 上 机 实 训 5.5 本章习题,5.1 List和Display查询,5.1.1 List查询 格式:LIST OFF FIELDS FOR WHILE TO PRINTER PROMPT / TO FILE 功能:显示当前表中的全部或部分记录和数据。,参数描述: OFF:使用OFF时,不显示记录号,否则显示每个记录号。 :范围为可选项,可根据需要选择ALL、RECORD(N) 、NEXT(N)、REST中的任一个参数,表示记录显示的范围。 其中,ALL表示显示所有记录。 RECORD(N)表示显示第N条记录。 NEXT(N)表示显示从当前指针开始连续N条记录。 REST表示显示从当前指针开始直到最后一条记录。 FIELDS :若省略,则显示当前表中的所有字段,否则显示指定的字段。如果备注型字段名出现在中,则它的内容按50个字符列宽显示。,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和LIST功能基本相同,都是显示记录,不同之处是DISPLAY当显示满一屏后暂停,按任意键后继续显示;而LIST则滚屏显示,直到最后一条记录显示完为止。还有一个不同,当没有可选项时,只显示当前记录。,5.1.3 Browse查询,格式:BROWSE FIELDS FREEZELEDITREDITPARTITIONNOLINKLAST FOR 功能:打开当前表的浏览窗口,可实现在窗口中浏览、修改、删除数据记录。 参数描述: Fields 、FREEZE: 指定显示和编辑的表的字段; LEDIT:设置分区按记录方式浏览; REDIT:设置分区按编辑方式浏览; PARTITION:设置左右分区的大小; NOLINK:取消左右分区的连接; LAST:按最后一次关闭浏览窗口的方式打开浏览窗口。 FOR :指定在浏览窗口中显示的记录所要求满足的条件。,说明: 1BROWSE命令可以带有很多任选项,命令格式中只介绍了BROWSE命令的最基本的任选项,详细内容请参考帮助文档。 2对上列命令格式中的可选短语说明如下: 1)范围 LIST命令中范围的缺省值是ALL。DISP命令中范围的缺省值取决于FOR短语,如果有FOR短语,则缺省值是ALL;如果没有FOR短语, 则缺省值是NEXT 1(即当前记录)。 BROW命令中范围的缺省值是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 姓名, 性别 &显示所有记录中的指定字段值 DISP &只显示当前记录 DISP ALL &分屏显示所有的记录 DISP ALL 姓名,性别 FOR 系部编号=1 &选择显示符合条件的所有记录 BROW &全屏幕浏览所有的记录 BROW FIELDS 姓名,性别 &全屏幕浏览各记录中指定的字段,5.2 表中记录定位,为了标识当前记录,系统在打开的表中设置了记录指针,当前记录就是记录指针所指向的记录。用户要改变当前记录, 是通过移动当前表中的记录指针实现的。 记录定位就是将记录指针移到指定的记录上,记录指针指向的记录称为当前记录。Visual Foxpro 6.0系统提供了下列绝对定位和相对定位两类命令。,5.2.1 go和skip,1. 记录的绝对定位命令 这是一类与当前记录指针位置无关的记录定位命令, 其命令格式有: 格式一:GOTO RECORD /TOP/BOTTOMIN| 格式二:GO RECORD /TOP/BOTTOMIN| 格式三: IN| 功能:将记录指针直接定位到指定的记录上。,参数描述: :指定一个物理记录号,记录指针移至该记录上。 TOP:将记录指针移到表的第一个记录上(表的顶部)。 BOTTOM:将记录指针移到表的最后一个记录上(表的底部)。 IN|:移动指定工作区或指定的文件别名的记录指针。 说明: RECORD可省略。的值必须大于0,且不大于当前表文件的记录个数。如果越出记录的最大、最小范围,系统将提示出界。,【例5.2】记录的绝对定位命令举例。 USE D:学生 &刚打开的数据表文件, 记录指针指向第一条记录 3 &记录指针指向了第三条记录 GO 2 &记录指针指向了第二条记录 GO TOP &记录指针指向了首记录 GO BOTTOM &记录指针指向了尾记录,2. 记录的相对定位命令 这是和当前记录位置有关的记录指针定位命令, 即以当前记录指针位置为基准, 上、 下移动记录指针。 格式:SKIP 功能:相对当前记录,将记录指针向前或向后作相对若干条记 录的移动。 参数描述: :使记录指针作相对移动的记录数据。 说明: 1)该命令只取用数值表达式结果值的整数部分。当其结果值为正整数n时,该命令驱动记录指针下移n条记录;当其结果值为负整数n时,该命令驱动记录指针上移n条记录。 2)省略选择项,约定为向下移动一条记录,即SKIP 等价于SKIP 1。,【例5.3】记录的相对定位命令举例。 USE D:学生 &刚打开的数据表文件, 记录指针指向第一条记录 SKIP 3 &向下移动三条记录, 即指针指向第四条记录 BROW &查看记录指针的移动情况 SKIP -1 &记录指针向上移动一条记录, 即指向第三条记录 DISP &显示当前记录 SKIP 2*3-7 &记录指针指向第二条记录 DISP &显示当前记录,5.2.2 顺序查询定位(Locate),按表记录的物理顺序或逻辑顺序, 进行逐条查询满足条件的记录的方式, 叫作顺序查询。但顺序查询的速度较慢,特别是数据量大而查找目标又排在表记录的后边的情况。,1LOCATE命令 格式:LOCATE FOR WHILE 功能:按顺序搜索表,将记录指针定位在满足指定逻辑表达式 的第一个记录上。 参数描述: :指定要定位的记录范围。只有在范围内的记录被定位。LOCATE命令的默认范围是ALL。 FOR :LOCATE命令按顺序搜索当前表以找到满足逻辑表达式的第一个记录。 WHILE :指定一个条件,只要逻辑表达式计算值为真,就继续查找记录。换句话说,只要遇到第一个不满足条件的记录就停止搜索。,说明: 1)被搜索的表不必有索引。 2)若LOCATE发现一个满足条件的记录,就将记录指针定位在该记录上。可以使用RECNO()返回该记录的记录号,同时FOUND()函数返回“真”,EOF()函数返回“假”。如果没有找到,则将记录指针指向范围的最后一个记录,同时将FOUND()函数值置为“假”,屏幕上显示“已到定位范围末尾”。 3)该命令只能查找满足条件的第一条记录。 4)如果执行SET EXACT OFF命令后,再用LOCATE命令查找字符型数据时,不要求字符型数据精确匹配。 5)顺序查找命令中,如果缺省 FOR条件 ,则指定范围中的每一条记录都是符合条件的记录,显然这种查询是没有意义的,故 FOR条件不能缺省。 若表中有多条满足条件的记录,当已经找到一条满足条件的记录后,还想继续查找后面满足条件的记录时,可以使用 CONTINUE 命令继续向后查找满足条件的记录。,2CONTINUE命令 格式:CONTINUE 功能:继续查找下一条满足条件的记录。 说明: 1)CONTINUE是用在LOCATE之后继续查找满足同一条件的记录的命令,它继续LOCATE的操作。在指定的范围内,逐条记录查找满足条件的记录。 当找到第一个满足条件的记录后, 该记录成为当前记录(即数据库的记录指针指向所找到的记录)。如果还要按指定的范围和条件继续查询,应当反复使用CONTINUE命令,直到在指定的范围内找不到满足条件的记录为止。 如果CONTINUE命令成功地查找到了一条记录,RECNO()函数将返回该记录的记录号,并且 FOUND()函数返回逻辑“真”值和EOF()返回逻辑“假”值。 如果CONTINUE命令没有查找到满足条件的记录,RECNO()函数返回在table plus one中的记录数, FOUND()函数返回逻辑“假”值,并且EOF()函数返回逻辑“真”值。 2)CONTINUE命令只有和LOCATE命令配合起来, 才能使用。,【例5.4】从数据表学生.dbf中顺序查找性别等于女的三条记录。 为此,顺序执行下列命令: USE D:学生 LOCATE FOR 性别=女 &执行顺序查找命令 DISP &显示找到的第一条记录 COMTINUE &继续顺序查找 DISP &显示找到的第二条记录 CONTINUE &再执行一次顺序查找命令 DISP &显示找到的第三条记录,5.2.3 索引查询定位(Find和Seek ),用LOCATE命令查询的优点是不论表中的记录是否有序都能进行查找,而其主要的缺点是查找速度慢,仅适合记录较少的表。为了解决这一问题,Visual Foxpro 6.0系统提供了二条快速查询命令:FIND和SEEK。 按用户指定的查找条件, 在索引文件中找到与之匹配的索引关键值, 则记录指针会立即指向数据库表文件中对应的记录, 这种查询方式叫做索引查询定位(或称快速查询)。显然,进行索引查询定位的表, 必须是以所查找的关键字进行索引,并且是以此为主索引打开的表。,1FIND命令: 格式:FIND / 功能:它在已经建立索引并且表文件和索引文件均已打开的表中查找索引关键值与指定的字符串或数值型常量相匹配的第一条记录。如果找到,则设置该记录为当前记录,并且将FOUND()函数的值置为“真”;如果没有找到与其相符的记录,则将记录指针指向表的末尾,且将FOUND()函数的值置为“假”,将EOF()函数的值置为“真”。 说明: 1)所查询数据必须和主索引关键字相对应。 2)查询的值可以是字符串,也可以是数值。不能查询日期型数据和逻辑型数据。通常字符串可以不加字符串界定符,但是当字符串有前导空格时,则必须用定界符括起来;如果要查找的字符串是以定界符开始时,就必须用不同的定界符将其括起来。,3)执行SET EXACT OFF(默认状态)命令后,再用FIND命令查找字符串时,字符串可以是索引表达式值的全部或是从首字符开始的一个子串。如果执行了SET EXACT ON命令后再用FIND命令来查找字符串,则字符串只能和索引表达式的值精确匹配,即只能是索引表达式的值的全部。 4)查找字符串时,只要索引表达式(建立索引文件时使用的索引表达式)是字符型的,就可以使用FIND命令查找,并要求组成索引表达式的字段必须是字符型的。 5)FIND命令仅限于查找、 型数据, 但是不能查找字符型表达式或数值型表达式。 6)当表中的记录和要查找的关键值匹配的记录不止一个时, 如何能找到其他匹配记录?因为数据库是被索引过的,所以能匹配的记录肯定在所找到的记录的下面,因为符合条件的记录是在一起的,因此可用SKIP命令配合DISP命令查找,直到发现某条记录不满足条件时为止,此记录以后的记录肯定不符合条件。可以用SKIP命令加判断命令实现,2. SEEK命令 格式:SEEK 功能:在打开的索引文件中快速查找与相匹配的第一条记录,若找到,则设置该记录为当前记录。 说明: 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 徐 ? FOUND() &显示结果为.F.,表示没找到,表5-1 顺序查询和快速查询的比较,3.顺序查询和快速查询比较,5.2.4 对话查询定位,格式:GETEXPR TO TYPE ; DEFAULT 功能:通过命令GETEXPR启动表达式生成器对话框,从而创建表达式,并把表达式存入内存变量或数组元素中,然后通过LOCATE命令宏代换进行查询,此命令常用于程序中。,例如:通过GETEXPR获取LOCATE命令中查询条件,以实现任意条件的查询。如图5.1所示。 GETEXPR “输入查询条件“ TO CX TYPE “L;输入条件错误“ DEFAULT “性别=女 “,图5.1 对话查询窗口,5.3 查询和视图,5.3.1 查询文件的建立及有关操作 查询文件可通过向导和设计器两种方法来创建。查询设计器提供了一种强有力的检索方式,用户可利用它快速检索存储在表和视图中的信息,从中快速查找到满足条件的记录,对记录进行排序、分组并将查询结果以报表、表文件或图形的方式输出。 如果仅从一个表中检索记录,就称为单表查询,否则为多表查询。所生成的查询文件的默认扩展名为.QPR。,1用查询向导创建查询 启动查询向导方式: 1)在主窗口下打开【文件】菜单,选择【新建】命令。 2)单击新建对话框中的【查询】单选按钮,确定建立文件的类型是查询文件。 3)单击新建查询对话框中的【查询向导】按钮,出现向导选取对话框, 4)在向导选取对话框中选择要建立的查询类型,并单击【确定】按钮。,图5.2向导选取对话框,查询向导的步骤 步骤1:字段选取。 选择数据库,数据库中的表和表中的字段。字段选择完成后,单击【下一步】。如图5.3所示。,图5.3字段选取对话框,步骤2:为表建立关系。 如果用户的查询是建立在多个表的基础上,在第一步完成后,即可进入查询向导的第二步为表建立关系。如果是单表查询,不会出现此步骤。 如果用户建立多个表的查询,则出现如图5.4所示的对话框。 在对话框左边的下拉列表中选择建立关系的父表关键字,在右边的下拉列表中选择建立关系的子表关键字,然后单击【添加】按钮,将设定关系添加到关系列表框中。关系设置完成后单击【下一步】进入到步骤2a字段选取对话框。,图5.4为表建立关系,在此对话框中,通过只从两个表中选择匹配的记录或任意一个表中的所有记录,以限制用户的查询。默认情况下,只包含匹配的记录。单击【下一步】进入到步骤3。如图5.5所示。,图5.5字段选取对话框,步骤3:筛选记录 在此对话框中根据查询条件的要求,在各个项的下拉列表中选择满足查询条件要求的字段、关系运算符和用于筛选表达式的样本值。单击【预览】按钮,可查看基于筛选条件的记录。 用户也可以创建两个表达式,然后用【与】连接返回同时满足两个指定条件的记录, 如果用【或】连接,则返回至少满足其中一个指定条件的记录,如图5.6所示。,图5.6筛选记录对话框,步骤4:排序记录 在【可用字段】列表框中选择用于排序的字段,然后单击【添加】按钮,将选定的字段添加到【选定字段】列表中。在查询结果中,记录输出的先后顺序与【选定字段】列表中字段位置有关,排在最前面的字段优先级最高。当然也可单击【移去】按钮,将不需要的排序字段移动到【可用字段】列表中。 【升序】或【降序】单选按钮,确定结果是按升序排序还是按降序排序。如图5.7所示。,图5.7排序记录对话框,步骤4a:限制记录 限制记录就是限制查询结果中记录的输出数量。 在【部分类型】栏中,用户根据需要选择要限制的类型。在【数量】栏中确定要输出的记录个数。【预览】按钮可以查看增加限制条件后返回的记录情况,如图5.8所示。,图5.8限制记录对话框,步骤5:完成 在此对话框中有三种选择: 单击【保存查询】单选按钮,将建立的查询文件以文件形式保存在磁盘上。 单击【保存并运行查询】单选按钮,则先将建立的查询文件存盘,然后运行该查询文件。 单击【保存查询并修改于查询设计器】单选按钮,先将建立的查询文件存盘,然后将他调入查询设计器,以便用户对其进行修改。 单击完成按钮,结束创建查询的操作,如图5.9所示。,图5.9完成对话框,【例5.6】根据选课表创建交叉数据表,查询每个学生所选课程的总成绩。 步骤1:选取查询输出字段。 在图5.2向导选取对话框中选择【交叉表向导】,单击【确定】按钮,出现【步骤1-字段选取】对话框。 1)在该对话框中单击【数据库和表】下拉列表,选择成绩管理数据库文件,再选选课表文件。 2)在可用字段列表中将学号、课程号、成绩三个字段依次移到【选定字段】列表中,设置结果如图5.10所示。,步骤2:设置布局。 在该对话框中,将【可用字段】列表中的“学号”字段拖到【行】的位置,将“课程号”字段拖到【列】的位置,将“成绩”字段拖到【数据】框中,操作结果如图5.11所示。,图5.11 交叉表的定义布局对话框,步骤3:设置分类汇总列。 在该对话框中,通过从【总和】和【小计】区域选择合适的单选按钮,提供的统计类型有“求和”、“计数”、“平均”、“最大”和“最小”共五种;提供四种小计方式,单击【数据求和】单选按钮,对行数据求和,并把求和结果放在最右边的【汇总】列;单击【含数据的单元个数】单选按钮,对每行有数据的列进行计数,并把求和结果放在最右边的【计数】列;单击【表总计的百分比】单选按钮,计算各行数据总和在整个查询数据总和中所占的比例,并把计算结果放在最右边的【百分比】列;单击【无】单选按钮,则查询结果中不出现汇总列。 本例中,单击总和栏中的【求和】单选按钮,单击【小计】栏中的【数据求和】单选按钮,设置结果如图5.12所示。,图5.12 交叉表的加入总结信息对话框,步骤4:完成。 在该对话框中,用户根据需要选择一个单选按钮,再单击【完成】按钮,出现另存为对话框,将该交叉表保存,然后执行查询。查询结果如图5.13所示。,图5.13 例5.6查询结果,注意:交叉表向导只能对单表操作。,2用查询设计器创建查询 1)打开查询设计器窗口 可以通过以下所提供的多种方法之一来打开查询设计器: 从【项目管理器】启动【查询设计器】 在【项目管理器】中选择【数据】选项卡,再选取【查询】项,单击【新建】,进入查询设计方式选择对话框后单击【新建查询】,则启动【查询设计器】。 从【文件】菜单启动查询设计器 选择系统菜单中的【文件】|【新建】命令,在【新建】对话框中选中【文件类型】下的【查询】单选项,再单击右边的【新建文件】按钮,也可启动【查询设计器】 使用CREATE QUERY命令也可启动【查询设计器】对话框,,在创建新的查询时,Visual Foxpro 6.0将打开【添加表或视图】对话框,如图5.14所示。 单击【选定】栏中的【表】或【视图】单选按钮,以确定添加表文件还是视图文件;然后在【数据库中的表】列表中选择数据库表、自由表或视图,再单击【添加】按钮,重复此步操作,可选择多个用于查询的表或视图。如果用户要选择的表或视图没有出现在【数据库中的表】列表中,可单击【其他】按钮,在出现的【打开】对话框中选择查询中要使用的表或视图,并单击【确定】按钮。选择完成后,单击【关闭】按钮,,图5.14 添加表或视图对话框,【查询设计器】窗口,如图5.15所示。,图5.15查询设计器窗口,2)设置查询 选定查询字段 根据查询文件的需要,选择查询结果中应包含的字段。操作方法与用向导设计查询的方法相同。在本示例中先在【查询设计器】中选择【字段】选项卡,然后从可用字段列表框中选择:学生.学号、学生.姓名等字段,如图5.16所示。,图5.16字段选项卡,选择联接选项卡, 如果建立的查询是基于多表操作,用户可以使用【联接】选项卡设置表之间的联接条件。在Visual Foxpro 6.0中表间的联接有四种类型,分别是: Inner Join:内部联接,是根据关联字段,将满足联接条件的记录输出,此类型是默认的,也是最常用的; Right Outer Join:右联接,将关联条件右侧表的全部记录输出,以及满足联接条件左侧表中记录输出; Left Outer Join:左联接,将关联条件左侧表的全部记录输出,以及满足联接条件右侧表中记录输出; Full Join:完全联接,将所有满足和不满足联接条件的记录都包含在结果中。如图5.17所示。,图5.17联接选项卡,设置筛选记录 选择表中符合条件的部分记录是查询的重要任务。利用查询设计器中的【筛选】选项卡,可设置选择记录的条件,将满足条件的记录在输出结果中输出。如图5.18所示。 【条件】列表中包含如下几项: =(等于):指字段值与实例栏中给定的值相等; LIKE:表示【字段名】栏中给出的字段值与【实例】栏中给出的文本值之间执行不完全匹配,它主要针对字符类型。例如,如设置查询条件为“学生.学号 LIKE S”,那么诸如“学号”字段前一位为S的记录都满足该条件; =(精确匹配):表示在【字段名】栏中给出的字段值与【实例】栏中给出的文本值之间执行完全匹配检查,它也主要是针对字符类型的; (大于):即为【字段名】栏中给出的字段的值应大于【实例】栏中给出的值; =(大于等于):即为【字段名】栏中给出的字段的值应大于或等于【实例】栏中给出的值; (小于):即为【字段名】栏中给出的字段的值应小于【实例】栏中给出的值;,Is Null:指定字段必须包含NULLl值; Between(在中间):指定输出字段的值应大于或等于【实例】栏中的最小值,而小于或等于【实例】栏中的最大值,【实例】栏中给出最大值和最小值之间应用逗号分开; In(在之中):指定输出字段的值必须是【实例】栏中所给出值中的一个,在【实例】栏中给出的各值之间以逗号分隔。 此外,【联接】选项卡中的【否】列用于指定.NOT.条件,【逻辑】列用于设置各联接条件和筛选条件之间的逻辑关系(无、.AND.和.OR.),【大小写】列用于指定是否区分条件中和实例中的大小写。下方的【插入】和【移去】按钮分别用于增加或移去查询条件。,在设置筛选条件时,我们应注意如下几点: (1) 备注字段和通用字段不能用于设置查询条件; (2) 逻辑值的前后必须使用句点号,如.T.; (3) 只有当字符串与查询的表中字段名相同时,要用引号将字符串括起来,否则 不要用引号将字符串括起来; (4) 日期不必用花括号括起来。 (5) 本例中的筛选条件是系部编号为5且选择C2课程的学生情况。,图5.18筛选选项卡,设置查询结果排序 排序决定了查询输出结果中记录输出的先后顺序,通过【排序依据】选项卡设置查询的排序次序,方法同在用查询向导设计查询一样。首先从【选定字段】框中选定要使用的字段,并把它们移到【排序条件】框中,然后利用【排序选项】(从中选择升序或降序)来设置排序条件。如果还需要添加用于排序的字段,可以重复以上的操作步骤。如图.5.19所示。,图5.19排序依据选项卡,设置数据的分组查询 所谓分组就是将一组相似的记录压缩到一个结果记录中,这样就可完成基于一组记录的计算,如图5.20所示。,图5.20分组依据选项卡,【例5.7】利用选课表文件,求出各门课程的平均成绩。 操作步骤如下: (1) 打开查询设计器,添加选课表,在【字段】选项卡中双击课程号,添加到【选定字段】中,再单击【函数和表达式】右边的按钮,出现【表达式】生成器; (2) 在【数学】下拉式列表框中双击AVG(expN),在【来源于表】下拉框中选择课程表,在【字段】列表框中双击“课程成绩”,单击【确定】,即在【函数和表达式】框中自动生成了“AVG(课程.课程成绩)”这个表达式,用以计算课程表中课程成绩的平均值。 (3) 单击【添加】按钮,该表达式被添加到【选定字段】列表框中,将来查询结果中就会有一列数据求平均值; (4) 单击【分组依据】选项卡,进入【分组依据】窗口,在【可用字段】中选择课程.课程号,再单击【添加】按钮,该字段即成为分组字段,运行后结果如图5.21所示。,图5.21分组查询与AVG()联合使用运行窗口,杂项的设置 经过以上五个步骤,基本上已生成了一个比较全面的查询。接下来还可以通过查询设计器中的【杂项】选项卡做最后的处理。 单击【杂项】选项卡,可以看到其间包括【无重复记录】、【交叉数据表】、【全部】、【百分比】这四个复选框和一个微调按钮。 选中【无重复记录】复选框:将清除查询结果中的重复记录。 选中【交叉数据表】复选框:将查询结果以交叉表的格式传递给数据表。 在【列在前面的记录】栏中,用户可以设置记录的数目或百分比。如果单击【全部】复选框则输出全部记录;如果单击【记录个数】文本框,则按在文本框中输入记录的个数,输出列在前面的部分记录。如果单击【百分比】复选框,则按在其上文本框中输入的百分比数值,输出列在前面的部分记录。如图5.22所示。,图5.22杂项选项卡,设置查询输出结果 查询检索的信息,可输出到不同的目的地,以用作不同的用途。如果没有选定输出的目的地,查询结果将显示在浏览窗口中。但应特别注意,用户不能对显示在浏览窗口中的数据进行修改,数据是只读的。查询输出目的可以是浏览窗口、临时表、表、图形、屏幕、报表、标签等。选择结果的去向方法如下: 单击【查询设计器工具】中的【查询去向】按钮,或者从【查询】菜单中选择【查询去向】,可看到如图所示的【查询去向】对话框。如图5.23所示。,图5.23查询去向选卡,对话框中的按钮含义如下: 【浏览】:将查询结果显示在浏览窗口中,这是查询缺省设置; 【临时表】:将查询结果保存在一个由用户命名的临时只读表中。多次查询的结果可放在不同的表内。该表可用于浏览数据,制作报表等,直到用户关闭它们; 【表】:将查询的结果保存在一个由用户命名的(.DBF )中,此时查询的结果是真正的存放到磁盘上的,多次查询的结果可放在不同的表内; 【图形】:将查询结果以图形格式显示出来; 【屏幕】:将查询结果在Visual Foxpro 6.0主窗口或当前活动输出窗口中显示出来; 【报表】:将查询结果输出送到一个报表文件(.FRX)中; 【标签】:将查询结果输出送到一个标签文件(.LBX)中。,【例5.8】利用选课表文件,求出各门课程的平均成绩,将查询结果以图形格式显示。 前四步操作步骤如【例5.7】所示。 (5) 单击【查询设计器工具】中的【查询去向】按钮,在图5.23 所示的对话框中选择【图形】按钮,单击确定。出现图形向导对话框。 (6) 在该对话框中,将Avg_成绩字段拖到【数据系列】列表中,作为图表的图形显示数据,在从【可用字段】列表中将课程号字段拖到图形下面的【坐标轴】框作为参考值。如图5.24所示。单击【下一步】,进入选择图形样式。,图5.24 图形向导对话框,(7) 在该对话框中,提供了12种图表样式,选择其一即可。单击【下一步】,进入完成对话框。 (8) 在【为图形键入一个标题】文本框中输入图表名字,单击【完成】按钮,出现另存对话框,在对话框中输入名字,执行查询出现如图5.25所示的结果。,图5.25例5.8运行结果,运行查询 在完成了查询的设计工作并指定了结果输出去向后,可通过以下五种方式之一运行查询: 在查询设计器区域内单击右键,在弹出菜单中选择【运行查询】 ; 在【项目管理器】中选定查询的名称,然后选定【运行】按钮; 在【查询】菜单中选择【运行查询】: 在命令窗口中键入DO 查询名.qpr。 单击系统常用菜单上的【运行】按钮。,5.3.2 视图的建立及有关操作,视图是从一个或多个表中导出的一个虚拟表,它的数据取自于已有的数据库表,但在数据库中并没有保存它的数据,只是保存了它的定义及关系。视图和查询类似,均可从一个或多个表中提取符合条件的记录。但它们的区别是视图不但可以从表中提取符合条件的记录,而且还可以修改提取的记录值,并把修改后的结果返回到原表中,从而更新该表文件。查询只能查看结果,不能修改记录的值。 视图有两种类型,一种是本地视图,另一种是远程视图。利用Visual Foxpro 6.0的表文件和本地服务器上所有的表文件数据建立的视图称为本地视图;通过ODBC从远程数据库源建立的视图称为远程视图。 视图可通过向导和设计器两种方法来创建。,1利用视图设计器创建视图 视图是属于某个数据库的,它作为数据库的一部分存在于数据库文件中。只有当数据库文件打开时,才能使用包含在其中的视图。所以创建视图之前要首先打开一个数据库文件,然后再打开视图设计器。 新建一个视图后出现【视图设计器】窗口系统首先要求向【视图设计器】中添加表或视图,添加完成后,如图5.26所示。,图5.26视图设计器窗口,【例5.9】根据学生表、课程表和选课表建立视图,含有学生的学号、姓名、性别和高等数学成绩,记录号按学号升序排列。 操作步骤简述如下: 1)打开数据库 单击【文件】菜单的【打开】命令,打开一个“成绩管理”数据库文件。 2)新建一个视图 步骤同上所述,在视图设计器的窗口中,添加学生表、课程表和选课表。 3)设置字段选项卡 单击【字段】选项卡标签,依次选择学生.学号、学生.姓名、学生.性别和课程.成绩添加到【选定字段】列表中。如图5.27所示。,图5.27字段选项卡,4)设置联接选项卡 单击【连接】选项卡标签,设置连接条件为:课程.课程号=选课.课程号;选课.学号=学生.学号。连接类型为内部连接。如图5.28所示。,图5.28联接选项卡,5)设置筛选选项卡 单击【筛选】选项卡标签,设置筛选条件为:课程.课程名=“高等数学”如图5.29所示,图5.29筛选选项卡,6)设置排序依据 单击【排序依据】选项卡标签,设置排序条件:按学号升序排序。如图5.30所示。,图5.30排序依据选项卡,7)运行视图 单击菜单【查询】|【运行查询】命令,显示结果如图5.31所示。,图5.31运行视图窗口,8)保存视图文件 关闭视图窗口,将出现如图5.32所示的保存对话框,在保存对话框中输入视图文件的名字,单击【确定】按钮。,图5.32保存视图文件窗口,2数据库视图的操作 视图是一个“虚拟表”,处理视图类似处理表。它不但可以用来显示和更新数据,而且还可以通过调整它的属性来提高性能。 1)打开视图。 在项目管理器中先选择一个数据库,再选择视图名,然后单击【浏览】按钮,在【浏览】窗口中显示视图。 使用命令的方式访问视图。 OPEN DATABASE USE IN BROWSE 2)关闭视图 使用命令的方式关闭在工作区中打开的视图。 USE IN 3)重新命名视图 建立一个视图以后,还可以为其重新命名视图,进行视图的重新命名。,在项目管理器中先选择一个数据库,再右击要重新命名的视图后出现快捷菜单。然后单击【重命名】命令,出现一对话框后,就可为视图输入新的名称。 使用RENAME VIEW TO命令重新命名视图。 4)删除视图 视图同表一样也是可以删除的,删除视图可以使用【项目管理器】或使用DELETE VIEW命令。 在【项目管理器】中选择一个数据库,再选择要删除的视图,然后单击【移去】按钮,即可删除所选的视图。 使用DELETE VIEW命令。 注意:在重新命名和删除视图之前,必须打开包含要删除视图的数据库并设置其为当前数据库。 5)修改视图 在【项目管理器】中先选择一个数据库,再选择视图名,然后单击【修改】按钮,在视图设计器窗口中进行修改。 使用命令的方式修改视图。 MODIFY VIEWREMOTE,5.3.3带参数的视图,在前面所建立的视图中,对记录的筛选都是在设计阶段就确定了。为了避免每取一部分记录值就要建立视图的情况,Visual Foxpro 6.0创建了具有提示输入值来查询信息的视图,称为参数化视图,这样的视图具有更大的灵活性和更强的适应性。 下面,我们通过例子来说明创建参数化视图的步骤。,【例5.10】根据学生表建立视图“系部学生”,给出用户指定系部代号的学生信息。 步骤1打开数据库 用菜单或命令方式打开成绩管理数据库。 步骤2打开视图设计器 添加学生表。 步骤3选择字段 单击【字段】选项卡标签,选定需要的字段到输出列表中。 步骤4设置筛选条件 单击【筛选】选项卡中的【字段名】下拉列表框中选择学生.系部编号,在【条件】列表框中选定“=”,在【实例】文本框中输入“?系部代号”。这个问号表示引用一个表达式所需要的参数。问号后的文字标识了这个参数的名称。,步骤5输入参数值 从【查询】菜单中选择【视图参数】命令,此时系统弹出视图参数窗口,如图 5.33所示。在视图参数对话框中输入参数名及其数据类型。此例中建立一个名为“系部代号”的视图参数,此视图参数可以任意取,但数据类型要和所要查询的记录类型一致。参数名可以是字母字符、数字和单引号的任意组合。,图5.33视图参数窗口,步骤6运行视图 单击菜单【查询】|【运行查询】命令,或通过单击鼠标右键再选择【运行查询】命令,系统弹出如图5.34所示的视图参数对话框。在此对话框中输入“5”,按下确定按钮,就为此视图建立了一个视图参数了。显示的结果即显示在屏幕上,如图5.35所示。,图3.20【例3.12】窗体界面,图3.20【例3.12】窗体界面,步骤7保存视图 关闭视图窗口,在【保存】对话框中输入视图名称,单击【确定】即可。,5.3.4 视图对表的更新,视图的最大特点在于能用视图更新数据,并把更新结果送回到源表中。这也是建立视图与建立查询的主要区别,也是视图的重点所在。视图设计器中的【更新条件】选项卡可以用来设置允许视图更新表字段的条件。 【更新条件】选项卡选项包括如下内容: 【表】:指定视图所使用的哪些表可以修改。选择这个下拉列表框中的选项,可以确定哪些表中的字段可以在【字段名】列表框中,以便设置更新条件。 【字段名】列表框:显示了视图所选中的表中的字段,并用来输出这些字段,不过这些字段都是可以更新的。在字段文本框中共有下列3种方式字段: 关键字段(使用钥匙符号作标记),指定该字段是否为关键字段。关键字段用来使视图中的修改和源表中的原始记录相匹配。系统自动将表中主关键字标记为关键字段。 可更新字段(使用铅笔符号作标记),指定该字段是否为可更新字段。,字段名,显示没有标记为关键字字段或可更新字段的输出字段名。 【重置关键字】按钮:这个按钮作用是从每个表中选择主关键字字段作为视图的关键字字段。 【全部更新】按钮:在这个按钮中可以选择除了关键字字段以外的所有字段来进行更新,并在【字段名】列表的铅笔符号下打一个对钩。 【发送SQL更新】复选框:指定是否将视图记录中的修改传送给原始表。如果选择了这个复选框,将把在视图中对记录字段的修改返回到源表中。 【SQL WHERE 子句包括】: 【关键字段】:如果在原始表中有一个关键字字段被改变,则更新失败。 【关键字和可更新字段】:当源表中的关键字和任何标记为可更新的字段被改变时,则更新失败。 【关键字和已修改字段】:如果从视图首次检索(默认)以后,关键字字段或原始表记录的已修改字段中,某个字段做过修改,则更新失败。,【关键字段和时间戳】:如果自原始表记录的时间戳首次检索以后,它被修改过,则更新失败。只有当远程表有时间戳列时,此选项才有效。 【使用更新】:此单选按钮组用于指定字段如何在服务器上进行更新。 【SQL DELETE然后INSERT】:指定先删除原始表记录后,再创建一个新的在视图中被修改的记录。 【SQL UPDATE】:指定用视图字段中的内容来修改原始表中的字段。 【例5.11】根据学生表建立视图,包含所有学生的学号、姓名、性别、出生日期、是否团员和系部编号字段,使系部编号字段可更新。 操作步骤如下 步骤1打开数据库 用菜单或命令方式打开成绩管理数据库。,步骤2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- PowerPoint自定义动画制作(说课稿新)
- 拆迁安置协议书
- 代销皮鞋协议书
- 股东协议书怎么写
- 2024-2025学年新教材高中化学 第2章 化学反应速率与化学平衡 第2节 第1课时 化学平衡状态 化学平衡常数说课稿 新人教版选择性必修第一册
- 活动一 了解家乡的防洪措施(教学设计)六年级下册综合实践活动沪科黔科版
- 我的课外劳动日记(一)说课稿小学劳动人教版二年级上册-人教版
- 2024年五年级数学上册 八 用字母表示数第1课时 用含有字母的式子表示简单的数量、数量关系和计算公式说课稿 苏教版
- Unit 4 Why don't you talk to your parents Section A Grammar focus 说课稿 人教版八年级英语下册
- Lesson 7 Boy,Girl说课稿小学英语一年级上册冀教版(一起)
- 《分众传媒公司介绍》课件
- 物资编码基础知识
- 管桩试桩方案
- 血液科医师晋升副(主)任医师难治性伯基特淋巴瘤病例分析专题报告
- 癌性疼痛中西医结合诊疗指南
- 冷库建设工程施工进度计划及保证措施
- 建筑设计行业2024年财务挑战解析
- 慢性病防治健康教育知识讲座
- 中国石化加油站视觉形象(VI)标准手册-课件
- 退费账户确认书
- 国家开放大学《政治学原理》章节自检自测题参考答案
评论
0/150
提交评论