资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第四章 视图与查询,*,第四章 视图与查询,本章内容简介,从数据库中提取所需的数据是数据库的一个主要应用。,Visual FoxPro,提供了可视化的工具供用户方便地从数据库中选取数据,这个工具便是查询和视图。,学习目标,要求熟练掌握查询设计器的使用,特别要熟悉各选项卡的功能和操作。理解查询和视图的异同、视图的特点及操作。查询和视图设计器各个选项都有对应的,SQL,子句,本章为下一章学习,SQL,语句做准备。,学习切入点及方法,在关系操作中,基本的运算包括选择、投影和联接,本章学习可视化的工具来完成这些操作。,建议学时,建议课堂讲授,3,4,学时,上机,4,6,学时。,2026/10/23,1,第四章 视图与查询,视图和查询,是,Visual FoxPro,支持的两种数据对象。二者有很多类似之处,都是为快速、方便地使用数据库中的数据提供的一种方法或工具。查询可以根据表或视图定义,而视图兼有表和查询的特点。,4.1 视图,4.2 查询,2026/10/23,2,第四章 视图与查询,4.1,视图,在关系数据库系统中,视图就像一个窗口,即操作表的窗口,用户透过它可以看到自己感兴趣的数据及其变化。,视图可以看作是从一个或多个基本表,或者从其他视图中导出的虚拟表。数据库中只存放视图的定义。,视图一经定义,就成为数据库中的一个组成部分,具有与基本表类似的功能,可以和基本表一样被查询、删除或更新。,合理使用视图可以带来简化操作、提高数据的独立性、保护机密数据等好处。,Visual FoxPro,中的视图可以是本地的或远程的。,视图是可以更新的。,4.1.1,视图的概念,2026/10/23,3,第四章 视图与查询,4.1.2,使用视图向导建视图,第一章介绍过专门的关系运算,选择运算从关系中找出满足条件的行,投影运算从关系中选取若干属性(列),联接运算将两个或两个以上的关系联接成一个新的关系。这些运算,使用视图和查询都很容易实现。,Visual FoxPro,提供了可视化的向导工具来创建视图。,例,4.1,在“世界杯”数据库中,输出各届世界杯的基本信息及最佳球员。,将利用向导所创建的视图以“基本信息视图”为视图名保存在“世界杯”数据库中。,注意:这里视图的保存没有实际的路径,只有视图名称,视图只在存放在数据库中的一个虚拟表,如果删除数据库,则视图也将被删除。,4.1,视图,2026/10/23,4,第四章 视图与查询,4.1.3,使用视图设计器建视图,可以使用以下方法打开视图设计器:,方法一:用,CREATE VIEW,命令。,方法二:选择“文件”菜单下的“新建”命令。,方法三:在“项目管理器”窗口的“数据”选项卡下展开要建立视图的数据库,并选择“本地视图”或“远程视图”,单击“新建”按扭,选择“新建视图”。,例,4.2,在“世界杯”数据库中,利用视图查询所有亚洲球队的参赛成绩,并按参赛队名降序输出参赛队、届次和成绩。,将视图取名为“亚洲球队”,保存在“世界杯”数据库中。,4.1,视图,2026/10/23,5,第四章 视图与查询,4.1.4,视图设计器,4,“排序依据”选项卡,用来指定视图结果的排列顺序,可以指定多个排序关键字段,但只有“字段”选项卡中指定的输出字段才能作为排序的关键字段。,5,“分组依据”选项卡,指定分组的依据字段,在分组依据字段上取值相同的记录放在一个分组中,每个分组在输出中对应一条记录。通常情况下,对记录进行分组是为了完成基于一组记录而不是全部记录的计算,和分组一起使用的函数诸如:求和(,SUM,)、计数(,COUNT,)、求平均值(,AVG,)等。,4.1,视图,2026/10/23,8,第四章 视图与查询,4.1.4,视图设计器,6,“更新条件”选项卡,视图是可更新的。这里的更新是指在视图设计器中创建视图时,利用“更新条件”选项卡的设置,当视图定义完成,在“浏览”窗口中浏览视图时,更改视图数据,然后将更新结果发送回源表。,7,“杂项”选项卡,指定是否输出重复记录,并且可以指定输出的记录数或百分比,也就是指定输出所有满足条件的记录中的前多少条记录或者前百分之几条记录,对应于向导步骤,4a-,限制记录。,在创建视图进行数据查询时,视图设计器提供了一个界面,供用户使用选择的方式来写语句。但视图设计器只能建立一些规则的查询,对一些复杂的查询(比如相关的嵌套查询)在视图设计器中是无法实现的。,4.1,视图,2026/10/23,9,第四章 视图与查询,4.1.4,视图设计器,例,4.3,在例,4.2,的视图中,统计亚洲各个球队参加“世界杯”的次数。,在项目管理器中,单击选中例,4.2,创建的“亚洲球队”视图,单击“修改”按钮,在“视图设计器”窗口中打开“亚洲球队”视图。,选择“字段”选项卡,在“字段”选项卡的左下角的“函数和表达式”框中输入表达式:,count(,参赛队,.,参赛队,)as,参赛次数,单击“添加”按钮,将输入的表达式添加到“选定字段”框中。,选择“分组依据”选项,将参赛队,.,参赛队添加到分组字段中。这时,将参赛队相同的作为一个组,利用,count,函数计算各个参赛队出现的次数。,视图保存并浏览视图。视图名仍为“亚洲球队”,保存在“世界杯”数据库中。,也可以用“表达式生成器”来生成表达式。,as,短语指定查询选取的字段的输出名称。,4.1,视图,2026/10/23,10,第四章 视图与查询,4.1.4,视图设计器,例,4.4,在“世界杯”数据库中,分别统计各地区球队的夺冠次数。,在“世界杯”项目中,新建本地视图,打开“视图设计器”对话框。,添加基本信息表和参赛队表。设置联接条件,Inner Join,基本信息,.,冠军,=,参赛队,.,参赛队,在“字段”选项卡的“可用字段”列表框中选定参赛队表的“地区”字段,将其添加到右侧的“选定字段”列表框中。,在“字段”选项卡左下角的“函数和表达式”框中填入“,COUNT,(基本信息,.,届次)夺冠次数”或“,COUNT,(基本信息,.,届次),AS,夺冠次数”。,在“分组依据”中选定分组字段。将参赛队,.,地区添加到“分组字段”列表中。,浏览视图。将视图以“各地区夺冠次数”为视图名保存在数据库中。,分组以后,“字段”选项卡设置的计算字段里所包含的,COUNT,(基本信息,.,届次)函数计算范围就是一个分组,也就是分别对每个地区进行统计,联接条件中限定了只有冠军队才进入统计,计算结果就是每个地区的夺冠次数。,4.1,视图,2026/10/23,11,第四章 视图与查询,4.1.4,视图设计器,例,4.4,在“世界杯”数据库中,分别统计各地区球队的夺冠次数。,思考,1,:,这里非常巧妙地利用了“基本信息”表中的冠军字段信息,使用内部联接,相当于设置了一个限制视图查询结果的条件。如果不用“基本信息”表,在参赛成绩表中也有冠军信息,如果使用“参赛成绩”和“参赛队”表,这个视图该如何完成?,思考,2,:,如果想统计各个球队的夺冠次数,该如何设计视图?,4.1,视图,2026/10/23,12,第四章 视图与查询,4.1.5,视图与数据更新,例,4.5,建立名为“基本信息及最佳球员”的视图。结果中包括届次、举办国、冠军和最佳球员、最佳球员国籍等信息。以“基本信息及最佳球员”为名保存。,在视图中将举办国“德国”修改为“,Germany”,,并将更新结果发送到基本表中,使基本表中的举办国也更改为“,Germany”,。,思考:使用视图更新,最终目的是修改基本表中的数据,为什么不在基本表中直接修改,而要使用视图?或者,应在什么时候直接修改基本表,什么时候使用视图更新数据?,在项目管理器中选择“基本信息及最佳球员”视图,单击“修改”按钮。,在“视图设计器”窗口中选择“更新条件”选项。,在“更新条件”选项中,以“基本信息,.,届次”为关键字段,使“基本信息,.,举办国”为可更新字段(即单击使其前面打钩)。,选中“发送,SQL,更新”复选框,并保存视图。,在“视图设计器”窗口中单击鼠标右键,选择“运行查询”。在视图浏览窗口中修改第,18,届的举办国为,Germany,。将视图关闭。,4.1,视图,2026/10/23,13,第四章 视图与查询,4.1.6,远程视图,如果所需信息在远程数据源中,则可以从这个数据源创建一个远程视图。,任何在,Visual FoxPro,以外的,一般位于,ODBC,支持的源中的数据,例如,SQL SERVER,数据库都是远程数据源。数据源(,DATA SOURCE,)是,ODBC,术语,指代数据库和访问该数据库所需的信息。,ODBC(Open Database Connectivity),即开放式数据库连接,是用于数据库服务器的一种标准协议。可以安装多种数据库的,ODBC,驱动程序,从而使,Visual FoxPro,能够与该数据库相连,访问库中的数据。,1.,建立连接,创建一个远程视图时,可以使它基于一个已有的命名连接或在创建远程视图时直接指定在机器上注册的,ODBC,数据源,运行视图时再创建连接。,2.,建立远程视图,在进入“添加表或视图”对话框和“视图设计器”窗口前,首先要进入“选择连接或数据源”对话框,然后建立远程视图。,4.1,视图,2026/10/23,14,第四章 视图与查询,4.2,查询,视图和查询都是从数据库中提取所需的结果,视图和查询的区别主要有:,视图生成的是一个定义,视图定义保存在数据库中,视图是从基本表派生出的虚拟表,可以像操作表一样使用它。查询生成的是一个扩展名为,.QPR,的文件,这个文件保存在磁盘上,可以运行查询文件。,视图是可更新的,可将更新结果发送回源表。查询不可更新。,查询结果可以设置去向。可以在浏览窗口中浏览,也可以将查询结果输送到表、报表、屏幕、图形、临时表等。,4.2.1,查询的概念,2026/10/23,15,第四章 视图与查询,4.2,查询,新建一个查询的方法主要有三种:,方法一:用,CREATE QUERY,命令。,方法二:选择“文件”菜单下的“新建”命令,或单击“常用”工具栏上的“新建”按钮,在弹出的“新建”对话框中选择“查询”并单击“新建文件”按钮。,方法三:在“项目管理器”窗口的“数据”选项卡中选择“查询”,然后单击“新建”按钮。,4.2.2,使用“查询设计器”建立查询,2026/10/23,16,第四章 视图与查询,4.2,查询,例,4.6,将例,4.2,的视图用查询设计器来完成。在“世界杯”数据库中,利用视图查询所有亚洲球队的参赛成绩,并按参赛队名降序输出参赛队、届次和成绩。,将查询保存为“亚洲球队,.QPR”,文件,保存在“,D:,世界杯,查询”文件夹下。,4.2.2,使用“查询设计器”建立查询,执行查询:,方法一:,选择主窗口“查询”菜单下的“运行查询”命令。,方法二:,执行“查询设计器”窗口的快捷菜单中的“运行查询”命令。,方法三:,单击“常用”工具栏中的红色叹号按钮。,方法四:,执行主窗口的“程序”菜单下的“运行”命令。,方法五:,在命令窗口执行命令“,DO,亚洲球队,.QPR”,。,注意扩展名,.QPR,不能省略。生成的查询是程序文件,可以用,DO,命令执行。,2026/10/23,17,第四章 视图与查询,4.2,查询,4.2.2,使用“查询设计器”建立查询,查询和视图的浏览结果对比:,窗口标题不同,一个是视图的“浏览”窗口,窗口标题为视图名“亚洲球队”;一个是查询的运行结果窗口,标题为“查询”。,运行方式不同,查询对应的运行查询的按钮是“运行”,而视图是“浏览”。,保存方式不同,保存时,查询是以扩展名为,.qpr,的文件保存在某个文件夹下,而视图保存的仅仅是一个数据定义,只有视图名,没有保存位置,磁盘上也没有对应的文件。,2026/10/23,18,第四章 视图与查询,4.2,查询,例,4.6,所创建的亚洲球队,.QPR,文件的内容。,在此窗口中的,SQLSELECT,语句是只读的,不能修改。,4.2.3,查询生成的,SQL,语句,例,4.6,查询亚洲球队的,SQLSELECT,语句,2026/10/23,19,第四章 视图与查询,4.2,查询,运行查询时,查询结果在“浏览”窗口中显示,默认的查询输出形式。,若执行“查询”菜单下或“查询设计器工具栏”中的“查询去向”命令,将打开“查询去向”对话框,可以在其中重新指定查询的其他输出形式。,4.2.4,设置查询去向,“查询去向”对话框,2026/10/23,20,第四章 视图与查询,思考题,1.,什么是视图?什么是查询?视图和查询的区别和联系是什么?,2.,在视图设计器中如何使字段可更新?如何更新数据并将更新发送回源表?,3.,在视图设计器中如何向数据查询结果添加表达式?,4.,简述“视图设计器”窗口中各个选项的含义和功能。,5.,视图和基本表有什么区别和联系?,6.,如何在查询中显示字段的别名?,7.,查询结果可以有哪些去向?默认的查询去向是什么?,2026/10/23,21,第四章 视图与查询,实习题四,1,创建视图,查找所有点球决胜的世界杯基本信息,输出字段包括届次、举办国、冠军、点球决胜,并按届次降序排列。将视图以“点球决胜”为名保存在数据库中。,2,创建视图,查询德国队参加了哪几届世界杯及各届成绩,视图名为“德国队成绩”。提示,德国统一以前是以民主德国和联邦德国分别参加世界杯,所以视图中应包括德国、民主德国和联邦德国的成绩。将民主德国和联邦德国更改为德国,将更新发送到基本表中。,3,创建查询,结果包括所有亚洲球队的参赛成绩,将查询以“亚洲球队,.qpr”,为文件名保存在“,D:,世界杯,查询”文件夹下。,4,创建查询,查找“世界杯”数据库中各大洲参加历次世界杯的队数各有多少。将查询以文件名“各大洲队数,.qpr”,保存在“,D:,世界杯,查询”文件夹下。,5,创建查询,统计“世界杯”数据库中各个球队的夺冠次数。将查询以文件名“夺冠次数,.qpr”,保存在“,D:,世界杯,查询”文件夹下。,2026/10/23,22,第四章 视图与查询,
展开阅读全文