搜档网
当前位置:搜档网 › VFP基础教程-创建查询和视图

VFP基础教程-创建查询和视图

VFP基础教程-创建查询和视图
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) 设置查询结果的排序依据

排序决定查询输出结果中记录显示的顺序。

设置方法:

单击排序依据→ 从选定字段框选中字段→选择升序或降序→单击添加。

(5) 设置查询结果的分组依据

分组是指将一组类似的记录压缩成一个结果记录,目的是为了完成基于该组记录的计算,比如:求平均值、总和、统计个数、其中的最大值、最小值等。

几个常用的统计函数

功能求平均值求总和求最大值求最小值统计个数名称AVG()SUM()MAX()MIN()COUNT()

用于分组的字段不一定是选定输出的字段,但分组字段不能是一个计算字段。

可以用满足条件… 来对分组结果进行进一步筛选。

(6)对查询结果的其他设置

可以排除查询结果中所有重复的行,并设置结果的记录范围。

(7)选择查询结果的输出类型

默认情况下,查询结果将输出在浏览窗口中,且其中的数据是只读的。

设置其他输出类型的方法:

打开查询菜单→ 选择查询去向→ 在查询去向对话框中选择一种。一般多选择表或报表。(8)运行查询

在查询设计器打开的状态下,单击常用工具栏上的!按钮或从查询菜单中选择运行查询。其他情况下,可从项目管理器中选中查询文件并单击运行按钮,或从程序菜单中选择执行命令,或从命令窗口中输入: DO 查询文件名。

(9)创建多表查询

打开查询设计器→ 将所需的多个相关表添加进来→设置联接条件→按上面(2)至(8)步进行。

3. 用查询向导创建查询

(1)创建标准查询:

打开待查询的数据表→从文件菜单中单击新建→在新建对话框中选择查询并单击向导→选择查询向导→从单张或多张相关的表中进行字段选取→ 设置筛选条件→设置

排序次序→选择查询结果的保存方式→给出查询文件名并选择保存位置→查询结果显示在查询窗口中。

注意:查询此时得到的数据是只读的,不可以更新。

(2)交叉表查询

打开待查询的数据表→从文件菜单中单击新建→在新建对话框中选择查询并单击向导→选择交叉表向导→从单张表中选取字段→设计布局→加入总和信息→选择查询结果的保存方式→给出查询文件名并选择保存位置→查询结果显示在查询窗口中。

注意:不是任何表都适宜采用交叉表的形式。

(3)用SELECT-SQL命令创建查询

常用的格式:

SELECT表名1. 字段名1 [AS标题名1], 表名1. 字段名2 [AS标题名2], …

FROM 数据库名! 表名1 [,数据库名! 表名2 ] [, 数据库名! 表名3 ]

[TO FILE 文本文件名 | into table | into cursor表文件名 ]

[ WHERE选定条件]

[GROUP BY分组字段名 ]

[HAVING分组中的满足条件 ]

[ORDER BY排序字段名1 [ASC | DESC] [, 排序字段名2 [ASC | DESC] ...]]

示例:

浏览学生中的查询学生 student.qpr :

SELECT 表xs.xh as 学号, 表xs.xm as 姓名, 表xs.xb as 性别, ;

表xs.csrq as 出生日期, 表xs.bj as 班级名称;

FROM 数据test!表xs;

WHERE 表xs.bj =cs1;

ORDER BY 表xs.xh;

INTO TABLE xs

浏览成绩中的按课程查询 sub_cj.qpr :

SELECT 表xs.bj as 班级名称, COUNT(表xs.xh) as 班级人数, AVG(表cj.cj) as 平均分, ;

MAX(表cj.cj) as 最高分, MIN(表cj.cj) as 最低分;

FROM 数据test!表xs, 数据test!表cj, 数据test!表kc;

WHERE 表cj.xh = 表xs.xh;

AND 表kc.kcm = 表cj.kcm;

AND 表cj.kcm = sc1;

GROUP BY 表xs.bj;

ORDER BY 表xs.bj;

INTO TABLE sub_cj

5.2 创建视图

1. 视图的特点

1) 视图是存在于数据库中的一个虚表,不以独立的文件形式保存;

2) 视图中的数据是可以更改的,它不仅具有查询的功能,且可以把更新结果反映到源数据表中;

3) 视图打开时,其基表自动打开,但视图关闭时,其基表并不随之自动关闭;

4) 视图的数据源可以是自由表、数据库表或另一个视图。

2. 用视图设计器创建本地视图

从项目管理器中选择一个数据库→选择本地视图→ 单击新建按钮→选择新视图→添加所需的数据表→在视图设计器中按照与创建查询相同的步骤(2)~(6)建立视图→ 设置更新条件→保存视图→给出视图名称→关闭视图设计器(可以先运行一下看看)。

创建参数化视图:

在筛选页面的实例框中输入:?参数名→从查询菜单中选择视图参数→在对话框中给出参数名并选择参数类型→确定→保存视图→给出视图名称→关闭视图设计器(可以先运行一下看看)。

3. 用视图向导创建本地视图

从项目管理器中选择一个数据库→选择本地视图→单击新建按钮→选择视图向导→选取字段→关联表→记录操作范围→筛选记录→排序记录→选择保存方式→完成。

4. 用CREATE SQL VIEW 命令创建视图

打开数据库,用命令来创建视图:

OPEN DATABASE 数据库名

CREATE SQL VIEW 视图文件名AS SQL-SELECT 语句

例: OPEN DATABASE SJ

CREAT SQL VIEW SCORE AS SELECT SJCJ.XH, SJCJ.CJ ;

FROM SJ!SJCJ WHERE SJCJ.KCH=”计算机基础”

5. 视图的使用

用菜单方式对视图中的记录进行编辑的方法与操作数据表相同。也可用以下命令操作。

视图操作基本命令

打开视图文件并浏览OPEN DATABASE数据库名USE视图文件名BROWSE

修改视图MODIFY VIEW视图文件名

视图重命名RENAME VIEW原视图文件名TO新视图文件名

删除视图DELETE VIEW视图文件名

6.利用视图更新源表数据

可在视图设计器的更新条件页面中进行如下设置来实现对源表数据的更新:

1)从表框中选择想要更新的源表;

2)在字段名框中单击一个字段前关键列 和更新列 ,使其作为主关键字和可更新字段;3)将发送SQL 更新复选框选中

5.3 SQL 语言中的命令语句

SQL是一种日趋流行的标准的数据库系统管理语言,能使数据检索异常地方便、灵活。

VFP5.0支持的7条SQL命令一览表

命令功能示例备注

CREATE TABLE -SQL

创建一个指定字段的表

create table xs (;

xh c(4) default "1201" primary key,;

xm c(6), ; xb c(2) check xb="男" or xb="女" error "性别只能是男或女" default "女",; nl n(2) null )

新表的每个字段由名称、类型、精度、比例、是否支持 NULL 值和参照完整性规则来定义,可从命令本身或数组中获得这些定义。

CREATE

CURSOR-SQL 创建一个临

时表

CREATE CURSOR teacher ;

(TeacherID N(5), Name C(20), Address; C(30),OfficeNo C(8) NULL, Specialty M) ALTER TABLE - SQL

以编程方式修改一个已存在的表的结构。

ALTER TABLE xscj ADD COLUMN kcmc C(14)

可以修改表中每个字段的名称、类型、精度、比例、是否支持 NULL 值和参照完整性规则。

ALTER TABLE cj; ALTER COLUMN cj SET CHECK cj >= 0; ERROR " 成绩不能为负数"

SELECT - SQL

从一个或多个表中检索数据。

SELECT 表xs.xh, 表xs.xm, 表xs.xb, ;

FROM 数据test!表xs;

WHERE 表xs.xh >'81991025'; ORDER BY 表xs.xh

可以用union 命令连接两个条件。 DELETE - SQL 使用 SQL 语

句将表中的记录加上删

除标记。

DELETE FROM cj WHERE cj<60

INSERT - SQL

在已存在表的末尾追加一条新记录 INSERT INTO xs (xh ,xm ,xb ) VALUES;

("8399101", "张丽", "女")

新记录包含的

数据列在 INSERT 命令中,或者来自数组。 UPDATE - SQL 更新表中的记录

UPDATE cj SET cj = cj*1.05 WHERE cj>80

可以基于

SELECT - SQL 语句结果更新记录

计算机VFP实验9 创建本地视图和远程视图

实验9 创建本地视图和远程视图 实验目的: 1.了解视图的含义以及视图与查询的区别; 2.学会创建视图,并设置更新条件。 一、(可以省略该步)新建一个项目,名字为“成绩管理”,在该项目中建立一个数据库“学生成绩库”,并在该数据库中建立两个表“学生表”和“成绩表”,每个表都输入几条记录。其中:学生表: 二、以上面建立的“学生表”为数据源创建本地视图 步骤如下: 1、在项目管理器中,选择“数据”选项卡,单击某个具体数据库,接着单击本地视图 新建。 2、把“学生表”添加到“视图设计器”窗口中 3、字段选定:选择全部字段 4、更新条件:学号设置为主键,并设置所有字段都是可更新的(即铅笔对应列都打“√”) 5、在“视图设计器”窗口中的左下角“发送SQL更新”前打“√”。 6、保存视图,运行视图,修改“张三”为“张六”,关闭视图结果,再保存视图。然后推出视图。 7、打开“学生表”查看其数据“张三”是否有变化!!!! 三、创建远程视图: 1、启动ACCESS,创建一个空数据库“管理库”,在该数据库中建立一个“职工表”,“职工 退出ACCESS。

2、在第一大题的项目中的“学生成绩库”下建立一个连接(操作方法:展开“成绩管理”项目,找到“学生成绩库”,点击“学生成绩库”左边的“+”,点击“连接”→新建,→出现如下窗口,把“数据源(D)”:选择“MS Access Database”→点击“验证连接”→找到以上所建立的Access数据库“管理库”→确定→保存;这样就建立好了一个连接(这个连接的作用是,让VFP数据库连接到Access数据库)。 3、以ACCESS表“职工表”为数据源,创建远程视图,并设置更新条件,设置“职工号”为主键,设置所有字段都可以更新。运行视图。 4、修改视图的结果,然后关闭视图结果,保存视图 5、退出VFP,打开ACCESS数据库“管理库”,打开表“职工表”查看表中数据的变化。

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) 设置查询结果的排序依据 排序决定查询输出结果中记录显示的顺序。 设置方法: 单击排序依据→ 从选定字段框选中字段→选择升序或降序→单击添加。 (5) 设置查询结果的分组依据

VFP数据查询与视图

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

VFP查询与视图习题及答案

查询与视图习题六 一.选择题 1.在Visual FoxPro中,关于查询正确的描述是()。 A)查询是使用查询设计器对数据库进行操作 B)查询是使用查询设计器生成各种复杂的SQL SELECT语句 C)查询是使用查询设计器帮助用户编写SQL SELECT命令 D)查询是使用查询设计器生成查询程序,与SQL语句无关 2.查询是以下面那种类型的文件保存于磁盘上的()。 A).DBF B).QPR C).PRG D).EXE 3.查询的数据源不能是()。 A)自由表 B)视图 C)查询 D)数据库表 4.在“添加表或视图”窗口,“其他”按钮是让用户选择()。 A)数据库表 B)视图 C)不属于当前数据库的表 D)查询 5.查询设计器中,“联接”选项卡对应的SQL SELECT短语是()。 A)WHERE B)JOIN C)SET D)ORDER BY 6.下列()SQL SELECT短语实现分组结果的筛选条件。 A)GROUP BY B)HAVING C)WHERE D)ORDER BY 7.默认查询的输出形式是()。 A)数据表 B)图形 C)报表 D)浏览窗口 8.查询的输出不能是()。

A)临时表 B)永久表 C)视图 D)屏幕 9.修改查询文件的命令是()。 A)MODIFY COMMAND B)MODIFY FILE C)MODIFY QUERY D)MODIFY STRUCTURE 10.运行查询使用的命令是()。 A)USE 查询文件名.QPR B)DO 查询文件名.QPR C)MODIFY 查询文件名.QPR D)SELECT 查询文件名.QPR 11.完成查询名为aaa的查询设计后,运行查询不正确的方法是()。 A)在查询设计器打开的情况下,单击“常用”工具栏上的“运行”按钮 B)在查询设计器打开的情况下,单击“查询”菜单中“运行查询”菜单项 C)在命令窗口输入命令DO aaa D)在命令窗口输入命令DO aaa.qpr 12.在Visual FoxPro中,关于视图的正确叙述是()。 A)视图与数据库表相同,用来存储数据 B)视图不能同数据库表进行连接操作 C)在视图上不能进行更新操作 D)视图是从一个或多个数据库表导出的虚拟表 13.在数据库中实际存储数据的是()。 A)基本表 B)视图 C)基本表和视图 D)以上均不是 14.视图不能以自由表的形式单独存在,它依赖于()。 A)视图 B)数据库 C)表 D)查询 15.以下关于视图,描述正确的是()。 A)视图是对表的复制产生的 B)视图不能删除,否则影响原来的数据文件 C)使用SQL对视图进行查询时必须事先打开该视图所在数据库

VFP设计查询

查询和视图 1.已知学生(XS)表中含有字符型字段班级编号(bjbh)和日期型字段出生日期(csrq)。在TEST项目中已存在查询chaxun,按如下要求修改该查询: 基于学生(XS)表以班级为单位,按出生年份统计各班各年份出生的人数,要求输出字段为:bjbh、出生年份、人数,查询结果首先按班级编号升序排序,一个班级中再按人数多少降序排序,查询结果输出到临时表xsnfrs。 SELECT Xs.bjbh, year(csrq) as 出生年份, count(*) as 人数; FROM sjk!xs; GROUP BY Xs.bjbh, 2; ORDER BY Xs.bjbh, 3 DESC INTO CURSOR xsnfrs 2.已知学生(XS)表中含有字符型字段班级编号(bjbh)和日期型字段出生日期(csrq)。在TEST项目中已存在查询chaxun,按如下要求修改该查询: 基于学生(XS)表以班级为单位,按出生月份统计各班上半年和下半年出生的人数,要求输出字段为:bjbh、时间、人数。如果出生月份在1至6月,则时间为“上半年”,如果出生月份在7至12月,则时间为“下半年”,查询结果首先按班级编号升序排序,一个班级中再按时间降序排序,查询结果输出到临时表xsrs。 SELECT Xs.bjbh, IIF(MONTH(csrq)<7,"上半年","下半年") AS 时间,; COUNT(*) AS 人数; FROM sjk!xs; GROUP BY Xs.bjbh, 2; ORDER BY Xs.bjbh, 3 DESC INTO CURSOR xsrs

3.在TEST项目中已存在查询chaxun,且在SJK中包含一个名为XSCJVIEW的视图。按如下要求修改查询: 基于XSCJVIEW视图和KC表统计各学生所学必修课的门数和总学分,学生所学课程的学分必须当成绩(cj)在60分以上时才能取 得。要求输出字段为:xh、xm、门数、总学分,查询结果按学号 升序排序。(分组。筛选) SELECT Xscjview.xh, Xscjview.xm, COUNT(*) AS 门数,; SUM(iif(xscjview.cj>=60,kc.xf,0)) as 总学分; F ROM sjk!xscjview INNER JOIN sjk!kc ON Xscjview.kcdh = Kc.kcdh; WHERE Kc.bxk = .t.; G ROUP BY Xscjview.xh; O RDER BY Xscjview.xh 4.在TEST项目中已存在查询chaxun,且在SJK中包含一个名为XSCJVIEW的视图。按如下要求修改查询: 基于XSCJVIEW视图和KC表统计各学生必修课和非必修课的门数和总学分,学生所学课程的学分必须当成绩(cj)在60分以上时 才能取得。要求输出字段为:xh、xm、课程性质、门数、总学分,其中“课程性质”字段依据KC表中的bxk字段取值为“必修” 或“选修”(若bxk字段值为“.T.”,则“课程性质”字段取值为 “必修”,否则取值为“选修”)。查询结果按学号和课程性质升序 排序。 SELECT Xscjview.xh, Xscjview.xm, IIF(Kc.bxk,"必修","选修") AS 课程性质,; COUNT(*) AS 门数, SUM(IIF(Xscjview.cj=>60,Kc.xf,0)) AS 总学分; FROM sjk!xscjview INNER JOIN sjk!kc ON Xscjview.kcdh = Kc.kcdh; GROUP BY Xscjview.xh, 3; ORDER BY Xscjview.xh, 3 5.在TEST项目中已存在查询chaxun,按如下要求修改查询:

相关主题