VF最终编辑的教案【考试详解】

更新时间:2023-05-28 11:05:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

VF考试详解

第三章:VF数据库的操作

一.项目 理论

1项目的功能:项目在数据库开发中管理和控制各类所有文件.它只是管理和控制,并不存储.VF

中每个项目有一个项目管理器. 2项目的组成:项目管理器由全部、数据、代码、文档、类、其它等六个标签。 2.1数据标签:主要管理VF所涉及的四大类:数据库,自由表,查询,视图. 2.2文档标签:主要管理表单,报表,标签.

2.3类标签:主要管理类. 对象是实体,类是框架.是一类相似对象的性质描述。 2.4 代码标签:主要管理程序,即Prg程序,API函数库,APP程序. 2.5其它标签:管理其它文件如菜单,位图,文本等. 上机:

如:1在硬盘上创建一个文件夹,在新建一名为“学生管理“项目.

1.1双击打开我的电脑,现双击打开硬盘上的某个盘符,执行“文件“菜单下的”新建文件夹“命令,新建一个文件夹并自己命名。如命名为”0124“. 1.2设置进入0124文件夹

cd getdir() 更改默认目录,或在“工具”菜单下的“选项”命令下的“文件位置”下“默

认目录”下点修改进行更改路径。

cd 显示路径.(常用命令,显示当前路径,机试考试启动VF,输入CD,显示路径

与考生文件夹一致,才可答题,否则无效)

1.3 新建项目. 执行“文件”菜单——“新建“命令或 常用工具栏上的新建按钮. 1.4 出现新建对话框,选项目,点新建,在命名为"学生管理"保存. 2 项目的打开:

练习:打开0124文件夹中的学生管理项目.

先输入CD,显示当前路径是否在自己新建的文件夹,是执行2.2步直接打开,不是执行2.1步设定

2.1进入0124文件夹. cd getdir()或通过“工具”菜单下的“选项”下的“文件位置”设定 2.2 打开项目 单击“文件”下菜单下的打开命令或 常用工具栏的打开. 2.3 出现对话框,文件类型选项目 PJX,再选定“学生管理”项目文件,确定.

注:再打开项目后,如果是空项目,在关闭时会提示对话框“删除/保存”,删除是从硬盘文件夹直接删除,点保存仍然在自己新建的文件夹下。 二.有关数据库. A理论

数据库是相关表的集合,它是表的一种容器,主要管理和控制表,但不存储表. 数据库的构成: 数据库文件 .dbc 备注文件: .dct 索引文件: .dcx B上机

1 在学生管理项目中创建一“学生库”数据库.(在项目中先选文件类型) 1.1打开学生管理项目管理器.

1.2 单击数据标签,选定数据库(文件类型),点新建,再点新建数据库,再命名为“学生库“,点保存命令,此时系统将打开学生库设计器.

2 “学生库“数据库的打开(项目下选具体的文件).

2.1打开学生管理项目,选定数据库+号展开,再选定"学生库"文件,点修改.打开库设计器. 3 从学生管理项目中移出“学生库”数据库(项目下选具体的文件). 打开学生管理项目,选定"学生库"数据库文件,点移去按钮,出现提示: 有二项.移去/删除:

VF考试详解

移去:从项目中删除数据库,但在文件夹中存在.只是不受项目管理. 删除:直接从硬盘文件夹中删除数据库.

4 添加“学生库”数据库到学生管理项目(项目中选文件类型).

4.1打开学生管理项目,选定要添加的文件的文件类型(数据库),点添加,选定文件,确定. 小结:新建文件或添加文件在项目中选具体的文件类型(如图),

打开(修改)或删除文件选具体的文件(如图b)(第一章1.5.2节概述)

3有关表 A 理论

1分类: 表分为自由表和数据库表.

二者扩展名均为.dbf,二者可转换.数据库表受数据库管理控制,自由表不受任何数据库管理. 2表结构的描述. 表名(字段名,数据类型,宽度,小数位)

如 学生(学号 C6,姓名 C8,出生日期 D,成绩(N,6,2),民族 L ) 3 字段: 变量按空间分为字段变量和内存变量.

3.1字段名命名: 1不能用数字开头,只能是汉字或字母开头

VF考试详解

2字段名可以用字母,数字,下划线,汉字命名. 3不能是关键字.

4数据库表的字段名长度不超过128字符,自由表字段名最长为10 例:指出错误的字段名: A B C E

A姓 名 B [学号] C 23 D A1 E B? 3.2字段类型 共有11种类型. 6种常用.

6种常用: 数值型N,字符型C,货币型Y,日期型D,日期时间T,逻辑型L,

7整型i: 它是数值型的一种,只存储整数部分,如成绩可设数值型,可设整型。. 8单精度F: 它是数值型的一种,存储精度小的实数. 9双精度B: 存储精度大的实数.

10备注型M:它是字符型的一种,用于存长度超过254的C型数据. 11通用型G:存其它文件创建的文档,如Word,位图bmp. 3.3字段宽度默认 D---8 T---8 i---4 L---1 M----4 G---4

B上机 注意:有关表的操作如表的新建、打开、浏览、删除均在数据库设计器中右击完成(重点)

1数据库表的创建.如在学生数据库中创建如下表: 学生(学号C6,姓名C8,性别L,出生日期D,班级C2) 成绩(学号C6,课程号C2,成绩N(6,2)) 1使用数据库设计器建表

A打开学生管理项目,选定“学生库”数据库文件,点修改,打开“学生库”数据库设计器.

B在“学生库”库设计器空白处右击执行“新建表”命令,点新建表,命名保存,打开表设计器,按考题要求设表的字段名及类型(成绩表类同)

2表结构的修改(机试考点,表的操作主要在表设计器中完成) 如:在学生表中添加字段(照片G)

在成绩表中课程号后插入课程名C8(以上两个操作均在表设计器中完成)

操作1 打开项目,再打开学生库设计器,选定学生表,右击执行修改,打开学生表设计器,单击插入,插入一字段并命名为照片,类型选通用型,再将照片字段拖动至字段底部。.

操作2 打开项目,打开学生管理数据库设计器,选定成绩表,右击点修改,在成绩表设计器完成。 3数据库表的添加和移出.

3.1将数据库表从数据库中移出,变为自由表(在学生库设计器中完成) 练习:将学生表和成绩表从库中移出.

操作1,打开项目,打开学生库设计器,选定学生表,右击执行删除,再单击移去命令,学生表变为自由表(如执行删除命令下的删除命令将永久删除表)

3.2添加自由表到数据库,(在学生库设计器空白表右击执行“添加表”命令)

操作如下:打开学生库设计器,在库设计器空白处右击执行“添加表”命令,出现对话框,选定学生表添加,如要再次添加,再重新在空白处右击“添加表”命令。 4表记录的输入:

练习:在学生表中输入如下记录:

学号 姓名 性别 出生日期 班级 96001 李明 .T. 02/02/1980 01 96002 张海 .T. 11/23/1981 01 96003 王红霞 .F. 01/11/1979 02 96004 李梅 .F. 01/20/1982 02 练习2:在成绩表添加记录

学号 课程号 成绩

VF考试详解

96001 01 80 96002 02 70 96003 01 90 96004 02 60 操作如下:使用学生库设计器

1、打开学生管理项目,打开学生库设计器,选定学生表,右击执行“浏览”命令,打开表浏览器,2、不能在学生表的浏览器中输入记录,则执行“显示”菜单下的“追加方式”命令,再输入记录.(成绩表操作类同) 操作2 使用库设计器.

打开项目,打开库设计器,选定表,右击浏览,再追加,再输入. 5表记录的删除:

删除分物理删除:实际删除

逻辑删除:只是给记录上作删除标记*. 删除过程:选逻辑后物理.

练习:删除学生表中的第一和第三条记录.

操作1 打开表的浏览窗口(在库设计器中右击执行“浏览”命令)

2单击浏览窗口上的第一和第三条记录的删除标记(逻辑删除) 3 执行“表”菜单下的“彻底删除”命令(物理删除) 4浏览窗口自动关闭. 6 有关空值输入.

练习:在学生管理数据库中创建"班级表"输入如下内容. 班级(班级号C2,班级名C20,班主任(C8,NULL) 班级号 班级名 班主任 01 计算机(1) null 02 计算机2 李海 03 计算机3 null

操作1 在班级表设计器中班主任字段null项打勾 .

2 输入记录 null 用快捷键ctrl+0(数字零) 输入.null 值,不能直接输null

第二节:索引

1.1索引是一种特殊的排序.

索引文件分为单索引和复合索引.

1.1.1单索引文件:在一个文件中只能保存一个索引,扩展名为 idx. 1.1.2复合索引文件:在一个文件中可保存多个索引,扩展名为 Cdx. 复合索引文件分为结构复合索引和普通复合索引.

1.2.1结构复合索引:在打开表时会自动打开相关的索引,它是表的一部分,所以称为结构复合索引,其索引名即相关表的主文件名.

1.2.2普通复合索引:打开表时不自动打开,需命令打开,索引名由用户定义. 1.3索引的分类:分主索引,候选索引,唯一索引,普通索引 1.3.1主索引:

特点: 1在一个表中只能是一个.

2主索引涉及的表达式不允许重复值.

3主索引主要用于创建表的永久性关系,只能在数据库表中创建,不能在自由表. 1.3.2候选索引:

特点:一个表中可以有多个索引,只能一个主,其索为候选.

2不允许重复值. 1.3.3唯一索引

1一个表可有多个索引. 2允许重复值,但只重复第一个.

VF考试详解

1.3.4普通索引

它是一种简单的排序,可允许出现多个重复,并可全部重复 小结:在数据库表中允许4种索引,自由表只能是候选、唯一和普通

通过表设计器创建的索引保存在结构复合索引文件中,其扩展名为cdx 上机: 练习:创建索引:

1创建基于学号的主索引ID(索引名) 2创建基于姓名的普通索引XM(按降序) 操作: 1 打开学生表设计器.

2打开索引标签,索引名为ID,类型主索引,表达式中字段双击得到.(创建主索引,输入记录不能重复)

3再在学生表设计器中创建姓名的普通索引XM 2 带条件索引:

练习:对学生表所有"男"同学记录按姓名降序,创建XM2. 操作:1打开学生表设计器,单击索引标签.

2设定索引名XM2,类型普通,表达式姓名,降序,筛选条件设定为:性别=.T. 3 索引的使用:索引可同时打开多个,但同一时刻只能使用一个,此索引称为当前索引 当前索引只影响记录的显示顺序,不改变实际物理顺序. 上机:设定当前索引XM2

1打开学生表的浏览窗口,执行表菜单下的属性命令. 2设置索引顺序XM2,则表中不符合条件的记录被隐藏。. 4字段的有效性设置.

表的完整性分:1域完整性:指数值取值的有效范围.

其通过字段有效性规则设定,如类型,宽度,小数位实现. 2实体完整性:不允许有重复值,通过主索引和候选设定 3参照完整性:不允许使用不存在的元组.

两表关联,不允许有不存在记录,通过永久关系实现. 4自定义完整性:用户自己设定,维护记录的正确性. 练习1: 字段的有效性设置(在表设计器中完成)

设定学生表学号范围为96001--96050,当不符合规则,会出现错误提示:"学生无效" 操作1 打开学生表设计器,选定学号字段(规则涉及字段) 2 在字段有效性中设定:

规则设为: between(学号,"96001","96050")或 学号>=”96001” and 学号<=”96050” 信息设为: "学号无效"

3最后确定,打开浏览窗口,输入学号试.(规则框输入必须是逻辑型,信息项是字符型) 5记录有效性规则:

规则涉及一个字段为字段有效性,涉及多个字段为记录有效性. 练习:再创建如下表

CHJ(姓名 c8 ,数学 I ,语文 i ,总分 i) 规则:总分为数学和语文之和,否则提示"总分错误" 操作:1创建CHJ表,打开CHJ表设计器,单击表标签. 2在记录有效性中设定 规则: 总分=语文+数学 信息: "总分错误"

3单击确定,输入成绩试. (字段或记录有效型的信息项输入必须是字符型) 6字段的默认值设定.

它是字段的域完整性,指添加记录的字段默认内容. 练习:设置学生表中学号的字段默认为96001.

VF考试详解

设置姓名的默认值是张海

操作:打开学生表设计器,单击学号字段,,在默认值项设为:"96001" ,再单击姓名字段,在默认值项输入“张海” , 再单击确定.(默认值输入必须与字段类型一致) 7参照完整性规则

它是参照另一个表的数据来验证本表数据的一种规则. (如通过学生表的学号验证成绩表的学号)

参照完整性规则分为:更新参照完整性,删除参照完整性,插入参照完整性. 7.1更新完整性:更新数据发生. A 忽略:两表更新互不干涉.

B 限制:修改主表时,子表拒绝更新

C 级联: 修改主表时,对应子表同时更新. 7.2 删除完整性: 在逻辑删除表记录时发生. 有忽略,限制,级联.

7.3 插入完整性:在插入记录时发生.有忽略和限制两种情况,没有级联. 说明:在建立一对多联系时,1方需建主索引或候选索引,M方建普通索引. 上机:(完整一套上机题) 先创建“学生管理1”项目 再建“学生库1” 数据库中 创建如下表:

学生1(学号C6,姓名C8,性别L,民族L) 成绩1(学号C6,课程号C2,成绩N(6,2)) 2创建索引.

基于学号 学生表 主索引ID 学号 成绩表 普通索引XH

3创建联系 (在数据库设计器上建立1:1 主:普) 3.1建学生(主)与成绩(子)在学号的1:M联系 4清理数据库,再创建参照完整性.

单击"数据库"菜单下"清理数据库"命令.

5在设计器空白处右击执行"编辑参照完整性"命令. 6设置如下规则:

6.1 学生与成绩之间更新规则为"限制" 6.2 学生与成绩之间删除为级联 6.3 学生与成绩之间插入为限制

7 最后确定即可,不需要保存,直接关闭库或项目。

vf常用命令

一.有关数据库.

1.创建库 create database 库名 2.打开库

格式1: open database 库名 *打开库,并设为当前库.(06年4月考点) 注:1打开库,并不自动打开库中表.2执行时,不打开库设计器

格式2: modify database 库名 *连创建带打开,并打开设计器 3库的删除: delete database 库名

4库的关闭 close database *关闭当前库.

close all database 关闭所有已打开库 close all 关闭所有(常用命令) 二.有关表

1创建表: create 表名

VF考试详解

说明:直接打开表设计器,在没打开库时所建表为自由表,打开库所建表为数据库表,并自动添加到库中.

2打开表 use 表名

3表结构的修改: modify struct 打开当前表的设计器. 4表的关闭: use 关闭当前表,但不关闭库. 5数据库表与自由表的转换:

5.1数据库表转为自自表: remove table 表名 5.2 添加自由表: add table 表名 添加之前应设置当前库.

6 表的删除: drop table 表名 7 有关指针操作.

7.1 go top 指针指向第一条记录 7.2 go bottom 指向最后一条. 7.3 go /go to N 指向第N条

7.4 skip +/- N 指针在当前记录上下移动N 条. 缺省N=1 8 表记录显示

list [范围] [条件] [fields 字段名] 范围: all 全部 l

带条件: for 如: list for 性别=.f. 字段: fields 字段名:

如: list for 性别=.f. fields 姓名,出生日期 只显示女生的姓名和出生日期

display 只是显示当前 list 默认all 显示所有 9记录查询: locate for 条件

continue 可继续下一条. 二者配合使用. 10 表测试函数.

10.1 ?recn() 测试当前记录. ?recc() 显示总记录个数.

?bof() 是否在表头,是显示.T. ?EOF() 是否在表尾. 11 记录插入

11.1 append [before] [blank]

在表尾追加记录 , append blank 追加空记录 11.2 insert [before] [blank]

在当前记录之前或之后插入记录或空记录.

insert before 在当前之前. blank 代表空 12记录的删除与恢复.

12.1 逻辑删除: delete [范围] for 条件 默认delete 删除当前

12.2逻辑删除恢复: recall 范围 for 条件. recall all 恢复所有. 13 物理删除:

pack 删除已逻辑删除的记录. zap 无条件删除表中所有记录. 14 记录的复制

copy to 新表名. 执行前先打开复制的表. copy struct to 新表名 只复制表结构.

VF考试详解

15 记录的追加:

append from 表名:从from 指定表追加所有记录到当前表. 16索引的创建.

index on 表达式 tag 索引名 [cand/uniue] 如: use 学生

index on 学号 tag xh cand 建候选索引 xh index on 学号 tag xh1 建普通索引xh1

第五章:SQL 标准查询语言(重点)

1查询功能

格式 select 字段 AS 别名 from 表名 where 条件

order by 排序字段 [asc/desc] group by 分组字段 having 分组条件

功能:从from 指定的表中提取符合where条件记录,然后按order by 指定的字段排序,接着按group by 指定的字段分组,最后返回select 指定的具体字段内容.

注:练习教材的例题必须创建129页的订货管理数据库,再建仓库、职工、订购单、供应商等表。

资料中的例题建如下表,并添加相应的记录进行查询练习。

学生(学号 C6,姓名 C8 ,性别 L ,出生日期 D ,班级 C2) 成绩 (学号 C6,课程号 C2, 成绩 N (6,2)) 课程 (课程号 C2, 课程名 C8) 例1 查询所有学生表的信息 select *; from 学生

例2: 查询性别为女的汉族学生姓名及学号 select 学号,姓名; from 学生;

where 性别=.f. and 民族="汉" 例3 查询性别为男的所有学生信息. select *; from 学生;

where 性别=.t.

或 sele * from 学生 where 性别=.t. 例4: 查询学号在96001-96005之间的学生记录 select * ; from 学生 ;

where between(学号,"96001","96005") 或 where 学号>="96001" and 学号<="96005"

或 where 学号 between “96001” and “96005” (三种方法均可) 例5: 查询姓张的学生 select *; from 学生;

where 姓名 like "张%"

或 where left(姓名,2)=”张”

&在SQL中 % 代表* , _ 表示?.,命令中查找任意字符用*,而SQL中必须是%。 例6:查询姓名中有海的学生。

VF考试详解

select * ; from 学生;

where 姓名 like "%海%"

“%海”或”海%“均错误,“%海”代表姓名最后一个字是海的学生,而”海%”代表姓海的学生 例7查询姓名为两个字符的学生 在SQL中一个汉字代表一个字符 Sele * from 学生 ; where 姓名 like "_ _"

例8: 查询学号=96003,96002,96005的学生. select *; from 学生;

where 学号="96003" or 学号="96002" or 学号="96005" 或 where 学号 in ("96003","96002","96005") 嵌套查询:

一个查询需使用另一个的查询结果,它们之间是嵌套关系: 例1: 查询选修01课程分数在80分以上的所有学生信息。 使用联接:

select 学生.*; from 学生,成绩;

where 学生.学号=成绩.学号 and 成绩>=80 and 课程号="01" 嵌套实际是分两步:

1 得到01课程并且成绩在80分以上的学生学号 select 学号; from 成绩;

where 课程号="01" and 成绩>=80

2通过第一步得到结果(学号) 再查询相关学生信息 select * ; from 学生;

where 学号 in ; (第一步的结果) 例2(上机考题)

查询选修课的学生信息(选修课指有成绩的学生信息),此查询可以嵌套,可以联接 使用联接

Sele 学生.*; From 学生,成绩;

Where 学生.学号=成绩.学号

嵌套分两步 第一步:先在成绩表中查询有成绩的学生学号。 Sele 学号 from 成绩

第二步:通过第一步查找到的成绩表的学号与学生表的学号对应得到学生信息 Sele * from 学生; Where 学号 in;

(Sele 学号 from 成绩)

例3 查询没有选修课的学生信息(此语句只能嵌套,不能联接) Sele * from 学生; Where 学号 not in;

(Sele 学号 from 成绩)

例10按课程号的升序显示成绩,对于课程号相同的按成绩降序

VF考试详解

select * from 成绩;

order by 课程号,成绩 DESC

例11:按成绩降序查看01课程的学生成绩 select *; from 成绩;

where 课程号="01"; order by 成绩 desc 统计函数

count (*) 统计记录个数 count括号内可用*,可用字段,其他函数只能是字段。 max (字段) 计算指定字段的最大值 min(字段) 最小值 sum(字段) 总和 avg(字段) 平均值

例12统计学生表中男同学的人数 select count(*) as 男同学人数; from 学生;

where 性别=.t.

例13选修01课程的最高分

select max(成绩) as 课程最高分; from 成绩;

where 课程号="01" 分组函数

说明:如果在考题中涉及“每”字的查询,一般需要分组,分组用group by ,一般查找每门课,每个学生,每个仓库均使用分组,限定分组条件用having,having 跟在group by 后面,不可以单独使用。

例:查询每门课的最高分

select 课程号, max(成绩) as 最高分; from 成绩;

group by 课程号

例:查询每个学生的总分和平均分

select 姓名, sum(成绩) as 总分,avg(成绩) as 平均分; from 学生,成绩;

where 学生.学号=成绩.学号; group by 成绩.学号 Having 的使用

说明:在where短语中不能使用统计函数的条件,在having 中可以使用 例:查询平均成绩在80分以上的学生姓名及成绩

select 姓名, sum(成绩) as 总分,avg(成绩) as 平均分; from 学生,成绩;

where 学生.学号=成绩.学号 and 平均分>=80; group by 成绩.学号

以上错误,因为where 中只能是实际字段

改为 where 学生.学号=成绩.学号 and avg(成绩)>=80 也是错误,因为where 不能用统计函数 正确语句如下:

select 姓名, sum(成绩) as 总分,avg(成绩) as 平均分; from 学生,成绩;

VF考试详解

where 学生.学号=成绩.学号; group by 成绩.学号; having avg(成绩)>=80 空值的使用

说明:在VF中 .null.和G型,及M型不能直接出现在表达式中。 例:查询出生日期为.null.的学生信息. select *; from 学生;

where 出生日期=.null. (错语) 用 where 出生日期 is null 1使用谓词

exists 判断select 语句查询结果是否存在.

not exists 判断select 语句是否没有结果. 注 exists 不是exit.

例: 查询没有选修任何课的学生任息.

select * from 学生 where not exists;

(select * from 成绩 where 学生.学号=成绩.学号) 2使用量词 前面已有 in / not in 有 some /any /all

如: 80> all(20,50,80) .f. 80是否大于all对应的所有 80>any (20,50,80) .t. 大于一部分. any 和 some 相同.

例: 查询成绩大于张海所选课程的学生姓名及成绩. 分两步: 1查询张海的成绩 sele 成绩 from 学生,成绩;

where 学生.学号=成绩.学号 and 姓名="张海"

2 查询成绩大于张海的学生姓名,成绩.(如果第一步查到张海有一份成绩,则嵌套直接用>即可)

select 姓名,成绩 from 学生,成绩;

where 学生.学号=成绩.学号 and 成绩 >; (sele 成绩 from 学生,成绩;

where 学生.学号=成绩.学号 and 姓名="张海")

3 查询成绩大于张海的姓名,成绩(如果第一步查到张海有多份成绩,则嵌套>后加all或any) select 姓名,成绩 from 学生,成绩;

where 学生.学号=成绩.学号 and 成绩 >all; (sele 成绩 from 学生,成绩;

where 学生.学号=成绩.学号 and 姓名="张海") 3超联接

inner join 内联接

left join 左联接 *= right join 右联接 =* full join 全联接

前面 select 姓名,成绩 from 学生, 成绩; where 学生.学号=成绩.学号 (简单联接) 使用内联: select 字段;

from 左表 inner join 右表 on 联接条件 where 条件.

VF考试详解

selct 姓名,成绩;

from 学生 inner join 成绩 on 学生.学号=成绩.学号 3.2 左联接:from 左表 left join 右表 on 条件 说明:不光满足条件,左表中不满足条件的也出现在结果中 3.3 右联接 from 左表 right join 右表 on 条件

说明: 除了公共的以外,右表中不满足条件的记录出现在结果中。 3.4 全联接 from 左表 all join 右表 on 条件 说明:左联接和右联接的并集.

4 集合并运算 (unoin)两个结果有相同的类型及范围.(考点,填空) 5 SQLR的特殊选项.

5.1有关 top N (percent):只提取查询结果最前面N条或N%记录 top n percent 表示n%条. top n 表示前面n条.

注意:使用top 必须使用 order by 例如:显示成绩在前三名的成绩信息 select top 3 *; from 成绩;

order by 成绩 desc

例如:显示成绩在后25%的成绩信息 select top 25 percent *; from 成绩;

order by 成绩 5.2查询去向

5.2.1 into dbf/table 表名

说明:将查询结果保存在 to 指定的表中.(可省略扩展名) 例: 将成绩在前两名学生信息保存在 SS表.

查询语句后加 into dbf ss / into talbe ss to ss.dbf (错误)

机试考试用SQL语句将一个表复制到另一个表用此语句,如将学生表复制student表

Sele * from 学生 into table student / Sele * from 学生 into dbf student 5.2.2 into cursor 临时表名(历届考点)

说明:临时表没有具体文件,它的数据只读,表关闭数据丢失. 5.2.3 into array 数组名

说明:多维数组,一条记录对应一行.

into array xx 将查询结果复制到数组xx list memo like xx 显示XX数组

5.2.4 to file 文件名 :将结果输出到指定文本文件.

to file d:\xx 在d:有创建 xx.txt文件,里面是查询结果. 5.2.5 to printer 将结果直接输出打印机

5.3操作功能(机试笔试必考)

SQL操作:插入,更新,删除 1插入

格式1: insert into 表名 [字段名1] values [表达式1]

在insert into 指定表中插入字段内容,表达式1依次插入字段1,顺序不能颠倒. 如: inser into 学生(出生日期) values ("02/03/80")错误,类型不统一. 例1:在学生表中插入记录

学号: 96011 姓名:李灵 性别 :女 出生日期:1980.4.23

VF考试详解

insert into 学生 (学号,姓名,性别,出生日期) values ("96011","李灵",.f.,{^1980/04/23})

格式2: insert into 表名 from array 数组名 功能:将数组中的记录追加到表中.

机试考题类型如下:用SQL语句将查询结果放入一个已存在的空表中 1 执行如下命令

Use 学生 打开学生表

Copy stru to xs 将学生表结构复制到xs表(xs是空表) 2 查找所有女生信息放到xs表中 Sele * from 学生; Where 性别=.f.;

Into table xs (此语句错误,如果XS中不存在,可使用此语句) 正确语句如下

Sele * from 学生; Where 性别=.f.;

Into array tt 先将查找结果放入tt数组中

Inset into xs from array tt 再将tt数组中的查找结果插入到xs表中 2更新

update 表名 set 字段名=表达式 where 条件 update 等同 replace all with 替换所有 例:给选修01课程的学生成绩+5分.

update 成绩 set 成绩=成绩+5 where 课程号="01" update 语句缺省where 语句代表替换所有 3删除记录:只是逻辑删除

delete from 表名 where 条件 例:删除学生表中姓张的学生.

delete from 学生 where 姓名 like "张%"

5.4定义功能(笔试考点)

1表的定义;

create table/dbf [free] 表名 (字段名 类型(宽度)) [null]

[check 字段有效性 error c型提示] [default 默认值]

[primary key /unique]

说明: 创建表并设定字段名,类型,宽度,free表示建自由表 null 表示字段允许空值.

check 设置字段有效性规则 error C型错提示. primary key 建主索引,主索引与字段同名 unique 建唯一索引

例:建学生X数据库,并建如下表: 1 教师表X(教师号c2,教师名C8)

create table 教师X (教师号 c(2),教师名 c(8)) 2学生X表(学号C8,姓名c8,性别L,出生日期D,班级c2) 说明: 创建基于学号的主索引. 出生日期允许空值 设置性别默认值.f. 设置学号默认值96001

VF考试详解

设置班级默认01

设置班级有效性规则:允许在01-10之间,否则提示"班级无 效" create table 学生X (学号 c(8) primary key default "96001",; 姓名 c(8),性别 L default .f.,;

班级 c(2) default "01" check between(班级,"01","10") error "班级无效",; 出生日期 d null )

练习: 建成绩X表 ( 学号 c8,课程号 c2,成绩N(6,2)) 学号默认 "96001" 课程号默认 01

设置成绩字段有效性为 0-100,否则提示"成绩无效" 2建表格式2

create table/dbf 表名

primary key 索引表达式 tag 索引名 unique 表达式 tag 索引名 foreign key 表达式 tag 索引名 reference 主表名 tag 索引名

check 记录有效性规则 error 出错提示 说明: primary key 创建基于表达式的主索引 unique 唯一 foreign key 普通

reference 同时与主表建立 m:1的联系 例1: 1建库 2建表

A学生Y (学号 c8,姓名 c8,性别 L,班级 c2,出生日期D) 基于学号建主索引xh.

设置学号的字段有效性规则 在96001-96050之间, 否则提示"学号无效" 设置姓名的默认值为"张海"

B 成绩Y (学号 c8,课程号 c2,成绩 n(6,2)

基于学号建普通索引xh,并于学生表建 m:1联系 操作1 建库Y

A create table 学生Y;

(学号 c(8) check between(学号,"96001","96050") error "学号无效",; 姓名 c(8) default "张海",; 性别 L,班级 c(2),出生日期 d,; primary key 学号 tag xh ) B create table 成绩Y;

(学号 c(8),课程号 c(2),成绩 n(6,2),;

foreign key 学号 tag xh1 references 学生Y) 2 表的修改

格式1: alter table 表名 add/alter 字段名 add 添加字段 alter 修改字段 例1: 学生表添加字段民族 L.

alter table 学生Y add 民族 L

2 将 成绩y表的学号设为主索引,并将学号宽度改为8 alter table 成绩y alter 学号 c(5) primary key 格式2: alter table 表名 alter [column] 字段名

VF考试详解

[null]

[set default 默认值]

[set check 有效性 error 错误提示] drop default * 删除默认值 drop check *删除有效性 例: 删除学生表学号有效性

alter table 学生y alter 学号 drop check 删除学生表姓名的默认值

alter table 学生y alter 姓名 drop default 设置学生表的性别默认值为.t.

Alter table 学生y alter 性别 set default .t. 格式3: alter table 表名 alter 字段 drop [column] 字段 *删除字段

set check 记录有效性 error 错误提示 drop check

add primary key 表达式 tag 索引名 add unique 表达式 tag 索引名

add foreign key 表达式 tag 索引名 reference 主表名 drop primary key

drop unique tag 索引名

rename column 原字段名 to 新字段名 *将字段更名 例: 1 删除学生表民族字段

alter table 学生y drop 民族 2将 学生y表中的姓名字段改为 学生名

alter table 学生y rename column 姓名 to 学生名 3表的删除:

drop table 表名 直接从磁盘上删除表

remove table 表名 只是从库中删除,变为自由表 4视图

它是一种虚拟表,它是对用户使用的数据的映射. 视图定义:

create view 视图名; as SQL语句 功能:用SQL语句创建视图

例:创建选修01课程的学生姓名,成绩的视图,并命名为V1. create view v1; as select 姓名,成绩; from 学生,成绩;

where 学生.学号=成绩.学号 and 课程号="01"

说明:视图是一种虚表,它只存在于数据库,创建视图打开数据库,

视图中不存储数据,所为称为虚表,它的数据来源于基表(SQL所涉及的表). 说明2:视图也是表,所以像表一样使用视图. use v1 list

4.2视图的删除 drop view 视图名

说明:删除视图,先将视图所涉及的数据库设为当前. 4.3视图说明: 视图数据可更新,但更新取决于基表.

VF考试详解

视图使用同表相同,但更新,删除,插入受限制.

第六章: 查询与视图

查询定义:查询是一种事先定义好的select语句,以扩展名qpr文件保存在磁盘上,是文本文件. 查询与视图的区别:

视图是一种表,而查询是一个select 语句. 视图可更新,而查询数据不可更新.

查询以扩展名qpr的文件保存在磁盘上,而视图只存在于数据库,在磁盘上没有文件. 2查询新建:

2.1 create query 查询名. 2.2 文件---新建-----选查询.

2.3 打开任意项目管理器---数据----选查询----点新建. 3查询设计器选项

新建查询出现添加表对话框,选中表添加相当于sQL语句中 from 后的表 (也可在查询设计器空白处右击执行添加表)

字段选项:相当于 select 后字段.里面有函数和表达式项 添加除联接表以外的字段如 sum avg, max

联接:相当于 where 后表的联接条件,默认join内联,一般由系统完成. 筛选:相当于where 后的其它条件 like between = isnull 排序依据:相当于order by 分组依据:相当于 group by

杂项: 相当于去掉重复值distinct 和显示前几条 top n 4运行查询:

4.1 工具栏上的!号

4.2 查询菜单下运行查询命令.

4.3 do 查询名.qpr (扩展名不能省略) 4.4 ctrl+Q

考试要求用sQL建查询,学生可用查询设计器做题,执行查询菜单下查看sql命令,将查询框中sql语句复制,在命令框粘贴. 6 查询设计器的局限性;

6.1 复杂的如内外嵌套查询无法完成,可用SQL完成.

6.2 查询运行 do 查询名.qpr不能省略,其它程序.prg可省略. 7查询去向: 查询菜单下查询去向命令, 相当于sql中的into/to 语句

查询去向中的图形无法显示,取决于硬件. 6.2视图(不打开库,视图无法建立)

视图随数据库的打开而打开,新建视图无法完成, 必须先打开数据库,再执行文件下的新建视图. 视图设计器与查询的创建方法完全相同

2.4:程序

一.定义:

现实生活中概念:是完成某项工作的步骤的集合.

VF中概念:是完成某项功能的命令集合,VF按命令的先后顺序保存到名为.prg的文件,此文件即程序,执行程序,系统会自动执 行. 1程序文件的新建: 1.1新建---程序.

VF考试详解

1.2 任意项目管理器---代码----程序---新建. 1.3 modify command 程序文件名. 2程序运行.

编辑程序,先保存,保存后运行:

运行用: do 程序文件名(扩展名可省略) 工具栏上!号. 3简单的输入和输出. 3.1 accept

格式: accept [c型提示信息] to 内存变量

功能:接收用户从键盘输入的字符型数据并保存在内存变量中. 如:命令框输入: accetp "请输入姓名" to x1 屏幕提示:请输入姓名: 张海 ?x1 显示张海 例:编写程序p1,完成如下操作:

从键盘上输入学生姓名,显示此学生的信息. Clear

Accept “请输入姓名” to x

Sele * from 学生 where 姓名=x; To screen Clear all 3.2 input

格式:input [c型变量] to 内存变量

功能:接收用户从键盘上输入的数据(主要是表达式) 保存内存到变量 如: 命令框输入: input "请输入数据" to x 提示请输入数据: 20+30

?x 50 如2: a1="李海"

input "请输入" to x

提示请输入: a1+"涛" (直接输入李海涛错误) ? x 李海涛

例:设计程序p2,请输入三个数,显示最大数和最小数. clear

input "请输入第一个数" to n1 input "请输入第二个数" to n2 input "请输入第三个数" to n3

?"三个数的最大值为:", max(n1,n2,n3) ?"三个数的最小值为:", min(n1,n2,n3) clear all

例:设计程序p3,输入圆半径,求圆面积. set talk off

input "请输入半径" to r s=pi()*r*r d=2*pi()*r ?"圆面积为=”,s ?”圆周长为=”,d set talk on 3.3 wait

VF考试详解

格式:wait[c型提示] to 内存变量名 [windows] [timeout秒] 功能:用户接收从键盘上输入的字符保存到to 的内存变量中. wait 单独wait 表示按任意键继续. 如: wait "按任意键退出"

wait "此控件只读" windows

wait "5秒后自动退出" windows timeout5 7.2程序的基本结构

程序按顺序特点分:顺序,选择,循环. 顺序程序:按命令先后执行. 选择 :有条件执行.

循环 :重复执行相应语句. 1 选择语句:

格式: if <条件> 语句1 else 语句2 endif

说明:if 表示选择开始,endif表示结束,else 表示否则. if条件成立,执行语句1,否则执行语句2.

例:设计程序p4,从键盘输入姓名,如果学生中有对应的学生,输入 记录,否则提示查无此人. clear

accept "请输入姓名" to x

select * from 学生 where 姓名=x1 into cursor temp if 姓名=x

list for 姓名=x else

?"查无此人" endif

clear all

例2:设计程序,从键盘输入成绩,然后显示相应等级. n<60 不及格 70>n>=60 及格 80>n>=70 良 n>=80 优 程序如下: clear

input "请输入成绩" to n if n<60 ?"不及格" else

if n<70 ?"及格" else if n<80 ?"良" else

VF考试详解

?"优" endif endif endif

clear all 判断2: do case

case <条件1> 语句1

case <条件2> 语句2 ....... other 语句 n endcase

说明:逐一判断Case条件,如果成立,执行case 对应语句,

如果不成立,依次判断case 条件,如果case没有对应语句,则无 条件执行other对应的语句.

例:设计程序P6,通过键盘输入x值,计算函数结果. x<0 y=23-20 10>x>=0 y=x%5 20>x>=10 y=2*3+x x>100 y=x-100 其它 other y=0 程序如下: clear

input"请输入X值" to x do case case x<0 y=23-20 case x<10 y=x%5

case x<20 y=2*3+x

case x>100 y=x-100 other y=0

endcase ? y

wait "按任意键继续" clear

二.循环语句:重复执行的语句称为循环. 如: a=1

do while a<=4 a=a+1 enddo

VF考试详解

循环条件:主要判断循环是否继续. 循环体:重复执行语句.

循环变量:循环条件涉及的变量. 上述语句中: 循环条件:a<=4 循环体:a=a+1 循环变量: a 格式:循环变量初始化. do while 循环条件. 循环体. 其它. enddo.

执行过程:首先变量初始化,再判断条件,如果条件成立,执行循环体,直到条件为假,退出enddo语句.

loop 跳过loop到enddo之间的语句,直到返回do while继续执行. exit 不管循环是否成立,退出循环. 例:写出下列程序的结果. x=1 s=0

do while x<=4 1<=4 2<=4 3<=4 4<=4 5>4

x=x+1 x=1+1 x=2+1 x=3+1 x=4+1 跳出循环 s=s+x s=0+2 s=2+3 s=5+4 s=9+5 enddo ?s 14 ?x 5

例:写出下列程序的结果. x=1 s=0

do while x<=4 1<=4 2<=4 3<=4 4<=4 5>4 x=x+1 x=1+1 x=2+1 x=3+1 x=4+1 跳出循环

if x%2=0 if x%2=0成立 3%2=0不成立 4%2=0成立 5%2不成立 loop 执行loop 执行loop endif

s=s+x 跳过s=s+x s=0+3=3 跳过s=s+x s=3+5=8 enddo

?s 8 ?x 5

例2:设计程序p7,求1-100和. clear s=0 i=1

do while i<=100 1<=100 2<=100 3<=100 4<=100 5<=100 ….. s=s+I s=0+1 s=1+2 s=3+3 s=6+4 s=10+5 i=i+1 i=1+1 i=2+1 i=3+1 i=4+1 i=5+1 enddo

?"1到100的和为:",s 例3:求1到10的阶乘之和.

VF考试详解

i=1 p=1

do while i<=10 p=p*i i=i+1 enddo ?p

2循环语句2

格式: for 循环变量初始化 to 终值 step 步长 循环体 endfor

功能:先初始化变量,如果初始值小于终值,执行循环体,然后加步长, 直到变量大于终值为止. 例:写出程序的运行结果

s=0 for i=1 to 4 step 1 s=s+i endfor ?s 10 ?i 5

例2:写出结果.

s=0 for i=1 to 4 step 1 s=s+i i=i+1 endfor ?s 4 ?i 5

此程序的 do while 语句. s=0 i=1

do while i<=4 3<=4 5>4 s=s+i 1 1+3 i=i+1 i=2 4 i=i+1 i=3 5 enddo ?s 4 ?i 5

例:编程p8,写出1到100之和. s=0

for i=1 to 100 step 1 s=s+i endfor

?s 将?s改为??s放在endfor之前试一下

例:编程p9,写出1到10的阶乘之和,并输入详细过程. clear

本文来源:https://www.bwwdw.com/article/gt84.html

Top