当前位置:首页 >> 工学 >>

ch4 数据库的创建和使用 江苏省二级 vfp 课件


第四章

数据库的创建和使用
4.1 4.2 4.3 4.4 4.5 4.6 4.7 VFP数据库概述 VFP数据库概述 创建数据库 数据库的使用 VFP的数据字典( VFP的数据字典(Data Dictionary) Dictionary) 数据库表 永久关系和 永久关系和参照完整性 操作数据库及其对象的几个常用函数

结束放

映? 结束放映?
YES(是 YES(是) NO(否 NO(否)

4.1 Visual FoxPro 数 据 库
数据库是一个包容器,是许多相关的数据库表 数据库是一个包容器, 的集合,是数据组织层次中目前已达到的最高级别。 的集合,是数据组织层次中目前已达到的最高级别。 它包括数据表以及表之间的关系等。 它包括数据表以及表之间的关系等。

4.2 创建数据库
创建一个新的数据库将生成三个文件:数据库文件 (dbc)、关联的数据库备注文件(dct)和关联的数据库 索引文件(dcx)。

VFP 数据库的创建方法
界面操作方式创建数据库 界面操作方式创建数据库 命令方式创建数据库 命令方式创建数据库

VFP 数据库的组成
1. 数据库表 2. 本地视图及远程视图 3. 连接 4. 存储过程

4.3 数据库的使用
打开数据库 设置当前数据库 使用数据库中的表 关闭数据库 删除数据库

4.4 VFP 的数据字典
数据字典是指存储在数据库中用于描述所管理的表和对 象的数据,即关于数据的数据, 象的数据,即关于数据的数据,这些数据称为元数据 。包括 长表名、长字段名、有效性规则和触发器, 长表名、长字段名、有效性规则和触发器,以及有关数据库 对象的定义如视图和命名连接等。 对象的定义如视图和命名连接等。 VFP数据字典可以创建和指定以下内容 VFP数据字典可以创建和指定以下内容: 数据字典可以创建和指定以下内容: 主关键字和候选索引关键字 字段级和记录级有效性规则 表单中使用的默认控件类 表中字段的标题和注释 数据库表之间的永久性关系 存储过程 字段的输入掩码和显示格式 表中字段的默认值 长表名和表中的长字段名 插入、更新和删除事件的触 插入、 发器 除了以上这些表的功能扩展, 除了以上这些表的功能扩展,使用数据库还能访问与远 程数据源的连接,并可创建本地表和远程表的视图。 程数据源的连接,并可创建本地表和远程表的视图。

4.5 数据库表
数据库表的字段扩展属性 数据库表的表属性 数据库表的约束机制及其激活时机综述 数据库表的约束机制及其激活时机综述 数据库表的索引 数据库表的添加与移去

数据库表字段的扩展属性
引言 字段的显示属性
字段的格式 Format) 字段的格式(Format) 格式( 字段的输入掩码 输入掩码( Mask) 字段的输入掩码(Input Mask) 字段的标题 Caption) 注释(Comment) 标题( 字段的标题(Caption)与注释(Comment)

字段验证规则
字段验证规则 ruleexpression) 字段验证规则(ruleexpression) 验证规则( 验证信息( 字段验证信息 ruleexpressiontext) 字段验证信息(ruleexpressiontext) 字段默认值 defaultvalue) 默认值( 字段默认值(defaultvalue) 命令方法实现字段验证规则

在数据库中查看字段的扩展属性 在数据库中查看字段的扩展属性

在使用命令create table-sql创建表文件 在使用命令 创建表文件 可以利用check子句、error子句和 子句、 时,可以利用 子句 子句和 default子句设置字段的有效性规则、有效性 子句设置字段的有效性规则、 子句设置字段的有效性规则 信息和默认值;在使用alter table-sql命令修 信息和默认值;在使用 命令修 改表的结构时,可以通过set 子句、 改表的结构时,可以通过 check子句、set 子句 default子句设置字段的有效性规则、有效性 子句设置字段的有效性规则、 子句设置字段的有效性规则 信息和默认值。删除字段的有效性规则时, 信息和默认值。删除字段的有效性规则时, 可以利用带drop check子句的 子句的alter table-sql 可以利用带 子句的 命令;删除字段的默认值时, 命令;删除字段的默认值时,可以利用带 drop default 子句的 子句的alter table-sql命令。 命令。 命令

数据库表的表属性
长表名与 长表名与表注释 表记录的验证规则 表记录的验证规则 表记录的验证信息 表记录的验证信息 表的触发器(Trigger) 表的触发器(Trigger)
触发器的基本概念 触发器的基本概念 创建表的触发器 移去或删除触发器 移去或删除触发器

相关表之间的参照完整性
“参照完整性”(RI)概念 参照完整性” RI) 设置参照完整性
参照完整性设置方法 参照完整性设置方法 参照完整性规则

VFP 数据完整性综述
实体完整性 参照完整性 用户自定义完整性

4.7 操作数据库及其对象的几个常用函数

DBC( )函数与DBUSED( )函数 )函数与 函数与DBUSED( )函数

DBGETPROP( )函数 DBGETPROP( )函数

DBSETPROP( )函数 DBSETPROP( )函数

表 之 间 的 关 系(1)
1. 一对多关系 一对多关系 设有甲乙两个表, 设有甲乙两个表,如果甲表中的任意一个记录在 乙表中都有几个记录与之对应,而乙表中的每个记录 乙表中都有几个记录与之对应, 在甲表中仅有一个记录与之对应, 在甲表中仅有一个记录与之对应,则称甲乙两个表之 间存在一对多关系 并称甲表为“ 一对多关系, 间存在一对多关系,并称甲表为“一”表(或“主 ),乙表为 乙表为“ 子表” 表”),乙表为“多”表(或“子表”)。 外部关键字首先必须是“ 表中存在的字段, 外部关键字首先必须是“一”表中存在的字段, 外部关键字的值输入到“ 外部关键字的值输入到“多”表中的条件也必须是在 表中早已存在的。一般,将在“ “一”表中早已存在的。一般,将在“多”表中存在 但在“ 表中不存在的记录称为“孤立记录” 但在“一”表中不存在的记录称为“孤立记录”。

表 之 间 的 关 系(2)
2. 多对多关系 遇到“多对多”的情况时,必须建立第三个表, 遇到“多对多”的情况时,必须建立第三个表, 把多对多的关系分解成两个一对多关系。 把多对多的关系分解成两个一对多关系 。 这第三个 表就称作“纽带表” Table) 表就称作 “ 纽带表 ” ( Junction Table) 。 因为它 在两表之间起着纽带的作用。 在两表之间起着纽带的作用 。 可以把两个表的主关 键字都放在这个纽带表中。 键字都放在这个纽带表中。 对于纽带表,除了包含两个外部关键字: 对于纽带表 , 除了包含两个外部关键字 : 即来 自于学生表的主关键字Xh(学号) 自于学生表的主关键字Xh(学号)和课程表的主关 键字Kcdh(课程代号) 还可以有其他字段, 键字Kcdh(课程代号)外,还可以有其他字段,如 Cj(成绩)字段。但允许没有单个字段的主关键字, Cj( 成绩 )字段 。 但允许没有单个字段的主关键字, 主关键字可以由两个外部关键字组成。 主关键字可以由两个外部关键字组成。

表 之 间 的 关 系(3)
3. 一对一关系 一对一关系是这样一种关系: 一对一关系是这样一种关系:甲表的一个记录 在乙表中只能对应一个记录, 在乙表中只能对应一个记录,而乙表中的一个记录 在甲表中也只能有一个记录与之对应。 在甲表中也只能有一个记录与之对应。这种关系不 经常使用。因为在许多情况下, 经常使用。因为在许多情况下,两个表的信息可以 简单地合并成一个表。出于一些原因( 简单地合并成一个表。出于一些原因(如字段项太 ),不能合并的 可以建立一对一关系, 不能合并的, 多),不能合并的,可以建立一对一关系,只要把 一个主关键字同时放到两个表中, 一个主关键字同时放到两个表中,并以此建立一对 一关系。 一关系。

表 之 间 的 关 系(4)
4. 分析并确定表之间关系

界面操作方式创建数据库
在“项目管理器”中新建数据库 项目管理器” 据库 通过“新建” 通过“新建”对话框新建数

命令方式创建数据库
创建数据库的命令: 创建数据库的命令:
语法: 语法:CREATE DATABASE [<数据库名>|?] [<数据库名 数据库名>|?] 说明: 说明: (1)如果在命令中没有给出数据库名或给出了 如果在命令中没有给出数据库名或给出了“ (1)如果在命令中没有给出数据库名或给出了“?”,则 命令自动打开“新建”对话框; 命令自动打开“新建”对话框; 如: CREATE DATABASE CREATE DATABASE ? (2)如果给出数据库名 则创建数据库, 如果给出数据库名, (2)如果给出数据库名,则创建数据库,并使该数据库处 于打开状态,但不出现数据库设计器。 于打开状态,但不出现数据库设计器。 如: CREATE DATABASE JXSJ1 (3)用命令方式创建的数据库不会自动添加到项目管理器 (3)用命令方式创建的数据库不会自动添加到项目管理器 中。

数 据 库 表(1)
从属于某一个数据库的表,称为“数据库表”(也叫 从属于某一个数据库的表,称为“数据库表” 相关表” “相关表”)。 (1) 前链和后链 库表与数据库之间的相关性是通过表文件( DBF)与库文 库表与数据库之间的相关性是通过表文件(.DBF) 与库文 前链和后链。 DBC)之间的双向链接实现的 双向链接包括前链和后链 之间的双向链接实现的。 件(.DBC)之间的双向链接实现的。双向链接包括 前链和后链。 在数据库中添加、 (2) 在数据库中添加、新建和移去表 在数据库中添加表是指把自由表添加到数据库中使之成 为库表,本质上是建立了库与表之间的双向链接。 为库表,本质上是建立了库与表之间的双向链接。新建数据 库表是指把新建的表直接创建成数据库中的表。 库表是指把新建的表直接创建成数据库中的表。从数据库中 移去表是指把库表从数据库中释放为自由表,本质上是删除 移去表是指把库表从数据库中释放为自由表, 了库文件与表文件中的双向链接信息。 了库文件与表文件中的双向链接信息。 在数据库中添加 新建和移去表的方法有多种 添加、 有多种。 在数据库中添加、新建和移去表的方法有多种。 (3) 更新表和数据库的链接 如果移动了数据文件( DBC、 DCT和 DCX)或与数据库关 如果移动了数据文件(.DBC、.DCT和.DCX)或与数据库关

数 据 库 表(2)
联的表文件,则这些文件的相对路径会改变, 联的表文件,则这些文件的相对路径会改变,可能会破坏已 有的前链或后链。 有的前链或后链。 如将库表XS由 盘移至A 如将库表XS由C盘移至A盘,由于表文件的移动引起库文 件中的前链被破坏,可使用命令VALIDATE 件中的前链被破坏,可使用命令VALIDATE DATABASE RECOVER ,更新相对路径信息以重建前链。也可用 USE 命 更新相对路径信息以重建前链。 令打开表,系统会显示“打开”对话框, 令打开表,系统会显示“打开”对话框,允许重新定位该表所 属的数据库或删除链接。 属的数据库或删除链接。 如果从磁盘中意外地删除了某个数据库文件, 如果从磁盘中意外地删除了某个数据库文件,那么原来此 数据库中包含的表仍然保留对该数据库引用的后链, 数据库中包含的表仍然保留对该数据库引用的后链,这些表就 不能再被添加到其他的数据库中,这时就需要从表中删除后链。 不能再被添加到其他的数据库中,这时就需要从表中删除后链。 其命令是: 其命令是: FREE TABLE 表文件名 如: FREE TABLE XS 表被删除了后链以后,便成为自由表, 表被删除了后链以后,便成为自由表,可再添加到其他的 数据库中。 数据库中。

前链和后链
前链是保存在数据库容器 前链是保存在数据库容器(.DBC)中的有 是保存在数据库容器( DBC) 关表文件的路径和文件名信息, 关表文件的路径和文件名信息,它将数据库与 库表文件相链接。前链指向数据库中包含的表, 库表文件相链接。前链指向数据库中包含的表, 它由各个表文件的相对路径和文件名称构成。 它由各个表文件的相对路径和文件名称构成。 后链是存放在一个表的表头中的数据库的 后链是存放在一个表的表头中的数据库的 路径和文件名, 路径和文件名,用以将自身与包含自身的数据 库容器相链接。后链指向拥有该表的数据库, 库容器相链接。后链指向拥有该表的数据库, 它由数据库的相对路径和数据库名称构成。 它由数据库的相对路径和数据库名称构成。

添加、 添加、新建和移去数据库表的方法
1. 利用“项目管理器”在数据库中添加、新建 利用“项目管理器”在数据库中添加、 和移去表 2. 利用 “数据库设计器”在数据库中添加、新 数据库设计器”在数据库中添加、 建和移去表 3. 使用命令在数据库中添加、移去表 使用命令在数据库中添加、 语法: 自由表表文件名; 语法: ADD TABLE 自由表表文件名; [NAME 长表名] 功能:向数据库中添加自由表。 功能:向数据库中添加自由表。 语法: 语法: REMOVE TABLE 表名 [DELETE] 功能:从数据库中移去表。 功能:从数据库中移去表。

使用命令在数据库中添加、 使用命令在数据库中添加、移去表
例: OPEN DATABASE jxsj EXCLUSIVE ADD TABLE xs 使用ADD TABLE命令往数据库中添加表时 命令往数据库中添加表时, ▲ 使用 ADD TABLE命令往数据库中添加表时 , 必须保证数据库处于打开状态。 必须保证数据库处于打开状态。 REMOVE TABLE XS ▲将XS表从数据库中移出,若加上DELETE可选 XS表从数据库中移出 若加上DELETE可选 表从数据库中移出, 则不仅将XS 从数据库中移出 从数据库中移出, 项 , 则不仅将 XS从数据库中移出 , 而且还把表文件 从磁盘上删除。 从磁盘上删除。 一个表在同一时间内只能属于一个数据库, ▲一个表在同一时间内只能属于一个数据库,如 果所需要的数据表已隶属于其他数据库, 果所需要的数据表已隶属于其他数据库,则必须先从 其他数据库移去此表,使其成为自由表, 其他数据库移去此表,使其成为自由表,然后才能将 其添加到当前数据库中来。 其添加到当前数据库中来。

库表之间的关系
一、表之间的关系 二、表之间的永久关系
1.永久关系(persistent relationship)的概念 永久关系( relationship) 永久关系的作用 2.永久关系的作用 永久关系的建立 3.永久关系的建立 删除、编辑修改永久性关系 4.删除、编辑修改永久性关系

永久关系( 永久关系(persistent relationship)的概念 relationship)
永久关系是库表之间的一种关系, 永久关系是库表之间的一种关系,不仅在运 行时存在,而且一直保留, 行时存在,而且一直保留,拥有永久关系的表必 须在数据库中。 须在数据库中。 数据库表间的永久关系是根据表的索引建立的。 数据库表间的永久关系是根据表的索引建立的。 索引的类型决定了要创建的永久关系类型,在一 索引的类型决定了要创建的永久关系类型, 对多关系中, 一方”必须用主索引关键字( 对多关系中,“一方”必须用主索引关键字(或 标识),或者用候选索引关键字(或标识); ),或者用候选索引关键字 );在 标识),或者用候选索引关键字(或标识);在 多方”则使用普通索引关键字( “多方”则使用普通索引关键字(或普通索引标 )。在一对一关系中 在一对一关系中, 识)。在一对一关系中,两个表必须都用主索引 关键字(或标识)或候选索引关键字(或标识)。 关键字(或标识)或候选索引关键字(或标识)。

永久关系的作用
▲在“查询设计器”和“视图设 查询设计器” 计器” 自动作为默认联接条件。 计器”中,自动作为默认联接条件。 ▲作为表单和报表的默认的关系, 作为表单和报表的默认的关系, 数据环境设计器”中显示。 在“数据环境设计器”中显示。 ▲用来存储参照完整性信息。这 用来存储参照完整性信息。 是永久关系的主要作用。 是永久关系的主要作用。

永久关系的建立
建立永久关系的一般步骤是: 建立永久关系的一般步骤是: ① 确定两个存在一对多或一对一关系的表 建立主表的主索引或候选索引; ② 建立主表的主索引或候选索引; 如果是一对多关系, ③ 如果是一对多关系,则在子表中按外部关键字建立普通 索引;如果是一对一关系, 索引;如果是一对一关系,则在子表中以与主表相同的关键字 建立主索引或候选索引; 建立主索引或候选索引; ④ 从主表的主索引或候选索引到子表相关的索引建立永久 关系。 关系。 方法一:在数据库设计器中建立永久关系, 方法一:在数据库设计器中建立永久关系,将主表的主关 键索引(XSXH)拖放到子表中的外部关键索引(CJXH) 键索引(XSXH)拖放到子表中的外部关键索引(CJXH)上。 方法二: 方法二:用命令方式建永久关系 CREATE TABLE cj(xh C(6),kcdh C(6),cj N(3,0),; FOREIGN KEY xh TAG cjxh REFERENCE xs) ALTER TABLE cj ADD FOREIGN KEY xh ; TAG cjxh REFERENCE xs

删除、 删除、编辑修改永久性关系
删除永久性关系 在“数据库设计器”中,单击关联连线后, 数据库设计器” 单击关联连线后, 该线变粗,此时, Del】键即可删除关系; 该线变粗,此时,按【Del】键即可删除关系; 或用鼠标右键单击关系连线, 或用鼠标右键单击关系连线,在快捷菜单中单 删除关系” 关联的线被擦除。 击“删除关系”后,关联的线被擦除。 编辑修改永久性关系 用鼠标右键单击关系连线,在快捷菜单中 用鼠标右键单击关系连线, 编辑关系”后出现“编辑关系” 单击 “编辑关系”后出现“编辑关系”对话 框。

永久关系连线

拖放

永久关系连线

快捷菜单

“编辑关系”对话框 编辑关系”

引 言
数据库表的字段除了具有字段的基本属性 外,还含有自由表所没有的扩展属性:包括字 还含有自由表所没有的扩展属性: 段的显示格式 输入掩码、默认值、标题、 显示格式、 段的显示格式、输入掩码、默认值、标题、注 以及字段的验证规则 验证信息等 字段的验证规则和 释以及字段的验证规则和验证信息等。这些高 级属性都保存在库表所在的数据库文件中。 级属性都保存在库表所在的数据库文件中。 字段的高级属性都可以在数据库表的“ 字段的高级属性都可以在数据库表的“表 设计器”中进行设置, 设计器”中进行设置,还可以用函数 DBSETPROP()设置。 ()设置 DBSETPROP()设置。 打开数据库表设计器 数据库表设计器和自由表设计器进行 打开数据库表设计器和自由表设计器进行 比较,可看到二者之间的差别。 比较,可看到二者之间的差别。

字段的格式
字段的格式用于指定字段显示时的格式 。 设置字段的显示格式的方法与步骤 的方法与步骤( JS表为 设置字段的显示格式的方法与步骤(以JS表为 如下: 例)如下: 打开JS表设计器 (1)打开JS表设计器 (2)选择要加格式的字段 在格式框中键入格式内容。 (3)在格式框中键入格式内容。 设置JS表的 表的JBGZ字段格式为 字段格式为“ 如: 设置JS表的JBGZ字段格式为“^”; 设置JS表的 表的JBGZ字段格式为 字段格式为“ 设置JS表的JBGZ字段格式为“L$”; 设置JS表的 表的CSRQ字段格式为 字段格式为“ 设置JS表的CSRQ字段格式为“E” 以上字段格式符号的意义见“字段格式表” 以上字段格式符号的意义见“字段格式表”。

字段的输入掩码
字段的输入掩码用于指定字段中输入数据的格式。 字段的输入掩码用于指定字段中输入数据的格式。 设置字段输入掩码的方法与步骤如下 的方法与步骤如下: 设置字段输入掩码的方法与步骤如下: 在表设计器中打开表; (1)在表设计器中打开表; 选择要加输入掩码的字段; (2)选择要加输入掩码的字段; 输入掩码”框中键入掩码。 (3)在“输入掩码”框中键入掩码。 JS表的 表的JBGZ字段设置掩码为 如:为JS表的JBGZ字段设置掩码为 “$$9,999.99” JBGZ字段类型为 JBGZ字段类型为N型,宽度为9,小数位为2。 字段类型为N 宽度为9 小数位为2 输入掩码的具体含义见“输入掩码表” 输入掩码的具体含义见“输入掩码表”。

输入掩码表

字段的标题与注释
字段标题的作用是为了使表具有更好的可读性。 字段标题的作用是为了使表具有更好的可读性。 的作用是为了使表具有更好的可读性 在取字段名时, 在取字段名时 , 为了在命令方式下更方便地使 用字段, 字段名常常采用简练的形式, 用字段 , 字段名常常采用简练的形式 , 常用拼音字 母代替汉字,如“出生日期”的字段名取为 CSRQ”, 在浏览时也以字段名作为列的标题, “ CSRQ” , 在浏览时也以字段名作为列的标题 , 不 直观,可读形不好。 直观,可读形不好。 利用数据库表字段的标题属性, 利用数据库表字段的标题属性 , 可以为字段设 置一个含义明确的标题, 但标题只是在浏览、 置一个含义明确的标题 , 但标题只是在浏览 、 显示 时起作用, 并不能作为字段名用于表达式及命令中。 时起作用 , 并不能作为字段名用于表达式及命令中 。 字段注释也是为了使表具有更好的可读性 字段注释 也是为了使表具有更好的可读性 , 所 也是为了使表具有更好的可读性, 以在注释框中可以填入对字段的文字说明。 以在注释框中可以填入对字段的文字说明。

字段验证规则
字段验证用来限定字段的取值及取值范围。 字段验证用来限定字段的取值及取值范围。 在所选字段的字段验证规则框内键入一逻辑表达式, 在所选字段的字段验证规则框内键入一逻辑表达式, 当往字段中输入数据并当焦点离开该字段时, 当往字段中输入数据并当焦点离开该字段时,将数据代入 逻辑表达式, 逻辑表达式,若表达式的值为真则接受该数据作为该字段 的值,否则拒绝将该数据作为该字段的值。 的值,否则拒绝将该数据作为该字段的值。 如将JS表的 如将JS表的JBGZ字段验证规则设为: 表的JBGZ字段验证规则设为: 字段验证规则设为 JBGZ>=500 AND JBGZ<=2000 当关闭表设计器并保存对结构的修改时,可以选择用 当关闭表设计器并保存对结构的修改时, 此规则对照现有的数据或不对照现有的数据。 此规则对照现有的数据或不对照现有的数据。

字段验证信息
在字段验证信息框中键入对验证规则的说明文 当字段值不满足字段验证规则时将显示该说明。 本,当字段值不满足字段验证规则时将显示该说明。 如在上述JS表的 如在上述JS表的JBGZ字段验证信息框中输入文 表的JBGZ字段验证信息 字段验证信息框中输入文 基本工资必须在500-2000之间 之间” 本“基本工资必须在500-2000之间”(作为字符串 常量必须加引号),当在JBGZ字段中输入 ),当在 字段中输入2100时 常量必须加引号),当在JBGZ字段中输入2100时 就会显示信息: 基本工资必须在500-2000之间 之间” 就会显示信息:“基本工资必须在500-2000之间”, 并拒绝接受2100作为 作为JBGZ字段的值 字段的值。 并拒绝接受2100作为JBGZ字段的值。 该属性为可选项, 该属性为可选项,既字段可以有字段验证规则 而没有字段验证信息, 而没有字段验证信息,当出现违背字段验证规则的 数据时,系统显示默认的信息,如“违反了字段 数据时,系统显示默认的信息, JBGZ的验证规则 JBGZ的验证规则”。 的验证规则”

字段的默认值
当向一个数据库表中添加记录时, 当向一个数据库表中添加记录时, 为字段所指定的最初的 称为该字段的默认值。 如为JS 表的 表的JBGZ字段设置默认值 值 , 称为该字段的默认值 。 如为 JS表的 JBGZ字段设置默认值 800,则每次向JS表中追加新记录时 JBGZ字段都已有数据 表中追加新记录时, 为800,则每次向JS表中追加新记录时,JBGZ字段都已有数据 800。 800。 如果没有设置默认值。则在追加新记录时, 如果没有设置默认值。则在追加新记录时, 各字段也有系 统自动设置的默认值,如下表所示。 统自动设置的默认值,如下表所示。

在数据库中查看字段的扩展属性
上述7 上述7个属性均为数据库表字段的扩展属 这些属性存储为数据库的一部分, 性,这些属性存储为数据库的一部分,而且 只要表属于该数据库,它们就一定存在, 只要表属于该数据库,它们就一定存在,而 VFP中数据库实质是一个表文件 可用USE 中数据库实质是一个表文件, 在VFP中数据库实质是一个表文件,可用USE 命令打开查看,也可用DISPLAY DATABASE命 命令打开查看,也可用DISPLAY DATABASE命 令查看。 令查看。 例如: 例如: JXSJ.DBC USE JXSJ.DBC BROWSE 或 OPEN DATABASE JXSJ DISPLAY DATABASE

长 表 名(NAME) NAME)
如果为数据库表设置了长表名属性, 如果为数据库表设置了长表名属性,则该数据库 表在各种选项卡、窗口中均以长表名代替表名。 表在各种选项卡、窗口中均以长表名代替表名。在打 开数据库表时,长表名与文件名可以同样使用。例如, 开数据库表时,长表名与文件名可以同样使用。例如, JS表设置长表名 用表设计器为JS表设置长表名“TEACHER” 用表设计器为JS表设置长表名“TEACHER”,以后打开 该表可以有两种方法: 该表可以有两种方法: USE JS USE TEACHER &&此时表的别名为 JS” &&此时表的别名为“JS” 此时表的别名为“ &&此时表的别名为 TEACHER” &&此时表的别名为“TEACHER” 此时表的别名为“

也可以在使用CREATE TABLE命令创建表时 也可以在使用CREATE TABLE命令创建表时: 命令创建表时: CREATE TABLE B01 NAME TAB01 (F01 C(3)) TAB01 (F01 C(3

表 记 录 的 验 证 规 则(1)
在向表中输入记录时,当两个字段之间存在一定 在向表中输入记录时, 的关系,如出生日期总是比工作日期小, 的关系,如出生日期总是比工作日期小,这是可以通 设置数据库表的记录验证规则来实现 例如, 来实现。 过设置数据库表的记录验证规则来实现。例如,在教 师表JS中可以设置如下记录级规则 中可以设置如下记录级规则: 工龄<年龄师表JS中可以设置如下记录级规则:“工龄<年龄15”。则应在“规则”框中输入如下规则的表达式: 15” 则应在“规则”框中输入如下规则的表达式: js.gl<year(date())-year(js.csrq)js.gl<year(date())-year(js.csrq)-15 或者使用 CREATE TABLE 或 ALTER TABLE 子句。 命令的 CHECK 子句。 ALTER TABLE JS SET CHECK; CHECK; js.gl<year(date())-year(js.csrq)js.gl<year(date())-year(js.csrq)-15

表 记 录 的 验 证 规 则(2)
和字段级规则一样, 和字段级规则一样 , 记录级规则在记录值改变 时被激活。 如果该记录中的值没有变化, 时被激活 。 如果该记录中的值没有变化 , 则在移走 记录指针时, 不检查记录级规则。 记录指针时 , 不检查记录级规则 。 因此可以自由地 在记录间移动指针,而系统却不会检查任何数据。 在记录间移动指针,而系统却不会检查任何数据。 如果修改了记录, 若没有移动记录指针, 如果修改了记录 , 若没有移动记录指针 , 则在 关闭“ 浏览” 窗口时检查记录级规则, 关闭 “ 浏览 ” 窗口时检查记录级规则 , 并对所发生 的任何错误提出警告, 然后才关闭“ 浏览” 窗口; 的任何错误提出警告 , 然后才关闭 “ 浏览 ” 窗口 ; 若记录指针移离记录时, 立即检查记录级规则, 若记录指针移离记录时 , 立即检查记录级规则 , 并 对所发生的任何错误提出警告。 对所发生的任何错误提出警告。 和字段级验证规则一样, 和字段级验证规则一样 , 在设置结束时可以选 择是否用此规则对照现有的记录。 择是否用此规则对照现有的记录。

表记录的验证信息
在记录验证信息框中键入对验证规则的说明文本, 在记录验证信息框中键入对验证规则的说明文本, 当记录不满足验证规则时将显示该说明。 当记录不满足验证规则时将显示该说明。 如在上述JS表的记录验证信息框中输入文本“ 如在上述JS表的记录验证信息框中输入文本“参 表的记录验证信息框中输入文本 加工作年龄必须大于15岁 加工作年龄必须大于15岁”(作为字符串常量必须加引 ),当JS表中某记录的 表中某记录的CSRQ和GL字段不满足这一条 号),当JS表中某记录的CSRQ和GL字段不满足这一条 件时,就会显示信息: 参加工作年龄必须大于15 件时,就会显示信息:“参加工作年龄必须大于15 并拒绝接受该记录。 岁”,并拒绝接受该记录。 该属性为可选项,即可以有记录验证规则而没有 该属性为可选项, 记录验证信息,当出现违背记录验证规则的记录时, 记录验证信息,当出现违背记录验证规则的记录时, 系统显示默认的信息, 违反了记录验证规则” 系统显示默认的信息,如“违反了记录验证规则”。

触发器的基本概念
“表的触发器”是绑定在表上的表达式,当表 表的触发器”是绑定在表上的表达式, 中任何记录被指定的操作命令(插入、 中任何记录被指定的操作命令(插入、更新或删 修改时,在进行其他所有检查之后( 除)修改时,在进行其他所有检查之后(例如有效 性规则,主关键字的实施, 值的实施) 性规则,主关键字的实施,以及 null 值的实施) 被激活。 被激活。 表的触发器是表在插入、 表的触发器是表在插入、更新或删除记录时 进行的检验规则。可分为插入触发器、 进行的检验规则。可分为插入触发器、更新触发 器和删除触发器。 器和删除触发器。

创建表的触发器
可使用“表设计器” 可使用“表设计器”或 CREATE TRIGGER命令来创建触发 TRIGGER命令来创建触发 器。 插入触发器 向表中插入或追加记录时触发该规则; 插入触发器:向表中插入或追加记录时触发该规则; 触发器: 更新触发器 在表中修改记录时触发该规则; 触发器: 更新触发器:在表中修改记录时触发该规则; 删除触发器 在表中删除记录时触发该规则。 触发器: 删除触发器:在表中删除记录时触发该规则。 上述触发器的默认设置是.T. .T.。 上述触发器的默认设置是.T.。 创建触发器的一个方法是, 创建触发器的一个方法是,在表设计器中为触发器设置一 个逻辑表达式,其返回值是“ (.F.)。 个逻辑表达式,其返回值是“真”(.T.) 或“假”(.F.)。如 JS表的删除触发器设置为GL>40, 表的删除触发器设置为GL>40 JS表中只有GL大于40年 表中只有GL大于40 将JS表的删除触发器设置为GL>40, 则JS表中只有GL大于40年 的记录才可以做逻辑删除。 的记录才可以做逻辑删除。 另一个方法是用CREATE TRIGGER命令 命令: 另一个方法是用CREATE TRIGGER命令: 表名> FOR; CREATE TRIGGER ON <表名> FOR; 逻辑表达式> INSERT |UPDATE|DELETE AS <逻辑表达式> JS.GL>40 例:CREATE TRIGGER ON JS FOR DELETE AS JS.GL>40

移去或删除触发器
在“表设计器”的“表”选项卡的“触发器”区 表设计器” 选项卡的“触发器” 插入触发器” 更新触发器” 中,从“插入触发器”、“更新触发器”或“删除触 发器”框里选定触发器表达式,并删除它。 发器”框里选定触发器表达式,并删除它。 使用 DELETE TRIGGER 命令。格式如下: 命令。格式如下: DELETE TRIGGER ON <表名> FOR DELETE 表名> |INSERT|UPDATE 如果从数据库中移去或删除表, 如果从数据库中移去或删除表,则所有属于该表 的触发器都从数据库中删除。但是, 的触发器都从数据库中删除。但是,由被移去或删除 的触发器引用的存储过程没有删除。 的触发器引用的存储过程没有删除。

库表的约束机制及其激活时机
数据库表的字段级和记录级规则以及表的触发 为数据的输入和修改实施了约束。 器,为数据的输入和修改实施了约束。

参照完整性的概念
“参照完整性”(Referential Integrity — RI)是用来 参照完整性” RI) 控制数据的完整性, 控制数据的完整性,尤其是控制数据库中相关表之间的主 关键字和外部关键字之间数据一致性的规则。 关键字和外部关键字之间数据一致性的规则。 数据一致性要求相关表之间满足如下规则: 数据一致性要求相关表之间满足如下规则: (1)子表中的每一个记录在对应的主表中必须有一个 父记录,否则子表中的记录是“孤立记录” 父记录,否则子表中的记录是“孤立记录” 。 在子表中插入记录时, (2)在子表中插入记录时,其外部关键字必须是父表 主关键字值中的一个。 主关键字值中的一个。 在父表中删除记录时, (3)在父表中删除记录时,与该记录相关的子表中的 记录必须全部删除。 记录必须全部删除。

参照完整性的设置
设置参照完整性是利用数据库表之间的永久关系, 设置参照完整性是利用数据库表之间的永久关系, 控制记录如何在相关表中被插入、更新或删除。 控制记录如何在相关表中被插入、更新或删除。参照 完整性规则被设置在主表或子表的触发器中, 完整性规则被设置在主表或子表的触发器中,规则的 代码被保存在数据库的存储过程中。 代码被保存在数据库的存储过程中。 设置过程如下: 设置过程如下: 数据库设计器” 在“数据库设计器”中,用鼠标右击永久性关系 联线,出现快捷菜单,单击其中的“编辑参照完整性” 联线,出现快捷菜单,单击其中的“编辑参照完整性” 或者单击“数据库”菜单中的“ 项(或者单击“数据库”菜单中的“编辑参照完整 出现“参照完整性”生成器。 性”),出现“参照完整性”生成器。 VFP中的参照完整性规则包括更新规则、 VFP中的参照完整性规则包括更新规则、删除规 中的参照完整性规则包括更新规则 插入规则三种。 三种 则和插入规则三种。

参照完整性规则表

数据完整性综述
VFP引进了关系数据库的三类完整性: VFP引进了关系数据库的三类完整性:实体完整 引进了关系数据库的三类完整性 参照完整性和用户自定义完整性。 性 、 参照完整性和用户自定义完整性 。 前两类是数 据库本身自我约束的完整性规则, 由系统自动支持。 据库本身自我约束的完整性规则 , 由系统自动支持 。 实体完整性包括两级: 实体完整性包括两级 : 字段和记录的数据完整 性 。 字段的数据完整性通过设置字段的有效性规则 实现。 实现 。 记录的数据完整性通过设置记录的有效性规 则实现。 参照完整性是指相关表之间的数据一致性。 则实现 。 参照完整性是指相关表之间的数据一致性 。 通过字段级、 记录级和表间三级完整性约束, 通过字段级 、 记录级和表间三级完整性约束 , 有效 地实现了数据的完整性和一致性。 地实现了数据的完整性和一致性 。 从而方便和简化 了用户的数据维护。 了用户的数据维护。

打开数据库
1. 打开一个数据库
1) 界面方式 2)命令方式 OPEN DATABASE [Database]; [EXCLUSIVE][SHARED][NOUPDATE][VALIDATE]

2. 打开多个数据库
正如表可以打开多个一样,数据库也可以打开多个, 正如表可以打开多个一样,数据库也可以打开多个, 但不必在多个工作区打开。 但不必在多个工作区打开。

打开多个数据库的方法很简单,只要多次使 打开多个数据库的方法很简单, 用打开一个数据库的命令。例如, 用打开一个数据库的命令。例如,要同时打开三个 数据库DB1 DB2、DB3的命令是 DB1、 的命令是: 数据库DB1、DB2、DB3的命令是:

OPEN OPEN OPEN

DATABASE DB1 DATABASE DB2 DATABASE DB3

设置当前数据库
所有打开的数据库中,只有一个是当前数据库。在打开 所有打开的数据库中,只有一个是当前数据库。 数据库时,最后一个打开的数据库为当前数据库。 数据库时,最后一个打开的数据库为当前数据库。也可把其 他打开的数据库设置为当前数据库。 他打开的数据库设置为当前数据库。 常用” 工具条的“数据库”下拉列表中, ( 1 ) 在 “ 常用 ” 工具条的 “ 数据库 ” 下拉列表中 , 显示 了所有已打开的数据库。 了所有已打开的数据库。可以在列表中选择一个作为当前数 据库。 据库。 TO命令将某一已打开的数据库 (2)用SET DATABASE TO命令将某一已打开的数据库 设置为当前数据库。 设置为当前数据库。如: SET DATABASE TO DB2 (3)与数据库相关的两个函数 函数DBC( ▲函数DBC() 返回当前打开的数据库的完整文件名。 返回当前打开的数据库的完整文件名。 &&返回 a:\db1.dbc &&返回 db1 ? DBC( ) 函数DBUSED(数据库名) ▲函数DBUSED(数据库名) 返回指定的数据库文件是否已经打开的状态。如果已打开, 返回指定的数据库文件是否已经打开的状态。如果已打开, 则函数返回值为. 否则函数返回值为. 例如: 则函数返回值为.T.;否则函数返回值为.F.。例如: DBUSED( DB1 &&返回 返回. ?DBUSED(”DB1”) &&返回.T.

使用数据库中的表
数据库表和自由表都可以使用USE命令打开。 数据库表和自由表都可以使用USE命令打开。但 USE命令打开 如果打开的是数据库表, 是,如果打开的是数据库表,则系统会首先自动打开 表所在的数据库。 打开数据库时不会自动打开表, 表所在的数据库。(打开数据库时不会自动打开表,关 闭数据库时会自动关闭数据库中所有已打开的表, 闭数据库时会自动关闭数据库中所有已打开的表,关 闭表时不会自动关闭数据库。 闭表时不会自动关闭数据库。) 要打开非当前数据库中的表,可以使用“ 符号。 要打开非当前数据库中的表 , 可以使用 “ !”符号 。 例如: 例如: USE jxsj!xs 也可以直接使用表文件名打开数据库表,如: 也可以直接使用表文件名打开数据库表, USE js

关闭数据库
(1)从项目管理器中,选定要关闭的数据库并选择“关闭” 从项目管理器中,选定要关闭的数据库并选择“关闭” 按钮。 按钮。 命令: (2)使用 CLOSE DATABASE 命令: ▲CLOSE DATABASES 关闭当前数据库和表。若没有当前数据库, 关闭当前数据库和表。若没有当前数据库,则关闭所有工 作区内所有打开的自由表、索引和格式文件, 作区内所有打开的自由表、索引和格式文件,并选择工作区 1。 例如, 数据库: 例如,下面的代码关闭了 JXSJ 数据库: SET DATABASE TO jxsj CLOSE DATABASE ▲ CLOSE DATABASES ALL 关闭所有打开的数据库和其中的表,所有打开的自由表, 关闭所有打开的数据库和其中的表,所有打开的自由表, 所有工作区内所有索引和格式文件, 所有工作区内所有索引和格式文件,并选择工作区 1 。 ▲ CLOSE ALL 该命令除了不关闭“命令窗口” 调试窗口” 帮助” 该命令除了不关闭“命令窗口”、 “调试窗口”、“ 帮助” 跟踪窗口” 将关闭所有的数据库、 和“跟踪窗口”外,将关闭所有的数据库、表、索引以及各种 设计器,包括项目管理器。 设计器,包括项目管理器。并选择工作区 1 。

DBC( )函数返回当前打开数据库的完整文件 名,该函数无参数。 DBUSED ( )函数返回指定的数据库文件是 否已经打开,如果打开,则函数的值为.T., 否则为.F.。 语法:DBUSED(数据库名) 其中:数据库名为字符表达式。

DBGETPROP() DBGETPROP()函数 ()函数
语法: 语法:DBGETPROP(cName, cType, cProperty) 功能:返回当前数据库的属性, 功能:返回当前数据库的属性,或者返回当前 数据库中字段、表或视图的属性。 数据库中字段、表或视图的属性。 说明: 说明: cName——指定数据库 字段、表或视图的名称。 指定数据库、 cName——指定数据库、字段、表或视图的名称。 cType——指定cName指出的对象的类型 指定cName指出的对象的类型, cType——指定cName指出的对象的类型,可以是当 前数据库,或者是当前数据库中的一个字段、 前数据库,或者是当前数据库中的一个字段、表或 视图。 视图。 cProperty——要获得对象的属性的名称 要获得对象的属性的名称。 cProperty——要获得对象的属性的名称。

例题分析

DBGETPROP()函数测试对象的属性名称 DBGETPROP()函数测试对象的属性名称

举例分析:
? DBGETPROP(“JXSJ”,”DATABASE”,”VERSION”) DBGETPROP(“JXSJ”,”DATABASE”,”VERSION”) 查看JXSJ JXSJ数据库的版本号 查看JXSJ数据库的版本号 ? DBGETPROP("JS","TABLE","RULEEXPRESSION") DBGETPROP("JS","TABLE","RULEEXPRESSION") 查看数据库表JS.DBF JS.DBF中的记录有效性规则表达式 查看数据库表JS.DBF中的记录有效性规则表达式 ? DBGETPROP("JS","TABLE","DELETETRIGGER") DBGETPROP("JS","TABLE","DELETETRIGGER") 查看数据库表JS.DBF JS.DBF中的删除触发器表达式 查看数据库表JS.DBF中的删除触发器表达式 ? DBGETPROP("JS","TABLE","COMMENT") DBGETPROP("JS","TABLE","COMMENT") 查看数据库表JS.DBF 查看数据库表JS.DBF的表注释文本 JS.DBF的表注释文本 ? DBGETPROP("CJ.CJ","FIELD","RULEEXPRESSION") DBGETPROP("CJ.CJ","FIELD","RULEEXPRESSION") 查看数据库表CS.DBF CJ字段的有效性规则表达式 CS.DBF中 查看数据库表CS.DBF中CJ字段的有效性规则表达式 ? DBGETPROP("CJ.CJ","FIELD","RULETEXT") DBGETPROP("CJ.CJ","FIELD","RULETEXT") 查看数据库表CS.DBF CJ字段的有效性规则文本 CS.DBF中 查看数据库表CS.DBF中CJ字段的有效性规则文本 ? DBGETPROP("JS.XM","FIELD","CAPTION") DBGETPROP("JS.XM","FIELD","CAPTION") 查看数据库表JS.DBF XM字段的标题 JS.DBF中 查看数据库表JS.DBF中XM字段的标题 ? DBGETPROP(“XS.XH","FIELD","DEFAULTVALUE") DBGETPROP(“XS.XH","FIELD","DEFAULTVALUE") 查看数据库表XS.DBF XH字段的默认值 XS.DBF中 查看数据库表XS.DBF中XH字段的默认值

DBSETPROP() DBSETPROP()函数 ()函数
语法: 语法: DBSETPROP( DBSETPROP(cName, cType, cProperty, ePropertyValue) ePropertyValue) 功能:给当前数据库或当前数据库中表的字段、 功能:给当前数据库或当前数据库中表的字段、表或视图 设置属性。 设置属性。 参数: 参数: cName、cType和cProperty参数的作用同 cName、cType和cProperty参数的作用同DBGETPROP()函数。 参数的作用同DBGETPROP()函数。 ()函数 ePropertyValue——指定 ePropertyValue——指定cProperty 的具体设定值, 它的数据类 指定cProperty 的具体设定值, 型必须和属性的数据类型相同。 型必须和属性的数据类型相同。 说明: DBSETPROP()函数不能设置所有的属性, ()函数不能设置所有的属性 说明: DBSETPROP()函数不能设置所有的属性,前述 DBGETPROP()函数的属性名称 中的大部分属性为只读属性, DBGETPROP()函数的属性名称表中的大部分属性为只读属性, ()函数的属性名称表 只有CAPTION、COMMENT属性可以用 属性可以用DBSETPROP()设置。 ()设置 只有CAPTION、COMMENT属性可以用DBSETPROP()设置。 ? DBSETPROP(“JS”,“TABLE”,“comment”,“教师情况表”) DBSETPROP(“JS”,“TABLE”,“comment”,“教师情况表 教师情况表” 设置数据库表JS.DBF的表注释为“教师情况表” JS.DBF的表注释为 设置数据库表JS.DBF的表注释为“教师情况表” ? DBSETPROP(“JS.gh”,“field”,“Caption”,“工号”) DBSETPROP(“JS.gh”,“field”,“Caption”,“工号 工号” 设置数据库表JS.DBF GH字段的标题为 工号” JS.DBF中 字段的标题为“ 设置数据库表JS.DBF中GH字段的标题为“工号”


相关文章:
VFP二级考试应试策略
搜 试试 7 帮助 全部 DOC PPT TXT PDF XLS ...VFP 二级考试应试策略年开设以来, 江苏省非计算机...VFP 基础 CH3 表的基本操作 CH4 数据库管理 CH5 ...
2012江苏计算机二级VFP考试资料
搜 试试 帮助 全部 DOC PPT TXT PDF XLS ...2012年3月江苏计算机二级VFP考试资料2012年3月江苏计算机...<表达式> 第四章 数据库的创建和使用4.1 VFP 数据...
vfp课件
全国二级VFP等级考试培训课... 241页 5财富值 vfp课件03 61页 免费如要投诉...重点:软降经过调试之后还要再测 试,文件使用后还需要维护 第四章 数据库设计...
Visual FoxPro数据库课件一
Visual FoxPro数据库课件一 隐藏>> 实验二一.实验目的要求 1. 2. 3. 4. 5. VFP 的打开及关闭方式 项目文件的建立 项目管理器的使用的建立方法 表中...
VFP作业部分答案
江苏省VFP第五章作业参考... 5页 1下载券 ...CH1-CH4 1.常见的数据模型有 3 种,分别是层次...使用 SQL 的 CREATE TABLE 语句建立数据库表时,...
VFP 课件 第4章 查询与视图
VFP课件ch4 查询和视图 48页 免费 第4章vfp查询...1986 年被美国国 家标准局批准成为关系型数据库语言...命令格式 SQL 语句创建查询使用的是 Select 语句。 ...
VFP
___ 14、在 VFP ,可以直接使用命令对文件进行...CH3 B1 创建并保存一个表、数据库、查询、表单、...(gl>=20,jbgz+200,jbgz+100) CH4 D 1 若...
4.创建数据库
4.创建数据库 VFP课件VFP课件隐藏>> 第4 章 数据库 1. . 什么是数据库? 什么是数据库? 包含多种数据对象的抽象的容器。 包含多种数据对象的抽象的容器。 ...
VFP 课件 第六章 面向对象的程序设计
VFP 课件 第六章 面向对象的程序设计VFP 课件 第六...都是与数据库的操作相关的,而数据环 境工具栏用于...表单程序设计一般分为以下两个步骤: 第一步:先建立...
更多相关标签: