查询与视图.docx

上传人:b****6 文档编号:6518277 上传时间:2023-01-07 格式:DOCX 页数:24 大小:523.39KB
下载 相关 举报
查询与视图.docx_第1页
第1页 / 共24页
查询与视图.docx_第2页
第2页 / 共24页
查询与视图.docx_第3页
第3页 / 共24页
查询与视图.docx_第4页
第4页 / 共24页
查询与视图.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

查询与视图.docx

《查询与视图.docx》由会员分享,可在线阅读,更多相关《查询与视图.docx(24页珍藏版)》请在冰豆网上搜索。

查询与视图.docx

查询与视图

第八章查询与视图

教学课时:

3课时

教学要求及内容提纲:

通过一个VisualFoxPro6.0查询与视图设计实例,初步了解查询与视图;

学会利用查询与视图设计器建立查询与视图;

了解利用SELECT-SQL建立查询。

教学重点与难点:

VisualFoxPro6.0查询与视图设计实例;

VisualFoxPro6.0查询设计方法;

VisualFoxPro6.0视图设计方法。

教学实施手段:

8.1引例

现有学生档案数据表xsda.dbf,其中有图8-1所示的数据,现在要把其中班级为“机制991”的学生筛选出来,查看他们的“Xh”、“Xm”、“Xi”、“Bj”、“Rxf”等信息,并且输出按“Rxf”升序排列,查询结果如图8-2或图8-3所示。

图8-1表xsda.dbf中的数据

 

图8-2利用视图输出的满足条件的结果

 

图8-3利用查询输出的满足条件的结果

什么是“查询”?

什么是“视图”?

图8-2和图8-3的结果是如何产生的?

下面我们来作介绍。

8.2查询与视图

利用查询和视图都可以从我们收集的数据中提取所需的信息,为了能很好地使用查询和视图,这一节来首先介绍查询和视图的概念和二者的区别。

8.2.1查询

查询是向数据库发出检索信息的请求,它通过限制一些条件而从数据库中提取特定的信息。

用户如果需要快速检索存储在表或视图中的信息,可以通过“查询”来搜索满足指定条件的记录,也可以对记录进行排序和分组,并将结果送出。

查询可以扩充用户控制数据的能力,可以让用户按需要的方式显示表中的信息。

查询能单独以扩展名为.QPR的文件保存,可以在命令方式下使用,可以选择查询去向,但不能更新和修改数据,而且只能一次性使用,只能访问本地数据。

查询的去向有七种:

“浏览”、“临时表”、“表”、“图形”、“屏幕”、“报表”、“标签”。

8.2.2视图

视图是一个类似于目录的有关数据的虚拟表或者逻辑表,视图中的数据来源于数据库中的表或者其他视图。

它具有普通表的一般性质,可以对它进行浏览、修改和使用。

值得一提的是利用视图修改的结果可以送回数据源,进行永久的保存。

但视图依赖于数据库而存在,在新建视图之前,必须先打开相关数据库。

视图和查询也很相似,都可以从一个或多个相关联的表中提取有用的信息。

8.2.3查询与视图的区别

视图和查询之间也有着本质的区别。

(1)利用查询设计器生成的是.QPR文件,它是完全独立的,不依赖于任何数据库和表而存在,而视图则依赖于数据库而存在。

(2)利用查询不能更新数据源,而利用视图可以更新数据源。

(3)查询的去向有七种,而视图只是一个虚拟的表。

8.3查询的建立

建立查询之前应明确以下几点:

(1)确定数据源

(2)确定查询条件

(3)确定查询去向

查询的建立方法有以下三种:

(1)利用向导建立查询

(2)利用设计器建立查询

(3)使用SQL-Select命令建立查询

8.3.1利用向导建立查询

下面以xsda.dbf表为例介绍利用向导建立查询的过程。

①打开查询向导

查询向导的打开可以采用打开报表向导相同的方法,即通过“文件”菜单中的“新建”菜单项,调出“新建”对话框,然后在“新建”对话框中选择“查询”,再单击“新建”对话框中的“向导”图标按钮;也可以通过从主菜单中的“工具”菜单项中的“向导”子菜单中选择“向导”。

通过这二种方法都可以调出图8-4所示的“向导选取”对话框。

②进入查询向导的第一步:

字段选取。

单击图8-4中的“查询向导”选项,再单击“确定”,调出图8-5所示“字段选取”对话框。

字段选取方法与利用“报表向导”建立报表时字段选取相同。

 

图8-4向导选取图8-5字段选取

③为多表建立关系

这一步不是必须的,但需要从多个表中提取数据时,多个表之间一定要在图8-6所示的对话框中建立关系。

并在图8-7中选择多表中的记录匹配方式,即多表的联接类型的选择。

多表之间的联接类型通常有下表所示的四种,通常选取“仅包含匹配的行(InnerJoin,即内部联接)”

表8-1多表之间的联结类型

(联接类型)

记录匹配方式

InnerJoin,即内部联接

表示视图中仅包含匹配的记录

LeftOuterJoin,即左联接

表示视图中除包含匹配记录外,还包含父表中所有记录

RightOuterJoin,即左联接

表示视图中除包含匹配记录外,还包含子表中所有记录

FullJoin,即完全联接

表示视图中除包含匹配记录外,还包含父表和子表中所有记录

 

图8-6建立表之间的联结

 

 

图8-7记录匹配方式选取

④筛选记录

在图8-8中,提供查询所需要的条件。

在图中我们设置的条件是“班级”为“机制991”,这表明在查询中出现的记录都是“机制991”班的记录。

筛选条件可以是一个或多个,如果有二个以上的筛选条件,则这些条件之间要根据要求用“与”或“或”连起来。

注意:

用于做筛选条件的字段不能是“通用字段”或“备注字段”。

 

图8-8设置筛选条件

⑤设置排序字段

在图8-9中,可以根据需要确定记录的顺序,即对记录进行排序输出。

在VisualFoxPro6.0中,排序是根据图8-9中选定字段列表框中的字段进行的,而图8-9中设置了一个排序字段xsda.Rxf,结果根据xsda.Rxf值的大小进行排序。

如果设置了两个以上的排序字段,则查询输出时,首先根据第一字段值的大小进行排序,如果第一字段值相同,则根据第二字段值的大小进行排序,如果第一字段值也相同,则再根据第三字段值的大小进行排序。

选定了某一排序字段后,还可以通过选择图中“升序”或“降序”,确定是按排序字段值进行“升序”或“降序”排列。

⑥完成

在上图中单击“完成”,调出图8-10对话框。

在该对话框中,可以根据需要确定在向导结束后,利用向导建立的查询是仅仅只保存、保存并运行、还是保存并在设计器中修改。

设计者可以根据需要在这三个单选项中选择一个,然后单击图中“完成”,用xsad名保存该查询,结束向导。

图8-9排序设置

 

图8-10完成对话框

通过以上操作,完成了利用向导制作查询的全过程。

它的预览结果就是图8-3,也就是说以上过程的设置,能够实现输出图8-3所示的查询结果。

8.3.2使用查询设计器建立查询

使用查询设计器建立对两个表的查询过程如下:

(1)启动查询设计器

启动查询设计器的方法有以下几种:

①命令窗口中输入“CREATEQUERY”命令。

②从“文件”菜单中选择“新建”,调出“新建”对话框,在该框中选择“查询”,再单击“新建文件”图标按钮。

③单击常用工具钮中的“新建”按钮,调出“新建”对话框,在该框中选择“查询”,再单击“新建文件”图标按钮。

按以上任意一种方法操作后,同时出现了图8-11所示的一组窗口。

其中的“打开”窗口为当前窗口,也就是说要对这组窗口中其它窗口操作,先得对该窗口操作。

即先得打开一个建立查询所需的数据表,或者单击该窗口中的“取消”按钮,取消该窗口。

 

图8-11新建查询文件时的窗口

当选择一数据表打开以后,立即出现图8-12所示的一组窗口。

在这组窗口中,“添加表或视图”窗口为当前窗口,通过这个窗口中的“其它…”按钮,可以再打开查询所需的其它的数据库或表,当然如果不要再打开表,可以单击图中的“关闭”按钮,将该窗口关闭,系统将出现查询设计器窗口如图8-13所示。

 

图8-12可继续添加表或视图的窗口

从图8-13可以看出,“查询设计器”窗口被分成两大部分,设计器的上半部是用来显示查询的数据源,每个数据源用一个小窗口表示。

如果数据源有二个以上的表,表之间应建立关联,关联的二表之间会出现一条联线。

设计器的下半部分是一个多页选项卡,用于对查询进行设置。

 

图8-13查询设计器

(2)更改联结条件

双击图8-13中的二表的联接线,会出现图8-14所示窗口,用户可以利用该对话框设置表间的联接条件和联接类型。

 

图8-14设置多表的联结条件

如果要再设置其它联接条件和联接类型,可以通过图8-13中的“联接”页来实现。

(3)查询字段的设置

在查询设计器中,单击“字段”页标签,使多页选项卡中的“字段”页为当前页,如图8-13所示,通过这一页的设置,确定查询结果所需的字段。

查询字段可以从图8-13中的“可用字段”列表框中选定,也可以利用“函数和表达式”设置查询所需的字段。

(4)筛选记录

单击图8-13中的“筛选”页标签,使多页选项卡中的“筛选”页为当前页。

在这一页能设置从数据源中抽取数据的条件,从而达到选取所需记录的目的。

如果要进行记录的筛选,请按如下步骤操作:

①在“字段名”下拉列表框中选择要建立筛选条件的字段。

②在“条件”列表框中选择比较运算符。

③在“实例”文本框中键入需要比较的实例值。

④在“大小写”设定框中确定是否区分大小写。

如果忽略大小写,则单击“大小写”选项按钮,按钮上显示一对钩;如果不忽略大小写,则不用单击此按钮。

⑤如果有多个条件,则应该确定条件之间的逻辑关系。

(5)排序记录

通过“排序依据”页,可对记录进行排序操作,使得经过筛选后的记录按一定的顺序输出。

设置方法与利用“向导”设置排序相同。

(6)建立分组查询

在“分组依据”页中,可对查询结果进行分组设置。

经过以上几步后一个查询已经生成,但经过以上过程设计的查询,其运行结果只会显示在浏览窗中,如果要使查询结果输出其它地方,则需要设置查询结果的输出。

设置查询结果方法有多种,通常是在“查询设计器”打开时,从“查询”菜单中选择“查询去向”命令,来设置查询去向。

8.3.3使用SQL-Select命令建立查询

查询可以利用查询向导或查询设计器来建立,也可以在命令窗口中输入SQL-Select命令建立查询,SQL-Select命令格式如下:

SELECT[ALL|DISTINCT];

[<表名>.][AS<列标题>][,[<表名>.][AS<列标题>]……];

FROM[数据库名!

]表名[,[数据库名!

]表名……];

[[INNER|LEFT|RIGHT|FULL]JOIN[数据库名!

]表名ON<关联条件>……]

[INTO<去向>];

[WHERE<筛选条件>[AND|OR<筛选条件>……]];

[GROUPBY<分组项>[,<分组项>……]];

[ORDERBY<排序项>[ASC|DESC][,<排序项>[ASC|DESC]……]]

说明:

①SELECT子句:

用于指定查询中的字段、表达式和函数,它是通过子句中的“[<表名>.][AS<列标题>][,[<表名>.][AS<列标题>]……]”这一部分参数来指定的,实际应用这一部分可能会子出现一个“*”,这表明选取了数据源中的所有字段。

子句中的[ALL|DISTINCT]用于指定查询结果中是否包含重复记录,ALL表示包含重复记录,而DISTINCT表示不包含重复记录,缺省情况为ALL。

②FROM子句:

用于指定查询的数据源与联接类型。

子句[数据库名!

]表名[,[数据库名!

]表名……]用于指定查询的数据源,而[[INNER|LEFT|RIGHT|FULL]JOIN[数据库名!

]表名ON<关联条件>……]用于指定多表的联接类型和条件。

③INTO子句:

用于指定查询结果的输出去向。

④WHERE子句:

用于指定筛选条件。

⑤GROUPBY子句:

用于指定分组依据。

⑥ORDERBY子句:

用于指定排序依据和排序顺序。

<排序项>是用来指定排序依据的。

而[ASC|DESC]是用来指定排序顺序的,缺省情况是根据排序依据按升序排序,如果选择ASC则仍按升序排序,如果选择DESC则按降序排序。

下面是二条SQL-Select命令,其中第一条命令的功能是:

以数据库xj中的数据表xjb和xscjb为数据源建立查询,要求根据学号建立二表之间的内部联接,选取二表中的所有字段输出,输出的记录为满足联接条件的且“数学>60”、“英语>70”的所有记录,输出时根据“班级”分组,按学号升序排序,查询结果输出到临时表“查询1”中。

SELECT*;

FROMxj!

xjbINNERJOINxj!

xscjb;

ONXjb.学号=Xscjb.学号;

WHEREXscjb.数学>60;

ANDXscjb.英语>70;

GROUPBYXjb.班级;

ORDERBYXjb.学号;

INTOCURSOR查询1

第二条命令的功能是:

以数据库xj中的数据表xjb和xscjb为数据源建立查询,要求根据学号建立二表之间的内部联接,选取二表中的“Xjb.学号”、“Xjb.姓名”、“Xjb.性别”、“Xjb.班级”、“Xjb.出生年月”、“Xjb.籍贯”、“Xscjb.考试时间”、“Xscjb.数学”、“Xscjb.语文”、“Xscjb.英语”、“Xscjb.化学”、“Xscjb.平均分”、“Xscjb.总分”等字段输出,输出的记录为满足联接条件的且“数学>60”、“英语>70”的所有记录,输出时根据“班级”分组,按学号降序排序,查询结果输出到数据表“查询1.dbf”中。

SELECTXjb.学号,Xjb.姓名,Xjb.性别,Xjb.班级,Xjb.出生年月,Xjb.籍贯,;

Xscjb.考试时间,Xscjb.数学,Xscjb.语文,Xscjb.英语,Xscjb.化学,Xscjb.平均分,;

Xscjb.总分;

FROMxj!

xjbINNERJOINxj!

xscjb;

ONXjb.学号=Xscjb.学号;

WHEREXscjb.数学>60;

ANDXscjb.英语>70;

GROUPBYXjb.班级;

ORDERBYXjb.学号DESC;

INTOTABLE查询1.dbf

8.3.4查询结果的输出

前面曾提过查询去向需要设置,下面我们就来看看查询去向的设置方法。

查询去向如下表所示。

表8-2查询的去向

去向(目标子句)

结果

浏览(默认值)

在“浏览”窗口中显示浏览结果

临时表(IntoCursorli.dbf)

将查询结果存储在一个命名的临时只读表中

表(IntoTableli.dbf)

将查询结果存储在一个命名的表

图形(IntoCursorSYS(2015)

使查询结果可用于MicrosoftGraph

屏幕(TOFILEli.txt)

在活动输出窗口中显示查询结果

报表(IntoCursor查询1ReportForm..li.frx)

按某一报表布局显示查询结果

标签(IntoCursor查询1LabelForm..li.frx)

将查询结果输出到一个标签文件中

查询去向的设置是在“查询去向”对话框中进行的,打开“查询去向”对话框有如下三种方法:

(1)在查询设计状态,打开“查询”菜单,选择“查询去向”命令,系统就会弹出“查询去向”对话框如图8-12所示。

(2)在“查询设计器”对话框内单击鼠标右键,系统弹出查询命令快捷菜单,选择“查询去向”命令。

(3)在查询设计器的工具栏内单击“查询去向”图标。

 

图8-12查询去向对话框

单击上图中的命令按钮,选取所需的查询去向。

8.4视图的建立

建立视图的目的是为了能够方便地从表中众多的记录中找到我们所需的记录。

视图有二种:

本地视图和远程视图。

本地视图是指以本地表或其它本地视图做为数据源而创建的视图。

远程视图是指以远程数据表或远程视图做为数据源而创建的视图。

在这里我们只介绍本地视图的建立方法。

视图可以利用视图设计器建立,也可以利用向导建立。

8.4.1利用向导建立视图

利用向导建立视图的过程如下:

(1)打开数据库:

因为视图是依赖数据库而存在的,所以在建立视图之前一定先要打开数据库。

(2)利用以下方法之一进入视图向导:

①在主菜单中打开“工具”菜单,选择“向导”菜单,弹出向导选择列表,如图8-16所示,从中选取“全部”,弹出如图8-17所示对话框,在这一对话框中选取“本地视图向导”,从而进入视图向导。

图8-16利用菜单打开向导

 

图8-17向导选取

②在主菜单中打开“文件”菜单,选择“新建”,弹出“新建文件”对话框,从中选取“视图”,再单击“向导”,即可进入“本地视图向导”。

③打开数据库设计器,再打开“数据库”菜单,从数据库菜单中选取“新建本地视图”,弹出如图8-18所示“新建本地视图”对话框,再从中选取“视图向导”,即可进入“本地视图向导”。

 

图8-18新建本地视图对话框

采用以上几种方法中的任一种都可以进入本地视图向导。

(3)利用视图向导建立本地视图

利用视图向导建立本地视图的过程和利用查询向导建立查询过程相似,也有“字段选取”、“关联表”、“筛选记录”、“排序记录”、“限制记录”等过程,其设置方法与利用查询设计器建立查询一样,这里就不多讲了。

例如:

利用“视图向导”建立一个视图,要求以xsda.dbc中的表xsda.dbf为数据源,浏览视图时能显示所有“机制991”班学生“Xh”、“Xm”、“Xi”、“Bj”和“Rxf”等字段值,并根据“Rxf”字段值升序排序。

设计过程如下:

①打开xsda.dbc数据库设计器(如果库不存在应该先建立数据库)。

②打开“数据库”菜单,选取“数据库”菜单中的“新建本地视图”,调出图8-18所示的对话框,单击图8-18中的“视图向导”命令按钮,调出图8-19所示对话框。

 

图8-19字段选取

③从图8-19中的“可用字段”列表框中选取视图中所需的字段到“选定字段”列表框中,如图8-20所示。

 

图8-20选定了字段的字段选取对话框

④单击图8-20中的下一步,弹出图8-21所示的“筛选记录”对话框。

 

图8-21设置筛选条件

按题意要求,视图中只显示所有“机制991”班学生的“Xh”、“Xm”、“Xi”、“Bj”和“Rxf”等字段值,则筛选条件应设为“XSDA.BJ=’机制991’”,这里筛选条件只有这一个。

⑤单击图8-21中的下一步,弹出图8-22所示的“排序记录”对话框。

在这个对话框中根据题意,选定xsda.Rxf字段做为排序字段,并设其按升序排序。

 

 

图8-22排序条件的设置

⑥单击图8-22中的下一步,弹出图8-23所示的“限制记录”对话框。

图8-23查询范围的设置

在这个对话框中,可以通过指定一定的百分比的记录,或者选取一定数量的记录来进一步限制视图中的记录数。

例如要查看前10条记录,可选择“数量”选项按钮组中的“部分值”,再将该选项右边的文本框中输入“10”。

在这个例子中任要求对全部记录操作。

⑦单击图8-23中的下一步,弹出图8-24所示的“完成”对话框。

 

图8-24完成对话框

⑧在图8-24中选择“保存视图并浏览”后,单击图8-24中的“完成”,弹出图8-25窗口。

 

图8-25视图名输入

在图8-25所示的窗口中有一文本框,等待输入视图的名称“xsda”,然后单击图8-25中的“确定”按钮,出现浏览数据窗口,如图8-2所示。

图8-2中数据列表,为视图从数据源中提取的满足要求的数据。

到这里一个视图就建立了,在这个视图的建立过程中,没有设置表之间的联接,因为这里的数据源为一个表,如果数据源有二个以上的表,则要建立多表的关联。

8.4.2.利用视图设计器建立视图

通过本地视图向导建立视图虽然方便、快捷,但最终还依赖视图设计器进行修改,而且利用视图设计器来建立用户数据库视图,更能发挥视图设计器潜在的设计能力。

在待建立视图的数据库打开后,可以通过以下方法中的一种进入视图设计器:

(1)打开“文件”菜单,选择“新建”调出“新建”对话框,单击该对话框中的“视图”选项,再单击对话框中的“新建文件”按钮,同时调出图8-26所示“视图设计器”对话框和“添加表或视图”对话框。

 

图8-26“添加表或视图”对话框

在“添加表或视图”对话框的“数据库中的表”的列表框中,单击要添加到视图中的数据表名,再单击“添加”按钮,可将选定的表添加到视图设计器中作为视图的数据源,也可以单击“其它”按钮,打开其它表添加到视图设计器中作为数据源。

视图的数据源添加完毕后,单击“关闭”按钮,关闭这一对话框。

窗口中就只出现“视图设计器”,如图8-27所示。

 

图8-27视图设计器

(2)在“数据库设计器”打开时,选取“数据库”菜单中的“新建本地视图”菜单项,调出如图8-18所示的“新建本地视图”对话框,单击“新建视图”,也可调出图8-26所示窗口。

(3)在“数据库设计器”打开时,鼠标移到“数据库设计器”中,单击鼠标右键,调出数据库的快捷菜单,选取其中的“新建本地视图”,调出如图8-18所示的“新建本地视图”对话框,单击“新建视图”,也可调出图8-26所示窗口。

利用以上三种方法中的任何一种都可以打开视图设计器。

在视图设计器打开时,会同时出现图8-28所示的视图设计器工具栏。

该工具栏中各按钮的作用如表8-3所示。

 

图8-28视图设计器工具栏

表8-3视图设计器工具栏中各工具的作用

按钮

作用

从视图设计器窗口的上窗口中移去选定的表

在视图中的二表之间创建联接条件

显示或隐藏建立当前视图的SQL语句

放大或缩小视图设计器的上窗格

显示“添加表或视图”对话框向视图设计器中添加表

从图8-27可以看出,视图设计器结构与查询设计器相似,所以利用视图设计器建立视图的过程与利用查询设计器建立查询的过程也相似,都有要经过“字段选取”、“联接条件”、“筛选条件”、“排序条件”、“分组条件”和“杂项”等设置。

由于视图可以更新数据源,所以在视图设计器中除了以上提到的几项设置外,还应设置“更新条件”,其设置过程如下:

①首先单击视图设计器中的“更新条件”页标题,选取“更新条件”页。

②选取可更新的表。

默认的可更新的表为库中所有的表,如果只更新其中的一个表,可以根据需要选取所需的表。

选取方法是:

用鼠标单击图8-29中的表列表框旁的实心三角形,出现视图设计器中添加了的表名的列表,只要单击其中一个,这个表名将显示在该列表框中,则在视图中该表就可以被更新,其它表就不能被更新。

图8-29中选取了表JSDA为可更新表。

③选定表后,字段名列表框中列出该表中所有字段,在这里可以设定哪些字段可更新。

在图8-29中“字段名”标签前有一把“钥匙”标签和一支“笔”标签,在“字段名”标签前的“钥匙”标签下如果有“∨”,表示“∨”后的字段被设为更新的关键词。

在字段名前的“笔”下方如果有“∨”,表示该字段可被更新。

设置时先要设定“关键字段”,然后才能设定“可更新字段”。

“关键字段”设定方法是鼠标单击字段名前的钥匙下方;可更新字段设定方法是鼠标单击字段名前的笔的下方。

关键字段设定好后,若要把表中所有字段都设为可更新字段,单击“全部更新”命令钮即可。

若要重新设定关键字段只要单击“重置关键字”就可以重设关键字;也可以用鼠标单击字段名前钥匙下方的“∨”符号,取消原设置,再重设关键字和可更新字段。

④“发送SQL更新”复选框,指的是视图中更新过后的数据是否返回到数据源中去,该项选中表示更新结果要返回到数据源中去更新数据源,否则表示更新

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1