VFP基础教程-数据库的创建和使用
VFP基础教程-数据库的创建和使用
4.1 VFP数据库1. 数据库的基本组成数据库由一个以上相互关联的数据表组成,可以包含一个或多个表、视图、到远程数据源的连接和存储过程。
视图(view):一个保存在数据库中的、由引用一个或多个表、或其他视图的相关数据组成的虚拟表,可以是本地的、远程的或带参数的。
存储过程(stored procedure):是保存在数据库中的一个过程。
该过程能包含一个用户自定义函数中的任何命令和函数。
创建数据库时系统自动生成3个文件:数据库文件: 扩展名为.DBC数据库备注文件: 扩展名为.DCT数据库索引文件: 扩展名为.DCX2. 数据库的设计过程1)明确建立数据库的目的和使用方式2)设计所需的数据表(包括表结构和表记录)3)建立表之间的关系4)改进设计4.2 数据库的创建1. 数据库的创建过程数据库的创建过程中一般会涉及下面一些常用操作:1)创建新表→用表设计器(设置字段属性和表属性)2)添加表→用数据库设计器按钮或数据库菜单3)创建视图→用视图向导、视图设计器4)建立关系→用鼠标将父表的索引拖到子表的相关索引上5)编辑关系→用数据库菜单或快捷菜单→参照完整性生成器6)移去关系→用快捷菜单或按delete键7)修改表→用表设计器8)删除表或视图→用数据库设计器按钮或数据库菜单2. 数据库的新建、打开、关闭(1)新建数据库:从文件菜单中单击新建→在新建对话框中选择数据库并单击新文件→在创建对话框中给出库文件名和保存位置→在数据库设计器中建立所需的数据库。
或从命令窗口中输入命令:create database 数据库名(2)打开数据库:从文件菜单中单击打开→在打开对话框中给出库文件名和保存位置并确定之。
或从命令窗口中输入命令:open database 数据库名(3)关闭数据库:从命令窗口中输入命令:close database&& 关闭当前数据库或close all&& 关闭所有被打开的数据库注意:1) 关闭了数据库表不等于关闭了数据库,但关闭了数据库则其中的数据表被同时关闭;2) 用鼠标关闭了数据库设计器窗口并不能代表关闭数据库。
VFP 第三章 数据库的创建和使用
课程表
学生表
教师 任课表
学习 成绩表
专业表
数据库中概念的结构图
自由表 记录 库表
数据 世界
记录 „ „ 记录
字段
„„
字段
数 据 库
„ „
库表
现实 世界 相关联的实 体集的组合
实体集
实体
属性
3.2 设计数据库的过程
确定数据库的目的 确定需要的表 确定所需字段
确定表之间的关系
改进设计
3.2.4 确定表之间的关系
二、库表之间的永久关系
1、概念
永久关系是永久保存在数据库中的库表之间的 一种关系。永久关系靠索引建立。
2、永久关系的作用
在“查询设计器”和“视图设计器”中,自 动作为默认联接条件。 作为表单和报表的默认的临时关系,在“数 据环境设计器”中显示。 用来存储参照完整性信息。
二、库表之间的永久关系
数据字典可以创建和指定以下内容:
主关键字和候选索引关键字; 表单中使用的默认控件类; 数据库表之间的永久性关系; 字段的输入掩码和显示格式; 长表名和表中的长字段名; 字段级和记录级有效性规则; 表中字段的标题和注释; 存储过程; 表中字段的默认值; 插入、更新和删除事件的触发器。
何时检查字段级规则 – 字段值改变时。 – 进行字段级检查的情况有:
3.6 库表的表属性
长表名 记录的有效性规则 表的触发器 标题 注释
长表名的命名
命名规则 – 第一字符必须是字母、下划线或汉字
表长度规定 – 自由表----------最长10个字符 – 数据库表-------最长128个字符
3.5 库表字段的扩展属性
字段的显示格式 输入掩码 默认值 标题 注释 字段的验证规则
vfp数据库与表的创建及使用
2021/8/18
第3章 数据库与表的创建及使用
22
3.2.2 数据库的打开与关闭
方法一:
所有打开的数据库
方法二: SET DATABASE TO sjk
当前数据库
2021/8/18
第3章 数据库与表的创建及使用
23
3.2.2 数据库的打开与关闭
2、检查数据库的有效性
▪ 如果用户移动了数据库文件与数据库关联的表文 件,则这些文件的相对路径会改变,从而可能破 坏用于关联数据库和表的双向链接。链接破坏后, 可通过重建链接来更新相对路径信息,以反映文 件的新位置。
2、字段的数据类型:说明字段是什么类型的数据。
▪ 不同数据类型的表示和运算的方法不一样。
2021/8/18
第3章 数据库与表的创建及使用
30
3.3.1 表结构概述
数据类型
字母 表示
说明
示例
字符型 (Character)
C 字母、汉字符号和数字型文本
XH、XM
货币型 (Currency)
Y 货币单位
▪ 使用“项目管理器” ▪ 使用“文件”菜单中的“新建”命令 ▪ 使用CREATE DATABASE命令
2021/8/18
第3章 数据库与表的创建及使用
19
3.2.2 数据库的打开与关闭
1、打开数据库
▪ 数据库的打开有多种方式
➢新建的数据库,保存后自动以独占方式打开
➢打开数据库中的表,系统会自动打开相应的数据库
➢在项目管理器中选择一个数据库,并单击“修改” 按钮,可打开该数据库,并出现数据库设计器窗口。
只读方式打开 ➢可以使用命令打开
打开方式:独占/共享
OPEN DATABASE [DatabaseName] [EXCLUSIVE|SHARED]
VFP第四章 数据库的创建和使用
4、关闭数据库 从“项目管理器”窗口中,选定要关闭
的数据库并选择“关闭”按钮。
使用命令 CLOSE DATABASE:关闭当前数据库 CLOSE DATABASE ALL:关闭所有数据库 CLOSE ALL:关闭所有数据库、表、索引
5、删除数据库 删除数据库意味着将删除存储在该数据库中的一切信息。如:存储过
使用项目管理器创建数据表
使用数据库设计器创建数据表
表设计器
• 通过命令创建
• 当有数据库打开时,利用CREATE TABLE-SQL命令创建的
表,如果不使用FREE关键字,则该表是属于当前数据库
的数据库表。 •
当前数据库jxsj中 的表
数据库表的扩展属 性
•
OPEN DATABASE jxsj
当输入的“数据库名” 的数据库已经存在时,显 示“操作提示”对话框, 单击“是(Y)”按钮, 改写原有的数据库。
若将系统环境参数 SAFETY的值设置为OFF ,系统就不会提示用户确 认,直接改写原有的数据 库。
4.2.2 VFP数据库的组成
➢ 数据库表 ➢ 视图 ➢ 连接 ➢ 存储过程
1、数据库表 数据库表与数据库之间的相关性是通 过它们之间的双向链接实现的。
第四章 数据库的创建和使用
4.1 数据库概述
• 数据库是一个容器,是许多相关的数据库表及其 关系的集合。
• 例如,一个教学管理信息系统中将涉及到教师、 课程、任课、学生、成绩、系以及专业等实体, 可分别用二维表来表示(如图所示)。
• 数据库中的表并不是彼此独立的,借助于一个公 共的字段可以将两张表联系起来,这就建立了一 种“关系”。
•
CREATE TABLE xsb NAME 学生表之二 (xh
VFP6.0程序设计第4章 数据库的创建与操作
数据库结构 数据库结构大致上可分作三类:层次型、网状型和关系型。 关系型数据库结构 是用一二维表来表示数据之间的联系。 Visual FoxPro 6.0属 于关系型数据库结构。
4.1.2
确定设计数据库的目的
首先,应对数据库进行总体设计,弄清数据库要求实现什么功 能,即:第一步是明确数据库的目的和如何使用。明确目的之后, 就可以确定您需要保存那些主题的信息(表),以及每个主题需要 保存哪些信息(表中的字段)。 接下来,收集所有表单和报表。这些表单和报表包含了应该由 数据库提供的各种信息。
4.1.3
数据库设计的一般过程
1.需求分析,确定建立数据库的目的。 2.确定需要的表。在明确了数据的需求后,就可以着手 把所需求的各种信息分成各个独立的主题。 3.确定需要的字段。确定在每个表中要保存哪些信息, 即确立各表的结构。 4.确定各表之间的关系。分析每个表,确定一个表中的 数据和其他表中的数据有何关系,各表之间的数据应该如何 进行联接等。 5.设计求精。对设计进一步分析,查找其中的不合理处。 6.创建表,在表中加入几个示例数据记录,看能否从表 中得到想要的结果。如果发现设计不完备,可以对设计作一 些调整。
要为其建立有效性规则和说明可按以下步骤: (1)在【数据库设计器】中打开表; (2)在【表设计器】中选定要建立规则的字段名; (3)在【规则】方框选择对话按钮; (4)在【表达式生成器】中设置有效性表达式,并选择【确定】。 (5)在【信息】框中,键入用引号括起的错误信息。 (6)单击【确定】按钮,返回数据库设计器。
设置字段有效性规则和说明
字段有效性规则是一个逻辑表达式,当字段的值发生变化时, 如果逻辑表达式的值为真,那么允许数据输入到该字段中;如果 逻辑表达式的值为假,那么拒绝将数据输入到该字段中并显示错 误信息,错误信息保存在有效性说明中。例如,“xsjf”表中的 “学号”字段表示“2001级学生”,该值必须满8位。若使用者 输入“2000级学生”或学号不足8位,根本就是无效的数据,在 输入这种数据时,就得警告使用者输入错误而必须重新输入,这 就是字段的有效性规则和说明。
VF数据库及其操作ppt课件
移动指针的方式 1.菜单方式:浏览表-表-转到记录 2.命令方式: (1)指针的绝对定位命令
GO/GOTO TOP|BOTTOM|<记录号> (2)指针的相对定位命令
SKIP [<数值表达式>] (3)条件定位命令
LOCATE[<范围>]FOR<条件>[WHILE<条件>]
8
表文件 USE
文件首 BOF()=.T. 首记录 GO TOP
FOUND()=.T.
尾记录 GO BOTTOM 文件尾 EOF()=.T.
9
3.3.3 修改表结构 1.项目管理器方式:数据表-修改或双击要修改的表. 2.菜单方式:打开表-显示-表设计器. 3.命令方式:MODIFY STRUCTURE 4.修改内容:修改字段名、类型、长度.
增加、删除字段,改变字段顺序.
[<字段2>WITH<表达式2>[ADDITIVE]]… [<范围>][FOR<条件>][WHILE<条件>] 12
3.3.6 删除记录
1.逻辑删除
(1)菜单方式:浏览表-表-删除记录.
(2)命令方式:DELETE [<范围>][FOR<条件>][WHILE<条件>]
(3)鼠标方式:浏览表,单击记录首部空白栏,使其颜色变黑
[FIELDS<字段名表>][FOR<条件>][WHILE<条件>] 2.数据表结构的复制
COPY STRUCTURE TO <新表文件名> [FIELDS<字段名表>] 3.数据表的重新命名 (1)项目管理器方式:打开表-项目-重命名文件. (2)命令方式:RENAME <源表文件名> TO <新表文件名>
VFP 第三章 数据库的创建和使用
临时关系与永久关系的区别:临时关系是用来临时地控制相关表之间记录的访问;而永久关系主要是用来存储相关表之间的参照完整性。
附带地可以作为默认的临时关系或查询中默认的联接条件。
临时关系在表打开之后使用 SET RELATION 命令创建,随表的关闭而解除;永久关系永久地保存在数据库中而不必在每次使用表时重新创建。
临时关系可以在自由表之间、库表之间或自由表与库表之间建立;而永久关系只能建立在库表之间。
临时关系与永久关系的联系:无论建立临时关系还是永久关系,都必须明确建立关系的两个表之间确实在客观上存在着一种关系(一对多或一对一关系)。
永久关系在许多场合可以用来作为默认的临时关系。
3.10.2 建立表之间的临时关系建立临时关系要明确几个要素:主表、子表、子表的主控索引以及关系表达式。
临时关系:主表的记录——>子表的主控索引建立临时关系的方法: 1、在“数据工作期”窗口中建立 2、使用 SET RELATION 命令建立: SET RELATION TO 关系表达式 INTO 区号|别名
3.10.3 解除表之间的临时关系一. 在“数据工作期”窗口中解除二. 使用命令解除选择主表工作区,使用如下命令解除临时关系: SELECT XS SET RELATION TO 或者 SET RELATION OFF 三. 在关闭主表或子表时,临时关系也即自动解除。
VFP数据库及其操作
3.3.2 自由表的建立
1. 定义表结构 利用“表设计器” 创建表的结构。 打开表设计器有以下几种方法。
(1)菜单:选择“文件|新建”命令。
(2)命令:Create <表文件名>
(3)项目管理器:在“数据”选项卡中选择“自由表”,单 击“新建”命令。
3. 删除数据库 (1)项目管理器:选定要删除的数据库,单击“移去”按钮, 在对话框中选择“移去”命令,将从项目中移去选定的库文件; 选择“删除”命令,则将选定的库文件从磁盘上删除。
(2)命令:DELETE DATABABE <数据库文件名>
3.3 创建数据表
1. 数据表和数据库 表(Table)是 处理数据和建立关系型数据库及应用程序
的基本元素。数据库(DATABASE)是表的集合。 2. 数据表的类型 (1)自由表:不属于任何数据库而独立存在的表 (2)数据库表:属于某一数据库的表
使用项目管理器中的“移去”/“添加”命令,可以在数据 库表和自由表之间相互转换。 3. 数据表的结构 形式上是一组相关联的数据按行和列排列 的二维表格,用来描述一个实体。表中的每一列称为一个字段, 每一行称为一条记录。
① 打开数据库文件
OPEN DATABASE [<数据库文件名>]
② 打开数据库文件所对应的数据库设计器
MODIFY DATABASE [<数据库文件名>]
3.2.3 数据库的基本操作
2.关闭数据库 (1)项目管理器:选定要关闭的数据库,单击“关闭”按钮。
(2)命令:CLOSE DATABASES
3.3.1 基本概念
第三章、VFP数据库及其操作
3.5.3
参照完整性与表之间的关联
1、 “参照完整性” 的概念
参照完整性是用于控制数据库表之间的主关键字和外部关 键字之间数据一致性的规则。 1)子表中的每一个记录在对应的主表中必须只有一个父记 录; 2)在主表中修改了主关键字的值,子表中的外部关键字的 值必须同时被修改; 3)在主表中删除记录时,子表中与该记录相关的所有记录 也将被删除。
15.6.4 4
3.1.5 删除数据库
1、从项目管理器删除数据库 2、删除数据库命令
格式:Delete Database <数据库文件名> | ? [Deletetables] [Recycle] 说明: • Deletetables:删除数据库文件的同时删除该数据库所包含的 所有数据库表(.dbf)。若省略该可选项,仅删除指定数据库, 数据库表成为自由表。 • Recycle:将数据库文件和数据表文件放入回收站,以便需 要时还原它们。
15.6.4
17
3.4.2
在表设计器中建立索引
“字段”选项卡 :建立单字段的普通索引 。 “索引”选项卡 :指定索引名、类型、索引顺序(升序或降 序),建立索引表达式。
3.4.3 使用索引命令建立索引 格式:Index On <索引表达式> To <索引文件名>
[Ascending | Descending] [Unique | Candidate] [Additive] 1、Ascending | Descending:指定按索引表达式的升序或降序 索引 ,默认升序。 2、Unique | Candidate:建立唯一索引或候选索引。 3、Additive:省略该可选项,指关闭以前的索引。
15.6.4
数据库的创建和使用
发器 除了以上这些表的功能扩展,使用数据库还能访问与远 程数据源的连接,并可创建本地表和远程表的视图。
表 之 间 的 关 系(3)
3. 一对一关系 一对一关系是这样一种关系:甲表的一个记录在 乙表中只能对应一个记录,而乙表中的一个记录在甲 表中也只能有一个记录与之对应。这种关系不经常使 用。因为在许多情况下,两个表的信息可以简单地合 并成一个表。出于一些原因(如字段项太多),不能 合并的,可以建立一对一关系,只要把一个主关键字 同时放到两个表中,并以此建立一对一关系。
表 之 间 的 关 系(2)
2. 多对多关系 遇到“多对多”的情况时,必须建立第三个表, 把多对多的关系分解成两个一对多关系。这第三个 表就称作“纽带表”(Junction Table)。 因为它在 两表之间起着纽带的作用。可以把两个表的主关键 字都放在这个纽带表中。 对于纽带表,除了包含两个外部关键字:即来 自于学生表的主关键字Xh(学号)和课程表的主关 键字Kcdh(课程代号)外,还可以有其他字段,如 Cj(成绩)字段。但允许没有单个字段的主关键字, 主关键字可以由两个外部关键字组成。
字段验证规则
字段验证规则(ruleexpression) 字段验证信息(ruleexpressiontext) 字段默认值(defaultvalue) 命令方法实现字段验证规则
在数据库中查看字段的扩展属性
在使用命令create table-sql创建表文件 时,可以利用check子句、error子句和 default子句设置字段的有效性规则、有效性 信息和默认值;在使用alter table-sql命令修 改表的结构时,可以通过set check子句、set default子句设置字段的有效性规则、有效性 信息和默认值。删除字段的有效性规则时, 可以利用带drop check子句的alter table-sql 命令;删除字段的默认值时,可以利用带 drop default 子句的alter table-sql命令。
vfp数据库的创建和使用
§4.10 查看和设置数据库的属性
一、DBGETPROP()函数
返回当前库的属性或当前库中表、字段的属性
语法:DBGETPROP(cName,cType,cProperty)
例:获取CJ表中CJ字段的显示标题: ? DBGETPROP(“cj.cj”, “field”, “Caption”) 例:获取XS表中XB字段的默认值: ? DBGETPROP(“xs.xb”, “field”, “default”)
ADD TABLE 自由表文件名 CREA TABLE REMOVE TABLE 表名 [DELETE]
四、数据库的打开和关闭
Open data 数据库名 Close database Close all &&关闭项目管理器及数据库
五、数据库与库表之间的双向链接
前链 数据库表 后链 表数据库
2、默认值:
例如:仅招收来自“乌鲁木齐”的学生。
3、字段级规则
用于控制或检查用户输入到字段中的信息。 例如:性别只能是“男”或“女”。
§ 4.6 数据库表的表属性
一、长表名
库表的最大长度为128个字符。
二、表记录的验证规则
通常是比较同一记录中两个以上字段的值。
例:如何设置JS表中不允许招收18周岁以下的职工?
&&返回当前打开的数据库的文件名
DBUSED()
&&测试指定的数据库文件是否
已经打开,返回值为.t.或.f.
3、使用数据库中的表
格式: USE 库名!表名 例: use sjk!xs
练习(03秋)
1. 为xs表设置删除触发器:只有学号开头两 位是“00” 的记录允许删除,否则不允许删除。
VFP第3章 数据库与表的创建及使用
3.3 表的创建与使用
3.3.1 表.3.3 字段属性与表属性 3.3.4 表的打开与关闭 3.3.5 记录的处理 3.3.6 索引的创建与使用
3.3.7 自由表
3.3.8 利用命令创建和修改表结构
表的概念(一)
VFP中,表分为两种类型:
数据库表 和 自由表 VFP中的表(Table)是指存放在磁盘文件中 的一张二维表。 一张表保存为一个表文件(.DBF)。
举例
指出下面表中的超关键字: 姓名 赵阳 林虎 赵阳 年龄 20岁 21岁 21岁 院系 仪表 仪表 信息管理 班级 984 984 976
候选关键字
如果一个超关键字,去掉其中任何一个字段 后不再能唯一确定记录,则称它为‚候选关键字‛ (candidate key)。 候选关键字既能唯一确定一条记录,它包含的字 段又是最精练的。 一个二维表中总存在超关键字,因而也必存在候 选关键字。
存储过程
存储过程是保存在数据库中的过程代码,它由一 系列函数组成。 利用存储过程可以提高数据库的性能。 存储过程保存在.dbc文件中。
3.1.3 数据字典
数据字典是指存储在数据库中用于描述所管理 的表和对象的数据,即关于数据的数据。这些数 据称为元数据。
每个数据库带有一个数据字典,其数据存储在 数据库文件中。 数据字典扩展了对数据的描述,从而增强了数 据管理和控制功能。 数据库中的表可以享受到数据字典的各种功能。 数据字典使得对数据库的设计和修改更加灵活。
表与数据库之间的双向链接
数据库文件 前链 前链 前链 前链
后 表文件 链
后 表文件 链
后 表文件 链
后 表文件 链
视图
视图是一张‚虚表‛,其数据来源于一张或多张 表。
最新VFP第3章数据库与表的创建及使用
[EXCLUSIVE|SHARED][NOUPDATE][VALIDATE]
打开多个数据库可重复进行数据库打开操作即可,系 统默认最后一个打开的数据库为当前数据库。
根据需要可用SET DATABASE TO命令将另一个被打 开的数据库设为当前数据库或在“常用”工具栏“数
据库”下拉列表中选择一个已打开的数据库作为当前
FILE FileName]
【注】 ①RECOVER用于说明更新链接,缺省时仅检查数据库的有效性 ②TO FILE用于说明检查结果信息的去向,缺省时在VFP主窗口 显示; ③VALIDATE DATABASE命令只能处理以独占方式打开的当前 数据库。
2020/10/24
9
3.关闭数据库
在项目管理器中选择要关闭的数据库后单击“关 闭”按钮;
主题,每个主题都将是数据库中的一个表。 确定所需字段,也就是将在表中保存的信息。 确定表之间的关系,形象而又直观地反映现实世
界中各实体间的真正关系。 改进设计、优化设计。
数据库的逻辑设计
2020/10/24
3
3.1 数据库概述
3.1.2 数据库的组成
1. 表(Table) 属于某一数据库的表称为“数据库表”。与自由
数据库设计器与“数据库”菜单
2020/10/24
7
3.2.2 数据库的打开与关闭
1. 打开数据库 →使用数据库前必须打开数据库
新建的数据库,保存后自动以独占方式打开;
打开数据库中的表,系统会自动打开相应的数据库;
在项目管理器中选择一个数据库并单击“修改”按钮 ;
OPEN DATABASE [DatabaseName]
VFP第3章数据库与表的创建及 使用
本章要点
VF编程数据库的创建
7
多对一关系实例
父表 原始关键字段 值不唯一
子表 外来关键字段 8 值唯一
2
§6.1 数据库表间的关系
1.一对一关系 在一对一关系中,表A的一个记录在表B中只 能对应一个记录,而表B中的一个记录在表A 中也只能有一个记录与之对应。 数据表间建立一对一关系,是在两个数据表 中选一个 相同的索引字段 作为关键字段,把 其中一个数据表称为父表,其关键字段称为 原始关键字段 ,该字段值是唯一的,而把另 一个数据表称为子表,其关键字段称为 外来 关键字段,该字段值是也唯一的。
15
操作实例
例:向xsda.dbc数据库中添加数据表xsda.dbf、 xscj.dbf、kc.dbf
16
§6.3 使用数据库中的数据表
§6.3.1 设置数据表中字段的显示标题
自由表中字段名的最大长度只有 10 个字符, 有时难以概括清楚该名下数据的属性及含义。 如:某保险单中的“主险保险单号码”、“保 险责任起止时间”等栏目 为简化编程,程序内部字段名常设计为代码。 如:XM、XB、NAME、SEX等
3
一对一关系实例
父表 原始关键字段 值唯一
子表 外来关键字段 值唯一
4
§6.1 数据库表间的关系
2.一对多关系 在一对多关系中,表A的一个记录在表B中可 以有多个记录与之对应,而表 B 中的一个记 录在表A中只能有一个记录与之对应。 数据表间建立一对多关系,是在两个数据表 中选一个 相同的索引字段 作为关键字段,把 其中一个数据表称为父表,其关键字段称为 原始关键字段 ,该字段值是唯一的,而把另 一个数据表称为子表,其关键字段称为 外来 关键字段,该字段值是重复的。
VFP数据库基础 第3章
3.1 Visual FoxPro数据库及其建立
3.1.5 删除数据库——二种方法
1、在项目管理器中删除数据库 2、用命令删除数据库(P99)
DELETE DATABASE DatabaseName | ?
[DELETETABLES] [RECYCLE]
3.4 索引(国贸)
15
3.4 索引
1、索引的概念
●索引:对表中的记录,按关键字表达式的值,进行逻辑排 序。产生一个索引文件/索引项。
●关键字表达式:字段名(n、c、d)构成,至少用一个字段名。
●索引文件/索引项:
关键字表达式的值 该值对应的记录号
16
3.4 索引
2、索引文件的分类
①独立索引文件:用户命名,扩展名.idx,同表可建多个 ②复合索引文件
入数据不在此范围给出出错提示,默认工资1200。
●演示:进入设计器→选工资字段→输入:默认值框:1200
规则框:工资>=1000.and.工资<=3000
信息框:‘错误,工资在1000-3000之间’
20
3.5 数据完整性
如果当前不在数据库设计器中,则首先要用USE命令打开要修改 的表,然后使用命令方式MODIFY STRUCTURE打开表设计器。
复制表结构: 格式:COPY STRUCTURE TO <表名>
复制表:
说明:复制当前表的结构到指定表中,只复制 结构,不复制记录。
格式:COPY TO <表名>
说明:复制当前表记录到指定表中,新表结构和内容与当前一10致。
●实体完整性:表中不允许有重复的记录。vfp中通过候选关键 字(候选索引)和主关键字(主索引)来保证记录唯一。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.1 VFP数据库1. 数据库的基本组成数据库由一个以上相互关联的数据表组成,可以包含一个或多个表、视图、到远程数据源的连接和存储过程。
视图(view):一个保存在数据库中的、由引用一个或多个表、或其他视图的相关数据组成的虚拟表,可以是本地的、远程的或带参数的。
存储过程(stored procedure):是保存在数据库中的一个过程。
该过程能包含一个用户自定义函数中的任何命令和函数。
创建数据库时系统自动生成3个文件:数据库文件: 扩展名为 .DBC数据库备注文件: 扩展名为 .DCT数据库索引文件: 扩展名为 .DCX2. 数据库的设计过程1)明确建立数据库的目的和使用方式2)设计所需的数据表(包括表结构和表记录)3)建立表之间的关系4)改进设计4.2 数据库的创建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) 在表之间建立永久性关系永久关系:是数据库表之间的一种关系,不仅运行时存在,而且一直保留。
表之间的永久关系是通过索引建立的。
一对多关系:表之间的一种关系,在这种关系中,主表中的每一个记录与相关表中的多个记录相关联(每一个主关键字值在相关表中可出现多次)。
一对一关系:表之间的一种关系,在这种关系中,主表中的每一个记录只与相关表中的一个记录相关联。
创建表间的永久关系:在数据库设计器中,选择想要关联的索引名,然后把它拖到相关表的索引名上,所拖动的父表索引必须是一个主索引或候选索引。
建立好关系后,这种关系在数据库设计器中会显示为一条连接两个表的直线。
注意:需先建立索引然后才能建立关系。
删除表间的永久关系:在数据库设计器中,单击两表间的关系线。
关系线变粗,表明已选择了该关系,按下 dele te 键。
编辑关系:单击所需关系线,右击鼠标,从快捷菜单中选择编辑关系,在编辑关系对话框中改选其它相关表索引名或修改参照完整性规则。
参照完整性(RI):控制数据一致性,尤其是不同表的主关键字和外部关键字之间关系的规则。
Visual FoxPro 使用用户自定义的字段级和记录级规则完成参照完成性规则。
(7)在表之间建立临时关系临时关系:是在打开的数据表之间用 set relation命令建立的临时关系,或是在数据工作期窗口建立。
建立了临时关系后,子表的指针会随主表记录指针的移动。
表被关闭后,关系自动解除。
临时关系与永久关系的联系与区别:联系:(1)都必须明确建立关系的两张表之间确实在客观上存在着一种关系(一对多或一对一关系)。
(2)永久关系在许多场合可以作为默认的临时关系。
区别:(1)临时关系是用来在打开的两张表之间控制相关表之间记录的访问;而永久关系主要是用来存储相关表之间的参照完整性,附带地可以作为默认的临时关系或查询中默认的联接条件。
(2)临时关系在表打开之后使用set relation命令建立,随表的关闭而解除;永久关系永久地保存在数据库中而不必在每次使用表时重新创建。
(3)临时关系可以在自由表之间、库表之间或自由表与库表之间建立,而永久关系只能在库表之间建立。
(4)临时关系中一张表不能有两张主表(除非这两张主表是通过子表的同一个主控索引建立的临时关系),永久关系则不然。
4. 用命令方式操作数据库常用命令一览表命令格式功能create database库文件名创建新的数据库文件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.用CREATE TABLE-SQL 命令创建数据库表命令一般格式:Create table表名1 [free] (字段名1字段类型代号 [ (字段宽度[,小数位数 ] ) ][n ull | not null] [check字段规则1 [error “信息1” ] ] [default 默认值][primary key | unique] [references表名2 [tag索引标识1 ] ][ , 字段名2字段类型代号 [ (字段宽度 [, 小数位数]) ] [null | not null] ][check字段规则2 [error “信息2” ] ] [default默认值 ] ) | from array数组名使用示例:creat data xscjgl&& 创建学生成绩管理数据库create table xs (;xh c(4) default "1201" primary key,;xm c(6), ;xb c(2) check xb="男" or xb="女" error"性别只能是男或女" default "女",;nl n(2) null;)&& 创建学生表create table kc (;kch c(3) unique, ;kcm c(10),;xf n(3,1),;bxk l;)&& 创建课程表create table cj(;xh c(4) default "1201" reference xs tag xh, ;kch c(8),;ksrq d,;cj n(5,1);)&& 创建成绩表modi dataalter table cj add primary key xh+kch+str(cj,4,1) tag dh&& 为成绩表添加一个主索引6. 查看和设置数据库的属性(1)用dbgetprop()函数查看数据库属性:命令格式:dbgetprop(cName,cType,cProperty)(2)用 dbsetprop()函数设置数据库属性:命令格式:dbsetprop(cName,cType,cProperty,ePropertyValue)(3)用dbsetprop() 函数给表中字段添加标题和说明一般格式:dbsetprop('表名.字段名',’field’,’caption|comment’,’标题|说明’)例:dbsetprop(’xs.xh’,’field’,’caption’,’学号’)dbsetprop('cj.xh','field','comment','本表学号应与学生表中的学号对应')7. 数据库表的约束机制约束机制级别激活时机NULL值字段当从浏览中离开字段,或执行INSERT或REPLEASE更改字段值时字段级规则字段当从浏览中离开字段,或执行INSERT或REPLEASE更改字段值时主索引/候选索引记录发生记录更新时记录级规则记录发生记录更新时触发器表在INSERT、UPDATE或DELETE事件中,表中值改变时VALID子句表单移出记录时。