VFP数据库(表)的

来源:百度文库 编辑:神马文学网 时间:2024/04/25 02:26:15
第三章 VFP数据库(表)的概念及操作
3.1 VFP6.0表
1. 表的概念
表(数据表):
是指存放在磁盘文件中的一张二维表。(相当FoxPro 2.x 版本中的数据库)
自由表:不属于任何数据库的表。
数据库表:包含在一个数据库中的表。
数据库表和自由表的区别?(字段长度不同的限定)
表文件名:
表名可以由字母、数字或下划线组成,系统自动给出的扩展名为 .DBF。
记住表、数据库、工程、索引的文件名后缀(扩展名)
备注文件名:
当表中有备注型或通用型字段时,系统自动生成与所属数据表的表名相同、扩展名为:.FPT的文件名。
表结构:存储表记录的公共结构。(就是指一张表的表头结构,即字段的属性)。
字段列表的书写方法:FIELD 名称,名称2,。。。。以FIELD引导,空格后的各字段名之间用,分开。
记录:表中的一行。它是多个字段的集合,同一张表的每个记录都有相同的字段。
每一条记录可以用一个一维数组表示。
字段:表中的一列。它规定了数据的特征。
关系型数据表的特点:
(1)每一个字段不可再分解,也不能有名字相同的字段;
(2)每一列中的数据都有相同的数据类型;
(3)表中没有内容完全相同的行(记录)。
2. 字段的基本属性
字段的属性:
包括:字段名、数据类型、字段宽度、小数位数、空值支持
字段名:
即每个字段的名字,必须以字母开头,可由字母、数字、下划线组合而成,字母大、小写无区别,但其中不许有空格或其它字符。自由表的字段名最多由10个字符组成,数据库表的字段名支持长名,最多可达128个字符。如果从数据库中移去一个表,那么此表的长字段名将被截短成 10 个字符。
VFP允许长字段名和长表名,但使用长名称对于跨平台的操作可能遇到难以预料的结果。
数据类型:指该字段的数据特征。
字段宽度:指该字段所能容纳数据的的最大字节数。
在数据表中确定 的类型有限定,只能在范围内指定。
小数位数:指数值型数据将保留几位小数。此时的字段宽度 = 整数位数+1+小数位数。
NULL 值(空值):
无明确的值。NULL 值不等同于零或空格。一个 NULL 值不能认为比某个值(包括另一个 NULL 值)大或小,相等或不同。
在设计时勾选则表示要以接受空值
VFP 6.0表中字段的数据类型
字段类型
代号 说明
字段宽度
使用示例
字符型 C
字母、汉字和数字型文本 每个字符为1个字节,最多可有 254 个字符 学生的学号或姓名, "8199101" 或 '李立'  注意空格也算字符。如果在TEXT.VALUE的数据包括空格,因此传递数据时用去前后空格函数:ALLTRIM(TEXT.VALUE).
字符型要用””或’’来用为前后界定,表示无空格. 例如: TEXT.VALUE=”芮吴”
货币型 Y
货币单位 8 个字节 工资, $1246.89
日期型 D
包含有年、月和日的数据 8 个字节 出生日期,
{02/25/2000}
默认格式为:MM/DD/YY
其它格式要设定.日期型号数据一定要用{}限定符.
日期时间型 T
包含有年、月、日、时、分、秒的数据 8 个字节 上班时间,
{02/25/2000 9:15:15 AM}
逻辑型 L
“真”或“假”的布尔值 1 个字节 课程是否为必修课,
.T. 或 .F.
二边各一个点.半角句点.
在书定程序员时,所有的标点都必须是半角的标点.
数值型 N
整数或小数 在内存中占 8 个字节;在表中占1 至20个字节 考试成绩, 83.5
双精度型 B
双精度浮点数 8 个字节 实验要求的高精度数据
浮点型 F
与数值型一样
整型 I
不带小数点的数值 4 个字节 学生的数量
通用型 G
OLE 对象 在表中占 4 个字节 图片或声音
备注型 M
不定长度的一段文字 在表中占 4 个字节 学生简历
字符型(二进制) C
任意不经过代码页修改而维护的字符数据 每个字符用1个字节,最多可有 254 个字符
备注型(二进制) M
任意不经过代码页修改而维护的备注数据 在表中占 4 个字节
记住各类型表达的字符,长度
3. 表的基本操作
表的创建:设计表名和表结构、输入记录、建立索引
数据维护:增加记录、修改记录、删除记录
创建表的主要步骤: 设计表结构 → 输入记录 → 建立索引 → 数据维护
4.关于表操作的几个基本命令
命令格式
动词部分和子句部分组成.子句表示:条件、范围。。。。用FOR、WHERE、WHILE。AS、INTO引导结果、WITH引导用。。。FROM…….表示从…..IN (     )表示在其中 locate for... seek......for
功能
CREATE 表文件名 创建一个新的自由表的结构
CREATE 表名称 (字段1 类型 长度 空值,字段2 类型 长度 空值…….)
USE 表文件名     &&打开指定的表文件
USE              &&关闭当前表文件  后面不写表名
LIST ALL 显示当前表的全部记录内容(类似于DOS 命令中的dir)
DISPLAY ALL 分屏式地显示当前表的全部记录内容(类似于DOS中的dir/p)
LIST和DISPLY二个显示区别注意.
DISPLAY STRUCTURE 显示当前表的结构(分屏显示)
LIST STRUCTURE 显示当前表的结构(不分屏显示)
MODIFY STRUCTURE 调出表设计器,修改当前表的结构。
CLEAR 清除主窗口中的所有内容
注意:
(1)必须先打开所需的数据表才可进行以上操作;
(2)当带有命令子句时,只对指定的记录进行操作;
(3)LIST 命令的默认范围是所有记录,DISPLAY 命令的默认范围是当前记录。
3.2 表结构的创建和修改
1. 表结构的创建
创建表结构其实就是设计字段的基本属性。可以使用表设计器、表向导来创建表结构。
(1)使用表设计器创建表
步骤:
从文件菜单中单击新建 → 在新建对话框中选择表并单击新文件 → 在创建对话框中给出文件名并确定所需的保存位置 → 在表设计器对话框中逐个输入所需字段(用↓或鼠标换行),全部字段输入完成后单击确定。
(2)使用表向导创建表
步骤:
从文件菜单中单击新建 → 在新建对话框中选择表并单击向导→在表向导中做第1步:选取字段,完成后单击下一步 → 在表向导中做第1a步:选择数据库,完成后单击下一步 → 在表向导中做第2步:修改字段设置,完成后单击下一步 → 在表向导中做第3步:为表建索引,完成后单击下一步 → 在表向导中做第4步:完成,选择表的保存方法,完成后单击完成 → 在另存为对话框中给出文件名并确定所需的保存位置。
注意:
先选择一个与待建数据表类似的样表,再从中挑选出所需的部分字段,然后在下一步根据实际需要修改或直接采用原字段的宽度。
2. 表结构的修改
(1) 用菜单调出表设计器:
打开所需的表文件 → 单击显示菜单中的表设计器 → 在表设计器对话框中对字段进行修改 → 修改完毕单击确定并在消息框中选择是。
(2) 用命令调出表设计器:
USE <表文件名>
&&要先打开表然后才能操作.
MODIFY STRUCTURE
3.3 表记录的处理
1. 记录的输入
(1) 立即输入方式:
设计好表的结构后,系统会提示是否直接进入数据输入状态。若选是,则进入编辑窗口,输完后单击“X”按钮退出,系统自动存盘。需输入备注型或通用型字段的数据时,双击“memo” 或“gen”,在新打开的编辑窗口中输入所需内容,输完后单击“X”按钮系统自动存盘,退回到原窗口 ,此时字段中的“memo” 或“gen”变成“Memo” 或“Gen”。
(2) 追加方式:
若设计好表的结构后并没有及时输入数据,则可以用追加方式:
从文件菜单中(或从命令窗口中输入:USE 表文件名) 打开所需表文件 → 从显示菜单中选择浏览 → 再从显示菜单中选择追加方式 → 在浏览窗口中输入所需记录。
不同追加方式适用的场合
追加记录的方式
适用的场合
显示菜单中的追加方式 在现有数据表的尾部添加一个或多个新记录
表菜单中的追加新记录 在现有数据表的尾部添加一个新记录
表菜单中的追加记录… 从其它数据表中将符合要求(字段名和字段类型相同)的记录添加在当前数据表的尾部
APPEND [BLANK] 在当前表的末尾自动添加一个或多个新记录。相当于显示菜单中的追加方式。有BLANK时添加一个空记录,相当于表菜单中的追加新记录。
APPEND BLANK 一次只能追加一条空记录.APPEND则可以多条.
APPEND FROM 表文件名 [FIELDS 字段名1,字段名2 …][FOR 条件 ]  从其它数据表中将符合要求(字段名和字段类型相同)的记录添加在当前数据表的尾部。相当于表菜单中的追加记录…。
APPEND FROM 文本文件名 SDF 将符合要求的文本文件全部追加在当前数据表的尾部。
注意:文本内容要与表中的字段结构(类型)相适应。
文件菜单中的导入  将其它类型的文件转换成一个完整的VFP数据表。
insert  into 表名 字段1,字段2.。。。。value 值1,值2.。。。。。
2. 记录的浏览
(1) 通过浏览窗口
(2) 通过BROWSE 命令
BROWSE命令用来打开表的浏览窗口,可通过不同的子句来实现对特定记录的浏览。
VFP命令中的常用子句
1) 范围子句
子句格式
功能
ALL 表示对表文件的全部记录进行操作
不写或用*也要以表示所有.如SELECT * FROM…..
NEXT n 表示对从当前记录开始的共n个记录进行操作, n为正整数
RECORD n 指明操作对象是表文件的第n号记录
REST 对从当前记录起到文件结尾的全部记录进行操作
2) FOR子句
用于指明进行操作的条件。
格式: FOR <条件>
指明只对指定范围中那些符合给定条件的进行当前操作。
例如: list NEXT 6 FOR cj < 85
USE 学生档案
LOCAT FOR 性别=”女” &&在学生档案表中查找性别=女的记录
3) WHILE 子句
也用于指明进行操作的条件。
格式: WHILE <条件>
例如: list NEXT 6 WHILE cj < 85
4) FIELDS 子句
用于指明当前的操作涉及到表文件的哪些字段。
格式:BROWSE [ FIELDS 字段名1,字段名2……]
注意:用FIELDS引导,后面用,分开,结束无标点.
例如:BROWSE FIELDS xh,xm,cj
3. 记录的定位
(1) 系统对记录的三个控制标志
记录开始标志:位于第一个记录之前。其值用函数BOF()进行测试。
记录指针标志:指向当前记录。其值用函数RECNO()进行测试。第几条记录,指针位置.
RECCO()测试出总记录数.
记录结束标志:位于最后一个记录之后。其值用函数EOF()进行测试。
记录指针可以理解为保存当前记录号的变量,它的初始值总是1,不可能为0或负数,最大值是表中记录总数+1。
刚打开表时记录指针的情况
表中记录情况
BOF()的值
RECNO()的值
EOF()的值
无记录
.T.
1
.T.
有记录
.F.
1
.F.
BOF()的值  EOF()的值同时为真表示无记录;同时间为.F.则有记录.
实例:USE 管理员表
LOCAT FOR 姓名=ALLTRIM(THISFORM.TEXT1.VALUE) AND 密码= ALLTRIM(THISFORM.TEXT2.VALUE)    &&指针停在找到的第一个记录上
IF eof()=.f. then recno()     &&返回记录的记录号。
messagebox"找到记录,记录号为:recno()" else
messagebox"未找到记录"
endif
seek for 也是顺序搜索记录
(2)记录的定位方式
绝对定位:是指把指针移到指定的位置。
相对定位:
是指把指针从当前位置开始,相对于当前记录向前或向后移动若干个记录位置。
条件定位:
是指按一定的条件在整张表或表的某个指定范围中查找符合该条件的记录。
通过菜单进行定位
从表菜单中选择转到记录:记录号——实现绝对定位
定位… ——实现条件定位
通过命令进行定位
记录的定位 命令格式
功能
备注
绝对定位 GO TOP 将记录指针定位到表文件之首 或 GOTO TOP
GO BOTTOM 将记录指针定位到表文件之尾 或GOTO BOTTOM
GO  将记录指针定位到指定的n号记录   GO 18  &&无括号
相对定位 SKIP  将记录指针从当前记录向上或向下移动n个 n为正值则向下移动
n为负值则向上移动
无n向下移动 1个
条件定位 LOCATE FOR <条件> [ 范围 ] 按顺序搜索表, 直到找到满足指定条件的第一个记录 默认范围是所有记录
注意: [ ]中的内容为可先项, A|B 表示A和B必选择其一.<>内的项是必先项目.
4. 记录的修改和删除
一张表用非只读方式打开后,即可通过菜单在浏览窗口(或编辑窗口)中或从命令窗口中用命令直接对其记录进行编辑、修改和删除。
(1) 菜单方式
修改记录:
从表菜单中选择替换字段… → 在替换字段对话框中选择待替换的字段并构造出替换表达式及替换条件 → 替换。
删除记录:
从表菜单中选择删除记录 → 在删除对话框中选择删除范围和删除条件 → 单击删除按钮 → 从表菜单中选择彻底删除 → 在消息框中单击是。
删除记录包括两步: 标记要删除的记录 和 彻底删除带删除标记的记录
恢复带删除标记的记录:
从表菜单中选择恢复记录 → 在恢复记录对话框中选择作用范围和条件 → 单击恢复记录按钮。
(2) 在命令窗口中用VFP命令:
命令格式
功能
备注
插入  INSERT [BLANK][BEFORE] 在当前表的指定位置上插入一个空记录或若干新记录 BLANK :在当前记录后插入一个空记录
BEFORE :在当前记录之前插入若干新记录
修改 CHANGE [FIELDS 字段名1,…][FOR 条件] [LEDIT] [REDIT] 在编辑窗口显示要修改的字段 LEDIT:调出编辑窗口
REDIT:调出浏览窗口
替换 REPLACE 字段名1 WITH 表达式1 [ADDITIVE][, 字段名2 WITH 表达式2[ADDITIVE] …] [范围] [FOR 条件]  把字段值用指定的表达式进行替换。如: 工资单中给某些人长工资 默认范围是当前记录
ADDITIVE:把备注字段的替换内容添加在原备注内容的后面
删除  DELETE [ 范围 ][FOR 条件]  对当前表中指定范围内满足条件的记录加上删除标记 * 默认范围是当前记录  并非真正删除,真正删除用:PACK ,因此写语句时真正删除先用DELE后接:PACK
&& 注意在写语句时单词可以只写前面的四外字符也要以.
PACK [MEMO][DBF] 将所有带删除标记的记录从表中抹去(不能再恢复) DBF:不影响备注文件
MEMO:从备注文件中删除未使用空间
ZAP 删除当前表中所有记录,只留下表的结构 相当于
DELETE ALL + PACK
恢复  RECALL [ 范围] [FOR 条件]  取消当前表中指定记录上的删除标记 默认范围是当前记录
5. 筛选记录和字段
(1) 用菜单方式
从表菜单中选择属性 → 在工作区属性对话框中单击数据过滤器框后的按钮 → 在表达式生成器对话框中构造所需的条件表达式并确定 → 单击字段筛选…按钮 →在字段筛选器中选择所需字段并确定 → 单击选项按钮:字段筛选指定的字段 → 确定。
(2)用命令方式
命令格式: SET FILTER TO 条件表达式
例: SET FILTER TO xb ='男'
注意:SQL命令对记录的访问不受此筛选命令的限制。
3.4 表的使用
1. 工作区
工作区:
指用来标识一张打开的表的区域。一个工作区在某一时刻只能打开一张表,但可以同时在多个工作区打开多张表,一张可以在多个工作区中多次被打开。每个工作区都有一个编号。
表的别名:
在工作区中打开表时为该表所定义的名称。可以自定义别名,否则系统默认就以表名作为别名。若一张表在多个工作区中被打开,系统默认在表名后依次加_a 、_b…。
在查询中指定查询结果去向时很重要.
SELE………..WHERE………..INTO COUSOR 别名
自定义别名的格式: USE <表名> ALIAS <别名>
当前工作区:
正在使用的工作区。可以通过“数据工作期窗口”或用 SELECT命令把任何一个工作区设置为当前工作区。
SELECT 命令格式: SELECT <工作区号>|<别名>
要操作非当前工作区中的表,可以把其它工作区选为当前工作区,或在命令中强行指定工作区。
命令格式: IN <工作区号>|<别名>
ALIAS([工作区号])函数:
测试指定工作区中的表的别名,无参数时指当前工作区表的别名。
SELECT([别名])函数:
测试指定别名的表所在的工作区号,无参数时指当前工作区的区号。
2. 表的打开和关闭
打开表的途径
关闭表的途径
文件菜单中的打开 工具栏上的打开 数据工作期窗口中关闭 USE
数据工作期窗口中打开 USE <表名> USE IN <别名>|<工作区号> CLOSE ALL
USE <表名> IN <工作区号>
USE <表名>AGAIN CLOSE DATABASE CLOSE TABLE
USE <表名> ALIAS <别名>
退出VFP系统,则关闭所有的表
3. 表的独占与共享使用
独占使用: 一张表只能被一个用户打开。VFP6.0在默认状态以独占方式打开。
共享使用: 一张表可以被多个用户同时打开。
系统的默认打开方式可以通过工具菜单中的选项…来设置,或 用命令:
SET EXCLUSIVE OFF && 默认打开方式为共享
SET EXCLUSIVE ON && 默认打开方式为独占
或强行打开:USE cj SHARED && 以共享方式打开cj表
USE cj EXCLUSIVE && 以独占方式打开cj表
3.5 表的索引
1. 基本概念
记录的顺序 :
物理顺序:即表中记录的存储顺序。用记录号表示。
逻辑顺序:表打开后被使用时记录的处理顺序。
索 引:
指按表文件中某个关键字段或表达式建立记录的逻辑顺序。它是由一系列记录号组成的一个列表,提供对数据的快速访问。索引不改变表中记录的物理顺序。表文件中的记录被修改或删除时,索引文件可自动更新。
索引关键字(索引表达式):用来建立索引的一个字段或字段表达式。
注意:1)用多个字段建立索引表达式时,表达式的计算结果将影响索引的结果;
2)不同类型字段构成一个表达式时,必须转换数据类型。
索引标识(索引名):
即索引关键字的名称。必须以下划线、字母或汉字开头,且不可超过10个字。
索引类型:主索引、候选索引、普通索引、唯一索引。
主索引:
组成主索引关键字的字段或表达式,在表的所有记录中不能有重复的值。主索引只适用于数据库表的结构复合索引中。自由表中不可以建立主索引;数据库中的每个表可以且只能建立一个主索引。
候选索引:
在指定的关键字段或表达式中不允许有重复值的索引。在数据库表和自由表中均可为每个表建立多个候选索引。
普通索引:
也可以决定记录的处理顺序,但是允许字段中出现重复值。在一个表中可以加入多个普通索引。
唯一索引:
参加索引的关键字段或表达式在表中可以有重复值,但在索引对照表中,具有重复值的记录仅存储其中的第一个。
2. 索引的作用
用途
采用的索引类型
排序记录,以便显示、查询或打印 使用普通索引、候选索引或主索引
在字段中控制重复值的输入并对记录排序 对数据库表使用主索引或候选索引,对自由表使用候选索引
准备设置表关系 依据表在关系中所起的作用,使用普通索引、主索引或候选索引
3.索引文件的种类
索引文件种类
特征
关键字数目
限制
结构复合索引文件
.CDX
使用和表文件名相同的基本名,随表的打开自动打开。可以看成表结构的一部分。 多关键字表达式,称为标识。 有效表达式限制在 240 个字符之内。
非结构复合索引文件
.CDX
必须明确地打开,使用和表名不同的基本名。其中不能创建主索引 多关键字表达式,称为标识。 有效表达式限制在 符之240 个字内。
独立索引文件
.IDX
必须明确地打开,文件的基本名由用户定义。一般作为临时索引文件。 单关键字表达式。 有效表达式限制在 100 个字符之内。
结构复合索引文件(扩展名为.CDX)的特点:
.在创建索引标识时自动创建。
.在打开表时自动打开。
.在同一索引文件中能包含多个排序方案,或索引关键字。
.在添加、更改或删除记录时自动维护。
4. 创建结构复合索引
VFP中创建索引文件有两种方式:表设计器方式和命令方式。
(1)表设计器方式
打开表文件 →从显示菜单中选择表设计器 → 在表设计器中单击索引 → 输入索引名并选择索引类型 → 选择索引的方向(按升序或降序排列记录) → 在表达式框中输入作为排序依据的索引关键字 → 在筛选框中输入筛选表达式 → 单击确定,完毕。
(2) 命令方式
命令
功能
INDEX ON <索引关键字段> TAG <索引标识>[FOR 条件 ] [ASCENDING | DESCENDING] [CANDIDATE | UNIQUE]
用INDEX ON 命令建立一个索引文件
ALTER TABLE <表名> ADD PRIMARY KEY <关键字段名> TAG <索引标识名> 用SQL命令创建主索引
ALTER TABLE <表名> ADD UNIQUE <关键字段名>TAG <索引标识名>  用SQL命令创建候选索引
注意:1)备注型字段和通用型字段不能作为索引关键字段;
2)不要建立无用的索引,以免降低系统性能;
3)及时清理已无用索引标识,提高系统效率。
4)在复合索引的多个索引中,某一时刻只有一个索引对表起作用。
5. 索引的修改和删除
修改: 打开表设计器,在索引对话框中进行所需修改;
或 用命令重新建立一个相同标识名而索引表达式不同的索引。
删除: 打开表设计器,在索引对话框中删除不需要的索引标识即可;
或 用命令: DELETE TAG ALL | 索引标识1 [, 索引标识2 ] …
删除不需要的索引标识,ALL表示全部标识。
6. 索引的使用
功能
命令格式
打开表的同时指定主控索引 USE <表名> ORDER <标识名>
为已打开的表确定主控索引 SET ORDER TO <标识名> [ASCENDING | DESCENDING] ]
搜索某张已建立索引的表 FIND <表达式>
搜索表中首次出现的记录 SEEK <表达式> [ <索引标识名>]
SEEK <表达式>
3.6 VFP数据库
1. 数据库的基本组成
数据库由一个以上相互关联的数据表组成,可以包含一个或多个表、视图、到远程数据源的连接和存储过程。
视图(view):
一个保存在数据库中的、由引用一个或多个表、或其他视图的相关数据组成的虚拟表,可以是本地的、远程的或带参数的。
存储过程(stored procedure):
是保存在数据库中的一个过程。该过程能包含一个用户自定义函数中的任何命令和函数。
创建数据库时系统自动生成3个文件:
数据库文件: 扩展名为 .DBC
数据库备注文件: 扩展名为 .DCT
数据库索引文件: 扩展名为 .DCX
2. 数据库的设计过程
1)明确建立数据库的目的和使用方式
2)设计所需的数据表(包括表结构和表记录)
3)建立表之间的关系
4)改进设计
3.7 数据库的创建
1. 数据库的创建过程
数据库的创建过程中一般会涉及下面一些常用操作:
1)创建新表 → 用表设计器 (设置字段属性和表属性)
2)添加表 → 用数据库设计器按钮或数据库菜单
3)创建视图 → 用视图向导、视图设计器
4)建立关系 → 用鼠标将父表的索引拖到子表的相关索引上
5)编辑关系 → 用数据库菜单或快捷菜单 → 参照完整性生成器
6)移去关系 → 用快捷菜单或按delete键
7)修改表 → 用表设计器
8)删除表或视图 → 用数据库设计器按钮或数据库菜单
2. 数据库的新建、打开、关闭
(1)新建数据库:
从文件菜单中单击新建 → 在新建对话框中选择数据库并单击新文件 → 在创建对话框中给出库文件名和保存位置 → 在数据库设计器中建立所需的数据库。
或 从命令窗口中输入命令: create database 数据库名
(2)打开数据库:
从文件菜单中单击打开 → 在打开对话框中给出库文件名和保存位置并确定之。
或 从命令窗口中输入命令: open database 数据库名
(3)关闭数据库:
从命令窗口中输入命令:
close database && 关闭当前数据库
或 close all && 关闭所有被打开的数据库
注意:1) 关闭了数据库表不等于关闭了数据库,但关闭了数据库则其中的数据表被同时关闭;
2) 用鼠标关闭了数据库设计器窗口并不能代表关闭数据库。
3. 用数据库设计器设计数据库
(1) 调出表设计器,建立一个新数据表
方法1:从数据库菜单中选择新表。
方法2:右击数据库设计器窗口,从快捷菜单中选择新表。
方法3:单击数据库设计器工具栏的新表按钮。
方法4:从文件菜单中单击新建,在对话框中选择表。
注意:
数据库表的表设计器中内容比自由表的多,增加了字段属性和表属性的设置。设置验证规则目的是为了使输入的数据符合要求,在有矛盾时发出错误提示信息。
(2) 数据库表的高级属性
属性类别
属性名称
作用
字段 属 性
字段显示属性 格式 确定字段内容在被显示时的样式
输入掩码 指定字段中输入数据的格式(即所输入的任何内容均显示成此符号)
标题 在浏览表时用此名称代替意义不够直观的字段名
字段验证规则 规则 使所输数据符合设定的条件
信息 当所输数据违反规则时,系统提示错在哪里
默认值 减少输入重复性数据时的工作量
字段注释   使字段具有更好的可读性



长表名   与表文件名不同,设置了长表名可以一目了然
记录验证规则 规则 使所输记录符合设定的条件
信息 当所输记录违反规则时,系统提示错在哪里
触发器 插入触发器 当所插记录符合此规则时,才可以插入到表中
更新触发器 当修改后的记录符合此规则时,才可以进行修改
删除触发器 当待删记录符合此规则时,才可以被删除掉
表注释   使表具有更好的可读性
字段级规则:
一种与字段相关的有效性规则,在插入或修改字段值时被激活,多用于数据输入正确性的检验。
为字段设置验证规则的方法:
.在表设计器中选定要建立规则的字段名。
.在“规则”方框旁边选择“…”按钮。
.在表达式生成器中设置有效性表达式,并选择“确定”。
.在“信息”框中,键入用引号括起的错误信息。
.在“默认值”框中,键入合理的初值。
.注意不同类型数据的表示方法。
.选择“确定”
记录级规则:
一种与记录相关的有效性规则,当插入或修改记录时激活,常用来检验数据输入和正确性。记录被删除时不使用有效性规则。记录级规则在字段级规则之后和触发器之前激活,在缓冲更新时工作。
触发器:
在一个插入、更新或删除操作之后运行的记录级事件代码。不同的事件可以对应不同的动作。它们常用于交叉表的完整性。
(3) 在数据库中添加表
方法1:从数据库菜单中选择添加表,从打开对话框中选择所需的表并确定之。
方法2:右击数据库设计器窗口,从快捷菜单中选择添加表。
方法3:单击数据库设计器工具栏的添加按钮。
注意:
一个数据表在同一时间内只能属于一个数据库,已隶属于其它数据库的表不能直接被添加进来,需先将其移出数据库还原成自由表。
(4) 创建并添加视图
视图用于显示一个或多个表中的记录,并能够更新源表中的数据,视图只有在数据库中才能存在。
方法1:从数据库菜单中选择新远程视图或新本地视图
方法2:右击数据库设计器窗口,从快捷菜单中选择新远程视图或新本地视图
方法3:单击数据库设计器工具栏的新远程视图或新本地视图按钮
(5) 在数据库中操作表和视图
可以利用数据库设计器工具栏很方便地进行下列操作:
浏览: 在浏览窗口中显示表或视图的内容。
修改: 调出表设计器或视图设计器对表或视图进行修改。
移去:使表从数据库中还原成自由表。对视图移去相当于删除。
删除:从磁盘上彻底删除数据表和视图,并且无法回收。
(6) 在表之间建立永久性关系
永久关系:
是数据库表之间的一种关系,不仅运行时存在,而且一直保留。表之间的永久关系是通过索引建立的。
一对多关系:
表之间的一种关系,在这种关系中,主表中的每一个记录与相关表中的多个记录相关联(每一个主关键字值在相关表中可出现多次)。
性别表:只有男和女二个记录,另一个表如学生资料表,无数个学生记录中会重复出现男或女,这就是一对多关系.性别表为主表或父表,另一个为子表.
一对一关系:
表之间的一种关系,在这种关系中,主表中的每一个记录只与相关表中的一个记录相关联。
其中一个表是中一个表的字段扩张表,,一个是中一个的一部分.
创建表间的永久关系:
在数据库设计器中,选择想要关联的索引名,然后把它拖到相关表的索引名上,所拖动的父表索引必须是一个主索引或候选索引。建立好关系后,这种关系在数据库设计器中会显示为一条连接两个表的直线。
注意:需先建立索引然后才能建立关系。
删除表间的永久关系:
在数据库设计器中,单击两表间的关系线。关系线变粗,表明已选择了该关系,按下 delete 键。
编辑关系:
单击所需关系线,右击鼠标,从快捷菜单中选择编辑关系,在编辑关系对话框中改选其它相关表索引名或修改参照完整性规则。
参照完整性(RI):
控制数据一致性,尤其是不同表的主关键字和外部关键字之间关系的规则。Visual FoxPro 使用用户自定义的字段级和记录级规则完成参照完成性规则。
(7) 在表之间建立临时关系
临时关系:
是在打开的数据表之间用 set relation命令建立的临时关系,或是在数据工作期窗口建立。建立了临时关系后,子表的指针会随主表记录指针的移动。表被关闭后,关系自动解除。
临时关系与永久关系的联系与区别:
联系:
(1)都必须明确建立关系的两张表之间确实在客观上存在着一种关系(一对多或一对一关系)。
(2)永久关系在许多场合可以作为默认的临时关系。
区别:
(1)临时关系是用来在打开的两张表之间控制相关表之间记录的访问;而永久关系主要是用来存储相关表之间的参照完整性,附带地可以作为默认的临时关系或查询中默认的联接条件。
(2)临时关系在表打开之后使用set relation命令建立,随表的关闭而解除;永久关系永久地保存在数据库中而不必在每次使用表时重新创建。
(3)临时关系可以在自由表之间、库表之间或自由表与库表之间建立,而永久关系只能在库表之间建立。
(4)临时关系中一张表不能有两张主表(除非这两张主表是通过子表的同一个主控索引建立的临时关系),永久关系则不然。
4. 用命令方式操作数据库
常用命令一览表
命令格式
功能
注意:动词 类型名称 库(表)名称
create database 库文件名 创建新的数据库文件  && database 不能少,TABLE也不能少.
open database 库文件名  打开指定的库文件
close database 关闭当前的数据库和数据表
close all 关闭所有的数据库和数据表,并把工作区1置为当前工作区,同时还关闭一些窗口
modify database 修改当前库文件结构
delete database 库文件名  删除指定的库文件
open database 库文件名
add table 表名
在数据库中添加表
open database 库文件名
remove table 表名
将表从数据库中移去
open database 库文件名
remove table 表文件名 delete
将表从数据库中移去并从盘上删除
use 库文件名 !表名  &&注意写法
browse
“!”表示引用一个不在当前数据库中的表
Set relation to 关系表达式 into 区号 | 别名  建立表之间的临时关系
Set relation to  删除表之间的临时关系
alter table 子表名 add foreign key 索引关键字 tag 索引标识 references 父表名 [tag 索引标识 ]  创建永久关系
alter table 子表名 drop foreign key tag 索引标识  删除永久关系
5. 数据库表的约束机制
约束机制 级别 激活时机
NULL值 字段 当从浏览中离开字段,或执行INSERT或REPLEASE更改字段值时
字段级规则 字段 当从浏览中离开字段,或执行INSERT或REPLEASE更改字段值时
主索引/候选索引 记录 发生记录更新时
记录级规则 记录 发生记录更新时
触发器 表 在INSERT、UPDATE或DELETE事件中,表中值改变时
VALID子句 表单 移出记录时