第05章:查询与视图_第1页
第05章:查询与视图_第2页
第05章:查询与视图_第3页
第05章:查询与视图_第4页
第05章:查询与视图_第5页
已阅读5页,还剩135页未读 继续免费阅读

下载本文档

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

文档简介

1、 visual foxpro 漳州师范学院计算中心 5.1 查询与统计命令查询与统计命令 l5.1.1 数据筛选命令数据筛选命令 l设置记录筛选设置记录筛选: (1)set filter to (2)功能:设置当前表中可以被访问的记录必须满足的条功能:设置当前表中可以被访问的记录必须满足的条 件件 (对对select-sql命令无效命令无效) l设置字段筛选设置字段筛选 (1)set fields to all like|except 通配符通配符 (2)功能:指定当前表中可以被访问的字段功能:指定当前表中可以被访问的字段 set fields on 字段筛选有效字段筛选有效 set fiel

2、ds off字段筛选无效字段筛选无效 visual foxpro 漳州师范学院计算中心 lset fields to关闭所有字段关闭所有字段 l例例5.1 设置设置student 表中只有男性记录的学号、表中只有男性记录的学号、 姓名、出生日期三个字段可被访问。姓名、出生日期三个字段可被访问。 use student set filter to 性别性别 set fields to 学号,姓名,性别学号,姓名,性别 list visual foxpro 漳州师范学院计算中心 use student list set fields to all like 专专*筛选专业字段筛选专业字段 set

3、fields on筛选字段有效筛选字段有效(默认默认) list set fields to all 所有字段有效所有字段有效 list set fields to 关闭所有字段关闭所有字段(要有此句要有此句) set fields to all like 专专*筛选专业字段筛选专业字段 list set fields off筛选专业字段无效筛选专业字段无效 list visual foxpro 漳州师范学院计算中心 5.1.2 查找定位命令查找定位命令 l顺序查找就是按照记录的物理排列顺序查找满足指定顺序查找就是按照记录的物理排列顺序查找满足指定 要求的记录要求的记录(查找时不要求索引查找时

4、不要求索引) l顺序查找顺序查找: (1)locate for (2)功能:在指定的记录范围内按顺序查找满足条件的第功能:在指定的记录范围内按顺序查找满足条件的第 一个记录一个记录 l继续顺序查找继续顺序查找:continue l功能:按上一个功能:按上一个locate的条件在指定范围内从下一的条件在指定范围内从下一 条记录起继续查找满足条件的下一个记录条记录起继续查找满足条件的下一个记录 visual foxpro 漳州师范学院计算中心 l若在指定范围内找到满足条件的记录,指针指向满若在指定范围内找到满足条件的记录,指针指向满 足条件的第一条记录,函数足条件的第一条记录,函数foun()返回

5、返回.t. eof()返返 回回.f. l若在指定范围内找不到满足条件的记录,函数若在指定范围内找不到满足条件的记录,函数 foun()返回返回.f. 若范围为若范围为all或或 rest 则则eof()返返 回回.t.,指针定位在指定范围的下一条记录。,指针定位在指定范围的下一条记录。 visual foxpro 漳州师范学院计算中心 索引查找索引查找 l利用索引文件进行查找。由于在索引文件中各个记利用索引文件进行查找。由于在索引文件中各个记 录的逻辑位置是索引关键字的值由小到大排列的,录的逻辑位置是索引关键字的值由小到大排列的, 因此可以使用二分法因此可以使用二分法(折半法折半法)根据索引

6、关键字的值进根据索引关键字的值进 行查找。提高查找速度。行查找。提高查找速度。 l(1)seek l(2)功能:按索引来查找功能:按索引来查找指定的关键段值。指定的关键段值。 可查找可查找c、n、d型字段值,型字段值, 值与索引关键字段同值与索引关键字段同 l例例5.2 在在student表中分别索引查找表中分别索引查找(1)第一个第一个 “金融金融”的专业学生记录的姓名的专业学生记录的姓名 (2)1981年年10月月9 日出生的学生姓名。日出生的学生姓名。 visual foxpro 漳州师范学院计算中心 use student index on 专业专业 tag 专业索引专业索引 seek

7、 “金融金融” ? 姓名姓名 index on 出生日期出生日期 tag 出生索引出生索引 seek 1981/10/09 或或seek ctod(“10/09/81”) ? 姓名姓名 visual foxpro 漳州师范学院计算中心 lfind/ l先索引再先索引再find查找查找 l只能索引查找只能索引查找c、n型常量,型常量, l值要与索引关键字段同值要与索引关键字段同 l例例5.3 在在student表中分别索引查找表中分别索引查找 第一个第一个“金融金融” 的专业学生的姓名的专业学生的姓名 luse student lindex on 专业专业 tag 专业索引专业索引 l(或:或:

8、set order to tag 专业索引专业索引) lfind 金融金融 (或:或:zy=“金融金融” find &zy ) visual foxpro 漳州师范学院计算中心 5.1.3 统计命令统计命令 l1. 记录个数统计:记录个数统计: l(1) count for/while to l(2)功能:统计当前表中指定范围内满足条件的记录功能:统计当前表中指定范围内满足条件的记录 个数,并可将结果存入内存变量中个数,并可将结果存入内存变量中 l说明说明: (1)范围缺省为范围缺省为all (2)当当set delete on时,已做删除标记的记录不被时,已做删除标记的记录不被 统计统计(而

9、而reccount()函数,即使函数,即使set delete on 已做删除标记的记录出被已做删除标记的记录出被 统计统计) visual foxpro 漳州师范学院计算中心 例例5.4 统计统计student 表中奖学金在表中奖学金在200-300元之间的元之间的 学生数学生数 use student count all for 奖学金奖学金=200 and 奖学金奖学金=300 to num ? num visual foxpro 漳州师范学院计算中心 l统计求和统计求和 l(1)sum for/while to l(2)功能:对当前表中指定范围内指定条件的记录的指功能:对当前表中指定范

10、围内指定条件的记录的指 定数值字段进行纵向求和,并可将求和结果在于内存定数值字段进行纵向求和,并可将求和结果在于内存 变量中变量中 l例例5.5 统计统计student 表中所有妇女学生的奖学金总表中所有妇女学生的奖学金总 额额 use student sum 奖学金奖学金 for .not.性别性别 to 奖学金总额奖学金总额 ? 奖学金总额奖学金总额 visual foxpro 漳州师范学院计算中心 l统计平均数统计平均数 laverage for/whileto l(2)功能:对当前表中指定范围内指定条件的记录的功能:对当前表中指定范围内指定条件的记录的 指定数值字段进行纵向求平均值,并

11、可将求平均结指定数值字段进行纵向求平均值,并可将求平均结 果在于内存变量中果在于内存变量中 l例例5.6 统计统计student 表中所有妇女学生的奖学金平表中所有妇女学生的奖学金平 均值均值 use student average 奖学金奖学金 for .not.性别性别 to 平均奖学金平均奖学金 ? 平均奖学金平均奖学金 visual foxpro 漳州师范学院计算中心 l计算命令计算命令 l(1)calculate for/whileto l (2)对当前表中指定范围内满足指定条件的记录,按对当前表中指定范围内满足指定条件的记录,按 指定函数进行计算,并可将结果送入对应的内存变指定函数

12、进行计算,并可将结果送入对应的内存变 量中保存量中保存 l例例5.7 统计统计student 表中的最高奖学金和最低奖表中的最高奖学金和最低奖 学金学金 use student calculate max(奖学金奖学金),min(奖学金奖学金) to 最高最高 奖学金,最低奖学金奖学金,最低奖学金 ?最高奖学金,最低奖学金?最高奖学金,最低奖学金 visual foxpro 漳州师范学院计算中心 5.1.4 多表操作多表操作 lvfp中共有中共有32767个工作区个工作区 l区号:区号:132767 l区名:对前区名:对前10个区区名:个区区名:a、b、c.j l工作区别名:可利用工作区别名:

13、可利用 use alias 可为打开表的工作区取别名。可为打开表的工作区取别名。 l选择当前工作区选择当前工作区 select / 0 说明说明 :select 0 表示尚未使用的工作区中编号最小的表示尚未使用的工作区中编号最小的 那个工作区作为当前工作区。那个工作区作为当前工作区。 visual foxpro 漳州师范学院计算中心 l当前工作区字段的引用当前工作区字段的引用 (1)访问当前工作区中表的字段时,可以直接引用字段名访问当前工作区中表的字段时,可以直接引用字段名 l例例:use student go 3 ? 姓名姓名 (2)访问非当前工作区表中的字段时,使用:访问非当前工作区表中的

14、字段时,使用: /. 或或 /- l例例5.8:select 2 use grade alias cjb go 3 select 1 use student ? cjb-姓名姓名 visual foxpro 漳州师范学院计算中心 建立表之间的关联命令建立表之间的关联命令 (1)set relation to into ,intoadditive (2)功能:功能:把当前工作区上的表把当前工作区上的表(主动表主动表)与被动表通过关与被动表通过关 联字段建立指针联动关系,使得当前工作区上表的指联字段建立指针联动关系,使得当前工作区上表的指 针移动时,被动表的记录指针也发生相应的移动。针移动时,被动

15、表的记录指针也发生相应的移动。 说明:说明: (1)是两个关联表的共有的字段。是两个关联表的共有的字段。 (2)主动表在当前工作区,被动表在非当前工作区。主动表在当前工作区,被动表在非当前工作区。 (3)被动表须对关键字段索引。被动表须对关键字段索引。 (4)主动表可同时与多个被动表建立关联。主动表可同时与多个被动表建立关联。 (5)additive:建立关联时同时保留已有的关联:建立关联时同时保留已有的关联(若省若省 略,则断开略,则断开) visual foxpro 漳州师范学院计算中心 lset relation to:断开所有关联:断开所有关联 l(6)关联只是一种临时关系,退出系统时

16、关联自动消关联只是一种临时关系,退出系统时关联自动消 失失 l例例5.9 通过在表通过在表grade 与与student之间按学号建之间按学号建 立指针关联立指针关联 select 2 use student alias stu index on 学号学号 tag 学号索引学号索引 select 1 use grade set relation to 学号学号 into stu browse fields 学号学号,stu.姓名姓名,stu.专业专业,课程号课程号, 成绩成绩 visual foxpro 漳州师范学院计算中心 5.2使用查询设计器建立查询使用查询设计器建立查询 l查询(查询(q

17、uery)概念)概念 vfp的查询功能可以使用户从数据库检索所需的数的查询功能可以使用户从数据库检索所需的数 据,可以对查询结果进行排序分类,并可以采用数据,可以对查询结果进行排序分类,并可以采用数 据表、报表、图形等多种方式存储、显示查询结果。据表、报表、图形等多种方式存储、显示查询结果。 vfp提供两种方法实现查询提供两种方法实现查询: 直接编写直接编写selectsql语句并执行;语句并执行; 用查询设计器或查询向导查询文件并运行用查询设计器或查询向导查询文件并运行 visual foxpro 漳州师范学院计算中心 查询的设计过程查询的设计过程 创建查询时,通常可以遵循以下六个步骤来创建

18、查询。创建查询时,通常可以遵循以下六个步骤来创建查询。 (1)用)用“查询向导查询向导”或或“查询设计器查询设计器”创建查询。创建查询。 (2)选择在查询结果中)选择在查询结果中需要的字段需要的字段。 (3)设置查询记录的)设置查询记录的条件条件。 (4)设置)设置排序排序及及分组分组条件来组织查询结果。条件来组织查询结果。 (5)选择查询)选择查询输出类别输出类别,可以是报表、表文件、图表、,可以是报表、表文件、图表、 浏览窗口和表文件等等。浏览窗口和表文件等等。 (6)运行此查询。)运行此查询。 visual foxpro 漳州师范学院计算中心 5.2.1 查询设计器简介查询设计器简介 l

19、在查询设计器中,用户不用编写命令代码,只要根据在查询设计器中,用户不用编写命令代码,只要根据 设计器提供的交互应用界面,便可构造设计器提供的交互应用界面,便可构造select-sql 命令并存储成查询文件(文件扩展名命令并存储成查询文件(文件扩展名.qpr),还可),还可 方便地修改、运行查询文件。方便地修改、运行查询文件。 启动查询设计器的方法启动查询设计器的方法 一、文件菜单一、文件菜单 选择系统菜单中的【文件】选择系统菜单中的【文件】|【新建】【新建】 命令,在命令,在“新建新建”对话框中选中对话框中选中 “文件类型文件类型”下的下的“查询查询”单选项,单选项, 再单击右边的【新建文件】

20、按钮,再单击右边的【新建文件】按钮, 可启动可启动“查询设计器查询设计器” visual foxpro 漳州师范学院计算中心 二二、在、在“项目管理器项目管理器” 1 1、在、在“项目管理器项目管理器”中选择中选择“数据数据”选项卡,再选选项卡,再选 取取“查询查询”项,再单击【新建】,进入查询设计方式项,再单击【新建】,进入查询设计方式 选择对话框后单击【新建查询】,选择对话框后单击【新建查询】,则启动则启动“查询设计查询设计 器器”,在添加表或视图中选择表,然后关闭在添加表或视图中选择表,然后关闭 2 2、在、在“项目管理器项目管理器”中选择中选择“数据数据”选项卡,从选项卡,从 “查询查

21、询”项中选择一个已存在的查询文件,再单击项中选择一个已存在的查询文件,再单击 【修改】,也【修改】,也启动启动“查询设计器查询设计器”。 三、在命令窗口中使用三、在命令窗口中使用 create query命令命令 visual foxpro 漳州师范学院计算中心 查询设计器查询设计器 visual foxpro 漳州师范学院计算中心 设计单表查询设计单表查询 查询向导查询向导可以引导用户快速设计一个查询。例子:从可以引导用户快速设计一个查询。例子:从 gxglxt数据库的数据库的student表中查询系部代号为表中查询系部代号为“04”且且 是是99级的所有学生的信息。级的所有学生的信息。 项

22、目管理器项目管理器 数据数据 查询查询 新建新建 选择设计查询的方式选择设计查询的方式 单击单击 visual foxpro 漳州师范学院计算中心 选择 选择gxglxt数据库中的数据库中的student 表,并将该表中的所有字段添加到表,并将该表中的所有字段添加到 “选定字段选定字段”列表框中。列表框中。 单击单击 查询向导查询向导字段选取字段选取 visual foxpro 漳州师范学院计算中心 从中选择从中选择 student.系系 部代号部代号 0 在此输入值在此输入值 4 取默认值取默认值 从中选择从中选择 “包含包含” 在此输入值在此输入值 98 单击单击 单击【预览】按钮可以显示

23、查询结果。根据要求,设置条件如上图。其中,单击【预览】按钮可以显示查询结果。根据要求,设置条件如上图。其中, 虽然表中没有年级字段,但可通过虽然表中没有年级字段,但可通过“学号学号”得到年级(学号的前二位为年得到年级(学号的前二位为年 级)。级)。 查询向导查询向导筛选记录筛选记录 visual foxpro 漳州师范学院计算中心 选择排序字段选择排序字段单击【添加】单击【添加】 选择排序方式选择排序方式 调整排调整排 序顺序序顺序 移动按钮 单击单击 查询向导查询向导记录排序记录排序 visual foxpro 漳州师范学院计算中心 查询向导查询向导限制记录限制记录 限制查询结限制查询结 果

24、中所包含果中所包含 的记录数的记录数 说明:查询结果说明:查询结果 中所包含的记录中所包含的记录 数限制共有四种数限制共有四种 方式:方式: 1、“部分类型部分类型” 中选择中选择“所占记所占记 录百分比录百分比”, “数量数量”中选择中选择 “所有记录所有记录”, 查询结果集中包查询结果集中包 含全部记录。含全部记录。 2、“部分类型部分类型”中选择中选择“所占记录百分比所占记录百分比”,“数量数量” 中选择中选择“部分值部分值”,再在,再在“微调框微调框”中设置数值,查中设置数值,查 询结果集中包含指定数值百分数的记录。询结果集中包含指定数值百分数的记录。 单击 取默认值,取默认值, 查询

25、结果查询结果 集中包含集中包含 全部记录全部记录 visual foxpro 漳州师范学院计算中心 查询向导查询向导限制记录限制记录 (2) 3、“部分类型部分类型”中选择中选择“记录号记录号”,“数量数量”中选中选 择择“所有记录所有记录”,查询结果集中包含全部记录。,查询结果集中包含全部记录。 4、 “部分类型部分类型”中选择中选择“记录号记录号”,“数量数量”中选择中选择 “部分值部分值”,再在,再在“微调框微调框”中设置数值,查询结果中设置数值,查询结果 集中包含指定数值的记录数。集中包含指定数值的记录数。 visual foxpro 漳州师范学院计算中心 查询向导完成 将查询以文将查

26、询以文 件的形式件的形式 (.qpr)保)保 存到一个指存到一个指 定的目录中。定的目录中。 将查询保存到一将查询保存到一 个指定的目录中个指定的目录中 并运行该文件。并运行该文件。 利用查询向导设计的查询功能有限,可以使用查询设计器修改它。利用查询向导设计的查询功能有限,可以使用查询设计器修改它。 单击,可以查看查询结果集中的全部数据单击,可以查看查询结果集中的全部数据 打开帮助文件打开帮助文件 取消所建立的查询取消所建立的查询 返回到向导的上一步返回到向导的上一步 结束向导,结束向导, 完成查询设完成查询设 计。计。 单击单击 visual foxpro 漳州师范学院计算中心 保存设计的查

27、询保存设计的查询 目录选择下拉列表框 文件名输入文本框 文件类型选择下位列表框 在在“文件名输入文本框文件名输入文本框”中中 输入输入“stud_query”后,单击后,单击 【保存】按钮,结束查询设【保存】按钮,结束查询设 计过程。计过程。 在项目管理器中 的“数据”选项 中的查询项下产 生了一个查询文 件 visual foxpro 漳州师范学院计算中心 若建立查询时选若建立查询时选 择择“交叉表向导交叉表向导”, 则可以建立交叉表。则可以建立交叉表。 用用grade表中的数据表中的数据 建立一个交叉表,建立一个交叉表, 以显示每个学生所以显示每个学生所 有课程的总成绩。有课程的总成绩。

28、grade表中的部分数表中的部分数 据如图据如图 前面的设计过程前面的设计过程 同以上内容,但是同以上内容,但是 在第二步需要确定在第二步需要确定 交叉表的行和列交叉表的行和列 。 建立交叉表建立交叉表 visual foxpro 漳州师范学院计算中心 交叉表设计向导交叉表设计向导字段选取字段选取 选择数据库和表 选定字段 单击 单个字段选定按钮单个字段选定按钮 全部字段选定按钮全部字段选定按钮 单个字段撤消按钮单个字段撤消按钮 说明:在这说明:在这 一步先在一步先在“ 数据库和表数据库和表 ”一选择一一选择一 个数据库,个数据库, 再选择用以再选择用以 建立交叉表建立交叉表 的数据表,的数据

29、表, 然后再从可然后再从可 用字段列表用字段列表 框中选择要框中选择要 用的字段,用的字段, 交叉表只用交叉表只用 三个字段,三个字段, 这一步可多这一步可多 选选 字段。字段。 全部字段撤消按钮全部字段撤消按钮单击单击 visual foxpro 漳州师范学院计算中心 交叉表向导交叉表向导定义布局定义布局 说明:说明: (1)行,将要加入到)行,将要加入到 交叉表中的第一个字交叉表中的第一个字 段名,本示例中选择段名,本示例中选择 字段字段“学号学号”; (2)列,将要加入到)列,将要加入到 交叉表中的从第二个交叉表中的从第二个 字段开始的若干个字字段开始的若干个字 段的字段名,注意这段的字

30、段名,注意这 些从源表中选择的数些从源表中选择的数 据不能超过据不能超过254个。本个。本 示例中选择字段示例中选择字段“课课 程代号程代号”; (3)数据,对应行和)数据,对应行和 列的运算结果,本示列的运算结果,本示 例中选择例中选择“课程成课程成 绩绩”。 按提示操作:从可用字段列表框按提示操作:从可用字段列表框 中将中将“学号学号”字段拖入字段拖入“行行”框,框, 将将“课程代号课程代号”拖入拖入“列列”框,将框,将 “课程成绩课程成绩”拖入拖入“数据数据”框。框。 单击单击 visual foxpro 漳州师范学院计算中心 交叉表查询向导交叉表查询向导加入总结信息加入总结信息 说明:

31、说明:这一步的操作,这一步的操作, 决定在生成的交叉表中决定在生成的交叉表中 要加入的一个字段的内要加入的一个字段的内 容。容。 (1)求和:求出对应行)求和:求出对应行 和列的数据字段的和;和列的数据字段的和; (2)计数:求出对应行)计数:求出对应行 和列的数据字段的数目;和列的数据字段的数目; (3)平均值:求出对应)平均值:求出对应 行和列的数据字段的平行和列的数据字段的平 均值;均值; (4)最大值:求出对应)最大值:求出对应 行和列的数据字段的最行和列的数据字段的最 大值;大值; (5)最小值:求出对应)最小值:求出对应 行和列的数据字段的最行和列的数据字段的最 小值。小值。 本示

32、例中选择本示例中选择“求和求和” 运算。如果不想加入总运算。如果不想加入总 结信息,可以在结信息,可以在“分类分类 汇总汇总”中选择中选择“无无”。 单击单击 visual foxpro 漳州师范学院计算中心 交叉表向导交叉表向导完成完成 将交叉表查询以文件的将交叉表查询以文件的 形式(形式(.qpr)保存到一)保存到一 个指定的目录中。个指定的目录中。 将交叉表查询保存到一将交叉表查询保存到一 个指定的目录中并运行个指定的目录中并运行 该文件。该文件。 将交叉表查询保存到一个指定的目录中并打开将交叉表查询保存到一个指定的目录中并打开“查询设计器查询设计器”修改修改 它。它。 对于值为空的记录

33、是否以对于值为空的记录是否以.null.填充填充 说明说明:系统默认值系统默认值 是是“保存交叉表查询保存交叉表查询” 和和“显示显示null值值”。 选择选择“保存并运行保存并运行 交叉表查询交叉表查询”后单后单 击击 visual foxpro 漳州师范学院计算中心 交叉表保存及运行结果交叉表保存及运行结果 按上一步的操作完成后,进行到按上一步的操作完成后,进行到“另存为另存为”对话框中,将该对话框中,将该 查询取名为查询取名为grad_query,然后保存在默认的目录中。,然后保存在默认的目录中。 保存后,系统进入到数据查询过程,稍候系统将查询结果显示保存后,系统进入到数据查询过程,稍候

34、系统将查询结果显示 出来。如:出来。如: 从中可以看到,凡是没有数据的栏,就被从中可以看到,凡是没有数据的栏,就被.null.null.值填充值填充, ,且有且有 许多数据丢失许多数据丢失。 交叉表可以用数据过滤处理交叉表可以用数据过滤处理. . visual foxpro 漳州师范学院计算中心 查询设计器查询设计器 要设计一个查询文件,首先必须明确查询的目的要设计一个查询文件,首先必须明确查询的目的 是什么,即想要得到哪些数据,并以什么方式存在;是什么,即想要得到哪些数据,并以什么方式存在; 或者想要得到满足某些条件的特定记录,或者想要知或者想要得到满足某些条件的特定记录,或者想要知 道某些

35、记录的字段值组合成的表达式按某一方式输出。道某些记录的字段值组合成的表达式按某一方式输出。 明确了输出的数据后,就可以开始设计查询了明确了输出的数据后,就可以开始设计查询了. . visual foxpro 漳州师范学院计算中心 (1 1)“字段字段”:用来选定包含在查询结果中的字:用来选定包含在查询结果中的字 段;段; (2 2)“排序依据排序依据”:用来决定查询结果输出中记:用来决定查询结果输出中记 录或行的排列顺序;录或行的排列顺序; (3 3)“联接联接”:用来确定各数据表或视图之间的:用来确定各数据表或视图之间的 联接关系;联接关系; (4 4)“筛选筛选”:相当于命令:相当于命令s

36、et filter toset filter to,利,利 用过滤的方法查找一个特定的数据子集;用过滤的方法查找一个特定的数据子集; (5 5)“分组依据分组依据”:所谓分组就是将一组类似的:所谓分组就是将一组类似的 记录压缩成一个结果记录,这样就可以完成基于一记录压缩成一个结果记录,这样就可以完成基于一 组的计算。组的计算。 查询设计器窗口中选项卡的含义查询设计器窗口中选项卡的含义 visual foxpro 漳州师范学院计算中心 根据建立查询的目的,选择查询结果中应包含的字段。根据建立查询的目的,选择查询结果中应包含的字段。 操作方法与用向导设计查询的方法相同。在本示例中先操作方法与用向导

37、设计查询的方法相同。在本示例中先 在在“查询设计器查询设计器”中选择中选择“字段字段”选项卡,然后从可用选项卡,然后从可用 字段列表框中选择:字段列表框中选择:student.学号、学号、student.姓名、姓名、 courses.课程名称、课程名称、grade.课程成绩,如图。课程成绩,如图。 选择一个字段选择一个字段单击【添加】单击【添加】选定的字段列表选定的字段列表 重复操作添加重复操作添加student.姓名、姓名、courses.课程名称、课程名称、grade.课程成绩课程成绩 选定查询字段选定查询字段 visual foxpro 漳州师范学院计算中心 确定各表间的联接关系确定各表

38、间的联接关系 例如在例如在gxglxtgxglxt数据库中有三个表:数据库中有三个表:studentstudent、gradegrade、coursescourses, 现在想知道学号前四位是现在想知道学号前四位是99049904和和98049804的所有学生考试的成绩。的所有学生考试的成绩。 当在多个表或视图间进行查询时,需要指出这些表或视图间当在多个表或视图间进行查询时,需要指出这些表或视图间 的联接关系。在的联接关系。在“添加表和视图添加表和视图”对话框中从对话框中从“数据库数据库”中选中选 择择gxglxtgxglxt库,在库,在“数据库中的表数据库中的表”中选择中选择students

39、tudent表,单击【添表,单击【添 加】按钮,再选择加】按钮,再选择gradegrade表,再单击【添加】,此时系统自动表,再单击【添加】,此时系统自动 弹出一个弹出一个“联接条件联接条件”, 询问是否根据两表中都有询问是否根据两表中都有 的的“学号学号”字段建立内部字段建立内部 联接,单击联接,单击“确定确定”,两,两 表间就有了一条连线,代表间就有了一条连线,代 表它们之间的联接。然后表它们之间的联接。然后 再添加再添加coursescourses表,最后表,最后 关闭对话框。关闭对话框。 visual foxpro 漳州师范学院计算中心 在在“查询设计器查询设计器”中选择中选择“联接联

40、接”选项选项 卡卡 visual foxpro 漳州师范学院计算中心 (1)inner join : 内部联接,指定只有满足联接条件内部联接,指定只有满足联接条件 的记录包含在结果中,此类型是默认的,也是最常用的记录包含在结果中,此类型是默认的,也是最常用 的;的; 即即:只返回完全满足连接条件的记录只返回完全满足连接条件的记录 (2)right outer join :右联接,指定满足联接条件:右联接,指定满足联接条件 的记录,以及满足联接条件右侧的表中记录(即使不的记录,以及满足联接条件右侧的表中记录(即使不 匹配联接条件)都包含在结果中;即匹配联接条件)都包含在结果中;即:返回后一个表中

41、返回后一个表中 的所有记录以及前一个表中匹配的记录的所有记录以及前一个表中匹配的记录 (3)left outer join : 左联接,指定满足联接条件的左联接,指定满足联接条件的 记录,以及满足联接条件左侧的表中记录(即使不匹记录,以及满足联接条件左侧的表中记录(即使不匹 配联接条件)都包含在结果中;即配联接条件)都包含在结果中;即:返回前一个表中的返回前一个表中的 所有记录以及后一个表中匹配的记录所有记录以及后一个表中匹配的记录 (4)full join :完全联接,指定所有满足和不满足联:完全联接,指定所有满足和不满足联 接条件的记录都包含在结果中。即接条件的记录都包含在结果中。即:返回

42、两个表中的匹返回两个表中的匹 配和不匹配的所有记配和不匹配的所有记 录录 。 表间的四种联接类型表间的四种联接类型 visual foxpro 漳州师范学院计算中心 如果想修改各表间的联接,双击查询设计器上部窗口表如果想修改各表间的联接,双击查询设计器上部窗口表 之间的连线,系统将弹出之间的连线,系统将弹出“连接条件连接条件”对话框;或者通对话框;或者通 过打开查询设计器下部的过打开查询设计器下部的“联接联接”选项卡进行。一般不选项卡进行。一般不 应随便更改连接条件,不然会与实际数据间的关系不符。应随便更改连接条件,不然会与实际数据间的关系不符。 “条件条件”列表中包含如下几项:列表中包含如下

43、几项: (1)=:指字段值与实例相等;:指字段值与实例相等; (2)like:表示:表示“字段名字段名”栏中给出的字段值与栏中给出的字段值与“实实 例例”栏中给出的文本值之间执行不完全匹配,它主要针栏中给出的文本值之间执行不完全匹配,它主要针 对字符类型。例如,如设置查询条件为对字符类型。例如,如设置查询条件为“student.学号学号 like 9904”,那么诸如,那么诸如“学号学号”字段前四位为字段前四位为9904的的 记录都满足该条件;记录都满足该条件; (3)=:表示在:表示在“字段名字段名”栏中给出的字段值与栏中给出的字段值与“实实 例例”栏中给出的文本值之间执行完全匹配检查,它也

44、主栏中给出的文本值之间执行完全匹配检查,它也主 要是针对字符类型的。要是针对字符类型的。 visual foxpro 漳州师范学院计算中心 (4):即为:即为“字段名字段名”栏中给出的字段的值应大于栏中给出的字段的值应大于 “实例实例”栏中给出的值;栏中给出的值; (5)=:即为:即为“字段名字段名”栏中给出的字段的值应大于栏中给出的字段的值应大于 或等于或等于“实例实例”栏中给出的值;栏中给出的值; (6):即为:即为“字段名字段名”栏中给出的字段的值应小于栏中给出的字段的值应小于 “实例实例”栏中给出的值;栏中给出的值; (7)=:即为:即为“字段名字段名”栏中给出的字段的值应小于栏中给出

45、的字段的值应小于 或等于或等于“实例实例”栏中给出的值;栏中给出的值; (8)is null:指定字段必须包含:指定字段必须包含null值;值; (9)between:即为输出字段的值应大于或等于:即为输出字段的值应大于或等于“实例实例” 栏中的最小值,而小于或等于栏中的最小值,而小于或等于“实例实例”栏中的最大值;栏中的最大值; (10)in(在(在之中):即为输出字段的值必须是之中):即为输出字段的值必须是“实实 例例”栏中所给出值中的一个,在栏中所给出值中的一个,在“实例实例”栏中给出的各栏中给出的各 值之间以逗号分隔。值之间以逗号分隔。 visual foxpro 漳州师范学院计算中心

46、 此外,此外,“联接联接”选项卡中的选项卡中的“否否”列用于指定列用于指定.not.条条 件,件,“逻辑逻辑”列用于设置各联接条件和筛选条件之间列用于设置各联接条件和筛选条件之间 的逻辑关系(无、的逻辑关系(无、.and.和和.or.) “大小写大小写”列用于指定是否区分大小写。列用于指定是否区分大小写。 下方的下方的“插入插入”和和“移去移去”按钮分别用于增加或移去按钮分别用于增加或移去 查询条件。查询条件。 最后,在设置筛选条件时,我们应注意如下几点:最后,在设置筛选条件时,我们应注意如下几点: (1)备注字段和通用字段不能用于设置查询条件;)备注字段和通用字段不能用于设置查询条件; (2

47、)逻辑值的前后必须使用句点号,如)逻辑值的前后必须使用句点号,如.t.; (3)只有当字符串与查询的表中字段名相同时,要用)只有当字符串与查询的表中字段名相同时,要用 引号将字符串括起来,否则不需要用引号将字符串括引号将字符串括起来,否则不需要用引号将字符串括 起来;起来; (4)日期不必用花括号括起来。)日期不必用花括号括起来。 visual foxpro 漳州师范学院计算中心 选择表中符合条件的一部分记录而不是全部记录是查选择表中符合条件的一部分记录而不是全部记录是查 询的重要任务。此例要求从所有学生的成绩信息中选出询的重要任务。此例要求从所有学生的成绩信息中选出 “学号学号”前四位为前四

48、位为“9904”和和“9804”的所有学生的成绩,的所有学生的成绩, 可以利用查询设计器中的可以利用查询设计器中的“筛选筛选”选项卡。选项卡。“筛选筛选”选选 项卡可确定用于选择记录的字段和比较准则,以及输入项卡可确定用于选择记录的字段和比较准则,以及输入 与该字段进行比较的示例值。与该字段进行比较的示例值。 选择筛选字段选择筛选字段 设置筛选条件设置筛选条件 输入筛选实例输入筛选实例设置条件逻辑设置条件逻辑是否区分大小写是否区分大小写 筛选记录筛选记录 visual foxpro 漳州师范学院计算中心 在字段名下的下拉选择框中选择在字段名下的下拉选择框中选择“grade.开课学期开课学期”,

49、 在在“条件条件”下的下拉选择框中选择下的下拉选择框中选择“=”,在,在“实例实例” 下的文本框中输入下的文本框中输入“第第1学期学期”, 在在“逻辑逻辑”下的下拉选择框中选择下的下拉选择框中选择“and”,然后再在,然后再在 字段名下的下拉选择框中选择字段名下的下拉选择框中选择“student.学号学号”,在,在 “条件条件”下的下拉选择框中选择下的下拉选择框中选择“in”,在,在“实例实例”下下 的文本框中输入的文本框中输入“9904,9804”(请注意中间的请注意中间的“,”是是en 状态下输入的状态下输入的)。)。 visual foxpro 漳州师范学院计算中心 选择一个字段选择一个

50、字段单击【添加】单击【添加】 选定的字段列表选定的字段列表 排序决定了输出结果中记录或行的先后顺序。在排序决定了输出结果中记录或行的先后顺序。在 “排排 序依据序依据”选项卡中从选项卡中从“选定字段选定字段”框中选定要使用的字框中选定要使用的字 段,并把它们移到段,并把它们移到“排序条件排序条件”框中,然后利用框中,然后利用“排序排序 选项选项”(从中选择升序或降序)来设置排序条件。本例(从中选择升序或降序)来设置排序条件。本例 中设置中设置student.学号,升序为排序依据。如果还需要添学号,升序为排序依据。如果还需要添 加用于排序的字段,可以重复以上的操作步骤。加用于排序的字段,可以重复

51、以上的操作步骤。 查询结果排序查询结果排序 visual foxpro 漳州师范学院计算中心 所谓分组就是将一组类似的记录压缩成一个结果记录,所谓分组就是将一组类似的记录压缩成一个结果记录, 这样就可完成基于一组记录的计算。分组在与某些累计这样就可完成基于一组记录的计算。分组在与某些累计 功能联合使用时效果最好,例如功能联合使用时效果最好,例如sum(),count(), avg()等。如果不想压缩结果记录,则不必设置它。在等。如果不想压缩结果记录,则不必设置它。在 此例中不设分组查询。如果想求各门课程的平均成绩,此例中不设分组查询。如果想求各门课程的平均成绩, 可以用可以用“课程名称课程名称

52、”进行分类查询。进行分类查询。 选择一个字段选择一个字段单击【添加】单击【添加】 选定的字段列表选定的字段列表 建立分组查询建立分组查询 visual foxpro 漳州师范学院计算中心 操作步骤如下:操作步骤如下: (1)在查询设计器的)在查询设计器的“字段字段”选项卡中,单击选项卡中,单击“函数和表达式函数和表达式” 右边的按钮,出现右边的按钮,出现“表达式表达式”生成器;生成器; (2)在)在“数学数学”下拉式列表框中双击下拉式列表框中双击avg(expn),在),在“来源来源 于表于表”下拉框中选择下拉框中选择grade表,在表,在“字段字段”列表框中双击列表框中双击“课程课程 成绩成

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

54、按钮,课程名称,再单击【添加】按钮, 该字段即成为分组字段。该字段即成为分组字段。 运行查询后的结果运行查询后的结果 visual foxpro 漳州师范学院计算中心 杂项的设置杂项的设置 经过以上五个步骤,基本上已生成了一个比较全面的查询。接经过以上五个步骤,基本上已生成了一个比较全面的查询。接 下来还可以通过查询设计器中的下来还可以通过查询设计器中的“杂项杂项”选项卡做最后处理。选项卡做最后处理。 单击单击“杂项杂项”选项卡,可以看到其间包括选项卡,可以看到其间包括“无重复记录无重复记录”、 “交叉数据表交叉数据表”、“全部全部”、“百分比百分比”这四个复选框和一个这四个复选框和一个 微调

55、按钮。微调按钮。 选中选中“无重复记录无重复记录”复选框表示对于查询结果如果存在重复记录,复选框表示对于查询结果如果存在重复记录, 则只取相同记录中的一个。选中此项,在查询生成器的则只取相同记录中的一个。选中此项,在查询生成器的sql语句语句 中会自动加上限定词中会自动加上限定词distinct,表示去掉重复记录。,表示去掉重复记录。 visual foxpro 漳州师范学院计算中心 当输出的字段只有三项时,当输出的字段只有三项时,“交叉数据表交叉数据表”复选框为可选状态,复选框为可选状态, 否则为不可选状态。选中否则为不可选状态。选中“交叉数据表交叉数据表”复选框表示将查询的复选框表示将查询

56、的 结果以交叉表的形式传递给其它报表或表。三项查询字段分别结果以交叉表的形式传递给其它报表或表。三项查询字段分别 表示表示x轴、轴、y轴和图形的单元值。轴和图形的单元值。 如,在本示例中,将前面已加入到如,在本示例中,将前面已加入到“选定字段选定字段”中的中的student. 学号字段移去,并按学号字段移去,并按student.姓名、姓名、courses.课程名称和课程名称和grade. 课程成绩的顺序调整字段在课程成绩的顺序调整字段在“选定字段选定字段”列表框中的顺序,然列表框中的顺序,然 后在后在“杂项杂项”选项卡中选中选项卡中选中“交叉数据表交叉数据表”,同时将,同时将“分组依分组依 据

57、据”中的中的“grade.课程代号课程代号”取消,其它设置不变。取消,其它设置不变。 从图中可以看到从图中可以看到“交叉数据表交叉数据表”成为了可选。现选中成为了可选。现选中“交叉数据表交叉数据表”项,项, 如图:如图: 设置设置 visual foxpro 漳州师范学院计算中心 定向输出查询结果定向输出查询结果 查询检索的信息,可以输出到不同的目的地,以用查询检索的信息,可以输出到不同的目的地,以用 作不同的用途。如果没有选定输出的目的地,查询结果作不同的用途。如果没有选定输出的目的地,查询结果 将显示在浏览窗口中。查询输出目的可以是浏览窗口、将显示在浏览窗口中。查询输出目的可以是浏览窗口、

58、 临时表、表、图形、屏幕、报表、标签等。临时表、表、图形、屏幕、报表、标签等。 选择结果的去向方法如下:选择结果的去向方法如下: 单击单击“查询设计器工具查询设计器工具”中的【查询去向】按钮,或中的【查询去向】按钮,或 者从【查询】菜单中选择【查询去向】者从【查询】菜单中选择【查询去向】 visual foxpro 漳州师范学院计算中心 【浏览】【浏览】:在浏览窗口中显示查询结果,查询缺省设置;:在浏览窗口中显示查询结果,查询缺省设置; 【临时表】【临时表】:将查询结果存储在一个临时只读表中。多:将查询结果存储在一个临时只读表中。多 次查询的结果可放在不同的表内。该表可用于浏览数据,次查询的结

59、果可放在不同的表内。该表可用于浏览数据, 制作报表等,直到用户关闭它们;制作报表等,直到用户关闭它们; 【表】【表】:将查询的结果保存在一个命名的表(:将查询的结果保存在一个命名的表(.dbf ) 中,此时查询的结果是真正的存放到磁盘上的,多次查中,此时查询的结果是真正的存放到磁盘上的,多次查 询的结果可放在不同的表内;询的结果可放在不同的表内; 【图形】【图形】:使查询结果可用于:使查询结果可用于microsoft graph(包含在(包含在 vfp6中的一个独立的应用程序)中制作图表;中的一个独立的应用程序)中制作图表; 对话框中的按钮含义如下:对话框中的按钮含义如下: visual fo

60、xpro 漳州师范学院计算中心 【屏幕】【屏幕】:在:在vfp6主窗口或当前活动输出窗口中显示主窗口或当前活动输出窗口中显示 查询结果;查询结果; 【报表】【报表】:将输出送到一个报表文件(:将输出送到一个报表文件(.frx)中;)中; 【标签】【标签】:将输出送到一个标签文件(:将输出送到一个标签文件(.lbx)中。)中。 选定一个去向,按一定的步骤设置一些属性,然后选定一个去向,按一定的步骤设置一些属性,然后 单击【确定】按钮,系统就将按意图放置查询结果。单击【确定】按钮,系统就将按意图放置查询结果。 假设本例将查询结果保存到临时表中,取临时表名假设本例将查询结果保存到临时表中,取临时表名

温馨提示

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

评论

0/150

提交评论