《VFP课件——查询与视图.ppt》由会员分享,可在线阅读,更多相关《VFP课件——查询与视图.ppt(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学习要点学习要点1、查询向导和查询设计器的使用方法;2、单表查询3、查询设计器中各选项卡的功能和使用方法;4、本地视图和远程视图;5、视图向导和视图设计器的使用方法;5、使用视图。查询与视图查询与视图 4/21/20231Visual FoxPro 6.0程序设计查询与视图查询与视图 用查询向导设计查询用查询向导设计查询 用查询设计器设计查询用查询设计器设计查询 创建视图创建视图 数据库视图的操作数据库视图的操作 小小 结结 返回返回退出退出利用视图更新数据利用视图更新数据 4/21/20232Visual FoxPro 6.0程序设计用查询向导设计查询用查询向导设计查询设计单表查询设计单表查
2、询 返返 回回退退 出出4/21/20233Visual FoxPro 6.0程序设计查询查询 查询:是从指定的表或视图中提取满足条件的记录,然后按照想查询:是从指定的表或视图中提取满足条件的记录,然后按照想得到的输出类型定向输出查询结果。得到的输出类型定向输出查询结果。查询的结果是以扩展名查询的结果是以扩展名.QPR.QPR的文件存在磁盘上,是一种文本形式的文件存在磁盘上,是一种文本形式的文件。的文件。创建查询的方法:创建查询的方法:菜单或工具栏菜单或工具栏 CREATE QUERYCREATE QUERY4/21/20234Visual FoxPro 6.0程序设计设计单表查询设计单表查询
3、 查询向导可以引导用户快速设计一个查询。下面将示例使用查询向导设计一个简单的单表查询:从GXGLXT数据库的Student表中查询系部代号为“04”且是99级的所有学生的信息。操作过程如下:首先从“项目管理器”开始,选择【数据】卡片中的“查询”,然后单击【新建】按钮,则出现设计查询的方式选择对话框。单击4/21/20235Visual FoxPro 6.0程序设计 选择GXGLXT数据库中的Student表,并将该表中的所有字段添加到“选定字段”列表框中。单击查询向导字段选取4/21/20236Visual FoxPro 6.0程序设计从中选择Student.系部代号0在此输入值4取默认值从中
4、选择“包含”在此输入值98单击单击【预览】按钮可以显示查询结果。根据要求,设置条件如上图。其中,虽然表中没有年级字段,但可通过“学号”得到年级(学号的前二位为年级)。查询向导筛选记录4/21/20237Visual FoxPro 6.0程序设计选择排序字段单击【添加】选择排序方式调整排序顺序移动按钮单击查询向导记录排序4/21/20238Visual FoxPro 6.0程序设计查询向导限制记录限制查询结果中所包含的记录数说明:查询结果中所包含的记录数限制共有四种方式:1、“部分类型”中选择“所占记录百分比”,“数量”中选择“所有记录”,查询结果集中包含全部记录。2、“部分类型”中选择“所占记
5、录百分比”,“数量”中选择“部分值”,再在“微调框”中设置数值,查询结果集中包含指定数值百分数的记录。3、“部分类型”中选择“记录号”,“数量”中选择“所有记录”,查询结果集中包含全部记录。4、“部分类型”中选择“记录号”,“数量”中选择“部分值”,再在“微调框”中设置数值,查询结果集中包含指定数值的记录数。单击取默认值,查询结果集中包含全部记录4/21/20239Visual FoxPro 6.0程序设计查询向导完成将查询以文件的形式(.QPR)保存到一个指定的目录中。将查询保存到一个指定的目录中并运行该文件。利用查询向导设计的查询功能有限,可以使用查询设计器修改它。单击,可以查看查询结果集
6、中的全部数据打开帮助文件 取消所建立的查询 返回到向导的上一步结束向导,完成查询设计。单击4/21/202310Visual FoxPro 6.0程序设计保存设计的查询目录选择下拉列表框文件名输入文本框文件类型选择下位列表框在“文件名输入文本框”中输入“Stud_query”后,单击【保存】按钮,结束查询设计过程。在项目管理器中的“数据”选项中的查询项下产生了一个查询文件返回4/21/202311Visual FoxPro 6.0程序设计用查询设计器设计查询用查询设计器设计查询 确定各表间的联接关系确定各表间的联接关系 退退 出出选定查询字段选定查询字段 筛选记录筛选记录 查询结果排序查询结果
7、排序 建立分组查询建立分组查询 杂项的设置杂项的设置 定向输出查询结果定向输出查询结果 运行查询运行查询 返返 回回4/21/202312Visual FoxPro 6.0程序设计用查询设计器设计查询用查询设计器设计查询 前面学习了如何使用VFP中文版提供的查询向导快速的设计一个查询。但是在实际应用中,查询向导设计的查询往往不能满足需求。这时还可以采用查询设计器方便灵活的设计各种查询,也可以先用查询向导设计一个简单的查询,再在查询向导中打开并修改它。将上一节建立的查询,用“查询设计器”进行修改,使用之包含尽可能少的空栏。可以通过以下所提供的多种方法之一来打开查询设计器:从“项目管理器”启动查询
8、设计器 1、在“项目管理器”中选择“数据”选项卡,再选取“查询”项,再单击【新建】,进入查询设计方式选择对话框后单击【新建查询】,则启动“查询设计器”。2、在“项目管理器”中选择“数据”选项卡,从“查询”项中选择一个已存在的查询文件,再单击【修改】,也启动“查询设计器”。4/21/202313Visual FoxPro 6.0程序设计从【文件】菜单启动查询设计器选择系统菜单中的【文件】|【新建】命令,在“新建”对话框中选中“文件类型”下的“查询”单选项,再单击右边的【新建文件】按钮,也可启动“查询设计器”;使用CREATE QUERY命令也可启动“查询设计器”现采用新建方式启动“查询设计器”4
9、/21/202314Visual FoxPro 6.0程序设计查询设计器下部分的窗口中有几个选项卡,其含义简介如下:(1)“字段”:用来选定包含在查询结果中的字段;(2)“排序依据”:用来决定查询结果输出中记录或行的排列顺序;(3)“联接”:用来确定各数据表或视图之间的联接关系;(4)“筛选”:相当于命令SET FILTER TO,利用过滤的方法查找一个特定的数据子集;(5)“分组依据”:所谓分组就是将一组类似的记录压缩成一个结果记录,这样就可以完成基于一组的计算。要设计一个查询文件,首先必须明确查询的目的是什么,即想要得到哪些数据,并以什么方式存在;或者想要得到满足某些条件的特定记录,或者想
10、要知道某些记录的字段值组合成的表达式按某一方式输出。明确了输出的数据后,就可以开始设计查询了,一般要通过以下几个步骤进行:(1)启动查询设计器;(2)选择出现在查询结果中的字段;(3)设置选择条件来查找可给出所需结果的记录;(4)设置排序或分组选项来组织查询结果;(5)选择查询结果的输出类型:表、报表、浏览等;(5)运行查询。返回4/21/202315Visual FoxPro 6.0程序设计筛选记录筛选记录 选择表中符合条件的一部分记录而不是全部记录是查询的重要任务。此例要求从所有学生的信息中选出“学号”前四位为“9904”和“9804”的所有男生,可以利用查询设计器中的“筛选”选项卡。“筛
11、选”选项卡可确定用于选择记录的字段和比较准则,以及输入与该字段进行比较的示例值。选择筛选字段设置筛选条件 输入筛选实例设置条件逻辑是否区分大小写 在字段名下的下拉选择框中选择“Student.性别”,在“条件”下的下拉选择框中选择“=”,在“实例”下的文本框中输入.T.,则查询所有的男生。返回4/21/202316Visual FoxPro 6.0程序设计在“逻辑”下的下拉选择框中选择“AND”,然后再在字段名下的下拉选择框中选择“Student.学号”,在“条件”下的下拉选择框中选择“In”,在“实例”下的文本框中输入“9904,9804”(请注意中间的“,”是En状态下输入的)。查询结果排
12、序查询结果排序 排序决定了查询输出结果中记录或行的先后顺序,我们可以通过“排序依据”选项卡设置查询的排序次序,方法同在用查询向导设计查询介绍的一样,首先从“选定字段”框中选定要使用的字段返回4/21/202317Visual FoxPro 6.0程序设计并把它们移到“排序条件”框中,然后利用“排序选项”(从中选择升序或降序)来设置排序条件。本例中设置Student.学号,升序为排序依据。选择一个字段单击【添加】选定的字段列表 如果还需要添加用于排序的字段,可以重复以上的操作步骤。返回4/21/202318Visual FoxPro 6.0程序设计筛选条件练习对books表建立如下查询,查询结果
13、包括所有字段1、查询显示“计算机”类书籍,kind字段名显示为“类别”,查询名为1.qpr2、查询书名中有“设计”2字的书籍,查询名为2.qpr3、查询书名以“计算机”开始的书籍,查询名为3.qpr4、查询显示99年以后书籍,查询名为4.qpr5、查询显示99年6月1日后出版的书籍,查询名为5.qpr6、查询已借出的书籍,查询名为6.qpr7、查询印数大于800并且价格大于30的书籍,查询名为7.qprv建查询8.qpr,查询achievement.dbf表中系别为12的记录,no字段第3、4位为系别。4/21/202319Visual FoxPro 6.0程序设计建立分组查询建立分组查询 所
14、谓分组就是将一组类似的记录压缩成一个结果记录,这样就可完成基于一组记录的计算。分组在与某些累计功能联合使用时效果最好,例如SUM(),COUNT(),AVG()等。如果不想压缩结果记录,则不必设置它。在此例中不设分组查询。如果想求各门课程的平均成绩,可以用“课程名”进行分类查询。选择一个字段单击【添加】选定的字段列表4/21/202320Visual FoxPro 6.0程序设计操作步骤如下:(1)在查询设计器的“字段”选项卡中,单击“函数和表达式”右边的按钮,出现“表达式”生成器;(2)在“数学”下拉式列表框中双击AVG(expN),在“来源于表”下拉框中选择Grade表,在“字段”列表框中
15、双击“课程成绩”,单击【确定】。即在“函数和表达式”框中自动生成了“AVG(Grade.课程成绩)”这个表达式,用以计算Grade表中课程成绩的平均值。(3)单击“添加”按钮,该表达式被添加到“选定字段”列表框中。将来查询结果中就会有一列数据求平均值;(4)单击“分组依据”选项卡,进入“分组依据”窗口,在“可用字段”中选择Grade.课程名称,再单击【添加】按钮,该字段即成为分组字段。运行查询后的结果返回4/21/202321Visual FoxPro 6.0程序设计分组查询练习v建查询9.qpr,查询结果为achievement.dbf表中各学生的学号、grade总和,字段名显示为“学号”、
16、“总成绩”4/21/202322Visual FoxPro 6.0程序设计杂项的设置杂项的设置 经过以上五个步骤,基本上已生成了一个比较全面的查询。接下来还可以通过查询设计器中的“杂项”选项卡做最后处理。单击“杂项”选项卡,可以看到其间包括“无重复记录”、“交叉数据表”、“全部”、“百分比”这四个复选框和一个微调按钮。选中“无重复记录”复选框表示对于查询结果如果存在重复记录,则只取相同记录中的一个。选中此项,在查询生成器的SQL语句中会自动加上限定词Distinct,表示去掉重复记录。4/21/202323Visual FoxPro 6.0程序设计定向输出查询结果定向输出查询结果 查询检索的信
17、息,可以输出到不同的目的地,以用作不同的用途。如果没有选定输出的目的地,查询结果将显示在浏览窗口中。查询输出目的可以是浏览窗口、临时表、表、图形、屏幕、报表、标签等。选择结果的去向方法如下:单击“查询设计器工具”中的【查询去向】按钮,或者从【查询】菜单中选择【查询去向】,可看到如图所示的“查询去向”对话框。对话框中的按钮含义如下:4/21/202324Visual FoxPro 6.0程序设计 【浏览】:在浏览窗口中显示查询结果,这是查询缺省设置;【临时表】:将查询结果存储在一个临时只读表中。多次查询的结果可放在不同的表内。该表可用于浏览数据,制作报表等,直到用户关闭它们;【表】:将查询的结果
18、保存在一个命名的表(.DBF)中,此时查询的结果是真正的存放到磁盘上的,多次查询的结果可放在不同的表内;【图形】:使查询结果可用于Microsoft Graph(包含在VFP5中的一个独立的应用程序)中制作图表;【屏幕】:在VFP主窗口或当前活动输出窗口中显示查询结果;【报表】:将输出送到一个报表文件(.FRX)中;【标签】:将输出送到一个标签文件(.LBX)中。选定一个去向,按一定的步骤设置一些属性,然后单击【确定】按钮,系统就将按意图放置查询结果。假设本例将查询结果保存到临时表中,取临时表名为“查询1”。返回4/21/202325Visual FoxPro 6.0程序设计运行查询运行查询
19、在完成了查询的设计工作并指定了结果输出去向后,可通过以下五种方式之一运行查询:在查询设计器区域内单击右键,在弹出菜单中选择“运行查询”;在“项目管理器”中选定查询的名称,然后选定“运行”按钮;在“查询”菜单中选择“运行查询”:在命令窗口中键入DO 查询名.qpr。单击系统常用菜单上的“运行”按钮。本例中按前述步骤设置后,单击系统菜单上的“运行”按钮运行查询,并将查询结果保存到临时表“查询1”中,然后再在浏览窗口中单击【显示】|【浏览“查询1”】,结果如右表。返回4/21/202326Visual FoxPro 6.0程序设计创建视图创建视图 创建本地视图创建本地视图 用已有的用已有的SQL S
20、ELECT语句创建视图语句创建视图 返回返回退出退出4/21/202327Visual FoxPro 6.0程序设计视图视图 n是从一个或多个数据库表中导出的是从一个或多个数据库表中导出的“表表”n视图中的数据是存储在原来的数据库表中视图中的数据是存储在原来的数据库表中n视图是一个视图是一个“虚表虚表”n视图依赖于某一数据库而存在视图依赖于某一数据库而存在n只有打开与视图相关的数据库才能创建和使用视图只有打开与视图相关的数据库才能创建和使用视图n视图兼有视图兼有“表表”和和“查询查询”的特点的特点n视图类型:本地视图、远程视图视图类型:本地视图、远程视图n n创建视图的方法:创建视图的方法:菜
21、单或工具栏菜单或工具栏 CREATE VIEWCREATE VIEW命令命令 使用使用SQLSQL命令命令 CREATE VIEW CREATE VIEW AS AS n n与查询的区别:与查询的区别:视图设计器中有视图设计器中有“更新条件更新条件”选项卡选项卡视图设计器中没有视图设计器中没有“查询去向查询去向”问题问题4/21/202328Visual FoxPro 6.0程序设计创建本地视图创建本地视图 视图可以通过向导和设计器两种方法来创建。1 1、利用向导创建本地视图利用向导创建本地视图用本地视图向导创建本地视图,可采取以下方式:方式一:(1)在主窗口下打开【工具】菜单,选择【向导】菜
22、单命令。(2)再选择【全部】菜单,出现【向导选取】对话框,如图 单击滑动按钮选择“本地视图向导”单击【确定】进入到“本地视图向导步骤1字段选取”4/21/202329Visual FoxPro 6.0程序设计方式二:(1)在主窗口下打开【文件】菜单,选择【新建】菜单命令。(2)选择“视图”,再单击【向导】,将弹出【本地视图向导】对话框。(3)然后按照向导屏幕上的指示操作。方式三:(1)在项目管理器中选定数据库。(2)选定本地视图,单击【新建】按钮。(3)单击【视图向导】按钮(4)然后按照向导屏幕上的指示操作。方式四:(1)打开数据库设计器,打开【数据库】菜单。(2)选择【新建本地视图】,再单击
23、【视图向导】按钮。(3)然后按照向导屏幕上的指示操作。4/21/202330Visual FoxPro 6.0程序设计本地视图向导:步骤1字段选取说明:按照上述几种方式,可以快速建立本地视图,但要强调的是,在项目管理器中创建或使用视图时,项目管理器会自动打开数据库。如果要使用项目以外的表或视图,则必须先打开数据库或事先确认数据库在作用范围内。本地视图向导对话框如图,可以看到,创建视图大体要经过以下步骤:(1)字段选取。选择数据库,数据库中的表和表中的字段。如果当前已经打开了一个数据库,则第一步的对话框中显示的4/21/202331Visual FoxPro 6.0程序设计是创建当前数据库的视图
24、,也可以选择其它的数据库。(2)关联表。建立数据库中表与表之间的关系。(3)包含记录。指定包含表中的全部记录还是仅匹配的记录。(4)筛选记录。选定符合条件的记录。(5)排序记录。为选定的记录按照某一字段进行排序。(5)限定记录。定制显示一定数量的记录。(7)完成视图。选择保存视图后浏览还是修改。例:创建包含Grade表和Courses表的本地视图“视图1”。选择表Grade单击全部添加按钮选择Courses表单击单个添加按钮,添加课程名、学时数、学分数4/21/202332Visual FoxPro 6.0程序设计与设计多表查询不相同的部分更新条件视图的最大特点在于能用视图更新数据,这也是建立
25、视图与建立查询的主要区别,也是视图的重点所在。视图设计器中的“更新条件”选项卡可以用来设置允许视图更新表字段的条件。4/21/202333Visual FoxPro 6.0程序设计“更新条件”选项卡选项包括如下内容:“表”:指定视图所使用的哪些表可以修改。选择这个下拉列表框中的选项,可以确定哪些表中的字段可以在“字段名”列表框中,以便设置更新条件。此列表中所显示的表都包含了“字段”选项卡“选定字段”列表中的字段。【重置关键字】:这个按钮作用是从每个表中选择主关键字字段作为视图的关键字字段。每个主关键字字段是在“字段名”列表中的、在钥匙符号下面打一个对钩的字段,关键字字段可4/21/202334
26、Visual FoxPro 6.0程序设计可用来使视图中的修改与表中的原始记录相匹配。【全部更新】:可以从字段名文本框中看到一些字段前的铅笔符号下打了一个对钩,这表明这些字段可以更新。在这个按钮中可以选择除了关键字字段以外的所有字段来进行更新,并在“字段名”列表的铅笔符号下打一个对钩。“发送SQL更新”:指定是否将视图记录中的修改传送给原始表。如果选择了这个复选框,将把在视图中对记录字段的修改返回到源表中。“字段名”列表框:显示了从“表”列表框中所选的表中的字段、并用来输出这些字段,不过这些字段都是可以更新的。在字段文本框中共有下列3种方式字段:关键字段(使用钥匙符号作标记),指定该字段是否为
27、关键字段。可更新字段(使用铅笔符号作标记),指定该字段是否为可更新字段。字段名,显示可标志为关键字字段或可更新字段的输出字段名。4/21/202335Visual FoxPro 6.0程序设计 “SQL WHERE 子句包括”:“关键字段”:如果在原始表中有一个关键字字段被改变,设置WHERE子句来检测冲突,对于由另一用户对表中原始记录的其他字段所做修改不进行比较。“关键字和可更新字段”:设置WHERE子句来检测由某一用户修改了任何可更新的字段的冲突。“关键字和已修改字段”:如果从视图首次检索(默认)以后,关键字字段或原始表记录的已修改字段中,某个字段做过修改,设置WHERE子句来检测冲突。“
28、关键字段和时间戳”:如果自原始表记录的时间戳首次检索以后,它被修改过,设置WHERE子句来检测冲突。只有当远程表有时间戳列时,此选项才有效。“使用更新”:此单选按钮组用于指定字段如何在后端服务器上进行更新。“SQL DELETE然后INSERT”:指定先删除原始表记录后,再创建一个新的在视图中被修改的记录。“SQL UPDATE”:指定用视图字段中的内容来修改原始表中的字段。返回4/21/202336Visual FoxPro 6.0程序设计用已有的用已有的SQL SELECT语句创建视图语句创建视图 同查询一样,可用SELECTSQL语言创建视图。若用SELECTSQL建立视图,则可用下列S
29、ELECTSQL语句(只要求看懂简只要求看懂简只要求看懂简只要求看懂简单的单的单的单的SELECTSQLSELECTSQL语句语句语句语句):格式:SELECT SELECT ALL|DISTINCT TOP ALL|DISTINCT TOP nExprnExpr PERCENT PERCENT AliasAlias.Select_ItemSelect_Item AS AS Column_ NameColumn_ Name,AliasAlias.Select_ItemSelect_Item AS AS Column_NameColumn_Name.FROMFROM FORCE FORCE Da
30、tabaseNameDatabaseName!Table AS!Table AS Local_AliasLocal_Alias INNER|LEFT OUTER|RIGHT OUTER|FULL OUTERINNER|LEFT OUTER|RIGHT OUTER|FULL OUTER JOINDatabaseNameJOINDatabaseName!Table AS!Table AS Local_AliasLocal_Alias ONON JoinJoinConditionCondition INTOINTO DestinationDestination|TO FILETO FILE File
31、NameFileName ADDITIVE|TO PRINTER ADDITIVE|TO PRINTER PROMPT|TO SCREEN PREFERENCE PROMPT|TO SCREEN PREFERENCE PreferenceNamePreferenceName NOCONSOLE NOCONSOLE PLAIN NOWAITPLAIN NOWAIT WHERE WHERE JoinConditionJoinCondition.AND.AND.JoinConditionJoinCondition.AND.|.OR.AND.|.OR.FilterConditionFilterCond
32、ition.AND.|.OR.AND.|.OR.FilterConditionFilterCondition.GROUP BYGROUP BY GroupColumnGroupColumn,GroupColumnGroupColumn.HAVING .HAVING FilterConditionFilterCondition UNION ALL UNION ALL SELECTCommandSELECTCommand ORDER BYORDER BY Order_ItemOrder_Item ASC|DESC,ASC|DESC,Order_ItemOrder_Item ASC|DESC.ASC
33、|DESC.4/21/202337Visual FoxPro 6.0程序设计功能:功能:从一个或多个表中检索数据。参数描述:参数描述:SELECT:用SELECT子句指定在查询结果中包含的字段、常量和表达式。ALL:在查询结果中包含所有的行(包括重复值)。它是系统的默认设置。DISTINCT:在查询结果中删除重复行。TOP nExpr PERCENT:在符合查询条件的所有记录中,选取指定数量或百分比的记录。TOP子句必须与ORDER BY子句同时使用。ORDER BY子句指定按哪个字段排序,TOP子句根据此排序选定开始的nExp个 或nExp%的记录。可以指定选取132757条记录。Alias
34、.:限定匹配项的名称。Select-Item指定的每一项在查询结果中都生成一列,如果多个项具有相同的名称,则应在这些项前加上表的别名和一个句点号,以防止出现重复的列。Select_Item:指定包含在查询中的一个项。一个项可以是:4/21/202338Visual FoxPro 6.0程序设计FROM子句中所包含的表中的字段名称。一个常量,查询结果中的每一行都出现这个常量值。一个表达式,可以是用户自定义函数名。AS Column_Name:指定查询结果中的列标题。当Select-Item是一个表达式或一个字段函数时,如果要给此列取一个有意义的名称可用这个子句。它可以是一个表达式。FROM:列出
35、所有从中检索数据的表。如果没有打开表,VFP会显示“打开”对话框以便指定文件位置,表打开以后直到查询结束才关闭。FORCE:如果包含了此子句,VFP在建立查询时会严格按照在FROM子句中申明的顺序建立联接,否则会试图对查询进行优化。避免优化过程,可能会加快查询执行的速度。DatabaseName!:当包含表的数据库不是当前的数据库时,此子句指定数据库的名称。如果数据库不是当前数据库,就必须指定包含表的数据库名称,注意其后应加上“!”号。Table AS Local_Alias:为Table中的表指定一个临时名称。4/21/202339Visual FoxPro 6.0程序设计如果指定了本地别名
36、,那么在整个Select语句中都必须用这个别名代替表名。INNER JOIN:只有在其它表中包含对应记录(一个或多个)的记录才出现在查询结果中。LEFT OUTER JOIN:在查询结果中包含JOIN左侧表中的所有记录,以及右侧表中匹配的记录。这是左联接。RIGHT OUTER JOIN:在查询结果中包含JOIN右侧表中的所有记录,以及左侧表中匹配的记录。这是右联接。FULL OUTER JOIN:在查询结果中包含JOIN两侧表中的所有记录,这是完全联接。DatabaseName!Table AS Local_Alias:指定和当前表建立联接的表所在的数据库及表名或本地表别名。ON JoinC
37、ondition:指定联接条件。INTO Destination:指定在何处保存查询结果。如果在同一个查询中同时包含了INTO子句和TO子句,则TO子句不起作用。如果没有包含INTO子句,查询结果显示在“浏览”窗口中。4/21/202340Visual FoxPro 6.0程序设计Destination可以是下列子句之一:ARRAY ArrayName:将查询结果保存到数组中。如果查询结果中不包含任何记录,则不创建这个数组。CURSOR CursorName:将查询结果保存到临时表中。如果指定了一个已打开表的名称,则VFP产生错误信息。执行完SELECT语句后,临时表仍然保持打开、活动,但只读
38、。一旦关闭临时表,则自动删除它。DBF TableName|TABLE TableName:将查询结果保存到一个表中,如果指定的表已经打开,并且SET SAFETY设置为OFF,则VFP在不给出任何警告信息的情况下改写该表。执行完SELECT语句后,临时表仍然保持打开活动状态。TO FILE FileName ADDITIVE|TO PRINTER PROMPT|TO SCREEN:如果命令中包含了TO子句,但没有包括INTO子句,则查询结果定向输出到名为FileName的ASCII码文件、打印机或主窗口。包含ADDITIVE子句使查询结果追加到所指定的文本文件的内容后面。4/21/20234
39、1Visual FoxPro 6.0程序设计PREFERENCE PreferenceName:如果查询结果送往浏览窗口,就可以使用该子句保存浏览窗口的属性和选项以备后用。NOCONSOLE:不显示送到打印机、文件、或VFP主窗口的查询结果。PLAIN:防止列标题出现在显示的查询结果中。NOWAIT:打开浏览窗口并将结果输出到这个窗口后继续程序的执行。WHERE:告诉VFP只在查询结果中包含一定的记录。从多表检索中查找数据时需要用到该子句。JoinCondition:指定一个字段,该字段联接FROM子句中的表。如果查询中包括不止一个表就应该为第一个表后的每一个表指定联接条件。联接多个查询条件必
40、须使用.AND.。每个联接都是这样的形式:FieldName1 Comparison FieldName2其中:FieldName1是一个表的字段名,FieldName2是另一个表的字段名。Comparison是下列的某一操作符:4/21/202342Visual FoxPro 6.0程序设计=、=、LIKE、,!=,#、=、=FilterCondition:指定包含在查询结果中的记录必须满足条件。筛选条件的数目没有限制,只要将它们用.AND.或.OR.操作符连接起来即可。也可以使用操作符.NOT.对逻辑表达式取反,或使用EMPTY()函数检查字段是否为空等。GROUP BY GroupCol
41、umn:按列的值对查询结果进行分组。GroupColumn 可以是常规的表字段名,也可以是一个包含SQL字段函数的字段名,还可以是一个数值表达式指定查询结果表中的列位置。HAVING FilterCondition:指定包含在查询结果中的组必须满足的条件。它应和GROUP BY GroupColumn一起使用。UNION ALL SELECTCommand:把一个SELECT语句的最后查询结果同另一个SELECT语句最后的查询结果组合起来。ALL防止UNION删除组合结果中的重复行。ORDER BY Order_Item:根据列的数据对查询结果进行排序。每个Order_Item都必须对应查询结
42、果中的一列。4/21/202343Visual FoxPro 6.0程序设计用SELECTSQL命令完成上节的设计任务:SELECT Department.系部名称,Classzc.班级名称,Student.学号,;Student.姓名,Course.课程名,Grade.课程成绩;FROM gxglxt!department INNER JOIN gxglxt!classzc;INNER JOIN gxglxt!student;INNER JOIN gxglxt!grade;INNER JOIN gxglxt!course;ON Grade.课程代号=Course.课程代号;ON Studen
43、t.学号=Grade.学号;ON Classzc.班级代号=Student.班级代号;ON Department.系部代号=Classzc.系部代号;WHERE Classzc.系部代号=04;.AND.Grade.开课学期=第1学期;ORDER BY Student.学号;INTO CURSOR 视图14/21/202344Visual FoxPro 6.0程序设计 运行该SELECT语句后,选择【显示】|【浏览“视图1”】屏幕显示如图:返回4/21/202345Visual FoxPro 6.0程序设计数据库视图的操作数据库视图的操作 使用视图使用视图 退退 出出显示视图结构显示视图结构
44、重新命名视图重新命名视图 删除视图删除视图 返返 回回4/21/202346Visual FoxPro 6.0程序设计使用视图使用视图 建立视图后,不但可以用它来显示和更新数据,而且还可以通过调整它的属性来提高性能。处理视图类似处理表,可以:使用USE命令并指定视图名来打开一个视图。使用USE命令关闭视图。在【浏览】窗口中显示视图。在【查看】窗口中显示已打开的视图的别名。将视图作为数据源,供表单或表格控件使用。若要使用一个视图,可采取如下方法:在项目管理器中先选择一个数据库,再选择视图名,然后单击【浏览】按钮,在【浏览】窗口中显示视图。使用编程的方式访问视图。下面的代码在【浏览】窗口中显示存放
45、在c:gxglxt目录下gxglxt数据库中的视图1:open database c:gxglxtgxglxtuse 视图14/21/202347Visual FoxPro 6.0程序设计browse 在使用一个视图时,视图将作为临时表在自己的工作区打开。如果此视图基于本地表,则VFP5会在另一个工作区同时打开基表。可以通过选择系统菜单上的【窗口】|【数据工作期】打开“数据工作期”窗口。但有一个例外,如果视图是基于远程表,则基表将不在工作区中打开。而只在【查看】窗口中显示远程视图的名称。返回4/21/202348Visual FoxPro 6.0程序设计有时用户只想了解视图的结构,而不关心视图
46、中的数据。这样可以使用带NODATA子句的USE命令来快速显示视图的结构。例如:open database c:gxglxtgxglxtuse 视图1 nodata in 0Select 视图1browse 通过运行上面的命令语句,将在【浏览】窗口中看到没有记录的视图1。因为使用NODATA子句时,VFP5为视图1创建一个永远返回.F.值的WHERE子句,而数据源上没有记录匹配WHERE子句的条件,所以没有记录被选择。显示视图结构显示视图结构返回4/21/202349Visual FoxPro 6.0程序设计重新命名视图重新命名视图 建立一个视图以后,还可以为其重新命名视图,进行视图的重新命名
47、,可以使用项目管理器或用RENAME VIEW命令。在项目管理器中先选择一数据库,再右击要重新命名的视图。单击【重命名】按钮,出现一对话框后即可为视图输入新的名称。使用RENAME VIEW命令。例如,下面的代码将视图2重新命名为视图1:rename view 视图1to 视图2说明:在重新命名视图之前,必须打开包含要命名视图的数据库。删除视图删除视图 视图同表一样也是可以删除的,删除视图可以使用项目管理器或使用DELETE VIEW命令。在项目管理器中选择一个数据库,再选择要删除的视图,然后用鼠标右击,单击【移去】按钮,即可删除所选的视图。返回4/21/202350Visual FoxPro
48、 6.0程序设计使用DELETE VIEW命令。例如,如果要删除数据库xsglxt中的视图2,可以键入以下的命令语句:delete view视图2说明:在删除视图之前,必须打开包含要删除视图的数据库并设置其为当前数据库。返回4/21/202351Visual FoxPro 6.0程序设计利用视图更新数据利用视图更新数据 在项目管理器中选择“视图3”,单击【修改】,在视图设计器中选择“字段”选项卡,如图。返回4/21/202352Visual FoxPro 6.0程序设计在上图中,请注意Grade表中的字段。选择“更新条件”选项卡,进行如图设置:设定关键字段和可修改字段。注意:因为表Grade中
49、每个字段的值都不唯一,所以要用组合关键字(学号+课程代号+开课学期)存档并显示结果。选【文件】|【保存】或从工具栏中单击保存按钮保存此视图。选取菜单【查询】|【运行查询】查看结果,为视图参数输入“04”(带定界符)、“第1学期”后的运行结果如图:4/21/202353Visual FoxPro 6.0程序设计修改视图数据。既然我们已经为视图3视图文件设定关键字段与可更新字段,也就是设定了视图文件中哪些字段可以经过修改而自动更正原始数据文件内容,现在就来验证这些设定是否生效。将视图中最后一条记录的“课程成绩”由62改为99。4/21/202354Visual FoxPro 6.0程序设计99在视
50、图中更改此处数据更改完毕后操作光标离开这条记录,观察Grade表中相关记录变化的情形。从结果可以看出:Grade表中的学号和课程成绩已随着视图文件的更改而自动修正了。表示我们设定的可更新字段生效。99返回4/21/202355Visual FoxPro 6.0程序设计小小 结结1、查询和视图是VFP的重要组成部分,是非常相似的一种查询数据库中数据的方法。2、查询是以磁盘文件形式存放的程序,其扩展名为.QPR,它通过DO命令来执行。3、视图是一种定制的虚拟表,是依附于基表上的寄生表。4、建立查询分为单表查询、多表查询和交叉表查询三种。5、可以通过菜单、命令、项目管理器建立查询,通过菜单还可以使用