第5章查询与视图

上传人:cl****1 文档编号:568200877 上传时间:2024-07-23 格式:PPT 页数:58 大小:1.01MB
返回 下载 相关 举报
第5章查询与视图_第1页
第1页 / 共58页
第5章查询与视图_第2页
第2页 / 共58页
第5章查询与视图_第3页
第3页 / 共58页
第5章查询与视图_第4页
第4页 / 共58页
第5章查询与视图_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《第5章查询与视图》由会员分享,可在线阅读,更多相关《第5章查询与视图(58页珍藏版)》请在金锄头文库上搜索。

1、第第 5 章章 查查 询询 与与 视视 图图主要内容:1、结构化查询语言SQL2、查询设计器的使用3、视图及视图设计器4、查询与视图的区别重点:1 、结构化查询语言SQL 的查询语句2、查询设计器的使用难点: 1 、结构化查询语言SQL 的查询语句 2、查询与视图的区别要求:1、掌握结构化查询语言SQL的数据定义、数据操纵 及数据查询语句2、掌握使用查询设计器设计查询的方法3、掌握视图的概念及其和查询的区别4、掌握使用查询设计器设计查询的方法 5.1 查询与统计命令 数据查询通常包括对数据表中原始数据的直接检索和对原始数据做特定的统计和计算两类。 5.1.1 数据“筛选过滤” “筛选过滤”分为

2、横向和纵向两种。前者叫做记录筛选,它能够屏蔽掉不满足条件的记录集;后者叫做字段筛选,它能够屏蔽我们不感兴趣的字段集。记录筛选实现了关系运算中的选择运算(Selection),字段筛选实现了关系运算中的投影运算(Projection)。 1记录筛选命令:记录筛选命令:SET FILTER (1)格式 SET FILTER TO (2)功能 设置当前表中可以被访问的记录必须满足的条件。 2设置字段筛选命令:设置字段筛选命令:SET FIELDS (1)格式 SET FIELDS TO /ALL LIKE/EXCEPT 字段名通配式 (2)功能指定当前表中可以被访问的字段。 (3)参数说明 :逐一列

3、出当前表中可被访问的字段的名称。 ALL:表示允许访问当前表中的所有字段。 ALL LIKE 字段名通配式:表示当前表中所有与字段名通配式相匹配的字段均为可被访问字段。 ALL EXCEPT 字段名通配式:表示当前表中所有不与字段名通配式相匹配的字段均为可被访问字段。 例子:设置STUDENT表中只有“计算机”专业学生的学号、姓名、出生日期三个字段可被访问。 在命令窗口输入如下命令:USE STUDENTBROWSESET FILTER TO 专业=“计算机”SET FIELDS TO 学号,姓名,专业BROWSE显示结果如图所示。 5.1.2 顺序查询与索引查询 VFP提供了顺序查询和索引查

4、询两种查询定位方法,前者是按照记录的物理排列顺序依次查询并定位于满足指定要求的第一条记录;后者是利用索引文件根据索引关键字的值基于二分算法进行查询定位。 1.顺序查询命令:LOCATE (1)格式 LOCATE FOR (2)功能 执行该命令,系统在指定的记录范围(缺省表示所有记录)内,顺序查询满足条件的第一个记录。 提示: 顺序查询不需对表事先建立索引。 若要继续查找满足条件的下一个记录,应使用CONTINUE。 VFP默认EXACT OFF,在此状态下用LOCATE命令查找字符型数据时,进行的是不精确匹配,若要进行精确匹配查找,请使用“”。 例子例子 在STAFF表中查询职称是讲师的教师记

5、录。 USE STAFF 记录:1/5 (状态行上显示) LOCATE ALL FOR 职称“讲师” 记录:2/5 (状态行上显示) ?RECNO(),FOUND() 2 .T. (屏幕上显示) CONTINUE 记录:4/5 (状态行上显示) ?RECNO(),FOUND() 4 .T. (屏幕上显示) CONTINUE ?RECNO(),FOUND() 6 .F. 2.索引查询命令:索引查询命令:SEEK(1)格式SEEK (2)功能执行该命令,系统查找主控索引关键字的值与命令中的值相匹配的第一条记录,若找到,指针指向该记录,FOUND()返回.T.;若没找到,指针指向表的eof标志,FO

6、UND()和EOF()将分别返回.F.和.T.。 提示: 使用SEEK命令之前,要求数据表已按要查询的字段建立过索引,并被设置为主控索引。 SEEK命令只能查询主控索引关键字字段,对于字符型关键字段,必须加字符串定界符;对于日期型关键字段,必须加日期定界符。 例子:例子:STUDENT表中索引查询学号为“04006”的学生姓名。 USE STUDENT INDEX ON 学号 TAG XH &按学号字段建立索引,索引名是XH,并自动被系统作为主控索引 SEEK 04006 ?姓名 周文敏 (屏幕上显示)顺序查询索引查询查询内容表中各字段主控索引关键字字段对表的要求无论是否建立索引文件均可方便地

7、查询必须建立索引文件,并被设为主控索引命令特点可使用子句限定查询范围,可与CONTINUE配合使用,查出表中全部符合条件的记录在整个表中查询,找出符合条件的第一条记录查询速度慢快 5.1.3 统计命令 1记录个数统计命令:记录个数统计命令:COUNT (1)格式COUNT FOR/WHILE TO (2)功能 统计当前数据表中内满足的记录个数,若命令中含有,则将结果送入指定内存变量中保存。否则将统计结果显示在屏幕上。 提示 : 如果SET DELETE是ON,已做了删除标记的记录将不被COUNT命令统计,但仍被RECCOUNT()函数统计。 2计算总和命令:计算总和命令:SUM (1)格式 S

8、UM FOR/WHILE TO (2)功能 对当前数据表中内满足的记录,按指定数值字段进行纵向求和,若命令中含有,则将结果送入对应的内存变量中保存。 3计算平均数命令:计算平均数命令:AVERAGE (1)格式 AVERAGE FOR/WHILE TO (2)功能 对当前数据表中内、满足指定条件的记录的指定数值字段进行纵向求平均值,若命令中含有,则将结果送入对应的内存变量中保存。 提示提示 : 1.COUNT/SUM/AVERAGE命令中缺省时表示所有记录。 2.SUM/AVERAGE命令中指定求和/求平均字段,缺省表示对所有数值型字段求和/求平均值。 例子 统计STUDENT表中男生人数、所

9、有男生的奖学金总额和平均值。 USE STUDENT COUNT FOR 性别=.T. TO 男生人数 SUM 奖学金 FOR 性别=.T. TO 奖学金总额 AVERAGE 奖学金 FOR 性别=.T. TO 平均奖学金 ? 男生人数,奖学金总额,平均奖学金 4 685.00 171.25 5.1.4 多表操作命令 1工作区及其选择工作区及其选择 共有三种标识工作区的方法:区号:分别用数字132767表示。区名:对于前10区,用字母AJ表示。从11区往后用W11W32767表示。别名:打开在工作区上的表的别名(由USE命令的ALIAS子句指定)。若不指定别名,则系统自动以表名为别名选择当前工

10、作区命令:SELECT SELECT命令来重新选择当前工作区:SELECT /0 (3)非当前工作区字段的引用 访问当前工作区中打开表的字段时,可以直接引用字段名,而访问非当前工作区中打开表的字段时,应使用如下格式:/. 或者:/- 2.建立表之间的临时关系命令:建立表之间的临时关系命令:SET RELATION (1)格式 SET RELATION TO INTO (2)功能 把当前工作区上的表(父表)与在另一工作区上打开的子表通过关联字段建立指针联动关系,使得当前工作区上表的指针移动时,子表的记录指针也发生相应的移动。 (3)参数说明 :用于关联两表的字段表达式,通常由两表共有的字段构成,

11、该字段必须是子表的主控索引关键字。 :指定子表的区号、区名或表别名。 提示提示 : 要求建立临时关系的两个表必须具有公共属性字段,且子表已按该字段建立了索引并被设置为主控索引; 父表打开在当前工作区,子表打开在其它工作区。 临时关系不同于永久关系,它不会永久保存,只要父表或子表关闭,或使用了取消临时关系命令SET RELATl0N TO,临时关系即随之取消。 例例: 在表TEACH与COURSE之间建立临时关系,使浏览查看TEACH表中所有教工的授课情况时也能看到课程名、课时和学分。 OPEN DATABASE 教学管理 SELECT 0 USE COURSE ALIAS COU &打开子表C

12、OURSE INDEX ON 课程号 TAG KCH &对子表按课程号建立索引 SELECT 0 USE TEACH &打开父表TEACH SET RELATION TO 课程号 INTO COU &按课程号建立临时关系 BROWSE FIELDS 教工号,课程号,COU.课程名,COU.课时,COU.学分取自于TEACH取自于COURSE显示结果如图 : 5.2 使用查询设计器建立查询 VFP提供了两种方法实现结构化查询:一种是用VFP 提供的“查询设计器”或“查询向导”建立查询文件并运行;另一种是直接编写SELECT-SQL命令并执行。本节介绍用“查询设计器”建立查询的方法。 5.2.1

13、查询设计器简介 查询设计器是创建和修改查询文件的有力工具,查询文件的扩展名为“.QPR”,其内容就是SELECT-SQL命令。 启动查询设计器的方法 : 1.从项目管理器启动查询设计器(建议使用,以便文件的归类管理。) 2.从“文件”菜单启动查询设计器。“查询设计器”窗口 5.2.2 使用查询设计器建立查询文件 以实例说明使用查询设计器建立查询的操作步骤。 例例: 用查询设计器建立查询文件 CJCX.QPR,根据表GRADE.DBF和COURSE.DBF,查询具有3个学分的各门课程的课程号、课程名、最高成绩、最低成绩、平均成绩和选修人数,并要求按课程号升序显示。 该查询涉及表GRADE.DBF

14、和COURSE.DBF,首先把表GRADE和COURSE按公共属性课程号字段建立关联。 操作步骤如下: (1)启动查询设计器,添加“学生成绩”库中的STUDENT表、GRADE表和COURSE表(2)设置联接条件(图1)。(3)选定输出列(图2) 。 (4)设置筛选条件(图3) 。 (5) 结果排序的依据(图4) 。(6) 分组所依据的字段(图5) (7)选择“杂项”选项卡(图6) (8)保存查询文件。图1图2图3图4图5图6 5.2.3 查询文件的使用 (1)运行查询文件,得到查询结果(图1)。(2)选择查询结果的输出去向(图1)。(3)查看生成的SELECT-SQL命令(图1)。图1图2图

15、3 5.3 结构化查询语言SQL SQL结构化查询语言主要特点: SQL是一种一体化的语言,它包括了数据定义、数据查询、数据操纵和数据控制等方面的功能,它可以完成数据库活动中的全部工作。 SQL是一种高度非过程化的语言。 SQL语言非常简洁。 SQL是关系数据库系统的国际标准语言。 5.3.2 SELECT-SQL 命令概述 1.SELECT-SQL 命令的语法格式命令的语法格式 SELECT ALL/DISTINCTTOP nExpr PERCENT Alias.Select_Item AS Column_Name,Alias.Select_Item AS Column_Name FROM

16、DatabaseName!TableName AS Local_Alias,DatabaseName!TableName ASLocal_Alias INNER/LEFTOUTER/RIGHTOUTER/FULLOUTER JOIN DatabaseName!TableName ASLocal_Alias ON JoinCondition WHERE JoinCondition AND JoinConditionAND/OR FilterCondition AND/OR FilterConidion ORDER BY Order_Item ASC/DESC,Order_Item ASC/DES

17、C GROUP BY GroupCo1umn ,GroupColumnHAVING FilterCondition TO PRINTER/ FILE FileNameADDITIVE/ SCREEN INTO TABLE Tablename/CURSOR Cursorname/ARRAY Arrayname 2.SELECT-SQL 命令功能命令功能:从一个或多个表中查询指定条件的数据并输出。3.参数说明参数说明 (1)SELECT子句:指定查询输出的结果。ALL:表示查询结果中包括所有满足查询条件的记录,也包括重复值。默认为ALL。DISTINCT:表示在查询结果中内容完全相同的记录只能出现

18、一次。Alias.Select_Item:指定作为查询结果的列内容,可以是字段名、常量或表达式;Alias表示表名(或表别名),用Alias.标识来自不同表的同名字段。AS Column_Name:指定查询结果中列的标题名称。TOP nExpr PERCENT:限制查询记录的数目为前nExpr条或占记录总数的百分比为nExpr。 注意:TOP参数必须与ORDER BY子句联用。 (2)FROM子句:指定查询数据所在的表以及在联接条件中涉及的表。DatabaseName!TableName AS Local_Alias:TableName表示要操作的表名;DatabaseName表示数据库名,如

19、果TableName表不是自由表,且包含它的数据库不是当前数据库,则用DatabaseName!指定数据库;Local_Alias表示表的别名。(3)JOIN子句:指定多表之间的联接方式。INNER/LEFTOUTER/RIGHT OUTER/FULLOUTERJOIN:内部/左(外部)/右(外部)/完全(外部)联接。其中的OUTER关键字是任选的,它用来强调创建的是一个外部联接。ON 子句:与JOIN子句联用,指定多表之间的联接条件(JoinCondition)。(4)WHERE子句:指定多表之间的联接条件(JoinCondition)和查询条件(FilterCondition),多个条件用

20、AND或OR联结。 (5)ORDER BY子句:指定对查询结果排序的依据。Order_Item:指定排序所依据的列。ASC指定查询结果以升序排列,DESC指定查询结果以降序排列。(6)GROUP BY子句:指定对查询结果分组的依据。GroupCo1umn:指定分组所依据的字段。HAVING子句:与GROUP BY子句联用,指定对分组结果进行筛选的条件(FilterCondition)。(7)TO子句:指定查询结果的输出目标。浏览窗口:默认输出目标(注:查询结果在浏览窗内只供浏览,不能修改)。打印机:TO PRINTER。ASCII文件:TO FILE Filename。活动窗口:TO SCRE

21、EN。 4构造构造SELECT-SQL命令的方法命令的方法 (1)直接编写SELECT-SQL命令。 (2)用查询设计器交互式生成SELECT-SQL命令。 (3)用查询向导交互式生成SELECT-SQL命令。5使用使用SELECT-SQL命令的方式命令的方式 (1)在命令窗口中以命令方式使用SELECT-SQL命令。 (2)通过查询文件以程序方式使用SELECT-SQL命令。 (3)将SELECT-SQL命令嵌入到程序文件或过程、自定义函数中以程序方式使用。 5.3.3 用SELECT命令实现单表查询 1无条件查询无条件查询 常用格式:SELECT FROM (1)查询指定表中所有记录的全部

22、字段内容 例例: 查询显示“教学管理”数据库中STAFF表中所有教师的详细信息。 SELECT * FROM STAFF (2)查询指定表中所有记录的部分字段内容 例例: 查询STAFF表中所有教师的教工号、姓名和单位。 SELECT 教工号,姓名,单位 FROM STAFF (3)查询指定表中所有记录的统计值 例例: 查询显示STAFF表中所有教师的最高工资、最低工资和平均工资,并要求在查询结果的列中使用标题名称。 SELECT MAX(基本工资) AS 最高工资,MIN(基本工资) AS 最低工资,;AVG(基本工资) AS 平均工资 FROM STAFF 函函 数数功功 能能MIN()求

23、指定字段的最小值MAX()求指定字段的最大值AVG()求指定字段的平均值SUM()求指定字段值的总和COUNT(*)或COUNT()统计记录个数SELECT子句中可用的标准统计函数 2条件查询条件查询 常用格式:常用格式:SELECT FROM WHERE 1)关系运算符关系运算符 (大于)(大于) =(大于或等于)(大于或等于) =(小于或等于)(小于或等于)=(等于)(等于) 、!=(不等于)(不等于) 例例: 查询查询STAFF表中哪些单位有教师基本工资在表中哪些单位有教师基本工资在2000元以上(含元以上(含2000元),显示单位名称(要求不重复显示)。元),显示单位名称(要求不重复显

24、示)。 SELECT DISTINCT 单位单位 FROM STAFF WHERE 基本工资基本工资=2000 2)LIKE 使用格式为: LINK “ 例例: 查询显示STAFF.DBF中姓“钱”或姓名中含有“民”的教师的信息。 SELECT * FROM STAFF WHERE 姓名 LIKE 钱% OR 姓名 LIKE %民% 3)BETWEEN:表示介于两个值之间,有两种使用格式: BETWEEN AND BETWEEN(,) 例例: 查询STAFF.DBF中出生于50年代的教师的信息。 SELECT * FROM STAFF WHERE 出生日期 BETWEEN 1950/01/01

25、 AND 1959/12/31 4)IN:是成员判断符,若提供了值的一览表,IN将会告诉我们指定值是否在该表中。 使用格式为: IN (,) 例例: 查询STAFF.DBF中职称为教授、副教授的教师的信息。 SELECT * FROM STAFF WHERE 职称 IN(教授,副教授) 5)IS NULL 用于检查是否为空值NULL。否定运算是IS NOT NULL。 3对查询结果进行排序 常用格式:SELECT FROM WHERE ORDER BY ASC/DESC 说明: 列出排序所依据的列。若依据多个列排序,则列名之间用“,”分隔,排序时先按第一项排序,对第一项值相同的记录,再按第二项

26、排序,依次类推。 排序方式有ASC和DESC两种,分别表示升序排列和降序排列,默认方式为“ASC”。 例例:查询STAFF表中教师的姓名、职称、单位、年龄信息,并按单位降序排列,同一单位的教师按年龄升序排列显示。 SELECT 姓名, 职称,单位,YEAR(DATE()-YEAR(出生日期) AS 年龄 FROM STAFF ORDER BY 单位 DESC,年龄 4分组查询分组查询 常用格式:常用格式:SELECT FROM WHERE GROUP BY HAVING 例例: 根据STAFF表查询各单位教师数。 SELECT 单位,COUNT(*) FROM STAFF GROUP BY 单

27、位 例例: 根据STAFF表统计各单位的基本工资总额,输出基本工资总额大于等于4000元的单位名称和基本工资总额。 SELECT 单位,SUM(基本工资) AS 基本工资总额 FROM STAFF GROUP BY 单位 HAVING 基本工资总额=4000 5.3.4 用SELECT实现多表查询 VFP提供了四种联接类型:内部联接、左联接、右联接和完全联接,其中内部联接是最常用的连接方式。 以TEACH和COURSE表为例说明各联接类型的含义和实现方法,公共属性“课程号”是两表间的关联字段,两表内容如图。1内部联接(内部联接(INNER JOIN)查询查询 实现方法1)使用INNER JOI

28、N和ON子句实现。 SELECT FROM INNER JOIN ON .=. 实现方法2)在WHERE子句中实现:SELECT FROM , WHERE .=. 例例:根据表TEACH和COURSE,查询两表公有的教师的授课信息。 SELECT TEACH.教工号,TEACH.课程号,COURSE.课程名,COURSE.课时,COURSE.学分 FROM TEACH INNER JOIN COURSE ON TEACH. 课程号=COURSE. 课程号(图1) 2左联接(LEFT JOIN)查询 实现方法:使用LEFT JOIN和ON子句实现。 SELECT FROM LEFT JOIN O

29、N .=. 例例:根据表TEACH和COURSE,查询所有教师的授课信息,如果某个课程尚未在COURSE表中登记,也要显示出该授课教师的信息。 SELECT TEACH.教工号,TEACH.课程号,COURSE.课程名,COURSE.课时,COURSE.学分 FROM TEACH LEFT JOIN COURSE ON TEACH. 课程号=COURSE. 课程号(图2) 3右联接(RIGHT JOIN)查询 实现方法:使用RIGHT JOIN和ON子句实现。 SELECT FROM RIGHT JOIN ON .=. 例例:根据表TEACH和COURSE,查询所有教师的授课信息,如果某个课程

30、目前没有教师授课,也要显示出该课程的信息。 SELECT TEACH.教工号,TEACH.课程号,COURSE.课程名,COURSE.课时,COURSE.学分 FROM TEACH RIGHT JOIN COURSE ON TEACH. 课程号=COURSE. 课程号(图3) 4完全联接(FULL JOIN)查询 实现方法:使用FULL JOIN和ON子句实现。 SELECT FROM FULL JOIN ON .=. 例例:通过表TEACH和COURSE 的完全联接,查询两表所涉及的所有信息。 SELECT TEACH.教工号,TEACH.课程号,COURSE.课程名,COURSE.课时,C

31、OURSE.学分 FROM TEACH FULL JOIN COURSE ON TEACH. 课程号=COURSE. 课程号(图4)图1图2图3图4 5. 多表间的联接查询 例例:根据表STAFF 、TEACH和COURSE,按内部联接查询有记录的教师授课信息,要求输出教师的教工号、姓名、课程号、课程名、课时、学分,并按教工号从小到大排序输出。 SELECT STAFF.教工号,姓名, COURSE.课程号,课程名,课时,学分 FROM STAFF INNER JOIN (TEACH INNER JOIN COURSE ON TEACH.课程号= COURSE.课程号) ON STAFF.教工

32、号=TEACH.教工号 ORDER BY STAFF.教工号(输出的内容都取自于STAFF和COURSE,TEACH表仅起到“纽带”作用 )6. 使用嵌套子查询实现多表查询 所谓的子查询是指嵌套在一个SELECT-SQL命令中的另一个SELECT-SQL命令。嵌套子查询的SELECT-SQL命令形式如下: SELECT FROM WHERE IN(SELECT FROM WHERE ) 例例:根据表STAFF和TEACH,查询授课教师的教工号和姓名(要求不重复显示)。 SELECT 教工号,姓名 FROM STAFF WHERE 教工号 IN (SELECT 教工号 FROM TEACH) 5

33、.3.5 SELECT命令的输出去向 在SELECT-SQL命令中, 可由INTO子句和TO子句指定查询的输出去向,但是如果同时使用INTO子句和TO子句时,INTO子句优先。 1INTO ARRAY :将查询结果存放到一个二维数组中。 2INTO CURSOR :将查询结果保存在一个只读临时表中。 3INTO TABLE :将查询结果保存在一个自由表文件(.DBF)中。 4TO FILE ADDITIVE:将查询结果保存在一个文本文件(默认扩展名为.TXT)中。 5TO PRINTER:将查询结果直接输出到打印机。 6TO SCREEN :将查询结果直接显示在VFP的系统主窗口中。 7缺省I

34、NTO子句和TO子句时的默认值:浏览窗口 例例:从STAFF表中查出所有单位名称(不为空、不重复),并将查询结果保存在数组DW中。 SELECT DISTINCT 专业 FROM STUDENT WHERE !EMPTY(单位) INTO ARRAY DW 如查出有3个单位名称,则分别存放在数组元素DW(1,1)、DW(1,2)、DW(1,3)中。 5.3.6 其他的SQL命令 1CREATE TABLE-SQL命令 (1)基本格式: CREATE TABLE ( (,) , (,),) (2)功能:创建一个给定每个字段的名称、类型、宽度、小数位数等参数的新表(.DBF)。 例例:利用CREA

35、TE TABLE-SQL命令创建图书表BOOK.DBF,该表包括以下字段:图书号(C,8),图书名(C,20),作者(C,8),出版日期(D),出版社(C,20),定价(N,8,2),简介(M)。 CREATE TABLE BOOK(图书号 C(8),图书名 C(20),作者 C(8),出版日期 D,出版社 C(20),定价 N(8,2),简介 M) 2INSERT-SQL命令命令 (1)基本格式:INSERT INTO ( ,) VALUES ( ,) (2)功能:向指定的表末尾追加一条新记录,新记录有关字段的值由VALUES子句中的表达式指定,未指定值的字段将取空值。 例例: 利用INSE

36、RT-SQL命令向BOOK表追加一条新记录:图书号ISBN-103,图书名PASCAL语言,定价25元。 INSERT INTO BOOK(图书号,图书名,定价) VALUE (ISBN-103, PASCAL语言,25.00) 3DELETE-SQL命令命令 (1) 格式:DELETE FROM WHERE条件 (2)功能:将指定表中满足指定条件的记录加上删除标记。若要真正从表中删除,还必须使用PACK命令。 例例: 利用DELETE-SQL命令将BOOK表中1980年以前出版的图书记录删除。 DELETE FROM BOOK WHERE YEAR(出版日期)1980 PACK 4UPDAT

37、E-SQL命令命令 (1)基本格式:UPDATE SET =, =, WHERE条件 (2)功能:根据SET子句中指定表达式的值,更新指定表中满足指定条件的记录中指定字段的值。 例例:利用UPDATE-SQL命令将BOOK表中图书号为ISBN-201的图书定价提高10元。 UPDATE BOOK SET 定价=定价+10 WHERE 图书号=ISBN-201 5.4 视图 VFP的视图功能可以使用户从本地或远程数据表中检索所需的数据形成一个虚拟表,该表既是查询的结果,又可以当作实际的数据表来使用,并且可以通过视图更新源表中的数据。 5.4.1 视图与查询的比较 差异: 1.查询的数据来源于VF

38、P 的数据表和视图;而视图的数据来源除了VFP 的数据表和视图外,还可以是远程服务器上的数据表、VFP之外的数据表。 2.查询的输出去向可以是浏览窗口、屏幕、打印机、数组,还可以是一个文件;而视图的输出结果只能是一个虚拟表,但可以当作普通数据表来使用。 3.查询的结果数据输出后即与源表无关,而视图跟源表保持同步。 4.视图是数据库中的一个特有功能,它存在于数据库中, 只有包含视图的数据库打开后才能使用视图;而无论查询的数据源是否在数据库中, 查询都建立在数据库之外。 5.4.2 建立本地视图 1用用SQL命令直接建立视图命令直接建立视图 命令格式:CREATE VIEW AS 例例:建立一个能

39、提供授课教师的教工号、姓名、职称、性别及授课的课程号的视图。 OPEN DATABASE 教学管理 &打开数据库 CREATE VIEW 授课 AS SELECT STAFF.教工号, STAFF.姓名, STAFF.职称,STAFF.性别,TEACH.课程号 FROM STAFF INNER JOIN TEACH ON STAFF.教工号=TEACH.教工号 2使用视图设计器建立视图使用视图设计器建立视图 使用视图设计器建立视图的操作步骤与使用查询设计器建立查询基本相同,且视图设计器的组成与查询设计器也基本相同,只是视图设计器比查询设计器多了一个“更新条件”选项卡,用它可以控制数据的更新。 5.4.2 用视图更新数据 视图与查询的最大不同在于,视图具有“可更新”功能,即可直接对视图增删改记录,并可将更新结果发回源表。要让视图具有“可更新”功能,必须通过对视图设计器中的“更新条件”选项卡进行设置。 两表中课程号“C002”对应的课时均为“86”。现在在VIEW1浏览窗口中把课程号“C002”的课时“86”修改为“94”,鼠标一离开该记录,COURSE浏览窗口中的课程号“C002”的课时自动更新为“94”,如图所示,从而达到用视图更新源表的目的。 视图更新前 视图更新后

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号