第5章 查询和视图

58
长长长长长长长长 第5第 第第第第第

Upload: roman

Post on 08-Jan-2016

86 views

Category:

Documents


8 download

DESCRIPTION

第5章 查询和视图. 第5章 查询和视图. 5.1 查询 5.2 视图 5.3 SQL 语言. 5.1 查询. 查询和视图是检索和操作数据库的两个基本手段。 两者都可以从一个或多个相关联的数据表中提取有用的信息。 查询可以根据表或视图定义,它不依赖于数据库而独立存在,可以显示但不能更新由查询检索到的数据(查询结果是只读的)。 视图兼有表和查询的特点,它可以更改数据源中的数据,但不能独立 存在,必须依赖于某一个数据库。. 5.1.1 查询的概念. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第5章  查询和视图

长沙民政学院电子系

第 5 章 查询和视图第 5 章 查询和视图

Page 2: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

第 5 章 查询和视图第 5 章 查询和视图

• 5.1 查询• 5.2 视图•5.3 SQL 语

Page 3: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.1 查询 5.1 查询• 查询和视图是检索和操作数据库的两个基本手段

• 两者都可以从一个或多个相关联的数据表中提取有用的信息。

• 查询可以根据表或视图定义,它不依赖于数据库而独立存在,可以显示但不能更新由查询检索到的数据(查询结果是只读的)。

• 视图兼有表和查询的特点,它可以更改数据源中的数据,但不能独立存在,必须依赖于某一个数据库。

Page 4: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.1.1 查询的概念5.1.1 查询的概念• 通过查询可以对几个相关联的表或视图中的数据,按指定的条件和内容进行检索,得到需要的信息并能对原始数据进行某些统计计算。• 利用查询设计器可以在交互环境下建立查询文件( .QPR ),运行该文件即可获取检索信息。方法是:•( 1 )选择查询的数据源(包括自由表、数据库表和视图);•( 2)选择要检索的字段;•( 3 )设置查询条件来查找满足用户要求的记录;•( 4)设置排序或分组来组织查询结果;•( 5)选择查询去向。•( 6)运行查询,获得查询结果。

Page 5: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.1.2 创建查询5.1.2 创建查询

•1. 启动查询设计器

•( 1)项目管理器:选择 “查询”数据项,单击“新建”按钮,出现“新建查询”对话框,选择“新建查询”命令,打开查询设计器。

•( 2 )菜单:选择“文件 | 新建”命令,在“新建”对话框中选择“查询”文件类型,然后单击“新建文件”按钮。

•( 3)命令: CREATE QUERY <查询文件名 >

•2 .查询设计器的使用 设计器窗口分上下两部分:上部是数据源,下部有字段、联接、筛选、排序依据、分组依据和杂项 6个选项卡。

Page 6: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

查询设计器

5.1.2 创建查询5.1.2 创建查询

数据源

设置参数

Page 7: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.1.2 创建查询5.1.2 创建查询

•( 1)选择数据源:启动查询设计器后,出现

“添加表或视图”对话框。单击“添加”按钮

,可将表或视图加入设计器中。

从列表框中选择数据库表或视图

单击此按钮添加自由表

Page 8: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.1.2 创建查询5.1.2 创建查询

• ( 2)选择查询字段: 在“字段”选项卡中可以指定查询要输出的字段、函数或表达式。

在列表框中选择要查询的字段

输出字段

单击此按钮

Page 9: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.1.2 创建查询5.1.2 创建查询• (3)建立数据表间的联接:当查询是基于多个表时,这

些表之间必须有联系,根据联接条件来提取表中相关的数据信息。

• 数据表间的联接条件可以在“联接”选项卡中指定。如果表间已建立了永久关系,则会自动反映在“联接”选项卡中。

• 内部联接:检索两个表中同时满足条件的记录

• 左联接:检索左表中所有记录以及右表中满足条件的记录(右表中不满足条件的记录所对应的字段值为 NULL)

• 右联接:检索右表中所有记录以及左表中满足条件的记录

• 完全联接:检索两个表中的所有记录

Page 10: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.1.2 创建查询5.1.2 创建查询

建立数据表间的联接

两表间的联接关系线

联接类型 联接条件

Page 11: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.1.2 创建查询5.1.2 创建查询

•( 4)指定查询条件:在“筛选”选项卡中建立筛选表达式,选择满足查询条件的记录。•

Page 12: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.1.2 创建查询5.1.2 创建查询

• ( 5)组织查询结果:按某个字段顺序排列查询结果或分组排列。

• ① 设置数据排序 在“排序依据”选项卡中指定排序的依据。

先按成绩字段降序排列,成绩相同的再按学号升序排列

Page 13: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.1.2 创建查询5.1.2 创建查询• ② 设置分组排序 在“分组依据”选项卡中指定分组的依据。• 分组排序与求和( SUM)、计数( COUNT)、求平均值( AVG)等统计计算一起使用,可以完成一组记录的计算。

Page 14: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.1.2 创建查询5.1.2 创建查询

• ( 6)杂项选择:在“杂项”选项卡中选择要输出的记录范围,默认将查询得到的结果全部输出。

Page 15: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.1.2 创建查询5.1.2 创建查询

•3 .选择查询去向 打开查询设计器,选择“查询 |查询去向”命令,在 “查询去向”对话框中选择输出去向。

Page 16: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.1.2 创建查询5.1.2 创建查询

• ( 1)浏览 :查询结果输出到浏览窗口(默认)。

• ( 2)临时表:查询结果存入一个临时的只读数据表中。关闭此数据表时,查询结果将丢失。

• ( 3)表:查询结果存入表文件,可以作为一个自由表使用。

• ( 4)图形:查询结果以图形方式输出。

• ( 5)屏幕:查询结果输出主窗口。

• ( 6)报表:查询结果输出到一个报表文件中。

• ( 7)标签:查询结果输出到一个标签文件中。

Page 17: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.1.2 创建查询5.1.2 创建查询•4.保存查询文件 选择“文件|另存为”命令。•5.运行查询 查询文件保存了建立查询时的各种设置信息,通过运行查询文件,可以按指定的查询去向输出查询结果。•(1)项目管理器:选定要运行的查询,然后单击“运行”按钮。•(2)菜单:选择“查询|运行查询”命令,或单击工具栏中的运行按钮“!” 。•(3)命令: DO <查询文件名 .QPR>

• 6.修改查询 重新打开查询设计器修改各项设置•(1)项目管理器: 选中要修改的查询文件,单击“修改”按钮。•(2)命令: MODIFY QUERY <查询文件名>

Page 18: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.1.3 查看查询文件5.1.3 查看查询文件

• 利用查询设计器得到的查询文件是一个文本文件,用户可以查看其内容。• 打开查询设计器,选择“查询 |查看SQL”命令,打开一个只读窗口,其中显示了一条 SQL语句,它包含了用户创建这个查询的所有信息。

Page 19: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.2.1 视图的概念5.2.1 视图的概念

• 通过视图不仅可以从多个表中提取数据,还可以在改变视图数据后,把更新结果送回到数据源表中。• 视图不能以自由表文件的形式单独存在,它必须依赖于某个数据库,并且只有在打开相关的数据库之后,才能创建和使用视图,视图是数据库中的一个特有功能。 • 依据数据来源可以将视图分为两类:•( 1)本地视图:使用本地表或视图•( 2)远程视图:使用 ODBC远程数据源• 如果要保存检索结果,应当使用查询;如果要提取可更新的数据,应当使用视图。

Page 20: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.2.2 创建视图5.2.2 创建视图

• 利用视图设计器可以在交互环境下创建视图。•1 .启动视图设计器•( 1)项目管理器: 选择数据库中的“本地视图”项,然后单击“新建”按钮,出现“新建本地视图”对话框,选择“新建视图”命令,打开视图设计器窗口。•( 2)命令: CREATE VIEW

•2.视图设计器的使用 与查询设计器相比,视图设计器中只多了一个“更新条件”选项卡,其它都相同。• 通过在“更新条件”选项卡中设置更新属性,可以把对视图数据的修改回送到数据源表中。

Page 21: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.2.2 创建视图5.2.2 创建视图

可更新的字段关键字段

选中此项可以将视图的修改结果回送到数据源表

Page 22: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.2.3 使用视图5.2.3 使用视图

• 视图建立之后,就可以象数据表一样使用。• 视图在使用时,作为临时表在自己的工作区中打开,如果该视图基于本地表,则系统将同时在另一个工作区中打开源表。• 视图的操作:•(1)使用 USE <视图名> 命令打开视图。•(2)使用 USE 命令关闭视图。•(3)在“浏览”窗口中显示或修改视图数据。•(4)使用 SQL语句操作视图。•(5)在文本框、表格控件、表单或报表中使用视图作为数据源。

Page 23: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.3.1 SQL 语言概述5.3.1 SQL 语言概述• SQL语言是数据库的标准语言,几乎所有的关系数据库管理系统都支持 SQL标准。 SQL语言的主要特点是:•(1)高度集成化 SQL语言集数据定义、数据操纵、数据查询和数据控制功能于一体。•(2)非过程化 SQL是一种非过程化的语言。•(3)简洁易学 SQL语言完成数据定义(CREATE、 DROP、 ALTER)数据操纵( INSERT、 UPDATE、 DELETE)、数据控制( GRANT、 REVOKE)和数据查询( SELECT)等核心功能只用了 9个命令动词;而且语法也接近英语自然语法。•(4)用法灵活 SQL语言既能够以人机交互方式来使用,也可以嵌入到程序设计语言中以程序方式使用。

Page 24: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.3.2 数据定义5.3.2 数据定义

• 标准 SQL的数据定义功能非常广泛,包括数据库、表、视图、存储过程、规则及索引的定义等。数据定义语言由 3个命令组成。

•( 1)定义表: CREATE Table

•( 2)修改表结构: ALTER Table

•( 3)删除表: DROP Table

Page 25: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

1. 表的定义1. 表的定义•格式:•CREATE TABLE|DBF <表名 >(字段名 类型 ( 宽度 ,小数位数 ))[NULL] CHECK <字段有效性规则 > ERROR <错误信息 > DEFAULT <默认值 > PRIMARY KEY|UNIQUE && 主索引 |候选索引

•例如,定义一个名为“学生 1.DBF”的数据库表:• CREATE TABLE 学生 1(学号 C(8) PRIMARY,; && 学号为主索引– 姓名 C(8),性别 C(2) DEFUALT “男” ,; && 性别的默认值为“男”– 出生日期 D,系别 C(10),贷款否 L,简历 M,照片 G NULL)

Page 26: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

2. 表结构的修改2. 表结构的修改–(1)格式1:添加或修改字段 ALTER TABLE <表名> ADD|ALTER <字段名><类型>(宽度,小数位数)

• CHECK <字段有效性规则> ERROR <出错信息>• PRIMARY KEY | UNIQUE

•例如,• 在“成绩 1”表中添加一个字段:平时成绩 N(5)• ALTER TABLE 成绩 1 ADD 平时成绩 N(5)• 将平时成绩字段修改为 N(5,1)• ALTER TABLE 成绩 1 ALTER 平时成绩 N(5,1)

Page 27: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

2. 表结构的修改2. 表结构的修改•(2) 格式2:修改或删除默认值、字段有效性规则ALTER TABLE <表名> ALTER <字段名> [SET DEFAULT <默认值>] [DROP DEFAULT] [SET CHECK <有效性规则>] [DROP CHECK]•例如,

• 删除“成绩 1”表中平时成绩字段的有效性规则:

• ALTER TABLE 成绩 1 ALTER 平时成绩 DROP CHECK• 将平时成绩字段的默认值设置为 80:

• ALTER TABLE 成绩 1 ALTER 平时成绩 SET DEFAULT 80•

Page 28: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

2. 表结构的修改2. 表结构的修改• (3)格式3:删除字段、更改字段名、设置记录有效性规则等• ALTER TABLE <表名> DROP <字段名> && 删除字段

ENAME COLUMN <原字段名> TO <新字段名> && 更改字段名SET CHECK <记录有效性规则> ERROR <出错信息> [ DROP CHECK ] && 设置或删除记录有效性规则ADD PRIMARY KEY <复合索引表达式> TAG <索引标识 >[ DROP PRIMARY KEY ] && 设置或删除主复合索引表达式 ADD UNIQUE <复合索引表达式> TAG <索引标识 >[ DROP UNIQUE ] && 设置或删除候选复合索引表达式

• 例:将“学生 1”表中的“学号”字段更名为“学生证编号“• ALTER TABLE 学生 1 RENAME COLUMN 学号 TO 学生证编号• 对“学生 1”表中的“姓名”和“出生日期”字段建立主索引• ALTER TABLE 学生 1

ADD PRIMARY KEY 姓名 +DTOC(出生日期) TAG 姓名 _生日

Page 29: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

3. 表的删除3. 表的删除

• ( 3)删除表: DROP TABLE <表名 > • 例如,删除“学生 1”表

• DROP TABLE 学生 1

Page 30: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.3.3 数据操纵5.3.3 数据操纵• ( 1)插入记录• 格式1:在表的尾部尾添加一条新记录

– INSERT INTO <表名> (字段1,字段2,……) VALUES (值1,值2,……)

• 说明:插入所有字段值时,可省略<字段名表>• 例如,向“学生 1”表中添加两条记录:• INSERT INTO 学生 1 VALUES(“01020314”,”张红” ,“男” ,;• {^1982/07/01},”计算机” ,.T.,”张红是北京人” ,null)• INSERT INTO 学生 1(学号,姓名 ) VALUES(“01020315”,”李兰” )• 格式2:记录值来自数组或同名的内存变量

– INSERT INTO <表文件> FROM ARRAY <数组>|FROM MEMVAR

Page 31: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.3.3 数据操纵5.3.3 数据操纵• (2)删除记录• 格式: DELETE FROM <表名 > WHERE <条件 >• 说明:该命令执行的是逻辑删除操作。• 例如,将“学生 1”表中所有男生的记录逻辑删除:• DELETE FOR 学生 1 WHERE 性别 = “男”• (3) 更新记录• 格式: UPDATE <表名 > SET <字段名> = <表达式

> WHERE <条件 >• 例如,将“学生 1”表中所有男生的“贷款否”字段

改为“ .T.”

• UPDATE 学生 1 SET 贷款否 = .T. WHERE 性别 = “男”

Page 32: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.3.4 数据查询5.3.4 数据查询

• 数据查询是 SQL语言的核心,也称作

SQL-SELECT命令。使用 SQL-SELECT命令,

可以对数据源进行各种组合,有效地筛选记录

、管理数据、并对结果排序及指定输出去向等

,无论查询多么复杂,其内容只有一条

SELECT语句。

• SQL-SELECT 命令可以进行多个查询块

的嵌套查询,以完成更复杂的查询任务。

Page 33: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.3.4 数据查询5.3.4 数据查询• 格式: SELECT [DISTINCT] [TOP<数值> [PERCENT]]

[<别名1>.]<选项1> AS <列名1>, [<别名2>.]<选项2> AS <列名2>,…… FROM <表1> [AS <别名1>],<表2>[AS <别名2>],…… [[INNER|LEFT|RIGHT|FULL] JOIN <表2> ON <联接条件>] [INTO <目标>]|TO FILE <文件名>|TO PRINT [WHERE <筛选条件> [AND <联接条件>]]

• [GROUP BY <分组项>] [HAVING <筛选条件>] [ORDER BY <排序项1>, <排序项2>]

• [UNION SELECT <命令>]

Page 34: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.3.4 数据查询5.3.4 数据查询•1. 基本查询: SELECT…FROM…WHERE • 例如,从“学生”表中查询所有男生的学号、姓名和出生日期:• SELECT 学号 ,姓名 ,出生日期 FROM 学生 WHERE 性别 =“男”•2. 带特殊运算符的条件查询:在 WHERE 子句所带的筛选条件表达式中可以使用一些特殊运算符,如 IN 、 BETWEEN…AND… 、 LIKE 。• 例如,查询成绩良好( 75~ 85 分)的学生和课程信息:• SELECT * FROM 成绩 WHERE 成绩 BETWEEN 75 AND 85 •3. 排序查询:使用 ORDER BY 子句,可以对查询结果按升序( ASC)或降序( DESC)排列。 • 例如,按课程号输出学生的各科成绩,同一门课按成绩降序排列:• SELECT * FROM 成绩 ORDER BY 课程号 , 成绩 DESC

Page 35: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.3.4 数据查询5.3.4 数据查询• 4. 计算与分组查询:使用 GROUP BY 子句可以实现分组查询,通常与计算查询(如计数、求和、求平均值等)结合使用,先按指定的数据项分组,再对各组汇总计算。• 例如,查询各门课程的平均成绩:• SELECT 课程号 ,AVG(成绩 ) AS 平均成绩 FROM 成绩 GROUP BY 课程号•5. 多表查询:多表查询时,表和表之间必须有联接关系,在 WHERE子句中可以指定表间的联接关系。其格式为:• <表名 1>.<字段名 1> = <表名 2>.<字段名 2> 或• < 别名 1>.<字段名 1> = < 别名 2>.<字段名 2>•例如,查询各门课程的平均成绩,要求输出课程名和成绩信息:• SELECT 课程名 ,AVG(成绩 ) AS 平均成绩 FROM 课程 KC,成绩 CJ;• WHERE KC.课程号 = CJ.课程号 GROUP BY CJ.课程号

Page 36: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.3.4 数据查询5.3.4 数据查询•6. 联接查询:利用 FROM…ON 子句建立两表之间的联接。• 格式: FROM <表名1> INNER | LEFT | RIGHT | FULL JION <表名2> ON <联接条件>• 说明: INNER JOIN(内部联接 )、 LEFT JOIN(左联接 )、 RIGHT

JOIN(右联接)、 FULL JOIN(全联接)的含义与 4.1.2 节中相同• 例如,• 查询各门课程的平均成绩,要求输出课程名和成绩信息:• SELECT 课程名 ,AVG(成绩) AS 平均成绩 FROM 课程 KC ;

• INNER JOIN 成绩 CJ;• ON KC.课程号 = CJ.课程号 ;• GROUP BY CJ.课程号

Page 37: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.3.4 数据查询5.3.4 数据查询

•7. 嵌套查询:在一个 SELECT 命令的 WHERE 子句中出现另一个 SELECT 命令 (即子查询)。• 子查询的结果必须是确定的值。• 例如,查询李华同学所学课程的课程名和成绩:• SELECT 课程名 , 成绩 FROM 课程 KC, 成绩 CJ;• WHERE KC.课程号 = CJ.课程号 ;• AND CJ.学号 = (SELECT 学号 FROM 学生 WHERE 姓名 =“李华” )

• 子查询WHERE 子句中同时包

含联接条件和筛选条件

Page 38: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

5.3.4 数据查询5.3.4 数据查询• 8. 查询输出:查询结果默认显示在浏览窗

口中,通过 INTO 子句或 TO 子句可以对输出重定向。

• 格式:• INTO ARRAY <数组 > | CURSOR <临时

表 > | && 保存到内存 DBF <表文件 > | TABLE <表文件 > && 保存到表文件– TO FILE <文本文件 > && 保存到

文本文件– TO PRINT && 打印– 例如,查询各门课程的平均成绩,结果保存在

“平均成绩”表中。– SELECT 课程号 ,AVG(成绩 ) AS 平均成绩

FROM 成绩 ;– GROUP BY 课程号 INTO TABLE 平均

成绩

Page 39: 第5章  查询和视图

长沙民政学院电子系

第 6 章 结构化程序设计 第 6 章 结构化程序设计

Page 40: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

6.1.1 基本概念6.1.1 基本概念•1 .程序 能够完成特定任务的命令序列,存储在命令文件( .PRG)中。运行该文件可自动执行一系列操作。•2 .结构化程序设计 用结构化编程语句来编写程序。•3 .程序的基本结构•( 1)说明部分:一般是一组注释语句。•( 2)初始化部分:设置程序运行时的系统状态和参量初值。•( 3)程序主体部分:包括数据输入、处理和输出 3个模块。•( 4)还原部分:将当前的工作环境恢复到执行该程序前的状态。•( 5)程序的退出:程序运行完毕,返回 VFP 应用程序窗口或退出 VFP,返回操作系统。

Page 41: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

6.1.2 程序文件的建立6.1.2 程序文件的建立

•1 .项目管理器 :选择 “程序”项,单击“新建”

按钮,打开代码编辑窗口,输入程序内容。然后选择

“文件 |保存”命令将编写的代码存入磁盘。

•2. 菜单:选择“文件 |新建”,在“新建”对话框

中选择“程序”文件类型,单击“新建文件”按钮,

进入代码编辑窗口。

•3. 命令: MODIFY COMMAND <程序文件名 >

• 输入命令语句时,必须一条命令占一行,一

行写不下时,在行尾加续行符( ;),换行后接着书

写该命令语句。

Page 42: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

6.1.2 程序文件的建立6.1.2 程序文件的建立

代码编辑窗口

命令序列

注释语句

Page 43: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

6.1.3 程序文件的修改6.1.3 程序文件的修改

• 对已建立的程序文件可以重新进入代码编辑

窗口修改内容。

• 1 .项目管理器:选中要修改的程序文件,单击

“修改”按钮,重新打开代码编辑窗口。修改

后,选择“文件 |保存”命令,保存程序。

• 2 .菜单:选择“文件 |打开”命令,将要修改

的程序文件调入代码编辑窗口。

• 3 .命令: MODIFY COMMAND <程序文件名 >

Page 44: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

6.1.4 程序文件的执行6.1.4 程序文件的执行

• 1. 项目管理器:选中要执行的程序文件,单击“运行”按钮。

• 2. 菜单:选择“程序 |运行”命令。

• 3. 命令: DO <程序文件名 >

Page 45: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

6.2.1 基本命令6.2.1 基本命令•l.注释命令 非执行语句,用于提高程序的可读性。• NOTE、 *(行首注释)、 &&(行尾注释)•2. 环境设置命令 set 命令。•3. 清除命令: CLEAR(清屏)• CLEAR ALL(关闭所有文件、清除所有内存变量)•4. 关闭文件命令: CLOAE ALL (关闭所有文件)• CLOSE < 文件类型> (关闭指定类型的文件)•5. 运行中断和结束命令• Cancel 终止程序运行,返回命令窗口。 • RETURN 结束当前程序的执行,返回到调用它的上级程序。• QUIT 关闭所有文件,退出 VFP 系统,返回操作系统环境。

Page 46: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

6.2.2 输入 / 输出命令6.2.2 输入 / 输出命令•1.基本输出命令: ?|?? <表达式1>[,<表达式2>…]•2. 单字符输入命令: WAIT

•3.字符串输入命令: ACCEPT TO <内存变量 >•4.表达式输入命令: INPUT TO <内存变量 >•5.格式输入输出命令• 格式1: @ <行号,列号 > SAY <表达式> • 功能:在主窗口指定的位置处显示表达式的值• 格式2: @ <行号,列号 > SAY <表达式> GET <变量 > • READ• 功能:在窗口指定位置处分别显示表达式和变量的值。若使用 READ 语句,则可以对变量进行修改。

Page 47: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

6.3 程序的基本控制结构6.3 程序的基本控制结构•1.顺序结构:按程序中语句的书写顺序逐条执行。•2.分支结构(选择结构):根据逻辑条件的结果执行不同的命令序列。•(1)单分支结构: IF...ENDIF•( 1)双分支结构: IF...ELSE...ENDIF•( 2)多分支结构: DO CASE...ENDCASE•3. 循环结构:按规定的条件重复执行一段命令序列。•(1 ) DO WHILE...ENDDO•( 2) FOR ... ENDFOR•( 3) SCAN …ENDSCAN 对数据表的循环操作。•说明:分支结构或循环结构可以嵌套,但分支与分支之间或循环与 循环之间不能交叉。

Page 48: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

条件

语句列

ENDIF 后面语句

Y

N

单分支结构流程图

条件

语句列 2

ENDIF 后面语句

Y N

语句列 1

双分支结构流程图

6.3 程序的基本控制结构6.3 程序的基本控制结构

Page 49: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

多分支结构流程图

条件 1

ENDCASE 后面语句

N

Y

条件 2

条件 n

OTHERWISE

N

N

语句列 1

语句列 2

语句列 n

其它语句列有

6.3 程序的基本控制结构6.3 程序的基本控制结构

Page 50: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

循环结构

条件

循环体

ENDDO 后面语句

Y

N

含有 LOOP 或 EXIT 的循环结构

条件

ENDDO 后面语句

Y

N

LOOP

EXIT

循环体

6.3 程序的基本控制结构6.3 程序的基本控制结构

Page 51: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

6.4.1 过程与过程文件6.4.1 过程与过程文件

• 过程也叫子程序,是一个相对独立的程序段 , 可以被其他程序调用。调用子程序的程序称为主程序。

•1. 过程的建立与调用

•( 1)过程的建立:一个过程就是一个具有特定功能的命令文件( .PRG ),它的建立、运行与一般程序相同。但是,一个过程中至少要有一条 RETURN 返回语句。

•(2)过程的调用:在上级程序中设置一条 DO 命令即可调用一个过程。

• 命令: DO <过程名> [IN <文件名>] [WITH <参数表>]

Page 52: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

...DO SUB1

.. .

...

CANCEL

主程序MAIN.PRG

...DO SUB2

.. .

...

RETURN

子程序SUB1.PRG . . . .

. . . . . .

RETURN . . . . . .

RETURN TO MASTER

子程序SUB2.PRG

过程调用示意图

6.4.1 过程与过程文件6.4.1 过程与过程文件

Page 53: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

6.4.1 过程与过程文件6.4.1 过程与过程文件•2.过程文件 将多个过程存放在一个文件中形成过程文件。过程文件中的过程不能作为一个命令文件单独存盘或独立运行。•(1)过程文件的建立• 命令: MODIFY COMMAND <过程文件名>• 过程文件的基本结构:• PROCEDURE <过程名>• <命令序列>• [RETURN [TO MASTER]]• ENDPROC

•( 2)过程文件的打开与关闭 • 命令: SET PROCEDURE TO <过程文件>

Page 54: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

6.4.1 过程与过程文件6.4.1 过程与过程文件•3.带参数的过程调用 将不同的参数分别传递给同一过程,执行同一功能的操作后返回不同的结果,可以大大提高程序模块的灵活性。

•(1)定义带参数的过程:

• PROCEDURE <过程名>

• PARAMETERS <参数表>

• <命令序列>

• RETURN

• ENDPROC

•( 2)调用带参数的过程:

• 命令: DO <过程名> WITH <参数表> 定义过程时所用的参数为形式参数,调用子程序时所用的参数为实际参数。使用时是将实参来代替子程序中的形参。

Page 55: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

6.4.2 自定义函数6.4.2 自定义函数

• 自定义函数的建立和使用方法与过程相同。函数除了完成某种特定操作外,还返回一个值。

•1. 定义函数

• FUNCTION <函数名 >( [< 参数表 >])

• <命令序列 >

• [RETURN <表达式 >]

• ENDFUNC

•2. 调用函数

• 格式: <函数名 >(< 参数表 >)

Page 56: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

6.4.3 变量的作用域6.4.3 变量的作用域•1.全局变量 使用 PUBLIC 关键字定义的变量(也称公共变量),可以是全局内存变量或数组。 • 格式: PUBLIC <内存变量表> | [数组 ]•2.局部变量 使用 LOCAL 关键字定义的变量。• 格式: LOCAL <内存变量表> | [数组 ]•3.私有变量 没有通过 PUBLIC 或 LOCAL 关键字定义而在程序中直接使用(即由系统自动隐含建立)的变量。• 私有变量在建立它的程序及其下属的子程序中有效,一旦建立它的程序运行结束,这些私有变量就自动清除。• 当子程序中的变量与上级程序中的变量同名时,可以在当前子程序中使用 PRIVATE 关键字对该同名变量进行隐藏说明,使其在当前子程序中暂时无效。• 格式: PRIVATE <内存变量表>

Page 57: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

6.5 程序的调试6.5 程序的调试

• 调试程序就是在调试窗口动态监测程序的执行情况,对于语法错误,系统可以给出出错信息并指出出错的位置;对于编程中的算法错误(或逻辑错误),系统是无法确定的,只能由用户自己根据程序运行的结果来检查。

•1. 调试器窗口:选择“工具|调试器”命令,打开调试器窗口。在该窗口中通过“窗口”菜单,可打开跟踪、监视、局部、调用堆栈和输出5个子窗口,它们分工合作、协调一致地完成程序的调试任务。

•2. 调试菜单:包含了程序调试过程中使用的各种命令。

Page 58: 第5章  查询和视图

长沙民政学院电子系

目录

重点

难点

上页

下页

6.5 程序的调试6.5 程序的调试

断点跟踪窗口

监视窗口

调用堆栈窗口

局部窗口

调试输出窗口

当前行

调试菜单