第4章查询和视图_第1页
第4章查询和视图_第2页
第4章查询和视图_第3页
第4章查询和视图_第4页
第4章查询和视图_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第四章第四章查询和视图查询和视图u查询的创建和使用查询的创建和使用u视图的创建和使用视图的创建和使用uSELECT-SQL语句语句上一页下一页退 出2 26/5/20226/5/2022n查询:查询: 从数据源(从数据源(一张或多张表、视图一张或多张表、视图)中检索或)中检索或统计出符合条件的记录数据。(统计出符合条件的记录数据。(结果是只读的结果是只读的)n视图:视图: 从数据源中(从数据源中(一张或多张表、视图一张或多张表、视图)提取一组)提取一组符合条件的记录数据,并可改变这些记录的值,符合条件的记录数据,并可改变这些记录的值,还可把更新结果送回源表中。(还可把更新结果送回源表中。(结

2、果可更新、变结果可更新、变动动)n VFP工具:工具:查询设计器、视图设计器查询设计器、视图设计器4.1 查询和视图概述上一页下一页退 出3 36/5/20226/5/20221、查询的本质、查询的本质n查询查询:向数据源发出检索信息的请求向数据源发出检索信息的请求,它设置一些它设置一些条件条件提提取特定的数据取特定的数据记录记录。其运行结果是一个基于表和视图的。其运行结果是一个基于表和视图的动态动态的数据集合。的数据集合。n数据源数据源:是一张或是一张或多张多张相关相关表表(自由表或库表自由表或库表)或视图。或视图。n查询条件:查询条件:要那些字段?那些记录?按什么要求收集?要那些字段?那些

3、记录?按什么要求收集?n查询实质:查询实质:执行一条执行一条SELECT-SQL命令语句命令语句n保存保存: .QPR文件,实质上保存的是对应的文件,实质上保存的是对应的 SELECT-SQL语句语句(非查询结果非查询结果)。n查询和视图设计器在本质上都是查询和视图设计器在本质上都是SELECT-SQL命令命令的的设计方法。设计方法。 4.2 查询的创建和使用查询的创建和使用上一页下一页退 出4 46/5/20226/5/2022n创建查询的方法:创建查询的方法:使用查询设计器使用查询设计器CREATE QUERYCREATE QUERY 查询文件名查询文件名|?“项目管理器项目管理器”数据数

4、据”查询查询”新建新建”“文件文件”新建新建”或或“常用工具栏常用工具栏” “新新建建”编写编写SELECT-SQL语句语句(难难)2、使用查询设计器建立查询、使用查询设计器建立查询上一页下一页退 出5 56/5/20226/5/2022n建查询的步骤建查询的步骤n打开查询设计器打开查询设计器n添加表或视图添加表或视图(即该查询所涉及的数据源)(即该查询所涉及的数据源)n设置输出字段(设置输出字段(“字段字段”选项卡)选项卡) 选定需要包含到查选定需要包含到查询结果中的字段及需计算的表达式。询结果中的字段及需计算的表达式。n设置联接设置联接(“联接联接”选项卡)选项卡)确定匹配多表的联接表确定

5、匹配多表的联接表达式达式n设置筛选条件设置筛选条件(“筛选筛选”选项卡)选项卡) 确定查询条件。确定查询条件。n排序(排序(“排序依据排序依据”选项卡)选项卡) 决定查询输出结果时,决定查询输出结果时,记录或行的顺序记录或行的顺序n分组(分组(“分组依据分组依据”选项卡)选项卡) 分组的作用可将一组分组的作用可将一组类似的记录压缩成一个记录,主要用于计算。类似的记录压缩成一个记录,主要用于计算。n其他其他(“杂项杂项”选项卡)选项卡) 重复记录处理、结果记录范重复记录处理、结果记录范围等围等n设置输出的方式设置输出的方式浏览、临时表、表、图形、屏幕、报表、标签等浏览、临时表、表、图形、屏幕、报

6、表、标签等上一页下一页退 出6 66/5/20226/5/2022n查询设计器举例查询设计器举例单表查询单表查询例例1:查询成绩表中成绩在:查询成绩表中成绩在80分(含分(含80)以上的课)以上的课程代号、课程名称、学生学号和成绩,按课程代号升程代号、课程名称、学生学号和成绩,按课程代号升序排序,课程代号相同再按成绩降序排序。序排序,课程代号相同再按成绩降序排序。1. 打开查询设计器打开查询设计器(项目管理器项目管理器|CREATE QUERY)添加表或视图添加表或视图:添加表添加表CJ: FROM子句子句2. 定义输出内容定义输出内容(“字段字段”选项卡选项卡): SELECT 子句子句n字

7、段字段n表达式(表达式(AS 别名)别名)尽量用生成器尽量用生成器(尤其函数名尤其函数名)上一页下一页退 出7 76/5/20226/5/20223. 设置筛选条件设置筛选条件(WHERE子句子句)cj.cj=80条件类型条件类型说明说明=指定字段值等于右边的实例指定字段值等于右边的实例 Like指定字段与实例文本相匹配。如,指定字段与实例文本相匹配。如,“Js.gh like A”与来自与来自 A0001和和A0002 等的记录相匹配等的记录相匹配 =指定字段与实例文本必须逐字符指定字段与实例文本必须逐字符完全完全匹配匹配 (=)指定字段大于(大于或等于)实例文本的值指定字段大于(大于或等于

8、)实例文本的值 (=)指定字段小于(小于或等于)实例文本的值指定字段小于(小于或等于)实例文本的值 Is Null指定字段包含指定字段包含null 值值 Between指定字段大于等于示例文本中的低值并小于等于示例文本中的高指定字段大于等于示例文本中的低值并小于等于示例文本中的高值。实例文本中的这两个值用逗号隔开。如值。实例文本中的这两个值用逗号隔开。如 :“Between( JS.CSRQ,01/01/1950,01/01/1960)”与出生日与出生日期在期在1950年年1月月1日至日至1960年年1月月1日的教师记录相匹配日的教师记录相匹配 IN指定字段必须与实例文本中逗号分隔的几个样本中

9、的一个相匹配指定字段必须与实例文本中逗号分隔的几个样本中的一个相匹配 上一页下一页退 出8 86/5/20226/5/20224. 设置排序依据设置排序依据(ORDER BY 子句)升序升序/降序降序优先权优先权查看SQL5. 设置分组依据设置分组依据(GROUP BY 子句) 分组分组: 将数据源中一组相关的记录运算成将数据源中一组相关的记录运算成一个查询记录输出,这样就可以在查询运行一个查询记录输出,这样就可以在查询运行中完成基于数据源的一组记录的统计计算中完成基于数据源的一组记录的统计计算上一页下一页退 出9 96/5/20226/5/2022按系名分组按系名分组:把所有系名相同的记录压

10、缩把所有系名相同的记录压缩成一个记录成一个记录几个合计函数几个合计函数计数计数COUNT() 求和求和SUM() 合计函数合计函数求平均函数求平均函数AVG()n 查看查看SQLn 分组结果的筛选条件分组结果的筛选条件GROUP BY 子句的同时使用子句的同时使用HAVING上一页下一页退 出10106/5/20226/5/20226. 其他设置其他设置n是否允许重复记录是否允许重复记录n结果的记录范围(需排序配合)结果的记录范围(需排序配合)7. 运行查询运行查询n“运行运行”按钮按钮n“查询查询”菜单中的菜单中的“运行查询运行查询”nDO 命令(命令(DO xijsgz. qpr)上一页下

11、一页退 出11116/5/20226/5/20228. 选择输出类型选择输出类型(INTO 子句)输出去向类型输出去向类型说说 明明浏览浏览(无无 INTO)在在“浏览浏览”窗口中显示查询结果窗口中显示查询结果(默认默认)临时表临时表(INTO CURSOR)将查询结果存贮在一张命名的临时只读表将查询结果存贮在一张命名的临时只读表中,临时表只存在于内存中,当临时表被中,临时表只存在于内存中,当临时表被关闭时,表将从内存中删除关闭时,表将从内存中删除表表(INTO TABLE)使查询结果保存为一个表文件,表文件将使查询结果保存为一个表文件,表文件将永久地保存在磁盘上永久地保存在磁盘上图形图形使查

12、询结果可用于使查询结果可用于 Microsoft Graph应用程序应用程序屏幕屏幕(TO SCREEN)在在VFP主窗口或当前活动输出窗口中显示查询结果主窗口或当前活动输出窗口中显示查询结果报表报表(REPORT FORM)将输出送到一个报表文件(将输出送到一个报表文件(.FRX)标签标签(LABEL FORM)将输出送到一个标签文件(将输出送到一个标签文件(.LBX)上一页下一页退 出12126/5/20226/5/2022n练习一:练习一:查询成绩表查询成绩表cj中各个学生的课程中各个学生的课程总分及平均成绩,要求查询输出学号总分及平均成绩,要求查询输出学号xh、课程代码课程代码kcdm

13、、总分及平均成绩,查询、总分及平均成绩,查询结果按总分由高到底的排列。结果按总分由高到底的排列。数据源:数据源:CJ.DBF ; 联接:联接:选定字段:选定字段:xh,kcdm,sum (CJ.cj), AVE(CJ.cj) 排序依据:排序依据:总分总分分组依据:分组依据:xh上一页下一页退 出13136/5/20226/5/20223、创建多表查询、创建多表查询n多表查询与单表查询的不同:多表查询与单表查询的不同:n查询的数据源为查询的数据源为两个以上两个以上的表或视图的表或视图n多张表之间需要建立多张表之间需要建立联接条件联接条件1. 1. 联接的概念联接的概念联接和联接条件联接和联接条件

14、联接:查询或视图的一个数据操作,通过公共字段联接相关表或视图联接结果:形成一个新的单表(只读、暂时、用以建立查询只读、暂时、用以建立查询) 条件联接: 无条件联接:多表交叉组合无条件联接:多表交叉组合,形成的新纪录数是多张表记录数形成的新纪录数是多张表记录数的乘积的乘积. 条件联接条件联接:即按联接条件将多表纪录生成一个即按联接条件将多表纪录生成一个新单表新单表纪录纪录 联接条件:在多表联接产生新表纪录时联接条件:在多表联接产生新表纪录时,必须限定构成临时新必须限定构成临时新表纪录的条件表纪录的条件,这样的限定条件便是联接条件这样的限定条件便是联接条件.上一页下一页退 出14146/5/202

15、26/5/2022联接类型联接类型内联接内联接,左联接左联接,右联接右联接,完全联接完全联接上一页下一页退 出15156/5/20226/5/20223、创建多表查询、创建多表查询2. 如何创建多表查询如何创建多表查询 n打开查询设计器打开查询设计器n向查询中添加多张表向查询中添加多张表 - “添加表或视图添加表或视图”对话框对话框“查询设计器查询设计器”工具栏工具栏添加表添加表查询菜单查询菜单添加表添加表快捷菜单快捷菜单添加表添加表n设置表之间的联接条件设置表之间的联接条件 如果新添加的表与已存在的表之间在数据库中已经如果新添加的表与已存在的表之间在数据库中已经建立建立永久性关系永久性关系,

16、则系统将以该永久性关系作为默认的,则系统将以该永久性关系作为默认的联接条件联接条件上一页下一页退 出16166/5/20226/5/2022 如果新添加的表与已存在的表之间在数据库中没有建如果新添加的表与已存在的表之间在数据库中没有建立永久性关系,但两表有立永久性关系,但两表有同名字段同名字段,则系统将以两表的,则系统将以两表的同名字段作为默认的联接条件。同名字段作为默认的联接条件。即系统会打开即系统会打开“联接条件联接条件”对话框,并以两个表的同名对话框,并以两个表的同名字段作为默认的联接条件字段作为默认的联接条件 如果新添加的表与已存在的表之间在数据库中没有建如果新添加的表与已存在的表之间

17、在数据库中没有建立永久性关系,且两表没有同名字段,则系统没有默认立永久性关系,且两表没有同名字段,则系统没有默认的联接条件。的联接条件。即如果所有的表中都没有同名字段,则即如果所有的表中都没有同名字段,则“联接条件联接条件”对对话框中的联接条件为空白。此时可以创建其他的联接话框中的联接条件为空白。此时可以创建其他的联接 如果按如果按“取消取消”按钮,将不建立任何联接按钮,将不建立任何联接 自动默认联接类型为:内部连接自动默认联接类型为:内部连接上一页下一页退 出17176/5/20226/5/2022n建立联接条件的方法建立联接条件的方法对于已存在于查询中的表或视图,可以拖动一张对于已存在于查

18、询中的表或视图,可以拖动一张表表 中的字段到另一张表中的相应字段上建立联接条件中的字段到另一张表中的相应字段上建立联接条件“查询设计器查询设计器”工具栏工具栏/添加联接添加联接“查询设计器查询设计器”/“联接联接”选项卡选项卡/插入插入 对于已存在的联接,在查询设计器对于已存在的联接,在查询设计器的表显示中将看到表之间的的表显示中将看到表之间的联接线联接线;在;在“联接联接”选项卡中将看到选项卡中将看到一行对应的条一行对应的条件件。上一页下一页退 出18186/5/20226/5/2022n编辑联接条件的方法编辑联接条件的方法双击连接线双击连接线单击单击“联接联接”选项卡中的条件行前的按钮选项

19、卡中的条件行前的按钮“查询设计器查询设计器”/联接选项卡联接选项卡n删除联接条件的方法删除联接条件的方法则先单击连接线,按【则先单击连接线,按【Del】键即可将其删除】键即可将其删除联接选项卡联接选项卡/移去移去n联接不必基于完全匹配的字段联接不必基于完全匹配的字段 (LIKE,=,=480 AND =480 AND 最低分最低分=70=70保存查询保存查询xs_cj.qprxs_cj.qpr上一页下一页退 出20206/5/20226/5/20223.1 SELECT-SQL语句语句nSQL(Structured Query Language) 结构化查询语言,关系数据库语言的标准;结构化查

20、询语言,关系数据库语言的标准; VFP支持支持SQLnVFP的的SQL命令使用命令使用 Rushmore技术来优化性技术来优化性能能,并且一个并且一个SQL命令可代替多个命令可代替多个VFP命令。命令。nVFP支持的支持的SQL命令命令SELECT-SQL DELETE-SQLALTER TABLE-SQL INSERT-SQLCREATE CURSOR-SQL UPDATE-SQLCREATE TABLE-SQL上一页下一页退 出21216/5/20226/5/20223.2 SELECT-SQL命令命令nSELECT-SQL命令的语法格式命令的语法格式P121nSELECT-SQL命令举例

21、命令举例SELECT Js.ximing , COUNT(Js.gh) , ; SUM(Js.jbgz) , AVG(Js.jbgz); & “字段字段”选项卡选项卡FROM jxgl!js; & 数据源数据源WHERE js.ximing 外语系外语系; OR js.ximing “中文系中文系”; & “筛选筛选”选项卡选项卡GROUP BY js.ximing; & “分组分组”选项卡选项卡ORDER BY 4 DESC & “排序依据排序依据”选项卡选项卡上一页下一页退 出22226/5/20226/5/2022n 查看一个查询的查看一个查询的SELECT-SQLSELECT-SQL语

22、句语句 1 1)“查询设计器查询设计器”窗口窗口查看查看SQLSQL(只读只读) 2 2)命令窗口)命令窗口 TYPE TYPE命令命令主窗口显示主窗口显示 如:如: TYPE TYPE 统计统计.QPR.QPR 3 3)命令窗口)命令窗口 MODIFY COMMAND MODIFY COMMAND 或者或者MODIFY FILE MODIFY FILE 命令命令 编辑窗口显示(编辑窗口显示( SQLSQL内容可编辑更改)内容可编辑更改) 如:如: MODIFY COMMAND 统计统计.QPR如:如: MODIFY FILE 统计统计.QPRn 直接编写直接编写SELECT-SQL语句创建查

23、询语句创建查询在在命令窗口命令窗口或或程序编辑窗口程序编辑窗口输入输入SELECT-SQL语句语句上一页下一页退 出23236/5/20226/5/20223.3 SELECT-SQL3.3 SELECT-SQL应用举例应用举例1.1.基于单个表的查询示例基于单个表的查询示例 n显示显示JSJS表中所有教师的工号和姓名(从一个表中表中所有教师的工号和姓名(从一个表中选取两个字段)选取两个字段)SELECT js.gh,js.xm FROM SELECT js.gh,js.xm FROM sjksjk!js!jsn显示显示XSXS表中学号以表中学号以“99”99”开头的学生情况。开头的学生情况。

24、 SELECT SELECT * * FROM sjk!xs; FROM sjk!xs; WHERE like(99 WHERE like(99* *,xh),xh)上一页下一页退 出24246/5/20226/5/2022n从高到低显示从高到低显示CJCJ表中代号为表中代号为“01”01”课程的学课程的学生的学号和成绩生的学号和成绩SELECT cj.xh,cj.cj FROM sjk!cj;WHERE cj.kcdh=01;ORDER BY cj.cj DESC2. 2. 基于多个表的查询示例基于多个表的查询示例n显示显示XSXS和和ZYZY两个表中三个字段两个表中三个字段xh,xm, z

25、ydhxh,xm, zydh的内容,并根据的内容,并根据zydhzydh字段联接两个表。其中字段联接两个表。其中用到了两个表的本地别名。用到了两个表的本地别名。SELECT xs.xh,xs.xm,zy.zymc; FROM sjk!xs,sjk!zy;WHERE xs.zydh = zy.zydh上一页下一页退 出25256/5/20226/5/2022n显示显示CJCJ表中有不及格成绩的学生的表中有不及格成绩的学生的xhxh和和xm,xm,多门不及格者显示一次且。多门不及格者显示一次且。SELECT DISTINCT cj.xh,xs.xm; FROM sjk!cj,sjk!xs; WHE

26、RE cj.cj60; AND cj.xh = xs.xhn上述查询仅显示开始的上述查询仅显示开始的6 6条记录条记录SELECT DISTINCT Top 6 cj.xh,xs.xm; FROM sjk!cj,sjk!xs; WHERE cj.cj60 AND cj.xh = xs.xh; ORDER BY 1上一页下一页退 出26266/5/20226/5/20223. 3. 含有计算字段的查询含有计算字段的查询n显示显示CJCJ表中的课程代号及最高分表中的课程代号及最高分 SELECT cj.kcdh, MAX(cj.cj) as; 最高分最高分 FROM sjk!cj; GROUP B

27、Y kcdhn查询每门课程的课程代号和名称以及最高分,查询每门课程的课程代号和名称以及最高分,并把查询结果保存到并把查询结果保存到kc_maxcj.dbfkc_maxcj.dbf表文件中表文件中SELECT cj.kcdh,kc.kcm,max(cj.cj);as最高分最高分 FROM sjk!cj,sjk!kc; WHERE cj.kcdh=kc.kcdh; GROUP BY cj.kcdh; INTO TABLE kc_maxcj上一页下一页退 出27276/5/20226/5/2022select 成绩成绩.kcdh,kc1.kcm,;max(成绩成绩.cj) as “最高最高;from

28、 jxgl1!成绩成绩,jxgl1!kc1;where 成绩成绩.kcdh=kc1.kcdh;group by 成绩成绩.kcdh4.4.子查询示例子查询示例 显示显示JS表中已担任课程教师的姓名和系名。表中已担任课程教师的姓名和系名。SELECT js.xdh,js.xm; FROM sjk!js; WHERE js.gh in (SELECT rk.gh; FROM sjk!rk)上一页下一页退 出28286/5/20226/5/20225.5.组合查询示例组合查询示例 n查询全校师生名单。要求如果是教师必须注明查询全校师生名单。要求如果是教师必须注明“教师教师”,结,结果中包含四个列:系

29、名、类别、姓名和性别,并按系名排序。果中包含四个列:系名、类别、姓名和性别,并按系名排序。SELECT js.xdh,教师 AS 类别,js.xm,js.xb FROM sjk!js;UNION;SELECT xs.xdh,学生 AS 类别,xs.xm,xs.xb FROM sjk!xs;ORDER BY 1上一页下一页退 出29296/5/20226/5/2022n查询各系科教师工资总额、各系科每个教师的工资以及全校所有教师工资总查询各系科教师工资总额、各系科每个教师的工资以及全校所有教师工资总额。要求结果中包含三个列:系名、姓名和工资,并按系名排序。额。要求结果中包含三个列:系名、姓名和工

30、资,并按系名排序。SELECT Xim.ximing AS 系名系名, SPACE(8) as 姓名姓名, SUM(Gz.jbgz) as 工资工资 FROM sjk!xim INNER JOIN sjk!js; INNER JOIN sjk!gz ; ON Js.gh = Gz.gh ; ON Xim.xdh = Js.xdh; GROUP BY Xim.ximing;UNION;SELECT Xim.ximing AS 系名系名, Js.xm AS 姓名姓名, Gz.jbgz AS 工资工资; FROM sjk!xim INNER JOIN sjk!js; INNER JOIN sjk!g

31、z ; ON Js.gh = Gz.gh ; ON Xim.xdh = Js.xdh;UNION;SELECT 总额总额+ SPACE(14) as 系名系名, SPACE(8) as 姓名姓名,; SUM(Gz.jbgz) as 工资工资; FROM sjk!xim INNER JOIN sjk!js; INNER JOIN sjk!gz ; ON Js.gh = Gz.gh ; ON Xim.xdh = Js.xdh; ORDER BY 1上一页下一页退 出30306/5/20226/5/2022 视图是从一个或多个数据表中导出的视图是从一个或多个数据表中导出的“表表”。它与固。它与固定存

32、放数据的库表不同:视图中的数据是基于源数据表的定存放数据的库表不同:视图中的数据是基于源数据表的动态数据集合,它可以使数据暂时从数据源中分离出来,动态数据集合,它可以使数据暂时从数据源中分离出来,因此可以把它看作是一个因此可以把它看作是一个“虚表虚表”。视图是不能单独存在。视图是不能单独存在的,它是依赖于某一数据库而存在的。只有打开与视图相的,它是依赖于某一数据库而存在的。只有打开与视图相关的数据库才能创建和使用视图。关的数据库才能创建和使用视图。 4.4 视图的创建和使用视图的创建和使用 视图可以增强数据的视图可以增强数据的共享性共享性,保证不同的用户在使用同一,保证不同的用户在使用同一个数

33、据库时,选择各自最需要的数据源;视图可以增强数据的个数据库时,选择各自最需要的数据源;视图可以增强数据的安全性,安全性,保证用户只对与自己相关的数据进行操作。由于在保证用户只对与自己相关的数据进行操作。由于在Visual FoxPro Visual FoxPro 系统环境下,允许使用多个关联的表建立多表系统环境下,允许使用多个关联的表建立多表视图,这不仅使多个表间建立了相互联系,而且提高了数据的视图,这不仅使多个表间建立了相互联系,而且提高了数据的利用率利用率,丰富了数据的内容。虽然视图是一个,丰富了数据的内容。虽然视图是一个“虚表虚表”,但是,但是可以利用视图可以利用视图更新源数据表更新源数

34、据表中的数据。中的数据。 根据视图数据的来源不同,视图可以分为本地视根据视图数据的来源不同,视图可以分为本地视图和远程视图。图和远程视图。上一页下一页退 出31316/5/20226/5/2022n比较比较查询:查询:只读,生成新文件,不是数据库的组成部分,只读,生成新文件,不是数据库的组成部分,有多种输出方式,不可以作为新的数据源有多种输出方式,不可以作为新的数据源视图:视图:读写,不生成新文件,是数据库的组成部分,读写,不生成新文件,是数据库的组成部分,只有一种输出方式,只有一种输出方式,可更新源数据表可更新源数据表,也可以作为新,也可以作为新的数据源的数据源n定义定义视图:数据库的一个组

35、成部分,是基于源数据的视图:数据库的一个组成部分,是基于源数据的可更可更新新的动态数据集合,是一个的动态数据集合,是一个虚表虚表(兼有表和查询的特兼有表和查询的特点点)基表(基表(base table):视图中的源数据表。:视图中的源数据表。n分类分类本地视图:使用本地视图:使用VFPSQL语法从语法从视图或表视图或表中选择信息中选择信息远程视图:使用远程远程视图:使用远程SQL语法从语法从远程远程ODBC数据源表数据源表(例:(例:ACCESS,EXCEL)中选择信息中选择信息 上一页下一页退 出32326/5/20226/5/20221 创建本地视图创建本地视图n使用视图设计器使用视图设计

36、器n“项目管理器项目管理器”-选中数据库选中数据库- -选择选择“本地视图本地视图”-选选“新建新建”n视图设计器与查询设计器的不同:视图设计器与查询设计器的不同:增加了一个增加了一个“更新条更新条件件”选项卡选项卡n使用使用CREATE SQL VIEW 命令命令 条件:对应数据库打开条件:对应数据库打开格式:格式:CREATE SQL VIEW 视图名;视图名; AS SELECT-SQL 语句语句例例1:CREATE SQL VIEW js_view AS SELECT * FROM sjk!JS例例2:CSQL=“SELECT * FROM sjk!JS”(字符型变量)(字符型变量)C

37、REATE SQL VIEW JS_VIEW AS &CSQL(宏替换)宏替换)上一页下一页退 出33336/5/20226/5/20222 使用视图更新源表数据使用视图更新源表数据n再次与查询比较:再次与查询比较:视图可以更新基表,而查询不行视图可以更新基表,而查询不行1. 使表可更新:使表可更新:“更新条件更新条件”选项卡选项卡n在在“表表”下拉列表框中指定受设置影响的表下拉列表框中指定受设置影响的表n在在“字段名字段名”列表中列表中 选定表中的字段,至少应选定表中的字段,至少应设置一设置一个字段作为个字段作为“主关键字主关键字”及及“可更新字段可更新字段”n“发送发送SQL更新更新”复选

38、框中可以设置是否允许对基表复选框中可以设置是否允许对基表的更新,它是更新的主开关的更新,它是更新的主开关=DBSETPROP (“视图视图名名”,“View”,”SendUpdates”,.T. )2. 设置关键字段设置关键字段 VFP用关键字段来唯一标识那些已在视图中修改过用关键字段来唯一标识那些已在视图中修改过的源表的更新记录。设置的源表的更新记录。设置“关键字段关键字段”,可用来检验更可用来检验更新冲突新冲突上一页下一页退 出34346/5/20226/5/2022(1)指定可更新字段指定可更新字段 如果要设置给定表中部分或全部字段允许更新,如果要设置给定表中部分或全部字段允许更新,必须

39、在该表的所有字段中设置必须在该表的所有字段中设置一个关键字段一个关键字段n“关键关键”列:钥匙形,将字段设置为关键字段列:钥匙形,将字段设置为关键字段命令设置:命令设置:=DBSETPROP (“视图名视图名.字段名字段名”,“Feild”, ;“KeyField” ,.T. )n“更新更新”列:笔形,设置一个字段为可更新的列:笔形,设置一个字段为可更新的n“全部更新全部更新”:在一张已有关键字段表中的除该关键:在一张已有关键字段表中的除该关键字段外的所有字段均可设置为可更新字段外的所有字段均可设置为可更新命令设置:命令设置:=DBSETPROP (“视图名视图名.字段名字段名”,“Feild”, ;“Updatename” , “基表基表.字段名字段名” )上一页下一页退 出35356/5/20226/5/2022n 指定用指定用Updatable属性进行更新的字段属性进行更新的字段=DBSETPROP (“视图名视图名.字段名字段名”,“Feild”, ; “Updatable”,”T”) (2)控制如何检查更新冲突控制如何检查更新冲突n 若不同用户同时更新基表数据,当发生时如何处理若不同用户同时更新基表数据,当发生时如何处理? 使用使用“SQL WHERE”单选按钮组设置更新检查单选按钮组设置更新检查

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论