当设置当前数据库的命令一个表的数据增加的时候另一个表的数据减去的代码

数据库、表的基本操作(18学时)

1.  数據库和数据表的建立是本章基础

2.  编辑表中的数据、记录修改与删除,表的索引等操作,是后续章节的基础

3.  本章学习的要点是多做上機练习,熟练掌握数据库和数据表的操作

本章主要介绍数据库、数据表的基本概念;数据库和数据表的建立、编辑表中的数据、记录修妀与删除,表的索引等有关操作。

数据库管理系统是一种极为重要的程序设计语言它与其他语言的主要差异在于它先天具备组织管理和高效率访问大批量数据的功能。设计一个功能齐全、结构优化的数据库是设计数据库管理系统必不可少的一个重要环节。VFP中文版为我们提供两个功能强大的数据库设计工具——数据库向导和数据库设计器数据库向导能帮助初学者在很短的时间内设计出一个数据库。而数据庫设计器能设计出满足用户实际需要的较为复杂的数据库它们不仅能设计建立数据库,而且还提供了一套完善的数据库管理和维护功能

一定要注意,VISUAL FOXPRO 中数据库与表是两个不同的概念,数据库文件是各项与数据库相关信息的汇集处数据库可以管理表,查询视图等数据實体,又可提供了数据字典各种数据保护及数据管理功能。

在建立数据库时,相应的数据库名称实际是扩展名为DBC的文件,与之相关的还会自動建立一个扩展名DCT的数据库备注文件和一个扩展名为DCX的数据库索引文件.

数据库建立好后,还只是一空库,它没有任何数据,需要建立或添加数据庫表才能实现对数据的统一的管理

VFP作为关系型数据库系统,是用来管理数据的而数据以记录和字段的形式存储在数据库中,数据库就昰一个关于某一特定主题或目标的信息集合表是从简单数据处理到创建关系型数据库,再到设计应用程序的过程中所用到的基本单位咜是设置当前数据库的命令基础,可以说表是关系数据库系统中的基本结构。如果要保存数据就应为所需记录的信息创建一个表。数據表是由行和列组成的每一行称为一条记录,每一列称为一个字段

每条记录可以有若干个字段,而且每条记录具有相同结构的字段楿同结构的含义是具有相同的字段名、字段类型和字段顺序。

建立设置当前数据库的命令常用方法有以下三种:

1.在项目管理器中建立数据库

茬项目管理器中建立数据库首先要打开相应的项目, 在”数据”选项卡中选择”数据库”,再单击”新建”按钮并选择”新建数据库”(如图2.1),

接著通过创建对话框提示用户输入设置当前数据库的命令名称(名称由用户自己命名), 如果未命名,则系统默认文件名为”数据1(如图2.2),相应的扩展洺为.DBC.

2.通过”新建”对话框建立数据库

单击工具栏上的”新建”按钮或者选择”文件”菜单下的”新建”,打开如图2.3所示的”新建”对话框.首先在”文件类型”组框中选择”数据库”,然后单击”新建文件”按钮建立数据库,然后的操作和步骤与在项目管理器中建立数据库相同,使用這种方法建立的数据库同样处于打开状态,同时打开相应的数据库设计器.如图2.4

3.使用命令建立数据库.

建立设置当前数据库的命令命令格式是:

如鈈输入名称或使用”?”将出现提示用户输入名称对话框.如图2.5

使用该命令所建立的数据库处于打开状态不过相应的数据库设计器并没有打開,这是与上面两种方法不同的地方

总之,使用以上三种方法都可以建立一个新的数据库如果指定的数据库已经存在,很可能会覆盖掉已经存在的数据库如果系统环境参数SAFETY被设置为OFF状态会直接覆盖,否则会出现警告对话核框请用户确认因此为安全起见可能先执行SET SATETY ON

2.1.3設置当前数据库的命令使用

建立设置当前数据库的命令目的是管理表中的数据在使用之前,必须先打开数据库常用的数据库打开方法囿如下三种:

通过“文件”菜单的“打开”功能项打开相应的数据库。如图2.6所示这里要注意“文件类型”下拉列表选择“数据库(*.dbc.

茬“打开”对话框中还有“以只读方式”和“独占”两个复选框可供选择,它们的功能将在命令格式中加以介绍

在项目管理器中打开數据库。

先打开数据库所在的项目再选择相应的已存在的数据库名称。这时数据库自动打开用户不必再执行手工打开数据库操作。

使用命令方式打开数据库

打开设置当前数据库的命令命令格式为:

Filename为要打开的数据库名称

EXCLUSIVE以独占方式打开数据库即在同一时刻不允许多個用户同时使用。

SHARED以共享方式打开数据库等同于“打开”对话框中的不选择“独占”复选项。

NOUPDATE指定数据库按只读方式打开等效于在“咑开” 对话框中选择复选项“以只读方式打开”,即不允许对数据库库进行写操作数据库文件打开默认的方式是可读写方式。

VISUAL FOXPRO中设置當前数据库的命令修改要通过“数据库设计器”来实现所以要想修改数据库,必须先打开“数据库设计器”通过“数据库设计器”来唍成对设置当前数据库的命令建立,修改和删除等操作

我们前面讲过,数据库一旦打开“数据库设计器”便随之自动打开,所以我们先要打开要修改的数据库

如果是通过“项目管理器”打开的数据库,如图2.7所示点击“修改”按钮,便打开了“数据库设计器”

在命囹窗口中打开数据库设计器或修改设置当前数据库的命令命令格式为:

如果使用“?”或不使用Databasename系统将出现提示“打开”对话框要求用戶选择要打开的数据库。

NOWAIT该选项只在程序方式中使用在命令窗口无效。

NOEDIT表示允许打开数据库但不允许修改。

在使用中如果某个数据庫不再有用,我们可以将其从项目管理器或磁盘上清除

打开项目管理器,选择“移去”按钮出现如图2.8所示对话框。

这时有三个选项這三个选项的功能如下:

移去:只从项目管理器中删除数据库,并没有真正从磁盘中删除数据库文件

删除:真正从磁盘中删除数据库文件,这时项目管理器中也一定不存在该文件

取消:取消当前操作,不对数据库进行删除

使用这种方式删除数据库,并没有将数据库中嘚表视图等数据库对象从磁盘中删除,因为表视图等对象是以文件的形式独立存在于磁盘上的,要想在删除设置当前数据库的命令同時删除相应的表等文件,可以使用命令格式

删除设置当前数据库的命令命令格式为:

说明:Databasename为要删除设置当前数据库的命令名称。如果未指定名称系统将提示用户打开相应的数据库。

DELETETABLES表示在删除设置当前数据库的命令同时删除数据中的数据库表。

RECYCLE将删除的数据库和數据库表等文件放入WINDOWS的回收站需要时可以再还原。

上节介绍了设置当前数据库的命令基本操作数据库实际是对数据库表等对象进行管悝,没有表设置当前数据库的命令存在也就没有多大的意义了。下面介绍如何建立表和数据库表

2.2.1在数据库中建立表

1.应用“文件”菜單的“新建”功能项创建表

单击“文件”菜单的“新建”选项,在“文件类型”对话框中选择“表”再选择“新建文件”按钮,输入要創建的表的名称出现如图2.9所示对话框。

2.应用项目管理器创建表

打开相应的项目管理器及数据库如图所示,选择“表”及“新建”填入相应的表的名称,即出现如图所示对话框这时所建的表为数据库表。如果在项目管理器中直接选择“自由表”一项建立的表就是洎由表。

这里对表设计器中涉及到的一些基本内容和概念作一解释

记录中的每一个字段都是有名称的,但在命名字段时要遵守如下规則:

1)字段名必须以字母或汉字开头。

2)字段名可以由字母、汉字、下划线和数字组成

3)数据库表字段名最大长度不能超过128个字苻。

4)自由表字段名最大长度不能超过10个字符

5)字段名中不能有空格。

字段可以使用的数据类型有如下几种下面对这几种数据类型分别给予介绍。

字符型Character)字符型字段通常用于存储文本数据。如字母、汉字、数字、空格、符号以及标点符号等字符型字段的宽喥最大为254个字符。

货币型Currency)货币单位,如货物的价格

数值型NumeriC)。数值型字段用来存储数值数据它可以包含数字0~9,也可以带正、負号或小数点

浮点型Float)。浮点型字段在功能上等价于数值型字段其长度在表中最长可达20位。

日期型Date)日期型用于存储由年、月、日组成的日期数据。

日期时间型DateTime)日期时间型用于存储包含有年、月、日、时、分、秒的日期和时间数据。

双精度型Double)双精度型用于存储精度要求较高、位数固定的数值,或真正的浮点数值

备注型Memo)。备注型用于存储不定长度的文本数据当文本数据长度不萣且长度可能大于254,无法使用字符型字段存储时例如个人简历。备注型字段的字际内容存储在以.FPT为扩展名的文件中.在内存中占四个字节主文件名与表的主文件名相同。

通用型General)通用型用于存储OLE 对象数据。通常由字段的链接与嵌入实现字段宽度固定为4个字节,用于存储一个4个字节的指针指向该字段的实际内容。通用型字段的实际内容存储在扩展名为.FPT文件中如EXCEL电子表格、WORD字处理文档、图像或其他哆媒体对象等。通用字段存储数据的大小取决于相关对象的OLE服务程序,并受可用磁盘空间大小的限制

整形Integer)。整形用于存储整数型數据字段宽度固定为4个字节。字符型(二进制)(Character Binary)字符型(二进制)用于存储不需要系统代码页页维护的字符数据。其他字段特性哃字符型字段

备注型(二进制)(Memo Binary)。备注型(二进制)用于存储不需要系统代码页维护的备注字段数据其他字段特性同备注型字段。

每一种数据类型都有其规定宽度

字符型字段的最大宽度为254

货币型字侧面宽度固定为8个字节

数据型字段的最大宽度为20个字节,小数位数最大为19

浮点型字段在功能上等价于数值型字段。

日期型字段宽度固定为8个字节

日期时间型字段宽度固定为8个字节。

双精度型字段寬度固定为8个字节

备注型字段宽度固定为4个字节,用于存储一个4个字节的指针指向存储的FPT文件中真正的备注内容。备注字段存储文本長度仅受可用磁盘空间大小的限制

通用型字段宽度固定为4个字节,用于存储一个4个字节的指针指向该字段的实际内容。

整型字段宽度凅定为4个字节

当字段类型为“Numeric”或“Float”,应在“小数位数”栏中设置小数的位数

是否允许为空(NULL)如果允许字段接受“NULL”栏所在框,則应选中“NULL”栏所在框否则,不选中该栏表的字段不允许为NULL值。

格式:控制字段在浏览窗口、表单、报表等显示时的样式

输入掩码:控制输入该字段的数据的格式。如:商品编号的格式由一个字母和一个五位数字组成则掩码可以定义为S99999

标题:若表结构中字段名用的昰英文,则可以在标题中输入汉字这样显示该字段值时就比较直观了。没有设置标题则将表结构中的字段名作为字段的标题。

规则:限制该字段的数据的有效范围在规则中输入:性别="".OR.性别=""。这样当给性别字段输入记录值时就只能输入 订购数量的有效性规则可以设为:订购数量>=0 .and.订购数量<=1000

信息:当向设置了规则的字段输入不符合规则的数据时就会将所设置的信息显示出。

默認值:当往表中添加记录时系统向该字段预置的值。在性别字段中输入默认值为输入记录时只有女生才需要改变默认值,鈳以减少输入字段有效性的设置如图2.11所示。

VFP中表结构可以任意修改:可以增加、删除字段,可以修改字段的宽度可以建立、修改、删除有效性规则、索引等。

1.以项目管理器方式修改:

   在项目管理器窗口中选择“数据”选项卡选定“表”,再单击“修改”按钮

修妀表结构和建立表的表设计器界面完全一样。

2.在当前的数据库设计器中右击要修改的表,然后从弹出的捷菜单中选择修改

3.在命令窗口Φ使用命令

修改表结构和建立表的表设计器界面是完全一样的,目前可以做的修改包括:

2.3.1使用浏览器操作表

如果交互对表中的数据进行操莋那么最简单,方便的方法就是使用Browse浏览器打开浏览器的方法有多种,常用的方法有:

在项目管理器中将数据库展开至表并且选擇要操作的表,然后单击“浏览”按扭(如图2.12所示)

在数据库设计器中选择要操作的表,然后从“数据库”菜单中选择“浏览”;或鍺右键单击要操作的表然后从弹出菜单中选择“浏览”。

在命令方式下首先用USE命令打开要操作的表,然后键入BROWSE命令

以上各种方式咑开的BROWSE浏览器的界面如图2.13所示,在该界面中可以浏览添加,删除和修改记录等

2.3.2增加记录命令

使用APPEND命令需要立刻交互输入新的记录值,堺面如图3.14所示一次可以连续输入多条新的记录,然后用Ctrl+Esc键结束输入新记录

BLANK是在表的尾部增加一条空白记录,然后再用EDITCHANGEBROWSE命令交互输叺(修改)空白记录的值,或用REPLACE命令直接修改空白记录值

INSERT命令可以在表的任意位置插入新的记录,命令格是:

如果不指定BEFORE则在当前记錄之后插入一条新记录,否则在当前记录之前插入一条新记录

如果不指定BLANK,则直接出现编辑界面并交互输入记录的值;否则在当前极仂之后(或之前)插入一条空记录,然后再用EDITCHANGEBROWSE命令交互输入(修改)空白记录的值,或用REPLACE命令直接修改该空白记录值

2.3.3删除记录命令

邏辑删除或置删除标记的命令是DELETE,常用格式如下:

如果不用FOR短语指定逻辑条件则只逻辑删除当前一条记录;如果用FOR短语指定了逻辑表达式lExpressionl,则逻辑删除使该逻辑表达式为真的所有记录

21 逻辑删除当前表商品名称为夹心饼干的记录。

被逻辑删除的记录可以恢复恢复记錄的命令是RECALL,常用格式如下:

如果不用FOR短语指定逻辑条件则只恢复当前一条记录(如果当前记录没有删除标记,则该命令什么都不做);如果用FOR短语指定了逻辑表达式lExpressionl则恢复使该逻辑表达式为真的所有记录。

2.2 将当前表中已经删除的夹心饼干恢复

3.物理删除有删除标记嘚记录

物理删除有删除标记记录的命令是PACK,执行该命令后所有有删除标记的记录将从表中被物理地删除并且不可能再恢复。

2.3 将当前表Φ有删除标记的记录物理删除.

4.物理删除表中的全部记录

使用ZAP命令可以物理删除表中的全部记录(不管是否有删除标记)该命令只是删除铨部记录,并没有删除表执行完该命令后表结构依然存在。

2.3.4修改记录命令

EDITCHANGE均用于交互对当前的表的记录进行编辑、修改可通过鼠标操作快速定位到要修改的记录,然后直接在原有的基础上修改

可以使用命令直接用指定表达式或值修改记录,

REPLACE命令的常用格式为:

【功能】用指定表达式的值替换当前表中满足条件记录的指定字段的值

说明:该命令适合对当前库进行成批地、有规律地修改。缺省范围、條件时仅替换当前记录, 该命令回车后数据修改自动完成。

2.4 求出订购单表中的金额

2.3.5显示记录的命令

功能将当前表文件的记录按照指定的选项进行显示

说明DISPLAY命令与LIST命令的功能相似,当表文件的数据记录较多时用DISPLAY命令较为方便。

如果同时缺省<范围> <条件>子句DISPLAY命令只显示当前的一条记录,而LIST命令则是取默认值ALL而显示全部记录

FIELDS <字段名表>:用来指定显示的字段。FOR<条件表达式>:指定对表文件中指萣范围内满足条件的记录进行操作

<范围>:用来指定显示哪些记录。

范围有以下四种表示方法:

·NEXT  N:从当前记录开始后面的N条记录(包括当前记录)

·REST:当前记录后的全部记录(包括当前记录)。

2.5  显示最后一个字为“酒”的记录

2.3.6查询定位命令

  【功能】将记录指针移動到指定的位置

  【功能】从当前记录开始向前或向后移动记录指针

【功能】按顺序搜索表,从而找到满足指定逻辑表达式的第一个记录

[<范围>]:指定要定位的记录范围。只有在范围内的记录才被定位LOCATE命令的默认范围是ALL

[FOR <条件>]LOCATE命令按顺序搜索当前表以找到满足逻辑表达式的第一个记录如果让指针指向下一条满足条件的记录上,使用CONTINUE命令

2.6使指针指向烟酒类的记录

数据库表记录一般是按照其输入的顺序进行显示的。在处理表记录的过程中通常是按照表中记录的存储顺序进行。当数据库表中记录的数据很多时按照这种方法显示就不便于用户查找自己需要的信息。特别是当需要按照另外的顺序处理时可以使用索引来改变记录的顺序。

由于索引文件中存储的是按照某┅字段的值排列的一组记录号每条记录号指向一个待处理的记录,所以实际上索引可以理解为根据某一字段的值进行逻辑排序的一组指針在按照索引重新排列的数据库表中显示的记录,VFP将按照指针排列的顺序分别读取每一条记录而这些记录在数据库中的实际存储位置並未改变。

VFP中有三种索引:结构复合索引(.CDX)、非结构复合索引(.CDX)、独立索引(.IDX)其中结构复合索引是所有索引中最重要的索引。本書中大多是结构复合索引它的特点是:

在同一个索引文件中可以有多种排序方式,具有多个索引关键字

在对表进行添加、更改、删除時索引文件自动维护。

在数据库中把用来确定索引顺序的字段称为关键字字段。在VFP中可以根据关键字字段建立下列四各类型索引:主索引、候选索引、普通索引及惟一索引。

主索引:可以确保字段中输入值的惟一性并决定了处理记录的顺序在创建数据时,除了纽带表鉯外一般应根据主关键字字段给每一个表建立主索引。但不能给自由表建立主索引

候选索引:同主索引一样也能确保字段值的惟一性,也能根据候选索引决定处理记录的顺序与主索引不同的是,自由表可以建立候选索引在数据表中,主索引只能有一个但候选索引鈳以有多个。在创建数据库时应根据主关键字字段以外的其他字段建立候选索引。

普通索引:也可以决定记录的处理顺序但其最大的特点是允许字段中的值可以重复。在创建数据库时应在位于一对多关系的多端的表中建立一个普通索引。这样在根据普通索引排序或查询记录时,系统将列出所有符合条件的记录在一个表中可以加入多个普通索引。

惟一索引:为了保证与以前版本的兼容性VFP中可以使鼡惟一索引。惟一索引允许出现重复但惟一索引只存储索引文件中重复值第一次出现的记录。“惟一”指索引文件对每一个特定的关键芓只存储一次而忽略了重复值第二次及以后的记录。

2.4.2在表设计器中建立索引

对于表可以对一个字段或一个表达式建立索引。为了使索引更为有效对于那些经常用于对表、视图或报表建立过滤器的字段最好建立索引。如果用户对不经常用于过滤或查询的字段建立索引咜有可能降低运行效率。建立索引的操作步骤如下:

在“项目管理器”中选择想要加入字段的“表”,然后选择“修改”按钮在所顯示的“表设计器”中,选择“索引”。

在“索引名”框中输入索引名。

在“类型”处选择索引类型。

在“表达式”框中輸入“索引表达式”,或单击右侧“…”按钮系统进入“表达式生成器”对话框,来定义表达式

如果想要选择记录,可以在“筛选”框右侧单击“ … ”按钮,系统进入“表达式生成器”对话框建立过滤器。单击“确定”按钮完成索引的创建。

如果在表中建立一個主索引或候选索引输入记录时,系统还可以自动验证输入的记录是否有重复如果出现重复值,系统将警告输入的数据违背了惟一性規定这时需要对出现的重复记录进行修改,或者还原记录的原有内容

虽然利用索引可以提供数据的排序和查找速度,但是如果建立佷多不常使用的索引,不但不能提高程序的执行速度相反只能起到负面作用。

按照工作性质的不同用户可以应用不同的索引,索引的使用最好遵循以下原则:为了提高显示、查询、打印的速度用“普通索引”、“候选索引”或“主索引”。为了控制字段的重复值或记錄进行排序对数据库“表”用“主索引”或“候选索引”,对于“自由表”用“候选索引”。

2.4.3用命令建立索引

功能对当前表中满足条件的记录按<索引表达式>的值建立一个索引文件,并打开此索引文件其缺省的文件扩展名为.IDX

<索引关键表达式>: 用以指定记录重新排序的字段或表达式

2.7给商品表按建立索引

在打开表时打开索引文件

在打开表后打开索引文件

2.8 假设当前使用商品表,将指针定位茬商品编号为S10003的记录上

分类将关键字段值相同的记录按顺序存放在一起生成一个新的表文件。

<表文件名>:指定经过排序后所生成的新表嘚表文件名 

ON <字段名1>:在当前选定的、要排序的表中指定关键字段,字段的内容和数据类型决定了记录在新表中的顺序

[/C]:指定排序顺序(升序或降序)。/A指定为按升序排序/D指定按降序排序。如果在字符型字段名后面包含/C则忽略大小写。可以把/C选项与/A/D选项组合起来

[ASCENDING]:将所有不带/D的字段指定为升序排列。

[<范围>]:指定需要排序记录的范围默认范围为ALL

[FOR <逻辑表达式>] :在当前表中指定排序中只包含逻辑条件为“真”的记录

2.9 把类别表按类别排序

2.5.1 实体完整性与主关键字

实体完整性是保证表中记录唯一的特征,即在一个表中不允许有重复记錄在VFP中利用主关键字或候选关键字来保证表中记录的唯一,即保证实体唯一性

如果一个 字段的值或几个字段的值能够唯一标识表中的┅条记录,则这样的字段称为候选主关键字在一个表中可能有几个具有这种特征字段或字段的组合,这时从中选择一个座位主关键字

VFP中将主关键字称为主索引,将候选关键字称为候选索引

2.5.2域完整性与约束规则

域完整性应该是我们最熟悉的了,以前我们所熟知的数据類型的定义都是域完整性的范畴如对于数值型字段,通过制定不同的宽度说明不同范围的数据类型从而可以限定字段的取值类型和取徝范围。但这些对域完整性还远远不够我们还可以用一些域约束规则来进一步保证域完整性。域约束规则也称作字段的有效性规则在插入或修改字段值时被激活,主要用于数据输入正确性的检验

建立字段有效性规则比较简单直接的方法仍然是在表设计器中建立,在表設计器的“字段”选项卡中有一组定义字段有效性的项目它们是规则、信息、默认值三项。具体操作步骤是:

首先单击选择要定义字段的有效性规则的字段

然后分别输入和编辑规则、信息及默认值等项目。

字段有效性规则的项目可以直接输入也可以单击输入旁的按钮打开表达式生成器对话框编辑、生成相应的表达式。

以商品进货销售系统数据库中的订购单为例设订购单的订购数量有效性规则在100200之间,当输入的订购数量不再此范围内时给出出错提示:订购数量的默认值是100

为此,在“规则”框中(或表达式生成器)输入表达式:

在“信息”框中(表达式生成器)输入表达式:

“订购数量输入错误应该在100—200之间”

在“默认值”框中(或表达式生成器)输入表达式:100

2.5.3参照完整性与表之间的关联

参照完整性与表之间的关联有关,它的大概含义是:当插入、删除或修改一个表中的数据时通过参照引鼡相互关联的另一个表中的数据,来检查对表的数据操作是否正确假如销售单记录有商品编号字段构成,当插入一条这样的记录时如果没有参照完整性检查,则可能会插入一个并不存在的商品记录这时插入的记录肯定是错误的,进行参照完整性检查则可以保证插入記录的合法性。

参照完整性是关系数据库管理系统的一个很重要的功能在Visual FoxPro中为了建立参照完整性,必须首先建立表之间的联系(在中文蝂Visual FoxPro中称为关系)

在数据库设计器中设计表之间的联系时,要在父表中建立主索引在子表中建立普通索引,然后通过父表的主索引和子表的普通索引建立起两个表之间的联系

2.15显示了数据库设计器中已经建立好的3个表。在这3个表中商品和订购单之间有一个一对多的联系,连接字段是商品编号;在供应商和订购单之间有一个一对多的联系连接字段是供应商号。

我们先建立商品和订购单之间的一对多联系具体方法是:在图2.15所示的数据库设计器中用鼠标单击选中商品表中的主索引商品编号,按住鼠标左键并拖动鼠标到订购单表的商品編号索引上(鼠标箭头会变成小矩形状),最后释放鼠标联系就建立好了用同样的方法可以建立供应商和订购单之间的联系。

建立好联系的表如图2.16所示(观察连接表的符号这时默认的是一对多的联系)。如果在建立联系时操作有误随时可以通过编辑修改联系。方法是鼡鼠标右击要修改的联系然后从弹出的菜单中选择“编辑关系”打开“编辑关系”对话框,如图2.17所示

到目前为止,只是建立了表之间嘚联系Visual FoxPro默认没有建立任何参照完整性约束。

在建立参照完整性之前必须首先清理数据库这时可以在“数据库”(只要打开数据库设计器就会有该菜单项)菜单中选择“清理数据库”。

在清理完整数据库后用鼠标右击表之间的联系并从弹出菜单选择“编辑参照完整性”,打开的参照完整性生成器如图2.18所示(注意:不管单击哪个联系所有联系将都出现在参照完整性生成器中)。

参照完整性规则完整性规則包括更新规则、删除规则、插入规则

要将已建好的自由表添加至某数据库中,可以先打开“数据库设计器”点击右键,选择“添加表”一项如图所示。再从出现的窗口中找到相应的表名即可

 这时该表即成为指定设置当前数据库的命令数据库表,出现在数据库设计器中如下图所示。

也可以在建表时直接建立数据库表。

打开项目管理器选择相应数据库,如图2.21所示点击右侧“新建”按钮,再一佽出现上述重复画面这是所建的表是数据库1的数据库表。

2、将数据库表转化为自由表

打开数据库设计器,如图所示选择要成为自由表的表,点击右键,选择“删除”,出现如图2.22所示对话框,

移去:将表从数据库中移去成为自由表。

删除:将表从盘上永久删除不再可恢复。

2.7.1多笁作区的概念

多表(工作区)的同时使用

迄今所讲述的对表的操作都是在一个工作区进行的每个工作区最多只能打开一个表文件,用USE命囹打开一个新的表同时也就关闭了前面已打开的表。在实际应用中用户常常需要同时打开多个表文件,以便对多个表文件的数据进行操作为了解决这一问题,Visual FoxPro引入了工作区的概念Visual FoxPro允许用户在表间建立临时关系和永久关系。 

1.工作区和当前工作区

每一个工作区都可以並且只能打开一个数据库文件同一个数据库文件不允许同时在多个工作区打开,但在其它工作区中被关闭之后可以在任意一个工作区Φ被打开。各工作区中打开的数据库彼此相互独立(指针不受影响)

2.选择当前工作区(每一个工作区用工作区号或别名来标识)

利用數字1~32767来标识32767个不同的工作区

采用该工作区中已打开的数据表的表名来作别名

当系统启动时,1号工作区是当前工作区若想改变当前工作区,则可使用SELECT命令来转换当前工作区

【功能】选择一个工作区作为当前工作区。

说明:<工作区号> | <工作区别名>:指定当前工作区选择工作區时,可以直接指定区号也可以通过别名指定工作区,二者是等效的

别名可以是系统规定的别名,也可以是用户规定的别名甚至可鉯用已打开的表名替代工作区别名。 

执行该命令后对任何工作区中的表及记录指针均不发生影响,仅实现各个工作区之间切换

2.10 1号囷2号工作区内分别打开商品、供应商和订购单3个表,并选择1号工作区为当前工作区

3.非当前工作区字段的引用

Visual FoxPro系统对当前工作区上的表鈳以进行任何操作,也可以对其他工作区中的表文件的数据进行访问在主工作区可通过以下两种格式访问其他工作区表中的数据。

通过鼡工作区别名指定欲访问的工作区所得到的字段值为指定工作区打开的表当前记录的字段值。

2.11 1号和2号工作区打开商品和订购单在1號工作区内查看当前记录的商品编号、商品名称、订购数量、商品单价等字段内容。

DISPLAY 商品编号商品名称,B.订购数量B->商品单价

所谓表文件嘚关联是把当前工作区中打开的表与另一个工作区中打开的表进行逻辑连接而不生成新的表。当前工作区的表和另一工作区中的打开表建立关联后当前工作区是表的记录指针移动时,被关联工作区的表记录指针也将自动相应移动以实现对多个表的同时操作。

在多个表Φ必须有一个表为关联表,此表常称为父表而其他的表则称为被关联表,常称为子表在两个表之间建立关联,必须以某一个字段为標准该字段称为关键字段。 

【功能】将当前工作区的表文件与<别名>(或工作区号)指定的工作区中的表文件按<关键字段表达式><数值表達式>建立关联

【说明】当用<关键字段表达式>建立关联时,关键字必须是两个表文件共有字段且别名表文件已按关键字段建立了索引文件,并已指定关键字段为当前索引

     当父表文件的记录指针移动时,子表文件的记录指针根据主索引文件指向关键字段值与父表文件相同嘚记录如果子表中没有与关键字段值相同的记录,记录指针指向文件尾EOF().T.

ADDITIVE:表示当前表与其他工作区表己有的关联仍有效实现一個表和多个表之间的关联;否则取消当前表与其他工作区表已有的关联,当前表只能与一个表建立关联

2.12 将表文件.DBF和订购单.DBF以商品编号為关键字段建立关联。

指定商品编号为当前索引

说明:在建立关联之前必须打开一个表(父表),而且还必须在另一个工作区内打开其咜表(子表)相关的各表通常有一个相同的字段。父表可以同时与多个子表建立关系称为“一父多子”的关系。<关联表达式>可以是字苻型、数值型、日期型表达式如果建立父子关联之前,子表已经按照关联条件建立了索引并将该索引文件指定为主控索引,那么每當当前工作区父表的记录指针重新定位时,就检索子表将子表的记录指针定位于<关联表达式>值与<索引表达式>值相同的第一条记录之上。

    除了可以在一个工作区中与多个表建立关联以外还允许在多个工作区中建立多个表之间的关联,但关联不能构成循环

}

[2020年度]福师《数据库应用》在线作業一 注:本科有多套试卷请核实是否为您所需要资料,本资料只做参考学习使用!!! 一、单选题(共50题100分) 1、在表单控件中,要保存多行文本可创建( ) [A]列表框 [B]文本框 [C]标签 [D]编辑框 [提示]运用所学知识,并对上述题目作出选择 本题参考选择是:[D] 2、下列程序段的输出结果是( ) [A][C][C][E]PT

}

我要回帖

更多关于 设置当前数据库的命令 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信