第 10章 视图与查询学习要点
1,视图设计器
2,远程视图
3,视图的更新
4,视图的定制和使用
5,查询的创建和运行第 10章 视图与查询
10.1 创建本地视图
10.2 创建远程视图
10.3 用视图更新数据
10.4 定制和使用视图
10.5 创建和运行查询习题及参考答案第 10章 视图与查询在数据库中,除了保存表之外,还可保存视图 。 视图是引用一个或多个表或其它视图的虚拟表定义 。 视图分为本地视图和远程视图 。 本地视图访问的是本地数据库中的表或视图,使用 Visual FoxPro SQL语法从视图或表中选择信息;远程视图访问的是远程数据服务器中的表,远程视图使用远程服务器的
SQL语法从远程数据源表中选择信息 。 视图与数据库及表的区别如下:
⑴ 视图和数据库:视图是数据库的一部分,访问视图前必须先打开所在的数据库 。
⑵ 视图和表:视图是基于一个或多个基表的虚拟表,本身不含数据,其数据是在打开视图时临时从基表中提取的 。
第 10章 视图与查询
Visual FoxPro的查询功能可以检索存储在表和视图中的信息 。 查询中可以指定检索的字段和检索记录时的筛选条件,也可以根据需要对这些记录排序和分组,查询结果可以有多种输出形式 。
查询只是从基表中提取数据,不能对基表中的数据更新;使用视图则既可以从基表中提取数据,又可更新基表中的数据 。
10.1 创建本地视图创建本地视图前,须先打开基表所在的数据库 。
创建本地视图有以下方法:
⑴ 使用本地视图向导 。
⑵ 使用视图设计器 。
⑶ 采用命令方式 。
10.1.1 视图设计器打开视图设计器可以采用以下方法之一 。
⑴ 在 项目管理器 中选择一个数据库,选择,本地视图,,并单击,新建,按钮,然后单击,新建视图,
按钮 。
⑵ 在数据库打开时,选择,文件,菜单中的,新建,选项,然后选择,视图,并且单击,新建文件,
按钮 。
⑶ 在数据库打开时,使用命令 Create SQL View
或者 Modify View<视图名 >。
10.1.1 视图设计器图 10-1,添加表或视图”对话框
10.1.1 视图设计器图 10-2,视图设计器”窗口
10.1.1 视图设计器
⒈ 单表视图当在添加表或视图对话框中选择一个表或视图后,就可基于此表创建一个单表视图 。
⑴ 选择字段 。 使用视图设计器窗口底部的
,字段,选项卡,可以选取需要包含在视图中的字段 。
10.1.1 视图设计器
10.1.1 视图设计器
10.1.1 视图设计器
⑵ 设置筛选条件 。 使用,筛选,选项卡 。 可以设定视图从基表中检索记录时的筛选条件,从而检索需要的记录集合,而不是全部记录 。
10.1.1 视图设计器
⑶ 设置排序依据 。 经过以上两项设置,此视图能够从基表中检索出满足条件的记录集合 。 对此结果中的记录,还可进一步进行排序和分组 。
10.1.1 视图设计器
⑷ 设置分组依据。
所谓分组就是将一组类似的记录压缩成一个结果记录,这样就可完成基于一组记录的计算。
10.1.1 视图设计器图 10-8,满足条件,对话框
10.1.1 视图设计器
⑸ 设置其他项 。
10.1.1 视图设计器
⑹ 保存视图 。 完成以上的设置之后 ( 或设置过程中 ),要对视图进行保存 。 单击工具栏中的,保存,
按钮或选择,文件,菜单中的,保存,菜单项 实现视图保存,视图未命名时系统会提示用户给视图命名 。
⑺ 预览视图 。 在视图设置过程中,随时可以预览视图的运行结果 。 选择,查询,菜单中的,运行查询,
或单击工具栏中的,运行,按钮,可以看到视图的记录集合,如图 10-10所示 。
10.1.1 视图设计器
⑻ 查看 SQL语句 。 视图是使用 SQL语句从基表中提取数据的 。
图 10-10 视图预览窗口 图 10-11 SQL语句显示窗口
10.1.1 视图设计器
⒉ 多表视图当一个视图需要从多个表或视图中获取数据时,
就要创建多表视图 。 首先要将所用的表或视图添加到视图设计器中 。
⑴ 若,添加表或视图,对话框未打开,则单击
,视图设计器,工具栏中的,添加表,按钮 。
⑵ 在,添加表或视图,对话框中,先选择,表,
或,视图,选项,再选择需要添加的表或视图,单击
,添加,按钮 。
⑶ 创建或修改表之间的联接条件 。
⑷ 单击,添加表或视图,对话框的,关闭,按钮 。
10.1.2 命令方式创建本地视图在数据库打开的情况下,直接使用带 AS子句的 CREATE SQL VIEW命令就可定义本地视图,定义的视图自动加入到打开的数据库中 。
[例 10-1] 以命令方式建立单表视图
OPEN DATABASE teachersj
CREATE SQL VIEW teacher1 AS ;
SELECT 教师代码,姓名 FROM teacher
10.1.2 命令方式创建本地视图
[例 10-2] 以命令方式建立多表视图
OPEN DATABASE teachersj
CREATE SQL VIEW tea_sk AS;
SELECT teacher.姓名,sk.课程名称 FROM teacher,sk;
WHERE teahcer.教师代码 =sk.教师代码
[例 10-3] 将一条 SQL SELECT语句存入 temp_sql变量,
用它创建一个新视图 。
temp_sql="SELECT * FROM sk WHERE 总学时 >60"
CREATE SQL VIEW temp_view AS & temp_sql
视图建立后,可用 DBGETPROP( ) 函数查看其属性,用
DBSETPROP( ) 函数设置其属性 。
10.2 创建远程视图使用远程视图,无须将所有记录下载到本地计算机上即可提取远程 ODBC(Open DataBase
Connectivity)服务器上的数据子集,且可以在本地机上操作这些选定的记录,然后把更改或添加的值返回远程数据源中 。
ODBC是 Microsoft公司的数据库接口标准,应用程序可以通过该接口访问支持此接口标准的数据库 。
目前,大多数数据库系统都提供对 ODBC的支持 。
10.2 创建远程视图远程视图有两种连接远程数据源的方法 。
⑴ 直接访问在机器上注册的 ODBC数据源 。 ODBC数据源指采用 ODBC标准访问的数据库和访问该数据库所须的信息 。
例如,一个 SQL Server数据库由 SQL Server数据库,数据库所在的服务器以及用以访问服务器的网络组成 。 在操作系统中,
控制面板中的 ODBC管理器可以用来创建 ODBC数据源 。
⑵ 使用命名连接 。 命名连接指存储在数据库中的一个数据源的定义,可供创建远程视图时按其名称引用 。 当激活一个远程视图时,此视图的连接成为通向远程数据源的管道 。
10.2.1 创建命名连接如果想为服务器创建定制的连接即命名连接,
可以使用连接设计器,创建的连接将作为数据库的一部分保存起来 。
⒈ 打开连接设计器
⑴ 在,项目管理器,中,从,数据库,列表中选择,连接,,然后单击,新建,按钮,
如图 10-14所示 。
10.2.1 创建命名连接图 10-14 连接设计器
10.2.1 创建命名连接
⑵ 打开数据库,然后在,命令,窗口中输入 CREATE
CONNECTION〈 连接名 〉 命令 。
⒉ 设置连接选项
⑴ 指定数据源 。
⑵ 指定显示 ODBC登录提示的时刻 。
⑶ 设置数据处理方式 。
⑷ 设置超时间隔 。
⑸ 单击,验证连接,按钮,可对刚输入了内容的连接进行检查 。
⑹ 用,文件,菜单的,保存,选项,对此连接命名保存 。
10.2.2 创建远程视图在建立有效的数据源或命名连接后,就可使用项目管理器或以编程方式来创建远程视图 。 远程视图与本地视图类似,只是在定义它时需要加入连接名称或数据源名称 。 远程视图的 SQL
语句使用相应服务器上的语法,而非 Visual FoxPro SQL语法 。
⒈ 远程视图设计器使用远程视图设计器创建远程视图的步骤有以下 3步 。
⑴ 在,项目管理器,中选择一个数据库,选择,远程视图,
命令,然后单击,新建,按钮;或者在,命令,窗口中键入
CREATE SQL VIEW REMOTE命令,则打开,选择连接或数据源,对话框,如图 10-15所示 。
10.2.2 创建远程视图图 10-15,选择连接或数据源,对话框
⑵ 在,选择连接或数据源,对话框 中,选择可用的数据源或命名连接并且单击,确定,按钮 。
⑶ 如果需要的话,提示输入用户标识和口令 。
一旦连接成功,将弹出选择远程数据库中表的对话框 。 选择表后,将显示视图设计器 。 使用视图设计器创建远程视图与创建本地视图的其他步骤相同 。
10.2.2 创建远程视图
⒉ 编程方式创建视图创建远程视图的命令格式如下:
CREATE SQL VIEW < 视图名称 >
[REMOTE]
[CONNECTION <联接名称 > [SHARE]]
[CONNECTION <数据源名 >]
[AS <远程数据库服务器的 SQL语句 >]
10.3 用视图更新数据本地或远程视图都可用于更新数据 。 在
,视图设计器,中,选择,更新条件,选项卡,
如图 10-16所示,设置可更新的表和字段,也可控制数据的修改 ( 更新,删除,插入 ) 方式 。
10.3 用视图更新数据图 10-16,更新条件”选项卡
10.3.1 指定更新字段
⒈ 指定可更新表
⒉ 指定关键字段
⒊ 指定可更新字段 。
⒋ 设置,发送 SQL 更新,选项
10.3.2 控制更新冲突若在一个多用户环境中工作,服务器上的数据可被多个用户同时访问 。 为使 Visual FoxPro能够检查视图操作的数据在更新之前是否被别的用户修改过,必须设置合理的冲突控制方式 。
⑴,关键字段,选项:当表中的关键字段被改变时,使更新失败 。
⑵,关键字和可更新字段,选项:当源表中任何标记为可更新的字段被改变时,使更新失败 。
⑶,关键字和已修改字段,选项:当在本地改变的任一字段在源表中已被改变时,使更新失改 。
⑷,关键字和时间戳,选项:当远程表上记录的时间戳在首次检索之后被改变时,使更新失败 。
10.3.3 控制更新方法当记录中的关键字更新时,利用,使用更新,区中的选项决定发送到服务器或源表中的更新语句使用什么 SQL语句 。
⑴,SQL DELETE 然后 INSERT”选项:指定先删除记录,然后使用在视图中输入的新值取代原值
( 先发送 SQL DELETE语句然后发 INSERT语句 ) 。
⑵,SQL UPDTAE”选项:指定使用服务器支持的 SQL UPDATE语句改变服务器上的记录 。
10.4 定制和使用视图
10.4.1 控制字段显示和数据输入因为视图是数据库的一部分,所以可像数据库表中设置字段属性一样,设置视图中字段的属性,例如可以分配标题,输入注释,设置控制数据输入的有效性规则等 。
在,视图设计器,的,字段,选项卡中,从,选定字段,列表中选择一个字段,并单击,属性,按钮,
则打开,视图字段属性,对话框,如图 10-17所示 。
10.4.1 控制字段显示和数据输入图 10-17,视图字段属性”对话框
10.4.1 控制字段显示和数据输入在,字段有效性,框,,显示,框和,匹配字段到类,框中,所设置的内容与方法同数据库表中字段的定义相同,在此不再重复 。
在,数据匹配,框中,设置远程视图中字段的数据类型与源表中数据类型的对应关系 。 数据类型指定此字段可以包含的数据类型;宽度指定此字段可包含的字符个数;小数位数 ( 对于数值型数据类型 ) 指定此字段可以包括的小数点右侧的小数位数 。
在,注释,框中,设置远程视图中字段注释 。
10.4.2 在视图中添加表达式在视图中除可以用函数和表达式作为选定字段外,
也可以在筛选条件中使用表达式 。 若要在视图的筛选条件中添加表达式,先在,筛选,选项卡的,字段名,
框中选择,表达式,,如图 10- 18 所示,再在弹出的
,表达式生成器,对话框中创建表达式,然后输入筛选条件中的其他项 。
当视图基于远程数据源时,在,表达式生成器,
中选用的函数必须是远程服务器所支持的函数 。
Visual FoxPro不对构造的表达式做语法分析,而是将它们直接发送到远程服务器上 。
10.4.2 在视图中添加表达式图 10-18 筛选条件中的表达式
10.4.3 创建参数化视图参数化视图就是在视图的 SQL SELECT语句的筛选条件中加入参数,参数值可在运行时传递,也可通过编程方式传递 。
使用参数化视图可以避免为每取一部分记录都单独创建一个视图的情况,也可用来限定视图的作用范围 。 参数化视图仅下载那些符合 WHERE子句中筛选条件的记录,其中的筛选条件是根据所提供的参数值建立的 。
若要创建参数化视图,首先打开,视图设计器,,然后在
,筛选,选项卡中添加新的筛选条件或选择已有的筛选条件,
在,实例,框中输入一个以,?,开头的变量名作为参数 。 图
10-19所示创建了一个参数化视图,这个视图将对教师记录进行筛选,只有教师代码与参数值 ( teaID) 相匹配的记录才能在视图中出现 。
10.4.3 创建参数化视图图 10- 19 参数化视图
10.4.4 使用视图视图建立后,就可用它显示和更新数据 。 视图的使用类似于数据库表,可以使用 USE〈 视图名 〉 命令打开一个视图,使用 USE命令关闭视图 。 在 Browse
窗口中,可以显示视图记录和修改记录 。
下面的代码在浏览窗口中显示 tea_view视图 。
OPEN DATABASE teachersj
USE tea_view && 打开视图
BROWSE
10.4.4 使用视图一个视图在使用时,将作为临时表在自己的工作区中打开 。 如果此视图基于本地表,则在 Visual
FoxPro的另一个工作区中同时打开基表 。 视图的基表是指由 SELECT-SQL语句访问的表 。 在前面的示例中,
打开视图的同时,teacher表也自动打开 。
视图中的数据是在打开时从基表中提取的 。 打开后,基表中数据的变化不能立即反映到视图中,但可使用 REQUERY([nWorkArea | cTableAlias])函数重新提取数据,该函数的参数为视图名或所在的工作区号 。
10.4.5 视图的优点
1,视图提高了数据库应用的灵活性
2,视图减少了用户对数据库物理结构的依赖
3,视图可支持网络应用
10.5 创建和运行查询除了直接使用 SELECT语句检索数据外,
还可创建查询实现数据检索 。 一个查询就是一个包含 SELECT语句的文件 。
10.5.1 创建查询创建一个新的查询时,先要打开相应的数据库,然后使用
,查询向导,或,查询设计器,创建查询 。,查询向导,的使用比较简单,在此不做介绍 。 下面介绍,查询设计器,的使用方法 。
,查询设计器,建立查询的步骤如下:
⑴ 启动,查询设计器,,添加查询所需要的表或视图 。
⑵ 选择想要出现在查询结果中的字段 。
⑶ 设置筛选条件,筛选所需要的记录 。
⑷ 设置排序或分组选项,组织查询结果 。
⑸ 选择查询结果的输出类型:表,报表,浏览等 。
⑹ 保存查询,从而生成一个查询文件 ( 扩展名为,qpr) 。
10.5.1 创建查询启动,查询设计器,有以下三种方法 。
① 在,项目管理器,的,数据,选项卡中选择
,查询,菜单命令,并且单击,新建,按钮,然后单击,新建查询,按钮 。
② 从,文件,菜单中选择,新建,菜单命令,在
,新建,对话框中选,查询,单选按钮,然后单击
,新建文件,按钮 。
③ 在,命令,窗口中输入 CREATE QUERY 〈 查询名 〉 命令 。
10.5.1 创建查询图 10- 22,查询设计器”窗口
10.5.2 运行查询在完成了查询设计后,可以指定查询结果输出目的地,并可以用,运行,按钮启动该查询的执行,
Visual FoxPro 执行,查询 设 计器,产 生的 SQL
SELECT语句,并把输出结果送到指定的目的地 。 若尚未选定输出目的地,结果将显示在,浏览,窗口中 。
⒈ 运行查询的方法
⑴ 在,项目管理器,窗口中选定查询的名称,然后单击,运行,按钮 。
⑵ 在,命令,窗口中输入命令,DO 〈 查询名 〉 。
⑶ 在,查询设计器,打开时,单击工具栏中的
,运行,按钮 。
10.5.2 运行查询
⒉ 指定查询去向图 10-23,查询去向”对话框
10.5.2 运行查询表 10-2 查询去向及其用途查询去向 用 途浏览 在浏览窗口中显示查询结果临时表 查询结果储存在一个命名的临时只读表中表 查询结果保存为一个命名的表屏幕 在 Visual FoxPro主窗口或当前活动输出窗口中显示查询结果图形 查询结果用于 Microsoft Graph
报表 输出送到一个报表文件 (.frx)
标签 将输出送到一个标签文件 (.lbx)
习题
1.选择题
⑴ 关于视图的正确说法是 。
A.视图是一个虚拟的表 B.视图是一个不依赖数据库的表
C.视图是一个真实的表 D.视图是一个能修改的表
⑵ 关于用户创建视图,正确的说法是 。
A.只能创建本地视图 B.只能创建远程视图
C.只能创建单表视图 D.本地视图和远程视图都能创建
⑶ 关于查询的正确叙述是 。
A.只能根据自由表建立查询 B.不能根据自由表建立查询
C.只能根据数据库建立查询 D.可以根据数据库和自由表建立查询习题
⑷ 查询设计器中包括的选项卡有 。
A,筛选,更新条件,排序依据
B,字段,联接,分组依据
C,联接,条件,分组依据
D,更新条件,字段,分组依据
⑸ 如果要在屏幕上直接看到查询结果,,查询去向,
应该选择 。
A.屏幕 B.浏览 C.临时表或屏幕 D.浏览或屏幕习题
2.填空题
⑴ 视图设计器比查询设计器多出的选项卡是 。
⑵ 视图不能单独存在,它必须依赖于 。
⑶ 可用视图 功能修改源数据表中的数据 。
⑷ 视图可分为 和 两种 。
⑸ 默认查询的 输出方式是 。
参考答案
1.选择题
⑴ A ⑵ D ⑶ D ⑷ B ⑸ D
2.填空题
⑴ Update Criteria
⑵ 数据库
⑶ 更新
⑷ 本地视图,远程视图
⑸ Browse