1 / 61

第 5 章 VFP 数据库及其操作

第 5 章 VFP 数据库及其操作. 一、数据库的创建、修改、打开、关闭、删除. 创建: CREATE DATABASE [ 库文件名 ] 修改: MODIFY DATABASE [ 库文件名 ] 打开: OPEN DATABASE [ 库文件名 ] 关闭: CLOSE DATABASE [ 库文件名 ] 删除: DELETE DATABASE [ 库文件名 ]. Q :建立数据库( . DBC )的同时还建立了 几个文件? A : 2 个 —.DCT 和 .DCX

derex
Télécharger la présentation

第 5 章 VFP 数据库及其操作

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第5章 VFP数据库及其操作

  2. 一、数据库的创建、修改、打开、关闭、删除 创建:CREATE DATABASE [库文件名] 修改:MODIFY DATABASE [库文件名] 打开:OPEN DATABASE [库文件名] 关闭:CLOSE DATABASE [库文件名] 删除:DELETE DATABASE [库文件名]

  3. Q:建立数据库(. DBC )的同时还建立了 几个文件? A:2个—.DCT 和.DCX (数据库备注文件和数据库索引文件)

  4. 注意: 数据库与数据表不是一回事,其关系为包含关系。 若打开一个表,则该表所属于的数据库也被打开, 反之,打开一个库时,库中各表及其他文件并未打开。

  5. 二、数据表 表结构 数据表组成 记录数据

  6. 表的一些基本操作: 1、调用表设计器建立表: (1)菜单、工具操作方式:新建->表 (2)对应命令: CREATE [盘符] [路径] [表文件名] 如:CREATE E:\VFPYINGYONG\student 注: ①如不指定盘符、路径,即在当前盘当前目录 (默认路径)下建表。

  7. ②输入CREATE↙,未给文件名,则系统将提示输入表文件名。②输入CREATE↙,未给文件名,则系统将提示输入表文件名。 ③有备注或通用型字段,将建立对应的备注文件。 (表备注—.FPT)。 ④用CREATE建立表结构后,可立即进行数据输入,也可以后输入,方法:打开表后,选择显示->追加方式。

  8. 2、数据表结构的构成 4个结构参数: (1)字段名: 组成:字母、汉字、数字、下划线 开头:字母、汉字 长度:自由表≤10,数据库表≤128 (2)字段类型:同前讲的数据类型。 (3)字段宽度: 系统规定:日期(8)、逻辑(1)、 备注(4)、通用(4) (4)小数位数:针对数值型,至少比字段宽度小1。

  9. 注意: (1)字段类型: 原则上不用于计算的数值可定为字符型 (2)字段宽度:多大合适? 以可能出现的最大宽度为准,并考虑到将来 的变化 (3)表记录的输入 注意备注、通用型字段的输入方法 (4)终止数据输入并保存——关闭编辑窗口或表

  10. 数据库表设计器选项卡: • “字段”选项卡: 显示区: ①格式Format: 规定数据输出时的格式 如:^ 按科学计数法显示 !将字母转换成大写 ②输入掩码Input mask: 控制用户输入的格式 如只显示数字:9999 ③标题Caption: 指定字段显示时的标题

  11. 描述符: A ——允许输入字母 L——只允许输入逻辑型数据 N——只允许输入字母和数字 X——允许输入任意ASCII字符 Y——只允许输入Y、y 、N 、n或T 、t 、F 、f,并 转换成Y、N 9——只允许输入数字 #——允许输入数字、空格和+、-号 !——小写字母变大写字母 .——指定数值型数据的小数点位置

  12. 字段验证区: ①规则Rule: 防止非法数据输入 如:性别 sex 应限于男或女 则规则为 sex=‘男’ OR sex=‘女’ ②信息Message: 接收到违反规则的数据后,显示的 提示信息 如:“只能输入男或女” ③默认值: 设定缺省值,提高输入效率

  13. 字段注释区: 如对“学号”字段的注释: 学号由12位组成: 1-4位表示入学年份; 5-8位表示院系; 9-12位表示学生编号;

  14. ①表名Name: 为表另起名字(如中文名),作用类似于字段标题 ②记录验证区: a.规则Rule: 一条记录的若干字段取值要遵循的条件 如:学生的出生日期<=注册日期 则规则为:出生日期<=注册日期 b.信息Message: 接收到违反规则的数据后显示的提示信息 如:"出生日期应早于注册日期" • “表”选项卡:

  15. 3、调用表设计器修改表结构 (1)菜单、工具操作方式:显示->表设计器 右击表->修改 (2)对应命令: MODIFYSTRUCTURE 例:USE student MODI STRU 注:字段类型修改需慎重。 (若改变字段类型,则原字段内容可能丢失。 如:把C—>N,则丢失原有的非数字字符)。

  16. 4、显示表记录 LIST DISPLAY[<范围>] [FIELDS<字段名表>] [FOR WHILE<条件>] [OFF] [TO PRINT] [TO 文件名] 如:USE SB LIST

  17. 只列某几个字段或符合条件的记录: USE SB LIST 编号,名称,价格,备注 LIST FOR 名称=‘车床’ AND 价格>30000 LIST 编号,价格,备注 FOR 名称=‘车床’; AND 价格>30000

  18. 二者区别: (1) LIST —— 连续显示信息,中间不停 DISPLAY ——分屏显示(如DOS中DIR /P) (2)不选择范围项,隐含范围: LIST——ALL; DISPLAY——当前记录 即 LIST <=> DISP ALL

  19. 5、显示表结构: 格式:LIST DISPLAY STRUCTURE 例:USE STUDENT LIST STRU

  20. 显示结构结果: 注意:TOTAL=字段总宽+1 (删除标记)

  21. 问题:每一条记录的最大长度是多少? 64K字节(VFP6.0)

  22. 6、表的打开、关闭 在对数据表做任何操作之前,必须先将表文件打开。

  23. (1)打开 USE [文件名] [INDEX 索引文件名表] [ALIAS 别名] [EXCLUSIVE SHARED] [NOUPDATE] 功能:在当前工作区打开指定的表文件。

  24. 说明: ①[INDEX索引文件名表]——表文件打开的同时, 将索引文件名表中所列索引文件打开。 ② [ALIAS别名]——指定表的别名。 ③ [EXCLUSIVE/SHARED]——指定表文件是以 独占方式还是以共享方式打开。

  25. ④[NOUPDATE]——打开的表不能被修改。 ⑤表中有备注型或通用型字段,则打开表的同时打开备注型文件 . FPT 。

  26. (2)关闭表文件 USE——关闭当前工作区的表文件; CLOSE DATABASE ——关闭当前数据库及其中 的表文件; CLOSE TABLES ——关闭当前数据库中所有的 表,但不关闭数据库; CLOSE ALL ——关闭所有打开的文件 (表、库文件);

  27. 7、复制表结构 格式:COPYSTRUCTURE TO文件名 [FIELDS<字段名表>] 说明: ① 此命令只复制结构,不复制记录数据; ②[FIELDS<字段名表>] 无:所有字段照原样复制; 有:新表字段及字段顺序由字段名表决定。

  28. 例: USE student COPY STRU TO J1 COPY STRU TO J2 FIELDS sno,sname USE J1 LIST LIST STRU USE J2 LIST LIST STRU

  29. 显示结果: J1:结构与student相同,但无记录数据。 J2:只有2个字段,无记录数据。

  30. 8、复制表(结构、记录) COPY TO文件名 [<范围>] [FIELDS<字段名表>] [FOR WHILE<条件>] 思考: 如何将我们教科院的学生档案拷贝过来? USE STU COPY TO STU1 FOR SUBS(学号,6,3)=‘040’

  31. 9、复制任何文件 COPY FILE <文件名1> TO <文件名2> 例见 p55

  32. 10、记录的插入与追加 (1)插入 INSERT BLANK —— 在当前记录后插入一条空记录; INSERT BLANKBEFORE —— 在当前记录前插入一 条空记录; 例如: GO 2 INSERT BLANK

  33. (2)追加 ①INSERT-SQL命令 INSERT INTO 表名[(字段名1[,字段名2,…])] VALUES (表达式1[,表达式2,…]) 例1: INSERT INTO sb(编号,名称,启用日期,价格,主要设备,备注); VALUES('110-1','打印机',{^1997-08-15},5000.00,.f.,'调拨') 例2: 学生表student有4个字段:学号,姓名,性别,年龄, 现添加一条记录,学号2009001,姓名王青,性别男, 年龄18 INSERT INTO student VALUES(“2009001”,”王青”,”男”,18)

  34. ②APPEND APPEND BLANK APPEND FROM源文件[FIELDS<字段名表>] [FOR WHILE<条件>] 三个APPEND命令的相同与区别: 相同:在表文件末追加记录,不管原表文件是否 已有记录。

  35. 区别: ①APPEND 可在表尾追加若干条记录(记录连续编号) ②APPEND BLANK 在表尾追加一条空记录,不提示用户输入。 (这一空记录的内容其后可用EDIT或REPLACE 命令进行替换。)

  36. ③APPEND FROM 源文件[FIELDS<字段名表>] [FOR WHILE<条件>] 从其他表文件成批追加记录。 优点:减少输入数据时间及出错机会。 说明: a.能用于不完全相同的表文件间的记录添加; b.字段名、类型相同的才添加; c.字段长度不一致:以目标字段长为准 多 — 截去 少 — 补空格 必要时,修改目标文件中字段长度。

  37. 例如:有RSDA与GZ两张表,其结构大致如下: 职工号 姓名 年龄 性别 …… , 职工号 姓名 基本工资 …… 要从RSDA中拷贝职工号和姓名到GZ表中,命令如下: USE GZ APPEND FORM RSDA [FIELDS 职工号 ,姓名]

  38. 11、记录的定位、删除、更新 (1)记录指针 ① 当前记录——记录指针指向的记录; ② 表文件刚打开时,指针总是指向第一条记录 (即首记录为当前记录); ③ 指针可以上下移动到任一记录位置上; 相关的检测指针位置的函数有: RECNO()——求当前记录号 BOF()——检测指针是否指向表头; EOF()——检测指针是否指向表尾; ④ 有些命令会同时移动指针 如:LIST 及有范围选项的命令。

  39. (2)记录定位(移动记录指针) ① GO命令——绝对定位(移动) GO n GO TOP GO BOTTOM ② SKIP命令——相对定位(移动) SKIP 记录指针向后移动一条记录 SKIP + n 记录指针向后(+)或向前(-) 移动n条记录 ③ LOCATE FOR……CONTINUE ——条件定位

  40. 1 例:假设顾客表GK共有7条记录 USE GK ?RECNO() ?BOF() SKIP –1 ?BOF() ?RECNO() LIST ?RECNO() ? EOF() .F. .T. 1 8 .T.

  41. 3 SKIP 2 SKIP –3 ?RECNO() GO BOTT ? RECNO() ? EOF() SKIP ? EOF() 2 7 .F. .T.

  42. 逻辑删除 (3)删除 物理删除 ① 逻辑删除——打删除标记* 加上删除标记: DELETE [<范围>] [FOR WHILE<条件>] 取消删除标记: RECALL [<范围>] [FOR WHILE<条件>]

  43. 例: DELETE RECO 6 GO 6 DELETE <=> Q: DELETE命令单独使用时删除的是什么记录?

  44. —— 删除已打标记的记录 ② 物理删除 PACK 请问:若要物理删除第6条记录,命令该如何写? a. PACK RECO 6 (错误) (正确) b. DELETE RECO 6 PACK

  45. 注意: a、物理删除前要先进行逻辑删除; b、被物理删除的记录无法再恢复,使用 PACK命令需慎重;

  46. ③ 删除表中所有记录 ZAP DELE ALL PACK <=> ZAP只删除记录,不改变表结构。

  47. SQL中的记录删除命令: DELETE-SQL 一般格式为:   DELETE FROM <表名> [WHERE <条件>] 注意:该命令同样为逻辑删除,要物理删除需继续 使用PACK

More Related