第7章查询及视图7.1查询使用SQLSELECT语句可以方便、迅速地查找大型数据库,且查找结果可以保存,但SQLSELECT语句比较复杂。在VisualFoxpro6.0中,还可以用查询设计器或查询向导生成查询程序,然后执行查询程序得到所需要的查找结果。7.1.1基本概念1、查询查询(指查询操作)是指从指定的表或视图中查找满足条件的记录,并根据需要的输出类型定向输出查找结果。2、查询程序查询程序是指保存在存储介质上的扩展名为.qpr的文本文件,文件的内容是一个SQLSELECT语句。在VisualFoxpro6.O中,为了叙述简便,通常把查询程序简称为查询。因此,查询实质上是一个预先定义好的SQLSELECT语句文件。7.1.2查询的建立1、查询建立方法查询的建立方法有以下几种:(1)利用查询设计器建立查询;(2)利用查询向导建立查询;(3)直接利用SQLSELECT语句建立查询。第三种方法相对比较复杂,没有前两种方法直观,因此通常利用查询设计器或查询向导来建立查询。2、查询建立步骤(1)利用查询设计器或查询向导新建查询;(2)添加数据源;(3)设置查询条件;(4)设置排序或分组选项来组织查询;(5)选择查询结果输出类型:浏览、表、报表和标签等;(6)保存查询。3、查询建立(1)利用查询设计器建立查询①启动查询设计器启动查询设计器有以下几种方法:》从“文件”菜单中选择“新建”,在弹出的对话框中选择“查询”,再选择“新建文件”。》单击常用工具栏中的“新建”按钮,在弹出的对话框中选择“查询”,再选择“新建文件”《。》在命令窗口中输入“CREATEQUERY”命令。按以上任意一种方法操作后,会出现“添加表或视图”对话框,提示是否从当前数据库中选择表或视图
第 7 章 查询及视图 7.1 查 询 使用 SQL SELECT 语句可以方便、迅速地查找大型数据库,且查找结果可以保存,但 SQL SELECT 语句比较复杂。在 Visual Foxpro 6.0 中,还可以用查询设计器或查询向导生成查 询程序,然后执行查询程序得到所需要的查找结果。 7.1.1 基本概念 1、查询 查询(指查询操作)是指从指定的表或视图中查找满足条件的记录,并根据需要的输 出类型定向输出查找结果。 2、查询程序 查询程序是指保存在存储介质上的扩展名为.qpr 的文本文件,文件的内容是一个 SQL SELECT 语句。在 Visual Foxpro 6.0 中,为了叙述简便,通常把查询程序简称为查询。因 此,查询实质上是一个预先定义好的 SQL SELECT 语句文件。 7.1.2 查询的建立 1、查询建立方法 查询的建立方法有以下几种: (1) 利用查询设计器建立查询; (2) 利用查询向导建立查询; (3) 直接利用 SQL SELECT 语句建立查询。 第三种方法相对比较复杂,没有前两种方法直观,因此通常利用查询设计器或查询向导 来建立查询。 2、查询建立步骤 (1) 利用查询设计器或查询向导新建查询; (2) 添加数据源; (3) 设置查询条件; (4) 设置排序或分组选项来组织查询; (5) 选择查询结果输出类型:浏览、表、报表和标签等; (6) 保存查询。 3、查询建立 (1) 利用查询设计器建立查询 ① 启动查询设计器 启动查询设计器有以下几种方法: ➢ 从“文件”菜单中选择“新建”,在弹出的对话框中选择“查询”,再选择“新建 文件” 。 ➢ 单击常用工具栏中的“新建”按钮,在弹出的对话框中选择“查询”,再选择“新 建文件” 。 ➢ 在命令窗口中输入“CREATE QUERY”命令。 按以上任意一种方法操作后,会出现“添加表或视图”对话框,提示是否从当前数据库 中选择表或视图
在“添加表或视图”对话框中,将当前数据库中所需要的表或视图添加到查询中。若单击“其他”按钮,会出现“打开”对话框,通过这个对话框,可以将自由表或其他数据库中的表或视图添加到查询中。添加要查询的表或视图后,会出现带有“查询设计器”工具栏的“查询设计器”窗口。要打开“查询设计器”工具栏,可选择“显示”菜单下的“工具栏”命令,在弹出的“工具栏”对话框中选中“查询设计器”即可。②选择查询字段单击“字段”选项卡,然后选择并添加查询所需字段,确定查询结果输出的字段。③设置联接条件及联接类型单击“联接”选项卡,然后设置新的联接条件及联接类型(即表中记录的匹配方式)。双击两表间的联线,会出现“连接条件”窗口,通过该窗口可以更改已有的联接条件及联接类型。④设置筛选条件单击“筛选”选项卡,会出现如下图所示的对话框,通过该对话框可以设置查询的筛选条件,从而达到查找所需记录的目的。宇段联接筛选排序依据分组依据杂项字段名香条件大小写遥辑实例:区360无e总分插入移去I“字段名”下拉列表框用来选择筛选条件的字段,如“xscj.总分”A“条件”下拉列表框用来选择比较运算符,如“>=”I“否”按钮若被选中,则表示条件的否定。I“实例”文本框用来输入比较的数值,如“360”I“大小写”按钮若被选中,则比较时,不区分大小写。“逻辑”下拉列表框用来选择两个条件之间的逻辑关系,若只有一个条件,则选择“无”(默认)。注意:用于筛选条件的字段不能是“通用型字段”或“备注型字段”③设置排序依据单击“排序依据”选项卡,会出现如下图所示的对话框,通过该对话框可以设置查询的排序依据,使得记录按照一定的顺序输出,如按总分从高到低排序。宇段联接满选【排序依据分继依据杂项选定宇段()排序条件(0)区scj.学号+x总分添加)Xscj.高等数学Xsej.英语(移去他)ej.计算机基础xsej.马排序选项总法升序)Ksda学号降序@)Xsda姓名Xsda性别--
在“添加表或视图”对话框中,将当前数据库中所需要的表或视图添加到查询中。 若单击“其他”按钮,会出现“打开”对话框,通过这个对话框,可以将自由表或其 他数据库中的表或视图添加到查询中。 添加要查询的表或视图后,会出现带有“查询设计器”工具栏的“查询设计器”窗口。 要打开“查询设计器”工具栏,可选择“显示”菜单下的“工具栏”命令,在弹出的“工具 栏”对话框中选中“查询设计器”即可。 ② 选择查询字段 单击“字段”选项卡,然后选择并添加查询所需字段,确定查询结果输出的字段。 ③ 设置联接条件及联接类型 单击“联接”选项卡,然后设置新的联接条件及联接类型(即表中记录的匹配方式)。 双击两表间的联线,会出现“连接条件”窗口,通过该窗口可以更改已有的联接条件及联接 类型。 ④ 设置筛选条件 单击“筛选”选项卡,会出现如下图所示的对话框,通过该对话框可以设置查询的筛选 条件,从而达到查找所需记录的目的。 ➢ “字段名”下拉列表框用来选择筛选条件的字段,如“xscj.总分” 。 ➢ “条件”下拉列表框用来选择比较运算符,如“>=” 。 ➢ “否”按钮若被选中,则表示条件的否定。 ➢ “实例”文本框用来输入比较的数值,如“360” 。 ➢ “大小写”按钮若被选中,则比较时,不区分大小写。 ➢ “逻辑”下拉列表框用来选择两个条件之间的逻辑关系,若只有一个条 件,则选 择“无”(默认)。 注意:用于筛选条件的字段不能是“通用型字段”或“备注型字段” 。 ⑤ 设置排序依据 单击“排序依据”选项卡,会出现如下图所示的对话框,通过该对话框可以设置查询的 排序依据,使得记录按照一定的顺序输出,如按总分从高到低排序
?设置分组依据单击“分组依据”选项卡,会出现如下图所示的对话框,通过该对话框可以设置查询的分组依据,使得查询结果分组输出,如按性别分组。字段联接满选排序依菇分组你据杂项可用字段()分组字段(G)小硅别Ssei.计算机基码-净加大零去吧)区sde学号三sd.出生日期4满克条件?设置查询去向在查询建立状态,选择“查询”菜单中的“查询去向”命令,或在“查询设计器”顶部窗格中单击鼠标右键,在弹出的快捷菜单中选择“输出设置”命令,或单击“查询设计器”工具栏中的“查询去向”工具,均会出现“查询去向”对话框,通过该对话框可以设置查询结果的去向。③保存查询设置完查询去向后,从“文件”菜单中选择“保存”命令,或单击常用工具栏中的“保存”按钮,均可以打开“另存为”对话框,在“保存文档为”文本框中输入需要保存的查询文件的文件名,并单击“保存”按钮。【例7-1】利用查询设计器建立一个查询chaxun.qpr,数据源为表xscj.dbf和xsda.dbf。查询的功能是查找总分大于或等于255分的学生的信息,要求查询结果包含学号、姓名、性别、出生日期、是否团员、籍贯、高等数学、英语、计算机基础、马哲和总分字段,查询结果按总分从高到低排序,查询结果保存为表chaxunrst.dbf。操作步骤如下:①新建查询,打开查询设计器:从“文件”菜单中选择“新建”,在弹出的对话框中选择“查询”,再选择“新建文件”②添加数据源:在“打开”对话框中选择表xscj.dbf,单击“添加”按钮,然后在“添加表或视图”对话框中单击“其他”按钮,在弹出的“打开”对话框中选择表xsda.dbf,单击“添加”按钮。③建立联接:建立相应的联接,关闭“添加表或视图”对话框。④选择查询字段:单击“字段”选项卡,使其成为当前选项卡。然后,在“可用字段”下拉列表框中选择xsda.学号字段,并单击“添加”按钮,这样xsda.学号字段就添加到“选定字段”下拉列表框中了。用同样的方法依次添加xsda.姓名、xsda.性别、xsda.出生日期、xsda.是否团员、xsda.籍贯、xscj.高等数学、xscj.英语、xscj.计算机基础、xscj.马哲和xScj.总分字段到“选定字段”下拉列表框中。在添加字段的时候,要注意字段的先后顺序。③设置筛选条件:单击“筛选”选项卡,使其成为当前选项卡。然后在“字段名”下拉列表框中选择xScj.总分字段,在“条件”下拉列表框中选择“>=”,在“实例”文本框输入255。③设置排序依据:单击“排序依据”选项卡,使其成为当前选项卡。然后在“选定字段”下拉列表框中选择xScj.总分字段,在“排序选项”单选框中选择“降序”,再单击“添加”按钮。设置查询去向:在“查询设计器”顶部窗格中单击鼠标右键,在弹出的快捷菜单中
⑥ 设置分组依据 单击“分组依据”选项卡,会出现如下图所示的对话框,通过该对话框可以设置查询的 分组依据,使得查询结果分组输出,如按性别分组。 ⑦ 设置查询去向 在查询建立状态,选择“查询”菜单中的“查询去向”命令,或在“查询设计器”顶部 窗格中单击鼠标右键,在弹出的快捷菜单中选择“输出设置”命令,或单击“查询设计器” 工具栏中的“查询去向”工具,均会出现“查询去向”对话框,通过该对话框可以设置查询 结果的去向。 ⑧ 保存查询 设置完查询去向后,从“文件”菜单中选择“保存”命令,或单击常用工具栏中的“保 存”按钮,均可以打开“另存为”对话框,在“保存文档为”文本框中输入需要保存的查询 文件的文件名,并单击“保存”按钮。 【例 7-1】利用查询设计器建立一个查询 chaxun.qpr,数据源为表 xscj.dbf 和 xsda.dbf。查询的功能是查找总分大于或等于 255 分的学生的信息,要求查询结果包含学号、 姓名、性别、出生日期、是否团员、籍贯、高等数学、英语、计算机基础、马哲和总分字段, 查询结果按总分从高到低排序,查询结果保存为表 chaxunrst.dbf。 操作步骤如下: ① 新建查询,打开查询设计器:从“文件”菜单中选择“新建”,在弹出的对话框中 选择“查询”,再选择“新建文件” 。 ② 添加数据源:在“打开”对话框中选择表 xscj.dbf,单击“添加”按钮,然后在 “添加表或视图”对话框中单击“其他”按钮,在弹出的“打开”对话框中选择表 xsda.dbf, 单击“添加”按钮。 ③ 建立联接:建立相应的联接,关闭“添加表或视图”对话框。 ④ 选择查询字段:单击“字段”选项卡,使其成为当前选项卡。然后,在“可用字段” 下拉列表框中选择 xsda.学号字段,并单击“添加”按钮,这样 xsda.学号字段就添加到“选 定字段”下拉列表框中了。用同样的方法依次添加 xsda.姓名、xsda.性别、xsda.出生日期、 xsda.是否团员、xsda.籍贯、xscj.高等数学、xscj.英语、xscj.计算机基础、xscj.马哲和 xscj.总分字段到“选定字段”下拉列表框中。在添加字段的时候,要注意字段的先后顺序。 ⑤ 设置筛选条件:单击“筛选”选项卡,使其成为当前选项卡。然后在“字段名”下 拉列表框中选择 xscj.总分字段,在“条件”下拉列表框中选择“>=”,在“实例”文本框 输入 255。 ⑥ 设置排序依据:单击“排序依据”选项卡,使其成为当前选项卡。然后在“选定字 段”下拉列表框中选择 xscj.总分字段,在“排序选项”单选框中选择“降序”,再单击“添 加”按钮。 ⑦ 设置查询去向:在“查询设计器”顶部窗格中单击鼠标右键,在弹出的快捷菜单中
选择“输出设置”命令,然后在弹出的“查询去向”对话框中选择“表”,在“表名”文本框中输入“chaxunrst”,并单击“确定”按钮。③单击常用工具栏中的“保存”命令,在弹出的“另存为”对话框的“保存文档为”文本框中输入需要保存的文件名“chaxun”,并单击“保存”按钮。经过以上各步后查询chaxun.qpr已经生成,运行该查询会生成表chaxunrst.dbf,该表的内容如下图所示。Chaxunrst口0×学号姓名性别出生日期是否团员籍贯高等数学 英语计算机基础 马哲总分00003李彤女10/16/77江苏96.087.01P95.095.0|373.000001李平江苏12/11/7885.086.092.095.0358.0F北京00005王国胜男05/05/8270.069.0IT76.085.0300.0安徽00006主刚男04/21/88460.074.071.085.0290.0湖南00002陈遥女12/24/8030.077.067.085.0259.0(2)利用查询向导建立查询仍以例7-1中需要建立的查询chaxun.qpr为例介绍利用查询向导建立查询的过程。①新建查询,打开查询向导:从“文件”菜单中选择“新建”,在弹出的对话框中选择“查询”,再选择“向导”,会打开“向导选取”对话框。②选择查询字段:单击“向导选取”对话框中的“查询向导”选项,再单击“确定”按钮,会打开“字段选取”对话框。在“数据库和表”组合框中选择XSDA表,再在“可用字段”下拉列表框中选择学号,再单击“”按钮,这样XSDA表的学号字段就添加到“选定字段”下拉列表框中了。然后用相同的方法依次将XSDA表的姓名字段、XSDA表的性别字段、XSDA表的出生日期字段、XSDA表的是否团员字段、XSDA表的籍贯字段、XSCJ表的高等数学字段、XSCJ表的英语字段、XSCJ表的计算机基础字段、XSCJ表的马哲字段和XSCJ表的总分字段添加到“选定字段”下拉列表框中。在添加字段的时候,要注意字段的先后顺序。③建立表间的联接:选择完查询字段后,单击“下一步”按钮,会打开“建立多表联接”对话框,建立联接条件,单击“下一步”按钮,会打开“记录匹配方式选取”对话框,选择“仅包含匹配的行”(即内部联接)选项。④设置筛选条件:建立完表间的联接后,单击“下一步”按钮,会打开“设置筛选条件”对话框,设置如下图所示的筛选条件(XSCJ.总分>=255)。如果有两个以上的筛选条件,则它们之间应该用“与”或“或”连起来。设置好筛选条件后,可以单击“预览”按钮来预览查询结果。查询向导区步骤3-错选记录 是否仅想显示部分记录?28:3Ce3cco如果想查询特定记录时,可使用宇段框,操作符框和值5赶来创健表达式。国单击“现第”按妞可以查看结果。手段Q)操作符:值)SCJ.总分大于或等于255与)C或@)宇段()操作符值XSDA.学号等于-预宽?帮助00取消《上一步下一步完成)③设置排序依据:设置好筛选条件后,单击“下一步”按钮,会打开“设置排序依据”对话框,设置如下图所示的排序依据(按总分从高到低排序)
选择“输出设置”命令,然后在弹出的“查询去向”对话框中选择“表”,在“表名”文本 框中输入“chaxunrst”,并单击“确定”按钮。 ⑧ 单击常用工具栏中的“保存”命令,在弹出的“另存为”对话框的“保存文档为” 文本框中输入需要保存的文件名“chaxun”,并单击“保存”按钮。 经过以上各步后查询 chaxun.qpr 已经生成,运行该查询会生成表 chaxunrst.dbf,该 表的内容如下图所示。 (2) 利用查询向导建立查询 仍以例 7-1 中需要建立的查询 chaxun.qpr 为例介绍利用查询向导建立查询的过程。 ① 新建查询,打开查询向导:从“文件”菜单中选择“新建”,在弹出的对话框中选择 “查询”,再选择“向导”,会打开 “向导选取”对话框。 ② 选择查询字段:单击“向导选取”对话框中的“查询向导”选项,再单击“确定” 按钮,会打开“字段选取”对话框。在“数据库和表”组合框中选择 XSDA 表,再在“可用 字段”下拉列表框中选择学号,再单击“ ”按钮,这样 XSDA 表的学号字段就添加到“选 定字段”下拉列表框中了。然后用相同的方法依次将 XSDA 表的姓名字段、XSDA 表的性别字 段、XSDA 表的出生日期字段、XSDA 表的是否团员字段、XSDA 表的籍贯字段、XSCJ 表的高等 数学字段、XSCJ 表的英语字段、XSCJ 表的计算机基础字段、XSCJ 表的马哲字段和 XSCJ 表 的总分字段添加到“选定字段”下拉列表框中。在添加字段的时候,要注意字段的先后顺序。 ③ 建立表间的联接:选择完查询字段后,单击“下一步”按钮,会打开“建立多表联 接”对话框,建立联接条件,单击“下一步”按钮,会打开“记录匹配方式选取”对话框, 选择“仅包含匹配的行”(即内部联接)选项。 ④ 设置筛选条件:建立完表间的联接后,单击“下一步”按钮,会打开 “设置筛选条 件”对话框,设置如下图所示的筛选条件(XSCJ.总分>=255)。如果有两个以上的筛选条件, 则它们之间应该用“与”或“或”连起来。 设置好筛选条件后,可以单击“预览”按钮来预览查询结果。 ⑤ 设置排序依据:设置好筛选条件后,单击“下一步”按钮,会打开“设置排序依据” 对话框,设置如下图所示的排序依据(按总分从高到低排序)
查询向导X一步骤4-排序记录您帮望记崇如问排序?oxPr。可以按照选定字段的顺序对记录排序,用于排序的字段量多可选三个可用字段)选定宇段()ESDA性别主XSC总分国一XSBA出生日期加SDA培典XSCJ.高等数学(移去)ISCJ.英语升序SCJ.计算机基础降序()SCJ.马名移助00取消上一步下一步完威③保存查询:设置好排序依据后,单击两次“下一步”按钮,会打开“完成”对话框,在对话框中选择“保存查询”选项,并单击“完成”按钮,在弹出的“另存为”对话框的“文件名”文本框中输入“chaxun”,并单击“保存”按钮。经过以上各步后查询chaxun.qpr已经生成,运行该查询会得到如下图所示的查询结果。注意:利用查询向导建立的查询的查询去向只能是“浏览”。当然,查询建立好以后,可以通过查询设计器来修改查询的查询去向。0口区查询学号姓名性别出生日期是否团员籍贵高等数学英语计算机基础马哲总分江苏96.087.000003丰彤10/16/7795.095.0373.0女1江苏00001李平男12/11/7885.086.092.095.0358.0F男王国胜05/05/82北京70.069.076.085.0300.0S王刚安徽60.074.00000604/21/8B71.085.0290.0湖南陈淘女12/24/8030.077.067.085.0259.000002利用查询设计器或查询向导建立的查询以后都可在查询设计器中打开,并且可以进行修改。7.1.3运行查询建立好的查询,可以直接运行。运行查询的方法有两种。1、菜单或工具栏运行方法打开需要运行的查询,选择“查询”菜单中的“运行查询”子菜单,可以运行当前查询。2、命令运行方法在命令窗口中执行命令:DO《查询文件名》注意:扩展名.qpr不能省略。【例7一2】用命令运行方法运行例7-1中建立的查询chaxun.qpr。在命令窗口中执行以下命令:Dochaxun.qpr7.1.4查询设计器和查询向导的高限性利用查询设计器或查询向导只能建立一些简单的比较规则的查询。要建立复杂的查询(如嵌套查询),可以使用文本编辑器编辑实现查询功能的SQLSELECT语句,最后保存为扩展名为.qpr的文件
⑥ 保存查询:设置好排序依据后,单击两次“下一步”按钮,会打开 “完成”对话框, 在对话框中选择“保存查询”选项,并单击“完成”按钮,在弹出的“另存为”对话框的“文 件名”文本框中输入“chaxun”,并单击“保存”按钮。 经过以上各步后查询chaxun.qpr已经生成,运行该查询会得到如下图所示的查询结果。 注意:利用查询向导建立的查询的查询去向只能是“浏览”。当然,查询建立好以后, 可以通过查询设计器来修改查询的查询去向。 利用查询设计器或查询向导建立的查询以后都可在查询设计器中打开,并且可以进行修 改。 7.1.3 运行查询 建立好的查询,可以直接运行。运行查询的方法有两种。 1、菜单或工具栏运行方法 打开需要运行的查询,选择“查询”菜单中的“运行查询”子菜单,可以运行当前查 询。 2、命令运行方法 在命令窗口中执行命令:DO <查询文件名> 注意:扩展名.qpr 不能省略。 【例 7-2】用命令运行方法运行例 7-1 中建立的查询 chaxun.qpr。 在命令窗口中执行以下命令: DO chaxun.qpr 7.1.4 查询设计器和查询向导的局限性 利用查询设计器或查询向导只能建立一些简单的比较规则的查询。要建立复杂的查询 (如嵌套查询),可以使用文本编辑器编辑实现查询功能的 SQL SELECT 语句,最后保存为扩 展名为.qpr 的文件