VFP查询与视图
VFP第6章 查询和视图设计-精品文档

7
Visual FoxPro
6.1.3 1. 使用查询设计器设计查询时,每设计一步,都可运行查询,查看运 行结果,这样可以边设计、边运行,对结果不满意再设计、再运 行,直至达到满意的效果。设计查询工作完成并保存查询文件后, 可利用菜单选项或命令运行查询文件。 (1)在查询设计器中直接运行。在查询设计器窗口,选择“查询” 菜单中的“运行查询”选项,或单击常用工具栏的运行按钮,即 可运行查询。 (2)利用菜单选项运行。在设计查询过程中或保存查询文件后,单 击“程序”菜单中的“运行”选项,打开“运行”对话框。选择 要运行的查询文件,再单击“运行”按钮,即可运行文件。 ( 3) 在命令窗口中执行运行查询文件的命令,也可运行查询文件。命令 格式是: DO \[路径\] <查询文件名.扩展名> 值得注意的是,命令中查询文件必须是全名,即扩展名不能省略。 针对上面建立的查询文件,对其进行
Visual FoxPro
VF
isual oxPro
1
Visual FoxPro
VFP可以方便地从一个或多个表中提取所 需要的数据,可以通过设计相应的查询或视图 来实现。 查询与视图的区别: 从检索数据角度来说两者基本相同,从使 用角度来说两者有本质的区别。查询和视图都 是从一个或多个表文件或视图中提取用户所需 要的数据,但查询基于查询结果要创建一个查 询文件(.qpr),而视图不产生独立文件,是 以逻辑表文件保存在数据库中。
2
Visual FoxPro
(1) 查询具有不同输出去向的功能,用户可根 据自己的需要,选择不同的输出去向,但视 图不具备这样的功能。 (2) 利用视图可修改数据,并可将修改后的数 据通过SQL发送到原表文件,即可修改原表 文件的记录数据,但查询不具备这样的功能 (3) 查询不依附于任何数据库和表文件的存在 而存在,是完全独立的。但视图只能存在于 数据库中,是不能独立的。
VFP第四章考点 查询与视图

考点4:表之间的联接类型及含义
• • • • 内联接(Inner Join):默认联接状态 左联接(Left Outer Join) 右联接(Right Outer Join) 完全联接(Full Join)
考点5:交叉表查询的概念与设计
• 交叉表查询:以电子表格形式显示数据的查询。 • 打开待查询的数据表 → 从文件菜单中单击新建 → 在新建对话框中选择查询并单击向导 → 选择 交叉表向导 → 从单张表中选取字段 → 设计布局 → • 加入总和信息 → 选择查询结果的保存方式 → 给 出查询文件名并选择保存位置 → 查询结果显示在 查询窗口中。 • 注意:不是任何表都适宜采用交叉表的形式。
考点11:视图的打开
打开视图文件并浏览: OPEN DATABASE 数据库名 • USE 视图文件名 • BROWSE • 修改视图MODIFY VIEW 视图文件名 • 视图重命名RENAME VIEW 原视图文件名 TO 新视图文件名 • 删除视图DELETE VIEW 视图文件名
查询和视图的区别和联系
第四章考点 查询与视图
考点1:查询的概念
• 查询:就是向一个数据库发出检索信息的请求, 从中提取符合特定条件的记录。 • 查询文件:即保存实现查询的SELECT-SQL命令 的文件。查询文件保存时,系统自动给出扩展 名.qpr;查询被运行后,系统还会生成一个编译 后的查询文件,扩展名为 .qpx。 • 查询结果:通过运行查询文件得到的一个基于表 和视图的动态的数据集合。查询结果可以用不同 的形式来保存。查询中的数据是只读的。 • 查询的数据源:可以是一张或多张相关的自由表、 数据库表、视图。
考点6:视图的概念
• 4) 视图的数据源可以是自由表、数据 库表或另一个视图; • 5)视图的数据是从基表中提取出来的, 本身并不保存数据;
vf中查询与视图

查询的修改
① 选择【文件】|【打开】命令,在“打开” 选择【文件】 打开】命令, 打开” 对话框中,选择所要修改的查询文件,单 对话框中,选择所要修改的查询文件, 击“确定”按钮,进入“查询设计器”窗 确定”按钮,进入“查询设计器” 口中修改。 口中修改。 ② 在命令窗口中,键入: 在命令窗口中,键入: MODIFY QUERY <查询文件名> <查询文件名 查询文件名>
查询的数据源可以是自由表、数据表或视图。 查询的数据源可以是自由表、数据表或视图。
查询的设计过程
在创建查询时,用“查询向导”或“查询设计器” 查询向导” 查询设计器” 在创建查询时, 创建查询。通常可以遵循以下六个步骤来创建查询。 创建查询。通常可以遵循以下六个步骤来创建查询。 (1)添加数据源,选择所需的表或视图。 添加数据源,选择所需的表或视图。 (2)选择在查询结果中需要的字段。 选择在查询结果中需要的字段。 (3)设置查询记录的条件。 设置查询记录的条件。 (4)设置排序及分组条件来组织查询结果。 设置排序及分组条件来组织查询结果。 (5)选择查询输出类别,可以是报表、表文件、 选择查询输出类别,可以是报表、表文件、 图表、浏览窗口和表文件等等。 图表、浏览窗口和表文件等等。 (6)运行此查询。 运行此查询。
视图与查询的异同点: 视图与查询的异同点:
视图与查询在功能上有许多相似之处, 视图与查询在功能上有许多相似之处,但又 有各自特点,主要区别如下: 有各自特点,主要区别如下: 功能不同: 功能不同:视图可以更新字段内容并返回 源表,而查询文件中的记录数据不能被修改。 源表,而查询文件中的记录数据不能被修改。 从属不同: 从属不同:视图不是一个独立的文件而从 属于某一个数据库。查询是一个独立的文件, 属于某一个数据库。查询是一个独立的文件, 它不从属于某一个数据库。 它不从属于某一个数据库。
VFP数据查询与视图

5.1 创建查询1. 查询的概念查询:就是向一个数据库发出检索信息的请求,从中提取符合特定条件的记录。
查询文件:即保存实现查询的SELECT-SQL命令的文件。
查询文件保存时,系统自动给出扩展名 .qpr;查询被运行后,系统还会生成一个编译后的查询文件,扩展名为 .qpx。
查询结果:通过运行查询文件得到的一个基于表和视图的动态的数据集合。
查询结果可以用不同的形式来保存。
查询中的数据是只读的。
查询的数据源:可以是一张或多张相关的自由表、数据库表、视图。
2. 用查询设计器创建查询基本步骤:打开查询设计器→ 添加创建查询所基于的数据表→ 定义输出内容→ 设置联接、筛选、排序、分组条件→ 选择查询结果的输出形式→ 保存查询文件→运行查询。
(1)打开查询设计器方法1:从文件菜单或工具栏上单击新建→ 查询→ 新建文件→ 进入查询设计器方法2:当所用到的数据表已在项目中时,从项目管理器窗口中单击数据→ 查询→ 新建→ 新建查询→进入查询设计器方法3:从命令窗口中输入命令:create query 查询文件名& 创建新查询modify query 查询文件名& 修改已存在的查询(2) 定义查询的输出内容单击字段选项卡→ 从可用字段列表框中单击所需字段(当输出的列不是直接来源于表中的字段时,单击函数和表达式框边的… 按钮,打开表达式生成器,构造出所需的表达式)→ 单击添加按钮→ 所需字段自动出现在选定字段框中。
(3) 设置查询的筛选条件筛选条件决定将哪些记录显示出来。
在筛选框中构造筛选条件表达式时,要注意在实例框中输入不同数据类型时的格式:1) 字符串可以不带引号(当与源表中的字段名相同时才用引号);2) 日期型数值要用{ }括起来;3) 逻辑型数据两侧要带 .号,如 .T.,.F.(4) 设置查询结果的排序依据排序决定查询输出结果中记录显示的顺序。
设置方法:单击排序依据→ 从选定字段框选中字段→ 选择升序或降序→ 单击添加。
VF教程第3章查询与视图

3.3 查询与视图的区别
视图与查询在功能上有许多相似之处,但又有各自特点,主要区别如下: 功能不同:视图可以更新字段内容并返回数据源表,而查询文件中的记 录数据不能被修改。 从属不同:视图不是一个独立的文件而从属于某一个数据库。查询是一 个独立的文件,它不从属于任何数据库。 访问范围不同:视图可以访问本地数据源和远程数据源,而查询只能访 问本地数据源。 输出去向不同:视图只能通过窗口浏览和更新,而查询可以选择多种去 向,如表、图表、报表、标签、窗口等形式。 使用方式不同:视图只有所属的数据库被打开时,才能使用。而使用查 询文件时不必打开数据库。
【例5-2】使用“教学”数据库中的“学生”表,设计一个名为“学生成绩 查询.QPR”的查询文件。利用分组功能统计平均入学成绩在500分以上的各 专业学生的平均入学成绩,查询结果包含专业和平均成绩两个字段,最后将 查询结果存放到表“学生成绩.DBF”中。
第5章 查询与视图
3.1.3 查询向导
❖ 1.“文件→新建→新建对话框→查询→向导”。 ❖ 2.在“项目管理器→查询选项→新建→新建查询对话框→
第5章 查询与视图
“钥匙”表示关键 字“铅笔”更新
浏览视图
视图是一个虚拟的表,浏览视图中的记录和浏览表中记录的操作完全相同。
在视图的浏览窗口中,将姓名“李小华”改为“李晓华” 。
第5章 查询与视图
3.2.4 有关视图的常用命令
1.定义视图命令
CREATE VIEW <视图名> AS <SELECT 语句>
第5章 查询与视图
3.1.2 运行查询
❖ 在查询设计器空白处单击右键,在弹出菜单中选择“运行 查询”命令;
❖ 选择“查询→运行查询”命令: ❖ 在命令窗口中键入DO<查询文件.qpr>; ❖ 单击常用工具栏上的“运行”按钮。
vf试图与查询

同
视图与查询 视图与表 1、有更新条件,可修改数据源并且 回存到数据表中2、无查询去向,其 查询结果同一般的数据表文件一 样,可以被当做数据表文件来使用3 1、为打开的视图建立索引,但 视图 、视图以数据库的一部分而保存, 是此索引是临时的,关闭视图 不单独生成文件,且只有在包含该 的同时索引自动删除,这与表 视图的数据库打开时,才能使用视 不同2、视图的建立和删除只影 图 响视图本身,不影响对应的基 1、无更新条件,其查询结果是只读 本表 的,不能回存2、有查询去向,其执 查询 行结果可以存储成多种数据格式3、 其结果以qpr为扩展名的文件单独存 在于磁盘中 可以更新其中的信息,并将更 本质都是SQL语言中的select查询语句;可以 新结果永久保存到磁盘上。操 用来从一个或多个相关联的表中迅速提取符合 作几乎相同,如可以使用浏览 一定条件的信息,其目的都是从数据中迅速获 窗口显示修改记录,可以使用 得所需要的结果 use命令打开关闭
几乎都可以应用在视图上,例如:
除,这与表是不同的。
建立好的视图是数据库的浏览窗口显示和修改视图中的记录。 2)使用USE命令打开或关闭视图。 3)为打开的视图建立索引,但是此索引是临时的,关闭视图的同时索引自动删除,这与表是不同的。 4)以视图为数据源创建新的查询、视图或表单、报表等。 例如打开上例中创建的ST1: USE ST1 BROWSE USE &&关闭视图
VF第5章 查询与视图

查询设计器的操作界面
1)"字段"选项卡,指定所要查询的数据,这时可以 单击 "全部添加" 选择所有字段,也可以逐个选择字 段 "添加";在 "函数和表达式" 编辑框中可以输入或 编辑计算表达式。 2)"联接" 选项卡,编辑数据源之间联接条件。 3)"筛选" 选项卡,指定查询条件。 4)"排序依据" 选项卡,指定排序字段和排序方式。 5)"分组依据" 选项卡,分组。 6)“杂项” 选项卡,指定是否要重复记录(对应于 DISTNCT)及列在前面的记录(对应于TOP短语)等。
查询输出定位
表:将查询结果保存在一个命名的表中。 图形:查询结果可用于 Microsoft Graph
(Graph是包含在VFP中的一个独立应用程序)。
屏幕:在VFP主窗口或当前活动输出窗口中显 示查询结果。 报表:将查询结果输出到一个报表文件( .frx)。 标签:将查询结果输出到一个标签文件( .lbx)。
例1:建立一个含有仓库号、职工号、城市和工资信 息的查询
1)打开查询设计器,选择仓库和职工两个表;在 “联接条件”窗口中,确定联接类型:内部,后单 击 [确定] 按纽;关闭 ”添加表或视图”窗口。
2)从 "可用字段" 中顺序选择仓库表的仓库号、职工 表的职工号、仓库表的城市和职工表的工资字段, 并把它们添加到"选定字段"中。 3)按Ctrl+Q键、单击工具栏中的运行按钮“!”或 者选择 “查询” 菜单下的 “运行查询”,立刻运 行查询并看到查询的结果。
视图设计器和查询设计器的使用方式几 乎完全一样。有以下几点不同: 1)查询设计器的结果是将查询以qpr扩展名 的文件保存在磁盘中;而视图设计完后,在 磁盘上找不到类似的文件,视图的结果保 存在数据库中。 2)由于视图是可以用于更新的,所以它有更 新属性需要设置,为此在视图设计器中多 了一个"更新条件"选项卡。 3)在视图设计器中没有 "查询去向" 问题。
Visual FoxPro VF 第7章 查询与视图(1)

• 注意:视图与查询最大的区别:视图是可 更新的,而查询不可以; • 查询有“查询去向”功能,可视图没有。
• 05-4考题: • 19、在Visual FoxPro中,关于查询和视图的正确描述 是______。 • A、查询是一个预先定义好的SQL SELECT语句 文件 • B、视图是一个预先定义好的SQL SELECT语句 文件 • C、查询和视图是同一种文件,只是名称不同 • D、查询和视图都是一个存储数据的表 • 30、在Visual FoxPro中,以下关于视图描述中错误的 是______。 • A、通过视图可以对表进行查询 • B、通过视图可以对表进行更新 • C、视图是一个虚表 • D、视图就是一种查询
• 33、删除视图myview的命令是______。 • A、DELETE myview VIEW • B、DELETE myview • C、DROP myview VIEW • D、DROP VIEW myview • 07-4考题: • 15、在Visual FoxPro中,以下关于查询的描述正 确的是______。 • A、不能用自由表建立查询 • B、只能用自由表建立查询 • C、不能用数据库表建立查询 • D、可以用数据库表和自由表建立查询
• 2、视图
• 如:CREATE VIEW e_w AS SELECT 职 工号,仓库号 FROM 职工
– 视图是一个定定的虚拟表,可以是本地的、远程的 或带参数的。 – 视图可引用一个或多个表,或引用其他视图。 – 视图是可更新的。 – 在关系数据库中,视图也称作窗口,即视图是操作 表的窗口,可以把它看作是从表中派生出来的虚表 (依赖于表,不独立存在)。 – 视图是数据库中的一个特有功能,只有在包含视图 的数据库打开时,才能使用视图。 – 视图一经建立就基本可以像基本表一样使用,适用 于基本表的命令基本都可以用于视图。 – 视图的建立:
VF06查询和视图

2、用“查询向导”创建查询
(1)打开“查询向导”。 (2)在“向导选取”对话框中选择要使用的向导类型。 (3)单击“确定”按钮,弹出“查询向导”窗口,选 择查询时所用的字段,单击“下一步”按钮。 (4)在“查询向导步骤3-筛选记录”中设置记录筛选 条件,单击“下一步”按钮。 (5)在“查询向导步骤4-排序记录”中设置排序的字 段和排序方式,单击“下一步”按钮。 (6)在“查询向导步骤5-完成”中选择“保存查询”, 单击“完成”按钮,在“另存为”对话框中输入查询 名称,保存查询。
6.2 查询
“查询” 是VFP支持的一种数据库对象,或者说
是VFP为方便检索数据提供的一种工具或方法。
6.2.1 建立查询 在VFP中利用“查询设计器”和“查询向导”可以 方便地设计查询,但它们的基础是SQL SELECT语 句。
1、利用“查询设计器”创建查询
2、用“查询向导”创建查询
1、利用“查询设计器”创建查询
“SQL WHERE 子句包括”框中的各选项的含义如下: (1)关键字段:当基本表中的关键字字段被改变时, 则更新失败。 (2)关键字和可更新字段:当基本表中任何被标记 为可更新的字段被改变时,则更新失败。 (3)关键字和已修改字段:当在视图中改变的任一 字段的值在基本表中已被改变时,则更新失败。 (4)关键字和时间戳:当远程表上记录的时间戳在 首次检索之后被改变时,则更新失败。此项选择 仅当远程表有时间戳列时才有效。
6.3 视图
根据视图中数据来源的不同,视图可以分 为本地视图和远程视图。 创建视图和创建查询的过程相类似,主要 的差别在于视图是可以更新的,而查询是 不可以更新的。如果想从本地或远程表中 提取一组数据,并且想更新这组数据,就 需要使用视图。
VFP第五章 查询与视图

利用视图向导创建本地视图
用本地视图向导创建本地视图,可采用以下方法:
方法一:“工具”菜单向导全部本地视图向导
方法二:“文件”菜单新建视图向导 方法三:项目管理器选定数据库本地视图新建 视图向导 方法四:数据库设计器数据库菜单新建本地视图 视图向导
利用视图向导创建本地视图
1. 当视图使用的数据源是当前数据库中的表或存在的 视图,则所建立的视图是本地视图; 2. 当数据源采用的是当前数据库之外的其他数据,包 括在当前VFP环境下建立的其他数据库和表,以及 其他的ODBC数据源,则建立的是远程视图。 若希望针对数据库服务器上的ODBC数据源进行 查询,则应该建立远程视图。 所谓ODBC是Open Database Connectivity的 缩写,即开放式数据库连接。它是用于数据库服务 器的一种标准协议(规则),它向应用程序提供访 问数据库服务器上所存放数据库的接口,以便应用 程序访问。
(5)执行查询
① “查询”菜单“运行查询”命令 ②在查询设计器窗口单击右键,快捷菜单“运行 查询”命令 ③ “程序”菜单“运行”命令→ 打开“查询文 件” →“运行”按钮 ④ 命令窗口中执行命令“DO <查询文件名.qpr>
(6) 查询的保存 查询窗口关闭前,以下三种方法可用来保存 查询设置: ① 按Ctrl+W ② 单击窗口右上角“关闭”按钮、双击窗 口左上角、或单击窗口左上角后选定“关闭” 命令,均会出现“确认”对话框 ③ “文件”菜单“保存”命令
二、 将查询结果以图形方式输出
例1 生成“zhggz”的表单,以图形方式输出。 S1:打开职工.dbf,创建一个新查询 S2:设置查询去向为“图形” S3:单击工具栏的“运行”按钮,弹出图形向导的 “步骤2——定义图形布局”对话框 S4:确定数据系列、图例: S4.1:数据系列:将要输出的数值型字段拖到“数 据系列”列表框,可以有多个数据系列。如:工资 等 S4.2:图例:将要显示的字符型字段拖到坐标轴图 形框。如:职工号.
vf第五章查询和视图

联结>选项卡和 筛选>选项卡 二、<联结 选项卡和 筛选 选项卡 联结 选项卡和<筛选 联结条件和筛选条件都可以用来选择记录: 联结条件和筛选条件都可以用来选择记录:二者都先比 较值,然后选出满足条件的记录。 较值,然后选出满足条件的记录。但筛选是将字段值和筛选 值进行比较, 值进行比较,而联接是将一个表中的字段值和另一个表中的 字段值进行比较 。 条件〉列表中选择比较的类型: 〈条件〉列表中选择比较的类型: =: 指定字段值相等。 : 指定字段值相等。 ==:指定字段与实例文本必须逐字符完全匹配 指定字段与实例文本必须逐字符完全匹配。 ==:指定字段与实例文本必须逐字符完全匹配。 Like:指定字段包含与实例文本相匹配的字符。 :指定字段包含与实例文本相匹配的字符。 Is NULL:指定字段包含 NULL值。 : 值 Between:指定字段大于等于实例文本中的低值并小于等 : 于实例文本中的高值。这两个值用逗号隔开。 于实例文本中的高值。这两个值用逗号隔开。 In:指定字段必须与实例文本中逗号分隔的几个样本中的 : 一个相匹配。 一个相匹配。
2012-3-7 10
5.2.6 创建交叉表查询 (自学 自学) 自学
可以在一个类似电子数据表中的交叉表中显示查询结果。 可以在一个类似电子数据表中的交叉表中显示查询结果。 使用[销售情况表 建立交叉表查询: 销售情况表]建立交叉表查询 例:使用 销售情况表 建立交叉表查询: 拖动[产品名称 产品名称]到 行 , 部门 部门]到 列 , 一季度 一季度]到 数据 数据] 拖动 产品名称 到[行], [部门 到[列],[一季度 到[数据 加入总结信息]对话框中通过从 总结” 对话框中通过从“ 在[步骤 3 – 加入总结信息 对话框中通过从“总结”和“分 步骤 类汇总”区域选择合适的项, 类汇总”区域选择合适的项,可以在交叉表查询结果中的最右 边添加一个包含总结信息和小计的列。 边添加一个包含总结信息和小计的列。 选择“保存交叉表查询” 保存交叉表查询后, 选择“保存交叉表查询” 。保存交叉表查询后,可以象其 它查询一样, 查询设计器”中打开并修改它。 它查询一样,在“查询设计器”中打开并修改它。 也可以使用〈成绩〉表建立交叉表查询: 也可以使用〈成绩〉表建立交叉表查询: 拖动“学号” 课程代码” 拖动“学号”到“行”, “课程代码”到“列”, “期 数据” 末”到“数据” 。 将会有许多[NULL]数据) 数据) (将会有许多 数据
VFP课件查询与视图

查询结果排序
排序决定了查询输出结果中记录或行的先后顺序,我们可以通
过“排序依据”选项卡设置查询的排序次序,方法同在用查询向
导设计查询介绍的一样,首先从“选定字段”框中选定要使用的
字段2024/2/24
16
并把它们移到“排序条件”框中,然后利用“排序选项”(从 中选择升序或降序)来设置排序条件。本例中设置Student.学号, 升序为排序依据。
选择筛选字段 设置筛选条件 输入筛选实例 是否区分大小写 设置条件逻辑
在字段名下的下拉选择框中选择“Student.性别”,在“条件”
下的下拉选择框中选择“=”,在“实例”下的文本框中输入.T.,
则查询所有的男生。
2024/2/24
15
在“逻辑”下的下拉选择框中选择“AND”,然后再在字段名下 的下拉选择框中选择“Student.学号”,在“条件”下的下拉选 择框中选择“In”,在“实例”下的文本框中输入“9904,9804” (请注意中间的“,”是En状态下输入的)。
单击
单击【预览】按钮可以显示查询结果。根据要求,设置条件如上图。其中,
虽然表中没有年级字段,但可通过“学号”得到年级(学号的前二位为年
级)202。4/2/24
6
——
查 询 向 导
记
录
排
序
调整排 序顺序
移动按钮
选择排序字段 单击【添加】 选择排序方式 单击
2024/2/24
7
查询向导——限制记录
说明:查询结果中所包含
2024/2/24
14
பைடு நூலகம்
筛选记录
选择表中符合条件的一部分记录而不是全部记录是查询的重要 任务。此例要求从所有学生的信息中选出“学号”前四位为 “9904”和“9804”的所有男生,可以利用查询设计器中的“筛选” 选项卡。“筛选”选项卡可确定用于选择记录的字段和比较准则, 以及输入与该字段进行比较的示例值。
VFP计算机二级 第5章 查询与视图

GROUP BY
——定义查询分组
按指定字段进行分组、汇总。 在分组时如果包含条件,用HAVING后的关 系表达式或逻辑表达式表示。
例:
SELECT Rsda.编号,Rsda.性别,Rsda.婚否, Rsda.基本工资,SUM(Rsda.基本工资) AS 工资合计 FROM 人事管理!rsda GROUP BY Rsda.性别,Rsda.婚否 HAVING Rsda. 基本工资>=500
(9)运行查询 (10)保存查询文件
查询文件的扩展名为.QPR。
例:查询XS1.DBF学生数据表中性别、贷
款总额,人数,平均欠款额。(见“xb+
dkje查询.qpr”)
二、执行查询
(1)在[查询设计器]中,选择系统[查询]菜单的[运行查 询]命令,或右键快捷菜单的[运行查询]命令。 (2)打开某项目在[项目管理器]中,选择某数据库并将 其展开,选择该数据库的某查询,再选择[运行]按钮。
(5)确定排序方式
对于查询结果可以将记录按一定顺序排列。 如果 不设置筛选条件,在此可完成对数据表所有记录的 排序,并可将结果输出到另一表中。
(6)对查询结果进行分组
对于查询结果可以按指定字段依次对它们进行分 组操作。分组操作就是将同类的记录合并、汇集到 一个记录中(同类最后一条记录),进行如SUM (求和)、COUNT(统计记录数)、AVG(求平 均值)等操作。
(7)限制记录
如果不希望查询显示整个表的所有记录。选择
部分记录显示,只有选择了排序次序后,才能
在排序的结果中显示部分记录。
在“部分类型”中可选择,是按“所占记录百
分比”选择“数量”,还是按“记录号”选择
VF 查询和视图

查询和视图查询时预先定义好的一个SQL SELECT语句,可以反复或直接使用,是从表或视图中提取满足条件的记录1、建立查询(文件扩展名.QPR,是一个文本文件,可以编辑建立)命令方式:CREATE QUERY——查询设计器建立查询菜单方式:文件——新建——查询——查询设计器建立查询……查询设计器中的选项卡:字段、联接、筛选、排序依据、杂项同SQL语句:SELE 字段FROM 表1 INNER JOIN 表2 ON WHERE 条件ORDER BY1)“字段”选项卡对应于SELE 短语2)“联接”选项卡对应于3)“筛选”选项卡对应于WHERE短语4)“排序依据”选项卡对应于ORDER BY5)“分组依据”选项卡对应于GROUP BY6)“杂项”选项卡对应于如TOP N(前几条记录)或N PERCENT(百分比),去掉重复记录(DIST)等注意:怎样用活输入和编辑计算表达式?其他:查询去向设置要点查询建立后保存文件名.QPR,是一个文本文件要点(加扩展名)如已经建立好一个查询文件CHAXUN.QPR 运行DO CHAXUN.QPR如:新建一个查询CHAXUN,查询考试成绩大于等于60分的学生的学号,姓名,课程名,成绩,结果按学号升序,保存到数据表ABC.DBF示范操作:用查询设计器设计,运行查询并显示结果编写SQL语句可以借助查询设计器查询设计器的局限性:复杂的查询不能用查询设计器设计自己也可以写SQL语句是:SELE 学生.学号,姓名,课程名,成绩FROM学生INNER JOIN选课INNER JOIN课程;ON选课.课程号=课程.课程号ON 学生.学号=选课.学号WHERE成绩>=60;ORDER BY学生.学号INTO TABLE ABC或SELE 学生.学号,姓名,课程名,成绩FROM学生,选课,课程;WHERE 选课.课程号=课程.课程号AND 学生.学号=选课.学号;AND成绩>=60;ORDER BY学生.学号INTO TABLE ABC视图设计器1、基本同查询设计器,兼有“表”(更新)和“查询”(一个或多个相关表中提取有用信息)的特点,虚拟表,但不可以用MODI STRU 命令修改结构2、建立视图CREA VIEW 打开视图设计器建立视图菜单方式:文件——新建——视图——视图设计器建立视图可以用SQL命令直接建立视图:CREA VIEW ……AS……要点:视图存在于数据库中(只有在有打开数据库的情况下才能建立视图)视图和查询的区别:(要点)1、找不到视图文件,其结果必须保存在数据库中2、多“更新条件”选项卡3、没有“去向”的问题。
查询与视图VFP课件

查询与视图
一 创建查询(打开查询设计器): 创建查询(打开查询设计器) 1.鼠标操作:“文件” →“新建” →“查询” →“新 1.鼠标操作:“文件” 建文件夹” 2. 命令操作: CREATE QUERY 查询文件名
二
介绍“查询设计器”
查询设计器下部分的窗口中有几个选项卡,其含义简介如 下: “字段”:对应于SELECT短语,用来选定包含在查询结果 中的字段 图之间的联接关系; “筛选”:对应于WHERE短语,用于指定查询条件; “排序依据”:对应于ORDER BY短语,用来指定排序的 字段和排序方式;
BY和HAVING短语,用于分组; “杂项”:可以指定是否要重复记录(DISTINCT)以及列在 前面的记录(TOP短语)
“分组依据”:对应于GROUP
三 查询的输出
鼠标操作:“查询” →“查询去向”
四 运行查询(先保存再运行)
鼠标操作: 单击“查询”/“运行查询”,或 “!”按钮 。 单击“查询”/“运行查询”,或 命令操作:Do 命令操作:Do 查询文件名 :查询文件名中一定要给出查询文件的扩展名.qpr :查询文件名中一定要给出查询文件的扩展名.qpr :单击“查询”/“查看SQL”,Select-SQL命令将文本窗口 :单击“查询”/“查看SQL”,Select-SQL命令将文本窗口 中显示
一
创建视图(打开视图设计器)
鼠标操作:打开 “数据库设计器” “文件”/“新建” “文件”/“新建” “视图” 命令操作:CREATE 命令操作:CREATE VIEW 视图文件名
数据库表,创建视图。
VF查询与视图

填空 1、为“成绩”表中“总分”字段增加有效性规则:“总分必须 大于等于0并且小于等于750”,正确的SQL语句是: TABLE 成绩 ALTER 总分 总分>=0 AND 总分 <=750
2、为“学生”表的“年龄”字段增加有效性规则“年龄必须在18~45岁之间” 的SQL语句是 ALTER TABLE学生ALTER年龄 年龄<=45 AND 年 龄>=18 2、在SQL语言中,用于对查询结果计数的函数是 。 3、在SQL的SELECT查询中,使用 4、使用SQL Select语句进行分组查询时,有时要求分组满足某个条件时才查 询,这时可以用 子句来限定分组。 5、设有SC(学号,课程号,成绩)表,下面SQL的SELECT语句检索成绩高于 或等于平均成绩的学生的学号。 SELECT 学号 FROM SC WHERE 成绩>=(SELECT FROM SC)
空值查询
表中值为空表示没有确定内容,当要查询的时候: repl 供应商号 with null,订购日期 with null for 职工号 ="E4 " 然后才能用IS NULL查询,考试的时候不需要设置。
当需要本仓库的职工的工资和本仓库的平均工资 进行比较时候
自身连接和嵌套查询 sele * from 职工 A where 工资>(sele avg(工资) from 职工 B where A.仓库号=B.仓库号) 自身连接:将同一关系与自身连接。 注意:应用的原因:根据出自同一个字段,值域相同 的两个进行比较。属性是“包含”与“被包含”的关 系。
5.在Visual Foxpro中,如果要将学生表S(学号,姓名,性别,年 龄)中“年龄”属性删除,正确的SQL命令是 。 A)ALTER TABLE S DROP COLUMN 年龄 B)DELETE 年龄FROM S D)ALTER TABLE S DELETE COLUMN 年 龄 D)ALTER TABLE S DELETE年龄 6.在Visual Foxpro的数据库表中只能有一个 。 A)候选索引 B)普通索引 C)主索引 D)惟一索引 7. 设有学生表 S( 学号 ,姓名,性别 , 年龄),查询所有年龄小于等于 18 岁的女同学,并按年龄进行降序生成新的表WS,正确的SQL命令是 。 A)SELECT*FROMS WHERE性别=“女”AND年龄<=18ORDER BY 4 DBSC INTO TABLE WS B)SELECT*FROMS WHERE 性别 = “女” AND 年龄 <=18ORDER BY 年龄 INTO TABLE WS C)SELECT*FROMS WHERE 性别 = “女” AND 年龄 <=18ORDER BY 年龄 DESC INTO TABLE WS D)SELECT*FROMS WHERE 性别 = “女” OR 年龄 <=18ORDER BY 年龄
VFP 第四章 查询和视图

第二节 视图的创建和使用
视图可以从表中提取一组记录,查看、改变这些记录, 并把更新的数据送回到原表中。 视图具有表和查询的共有特点,视图中的源表数据表 称之为“基表”(Base table) 可以创建两种视图:本地视图和远程视图。 远程视图使用SQL语法从远程数据源表中选择信息, 本地视图使用VFP的SQL语法从视图或表中选择信 息,可以将一个或多个远程视图添加到本地视图。 ODBC(open database connectivity)是一种用于数据库 的标准协议,通过他可访问多上 count(*) as 人数, AVG(table2.score) as “均分”; C)进一步的, 如果还想对查询结果进行记录的筛选,如仅想统 计男生或女生的平均分数及人数,可以在满足条 件选项里选择相应的条件,此时SELECT_SQL语 句会加上 having table1.sex=“男” 7)对查询结果的其他设置 A) “杂项”选项卡包含 《有无重复记录》 B)《设置记录的范围》共有:全部 / n个数 / 百分比 三个选项。 8) 运行查询 “!”按钮 / do example1.qpr / 查询->运 行查询 等方法。
第一节 查询的创建和使用
一:查询的本质 1)查询是指向一个数据源发出检索信息的请求,它 依据一定的条件提取特定的记录,查询运行的结 果是一个基于表和视图的动态 的数据集合。 2)创建查询基于的数据源可以是自由表、数据库表、 或另一个视图。并且常常不止一个表——方能显 出查询优势。 3)一个查询是SELECT_SQL语句,一个查询保存为 一个扩展名为 .qpr的文件。文件中保存的是实现查 询的SELECT_SQL语句(程序),而不是查询结 果。查询和视图本质上都是SELECT_SQL命令的 可视化 的设计方法。
VFP第4章 查询和视图

说明:查询文件的扩展名.qpr不可缺省 说明:查询文件的扩展名 不可缺省
注意事项
没有用到的表不要添加。 没有用到的表不要添加。 “分组依据”的设置(什么时候设?如何设?) 分组依据”的设置(什么时候设?如何设?) 分组依据 “筛选”与“满足条件”的区别。 筛选” 满足条件”的区别。 筛选 “前n个(前百分之 个)”时要排序。 前 个 前百分之n个 时要排序。
详细语法格式
SELECT [ ALL | DISTINCT ] ; [ TOP 数值 [ PERCENT ] ; 输出数据项 [ AS 标题 ] ; FROM 数据源表 ; 联接类型 JOIN 表名 ON 联接条件 ; INTO | TO 输出去向 ; WHERE 筛选条件 ; GROUP BY 分组依据 ; HAVING 分组结果筛选条件 ; UNION [ALL] 另一条SELECT-SQL语句 ; ORDER BY 排序依据
基于单个表的查询示例
表中所有教师的工号和姓名。 【例1】显示 表中所有教师的工号和姓名。 】显示JS表中所有教师的工号和姓名 表中学号以“ 开头的学生情况。 【例2】显示 表中学号以“01”开头的学生情况。 】显示XS表中学号以 开头的学生情况 【例3】基于 】基于KC表查询所有不带删除标记且课时 表查询所有不带删除标记且课时 数超过5或课时数少于 或课时数少于3(不包括5和 )的课程。 数超过 或课时数少于 (不包括 和3)的课程。 要求输出字段为: 要求输出字段为:kcdh、kcm、kss、bxk、xf, 、 、 、 、 , 查询结果按kss降序排序 降序排序。 查询结果按 降序排序。 【例4】统计各个系男女教师的人数,输出字段为: 】统计各个系男女教师的人数,输出字段为: xdh、xb、人数。 、 、人数。
vfp的查询和视图

二、视图的创建和使用
视图的概念:把分散在相关表中的数据通过联 接条件把他们收集到一起,构成一张“虚表”。 这张“虚表”就是视图,视图是数据库的一个组 成部分,是基于表的并且可更新的数据集合
视图与查询的区别:视图除了可以用来查询数 据之外,还可以当作表来使用,可以作为数据源, 也可对查询出来的数据进行修改并送回源表中
❖多表查询的创建:步骤 例题 ▪ 若有2张以上的表,在添加时一定要注意先后次 序,“纽带表”要放在两张“父表”之间 ▪ 若已进行了永久性关系的设置,则无须进行联接 ▪ 修改联接条件可在“查询设计器”—“联接”卡 片中进行 ▪ 联接条件和筛选条件类似,都是选出符合条件的 记录;不同的是筛选是将字段值和筛选值进行比 较,而联接条件是将一张表中的字段值与另外一 张表中的字段值进行比较
❖查询时会考到的最难的程度如下例:
查询信息管理系中所有成绩在480分以上,并且各门课程的成
绩不低于70分的学生。要求在查询的结果中包含学号,姓名, 总分,均分,最低分,并按照总分从高到底排列
❖ 一部分查询的练习 1. 查询学生的学号,姓名,系名,总分和平均分, 按照系名升序排序,同一个系的学生按照总分 降序排序。 2. 查询每个系每门课程的总分和平均分,要求输 出课程名,课程代号,系名,每个系的平均成 绩和总成绩,按课程代号升序排序 3. 查询各个系每位教师的课时数,要求输出系名, 工号,姓名,课时数,并按系名升序排序,同 一个系的教师按照工号升序排序 4. 查询计算机科学系各位教师的课时数,要求输 出工号,姓名,系名,课时数,并按工号降序 排序,并且将查询信息保存为表,表名为:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
交叉表设计向导——字段选取
说明:在这 一步先在“ 数据库和表 ”一选择一 个数据库, 再选择用以 建立交叉表 的数据表, 然后再从可 用字段列表 框中选择要 用的字段, 交叉表只用 三个字段, 这一步可多 选 字段。
单个字段选定按钮
单击 选择数据库和表 选定字段
全部字段选定按钮 单个字段撤消按钮 全部字段撤消按钮
单击
查询向导——字段选取
选择 XGGL数 据库中的 Student表, 并将该表 中的所有 字段添加 到“选定 字段”列 表框中。
单击
查询向导——筛选记录
从中选择 Student.系部 代号 在此输入值 取默认值 04 从中选择 “包含” 98 在此输入值 单击 单击【预览】按钮可以显示查询结果。根据要求,设置条件如上图。其中, 虽然表中没有年级字段,但可通过“学号”得到年级(学号的前二位为年 级)。
返回
查询文件设计与创建步骤
要设计一个查询文件,首先必须明确查询的目的 是什么,即想要得到哪些数据,并以什么方式存在; 或者想要得到满足某些条件的特定记录,或者想要知 道某些记录的字段值组合成的表达式按某一方式输出。 明确了输出的数据后,就可以开始设计查询了,一般 要通过以下几个步骤进行: (1)启动查询设计器; (2)选择出现在查询结果中的字段; (3)设置选择条件来查找可给出所需结果的记录; (4)设置排序或分组选项来组织查询结果; (5)选择查询结果的输出类型:表、报表、浏览等; (6)运行查询。
3.3.1 确定各表间的联接关系
示例:创建一个含有多个表中信息的查询。在XGGL数据库 中有三个表:Student、Grade、Courses,现在想知道学号 前四位是9904和9804的所有学生考试的成绩。 当在多个表或视图间进行查询时,需要指出这些表或视 图间的联接关系。 操作方法如下: 启动查询设计器,在“添加表和视图”对话框中从“数据 库”中选择GXGLXT库,在“数据库中的表”中选择Student 表,单击【添加】按钮,再选择Grade表,再单击【添加】,
此时系统自动弹出一个“联接条件”,询问 是否根据两表中都有的“学号”字段建立内部联 接,单击“确定”,两表间就有了一条连线,代 表它们之间的联接。然后再添加Courses表,最后 关闭对话框。
在“查询设计器”中选择“联接”选项卡,如图:
在VFP6中表间的联接有四种类型,分别是: (1)Inner Join:内部联接,指定只有满足联接条件的记录包含在 结果中,此类型是默认的,也是最常用的; (2)Right Outer Join:右联接,指定满足联接条件的记录,以及 满足联接条件右侧的表中记录(即使不匹配联接条件)都包含在 结果中; (3)Left Outer Join:左联接,指定满足联接条件的记录,以及满 足联接条件左侧的表中记录(即使不匹配联接条件)都包含在结 果中; (4)Full Join:完全联接,指定所有满足和不满足联接条件的记 录都包含在结果中。 如果想修改各表间的联接,双击查询设计器上部窗口表之间 的连线,系统将弹出“连接条件”对话框;或者通过打开查询设 计器下部的“联接”选项卡进行。一般不应随便更改连接条件, 不然会与实际数据间的关系不符。
本示例中选择“求和”运算。 如果不想加入总结信息,可 以在“分类汇总”中选择 “无”。
单击
交叉表向导——完成
将交叉表查询以文件的 形式(.QPR)保存到一 个指定的目录中。 将交叉表查询保存到一 个指定的目录中并运行 该文件。
将交叉表查询保存到一个指定的目录中并打开“查询设计器”修改 它。 对于值为空的记录是否以.NULL.填充 说明:系统默认值是 “保存交叉表查询”和 “显示NULL值”。
3.5数据库视图的操作
3.6利用视图更新数据
3.7利用视图处理自由数据
小
返回
结
退出
3.2 用查询向导设计查询
3.2.1 设计单表查询
3.2.2 建立交叉表
返
回
退
出
3.2.1 设计单表查询
查询向导可以引导用户快速设计一个查询。下面将示例使用 查询向导设计一个简单的单表查询:从XGGL数据库的Student 表中查询系部代号为“04”且是99级的所有学生的信息。 操作过程如下:首先从“文件”开始,选择【新建】 -“查 询”,然后单击【向导】按钮,则出现设计查询的方式选择对 话框。
根据建立查询的目的,选择查询结果中应包含的字段。操作方 法与用向导设计查询的方法相同。在本示例中先在“查询设计器” 中选择“字段”选项卡,然后从可用字段列表框中选择:Student. 学号、Student.姓名、Courses.课程名称、Grade.课程成绩,如图。
■从【文件】菜单启动查询设计器 选择系统菜单中的【文件】|【新建】命令,在“新建”对话框 中选中“文件类型”下的“查询”单选项,再单击右边的【新建 文件】按钮,也可启动“查询设计器”; ■使用CREATE QUERY命令也可启动“查询设计器”
查询设计器窗口
查询设计器下部分的窗口中有几个选项卡,其含义简介如下: (1)“字段”:用来选定包含在查询结果中的字段; (2)“排序依据”:用来决定查询结果输出中记录或行的 排列顺序; (3)“联接”:用来确定各数据表或视图之间的联接关系; (4)“筛选”:相当于命令SET FILTER TO,利用过滤的方 法查找一个特定的数据子集; (5)“分组依据”:所谓分组就是将一组类似的记录压缩 成一个结果记录,这样就可以完成基于一组的计算。
(7)<=:即为“字段名”栏中给出的字段的值应小于或等于 “实例”栏中给出的值; (8)Is Null:指定字段必须包含Null值; (9)Between:即为输出字段的值应大于或等于“实例”栏中的 最小值,而小于或等于“实例”栏中的最大值; (10)IN(在…之中):即为输出字段的值必须是“实例”栏 中所给出值中的一个,在“实例”栏中给出的各值之间以逗号分 隔。 此外,“联接”选项卡中的“否”列用于指定.NOT.条件, “逻辑”列用于设置各联接条件和筛选条件之间的逻辑关系 (无、.AND.和.OR.),“大小写”列用于指定是否区分大小写。 下方的“插入”和“移去”按钮择下拉列表框 文件名输入文本框 在“文件名输入文本框”中 输入“Stud_query”后,单击 【保存】按钮,结束查询设 计过程。
文件类型选择下位列表框
在项目管理器中 的“数据”选项 中的查询项下产 生了一个查询文 件
返回
3.2.2 建立交叉表
如果在上文所述的建 立查询的第一步选择 “交叉表向导”,则可 以建立交叉表。下面通 过示例来介绍如何建立 交叉表。用Grade表中 的数据建立一个交叉表, 以显示每个学生所有课 程的总成绩。 Grade表 中的部分数据如: 前面的设计过程同以 上内容,但是在第二步 需要确定交叉表的行和 列。
主讲:杜春敏
查询与视图
学习要点
1、查询向导和查询设计器的使用方法; 2、单表查询和交叉表查询; 3、查询设计器中各选项卡的功能和使用方法; 4、本地视图和远程视图; 5、视图向导和视图设计器的使用方法; 6、使用视图。
第3章 查询与视图
3.2 用查询向导设计查询
3.3 用查询设计器设计查询
3.4 创建视图
返回
在设置筛选条件时,我们应注意如下几点: (1)备注字段和通用字段不能用于设置查询条件; (2)逻辑值的前后必须使用句点号,如.T.; (3)只有当字符串与查询的表中字段名相同时,要用引 号将字符串括起来,否则不需要用引号将字符串括起 来; (4)日期不必用花括号括起来。
3.3.2 选定查询字段
查询向导——完成
将查询以文 件的形式 (.QPR)保 存到一个指 定的目录中。 将查询保存到一 个指定的目录中 并运行该文件。 利用查询向导设计的查询功能有限,可以使用查询设计器修改它。 单击,可以查看查询结果集中的全部数据 结束向导, 完成查询设 计。 打开帮助文件 取消所建立的查询 返回到向导的上一步 单击
单击
按提示操作:从可用字段列表框中将“学号”字 段拖入“行”框,将“课程代号”拖入“列”框, 将“课程成绩”拖入“数据”框。
交叉表查询向导——加入总结信息
说明:这一步的操作,
决定在生成的交叉表中 要加入的一个字段的内 容。 (1)求和:求出对应行 和列的数据字段的和; (2)计数:求出对应行 和列的数据字段的数目; (3)平均值:求出对应 行和列的数据字段的平 均值; (4)最大值:求出对应 行和列的数据字段的最 大值; (5)最小值:求出对应 行和列的数据字段的最 小值。
单击
交叉表向导——定义布局
说明:
(1)行,将要加入到 交叉表中的第一个字 段名,本示例中选择 字段“学号”; (2)列,将要加入到 交叉表中的从第二个 字段开始的若干个字 段的字段名,注意这 些从源表中选择的数 据不能超过254个。本 示例中选择字段“课 程代号”; (3)数据,对应行和 列的运算结果,本示 例中选择“课程成 绩”。
“条件”列表中包含如下几项: (1)=:指字段值与实例相等; (2)LIKE:表示“字段名”栏中给出的字段值与“实例”栏 中给出的文本值之间执行不完全匹配,它主要针对字符类型。 例如,如设置查询条件为“Student.学号 LIKE 9904”,那么诸 如“学号”字段前四位为9904的记录都满足该条件; (3)==:表示在“字段名”栏中给出的字段值与“实例”栏 中给出的文本值之间执行完全匹配检查,它主要是针对字符型。 (4)>:即为“字段名”栏中给出的字段的值应大于“实例” 栏中给出的值; (5)>=:即为“字段名”栏中给出的字段的值应大于或等于 “实例”栏中给出的值; (6)<:即为“字段名”栏中给出的字段的值应小于“实例” 栏中给出的值;
返回
3.3 用查询设计器设计查询
3.3.1 确定各表间的联接关系 3.3.2 选定查询字段 3.3.3 筛选记录 3.3.4查询结果排序 3.3.5 建立分组查询 3.3.6 杂项的设置 3.3.7 定向输出查询结果 3.3.8 运行查询 返 回