《数据库与表的创建及使用.ppt》由会员分享,可在线阅读,更多相关《数据库与表的创建及使用.ppt(95页珍藏版)》请在三一办公上搜索。
1、第三章 数据库与表的创建和使用,3.1 数据库概述3.2 数据库的创建、打开与使用3.3 表的创建与使用3.4 永久性关系与参照完整性3.5 有关数据库及其对象的常用函数,3.1 VFP数据库概述,数据库是一个容器,是许多相关的数据库表及其关系的集合。在数据库中可以存储和管理各种对象,如表、视图、关系、连接以及存储过程等。,VFP数据库的组成数据库表视图(View)连接(Connection)存储过程,数据字典,数据字典是指存储在数据库中用于描述所管理的表和对象的数据,即关于数据的数据,这些数据称为元数据。,数据字典可以创建和指定以下内容:表中字段的标题、注释、默认值、输入掩码和显示格式,以及
2、表单中使用的默认控件类等表的主索引关键字数据库表之间的永久性关系长表名和表注释字段级和记录级有效性规则存储过程插入、更新和删除事件的触发器,3.2 数据库的创建、打开与使用,每创建一个新的数据库都将生成三个文件:数据库文件(.dbc)、关联的数据库备注文件(.dct)和关联的数据库索引文件(.dcx)。,一、数据库的创建利用界面操作方式创建数据库在“项目管理器”窗口中创建新的数据库通过“新建”对话框创建利用命令方式创建数据库格式:CREATE DATABASE DatabaseName|?其中:DatabaseName为创建的数据库文件名,二、数据库的打开格式:OPEN DATABASE Da
3、tabaseName EXCLUSIVE|SHAREDNOUPDATEVALIDATE功能:打开指定的数据库其中:VALIDATE用于说明在打开数据库时进行数据库的有效性检验。,三、设置当前数据库 数据库可以同时打开多个。只有一个是当前数据库。在打开数据库时,最后一个打开的数据库为当前数据库。可以把其他的数据库设置为当前数据库。格式:SET DATABASE TO DatabaseName功能:将指定的数据库设置为当前数据库,四、检查数据库的有效性格式:VALIDATE DATABASE RECOVERTO PRINTER|TO FILE FileName其中:RECOVER用于说明更新链接,
4、缺省时仅检查数据库的有效性;TO子句用于说明检查结果信息的去向,缺省时在VFP主窗口是显示。该命令只能处理以独占方式打开的当前数据库。在更新链接时,如果数据库表文件不在原位置,系统会打开“检查数据库”对话框,要求用户进行文件定位。,五、关闭数据库格式:CLOSE DATABASE功能:关闭当前数据库格式:CLOSE DATABASE ALL功能:关闭所有打开的数据库六、删除数据库 从“项目管理器”窗口中通过“移去”操作进行删除,则该数据库不包含在项目中。,3.3 表的创建与使用,表(Table)是指存储在磁盘文件中的二维表,一张二维表保存为一个表文件(.dbf)。表文件名必须遵守Windows
5、系统对文件名的约定外,不可用A-J中的单个字母作文件名。表中的列称为字段(Field),它规定了数据的特征;表的行叫做记录(Record),每一条记录表示一个实体。,一、表结构概述字段名字段名命名规则:名称中只能包含字母、下划线“_”、数字符号和汉字符号;名称的开头只能是字母、汉字或下划线,不能是数字;名称长度为110个字符;应避免使用系统保留字。,字段的数据类型,字段的宽度小数位数空值(NULL)支持 空值是用来指示记录中的一个字段有或没有数据的标识。NULL不是一种数据类型或一个值,它是用来指示数据存在或不存在的一种属性。,二、表结构的创建和修改1、表结构的创建用“表设计器”(Table
6、Designer)创建表结构,用CREATE TABLE-SQL命令创建表结构CREATE TABLE TableName(FieldName1 FieldType(nFieldWidth,nPrecision)NULL|NOT NULL,Fieldname2),2表结构的修改用“表设计器”(Table Designer)修改表的结构用ALTER TABLE-SQL命令修改表结构增加字段:ALTER TABLE TableName ADD COLUMNFieldName FieldType(nFieldWidth,nPricision),修改字段:(此命令不能修改字段名)ALTER TABLE
7、 TableName ALTER COLUMNFieldName FieldType(nFieldWidth,nPricision)删除字段:ALTER TABLE TableName DROP COLUMN FieldName修改字段名:ALTER TABLE TableName RENAME COLUMN FieldName1 TO FieldName2,三、字段属性与表属性,字段的扩展属性,字段显示属性字段的格式(Format)字段的格式用于指定字段显示时的格式,包括在浏览窗口、表单或报表中显示时的大小写和样式等。输入掩码(Input Mask)字段的输入掩码用于指定字段中输入数据的格式
8、。字段的标题(Caption)和注释(Comment)标题和注释都是为了使表具有更好的可读性。在设置表结构时,如果字段名不能明确地表达列的含义,可以为字段设置一个标题。如果标题还不能充分地表达含义或需要给字段以详细的说明,还可以给字段加上注释。,字段验证 字段验证用来限定字段的取值及取值范围,包括字段有效性规则、字段有效性信息和默认值。字段有效性规则和有效性信息 字段有效性规则用来控制输入到字段中的数据的取值范围。该规则是一个逻辑表达式。字段有效性规则在字段值改变时发生作用,它将所输入的值用定义的逻辑表达式进行验证,如不满足(即逻辑表达式的值为.F.),则拒绝该字段值,并显示一个提示框。,字段
9、有效性信息是一个字符型表达式,通常与字段有效性规则配合使用,用于指定在不满足规则要求时显示的提示信息。如果表中已有记录,且需要设置或修改某字段的有效性规则,则首先必须确保表中所有记录满足将要设置的有效性规则,否则,有效性规则无法设置或在确认保存时选择对现有数据不作检查。,默认值 向一张数据库表中添加新记录时,为字段所指定的最初的值称为该字段的默认值。在设置字段默认值时,默认值必须是一个与字段类型相同的表达式。在使用CREATE TABLE-SQL命令创建数据库表时,可用CHECK子句、ERROR子句和DEFAULT子句设置字段的有效性规则、有效性信息和默认值。在使用ALTER TABLE-SQ
10、L命令修改表结构时,可通过SET CHECK子句、SET DEFAULT子句设置字段的有效性规则(信息)、默认值;通过DROP CHECK和DROP DEFAULT子句删除字段的有效性规则(信息)、默认值。,数据库表的表属性长表名与表注释 可在数据库表的“表设计器”对话框中的“表”选项卡中的“表名”文本框中输入长表名。也可在使用CREATE TABLE-SQL命令创建表时,用NAME子句指定长表名。表注释是表的说明信息。,记录验证 记录验证包括记录有效性规则和有效性信息,用于定义记录级校验规则及相应的提示信息。字段有效性规则仅对当前字段有效,而使用记录有效性规则可以校验多个字段间的关系是否满足
11、某种规则。记录有效性规则在记录值发生改变时被激活。如对一张已有记录的表增设记录有效性规则,则在设置结束时要按此规则对所有记录进行规则检查。记录有效性规则除了可在数据库表的“表设计器”对话框中设置,也可在CREATE TABLE-SQL命令中通过CHECK子句或在ALTER TABLE-SQL命令中通过SET CHECK子句进行设置。在ALTER TABLE-SQL命令中通过DROP CHECK可删除记录的有效性规则。,表的触发器插入触发器:每次向表中插入或追加记录时触发该规则更新触发器:每次向表中修改记录时触发该规则删除触发器:每次向表中删除记录时触发该规则触发器值返回.T.,则允许执行相应的
12、操作,否则不允许执行相应的操作。,格式:CREATE TRIGGER ON TableName FOR DELETE|INSERT|UPDATE AS lExpression功能:创建表的触发器其中:AS子句用于说明触发器的使用规则格式:DELETE TRIGGER ON TableName FOR DELETE|INSERT|UPDATE功能:删除表的触发器,四、表的打开与关闭,1、工作区 所谓工作区是指用于标识一张打开的表的区域。每个工作区有一个编号,称为工作区号,其编号范围为1-32767(前10个工作区号也可以用A-J表示)。如果某工作区中已有表打开,可以用表的“别名”作为工作区号。,
13、一个工作区中只能打开一张表,用户可以同时在多个工作区中打开多张表,也可以将一张表同时在多个工作区中打开。VFP正在使用的工作区称为当前工作区,即默认工作区。SELECT nWorkArea|cTableAliasnWorkArea为工作区号;cTableAlias为表别名。工作区号为0时,选择未被使用的最小编号的工作区。,2、“数据工作期”窗口在VFP主菜单上选择窗口,再选择数据工作期,3、表的打开 使用表时首先必须把表打开。表的打开可以是显式地打开,也可以是隐式地打开。通过界面操作打开使用菜单命令“文件/打开”或单击“常用”工具条上的“打开”按钮打开在“数据工作期”窗口中单击“打开”按钮在“
14、项目管理器”窗口中选择需要打开的表,然后单击“修改”或“浏览”按钮,使用命令打开USE TableName IN nWorkArea|cWorkAliasAGAINALIAS cTableAliasNOUPDATESHARED|EXCLUSIVE,其中:IN子句用于指定在哪个工作区中打开,缺省时则表示在当前工作区中打开;AGAIN子句用于说明该表再次打开,即表在多个工作区中同时被打开;ALIAS子句用于定义表的别名,缺省时表的别名与表名相名;NOUPDATE指定表打开后不允许修改其结构和数据;SHARED指定表为共享方式打开,EXCLUSIVE指定表为独占方式打开。,4、表的关闭通过界面操作在
15、“数据工作期”窗口中选定一张表的别名,单击“关闭”按钮。使用命令USE IN nWorkArea|cTableAlias功能:关闭指定工作区中的表。其中:不使用IN子句时关闭当前工作区的表。,CLOSE TABLES ALL功能:关闭所有工作区中的表。CLOSE ALL功能:关闭所有的数据库、表和索引,且将当前工作区设置为1号工作区。,5、表的独占与共享 VFP是一个多用户的开发环境,网络上的多个用户可以在同一时刻访问同一张表。这种一张表可以同时被多个用户访问的情况,就是表的共享使用。反之,当一张表只能被一个用户打开时,称为表的独占使用。默认状态下,表是以独占方式打开的,可以使用命令来设置打开
16、方式。,SET EXCLUSIVE OFF 设置“共享”为默认打开方式SET EXCLUSIVE ON 设置“独占”为默认打开方式 改变SET EXCLUSIVE的设置,并不能改变已经打开的表的状态。另外,一张表同时被多次打开时,只以第一次的打开方式为准。,五、记录的处理,1、记录的输入表结构创建后立即输入记录输入结束时,单击窗口的“关闭”按钮。或按Ctrl+End或Ctrl+W组合键,在浏览窗口中追加记录浏览当前工作区中的表的方法单击菜单“显示”“浏览”单击菜单“窗口”“数据工作期”选择表“浏览”在命令窗口使用命令BROWSE在项目管理器中选择表单击“浏览”按钮,在浏览窗口中追加记录单击菜单
17、“表”“追加新记录”或在命令窗口中输入命令APPEND BLANK,可追加一条空白记录,且处于编辑状态等待用户输入数据单击菜单“显示”“追加方式”,可追加多条记录单击菜单“显示”“浏览”或“显示”“编辑”,可在浏览窗口和编辑窗口间切换,使用INSERT-SQL命令追加记录命令格式:INSERT INTO TableName(FieldName1,FieldName2,)VALUES(eExpression1,eExpression2,)字段名列表用于指定插入的新记录的哪些字段需要填值,缺省表示全部字段;表达式列表指定新插入记录的字段值。字段列表与表达式列表必须对应,且数据类型一致。,使用APP
18、END与APPEND FROM命令追加记录APPEND命令格式:APPEND BLANK IN nWorkArea|cTableAlias其中:BLANK用于说明向表中追加一条空白记录;IN nWorkArea|cTableAlias用于指定表所在的工作区,缺省时为当前工作区。,将其他文件中的数据导入当前工作区表中单击菜单“表”“追加记录”,可将其他文件中的数据导入当前工作区表中。常用的追回文件的文件类型有表文件(.dbf)、文本文件(.txt)和Excel文件(.xls)等。或用命令:APPEND FROM FileName DELIMITED|XLSDELIMITED用于说明追加文件类型为
19、文本文件,XLS为Excel文件,缺省时为表文件。,备注型字段和通用型字段的数据输入备注型字段:在浏览窗口中,备注型字段显示“memo”(表示无内容)或“Memo”(表示有内容)。将光标移到备注型字段,按Ctrl+Home或双击该字段,在出现的编辑窗口中输入备注字段内容,结束时关闭编辑窗口。通用型字段:在浏览窗口中,通用型字段显示“gen”(表示无内容)或“Gen”(表示有内容)。将光标移到通用型字段,按Ctrl+Home或双击该字段,在出现的编辑窗口中单击菜单“编辑”“插入对象”,插入内容,结束时关闭编辑窗口。,2、浏览窗口BROWSE FIELDS Fieldlist FOR lExpre
20、ssion FREEZE FieldName NOAPPEND NODELETE NOMODIFY TITLE cExpression,FIELDS子句用于指定在浏览窗口中出现的字段(字段间以逗号分隔),缺省时表示所有字段;FOR子句用于筛选记录,仅有满足条件的记录在浏览窗口中显示;FREEZE子句用于指定可以修改的字段,其他字段的数据不可修改;NOAPPEND指定不可追加记录;NODELETE指定不可删除记录;NOMODIFY指定不可修改记录,但可追加或删除记录;TITLE子句指定浏览窗口的标题,缺省时为表名。,3、记录的筛选如果用户只想查看和处理满足一定条件的一部分记录,可以对表记录进行筛
21、选。通过FOR子句的使用可以完成筛选功能;当表处于浏览状态时,单击菜单“表”“属性”打开“工作区属性”对话框,设置“数据过滤器”,可以对记录进行筛选;使用命令:SET FILTER TO lExpression其中:条件表达式lExpression用于指定记录需要满足的条件,省略时即取消筛选,4、限制对字段的访问在浏览或使用表时,如果只打算显示或处理部分字段,或以设置字段筛选来限制对某些字段的访问。通过FIELDS子句的使用可以完成筛选功能;当表处于浏览状态时,单击菜单“表”“属性”打开“工作区属性”对话框,设置“字段筛选”,可以对字段进行筛选;使用命令:SET FIELDS TO Field
22、List其中:字段名表FieldList用于列出所需的字段(字段名间用逗号分隔),省略时即取消筛选,5、记录的定位记录指针 当一张表打开后,系统自动地为该表生成三个控制标志:记录的开始标志、记录指针标志、记录的结束标志。记录指针标志用于指示当前处理的记录位置,记录指针指向的那个记录称为“当前记录”。每当打开一个表文件时,记录指针总是指向第1条记录。,格式:RECNO(nWorkArea)功能:返回指定工作区中指针所指记录的记录号,缺省任选项表示当前工作区。格式:BOF(nWorkArea)功能:测试指定工作区中指针是否指向记录的开始标志,如是,则返回.T.,否则为.F.,缺省任选项表示当前工作
23、区。格式:EOF(nWorkArea)功能:测试指定工作区中指针是否指向记录的结束标志,如是,则返回.T.,否则为.F.,缺省任选项表示当前工作区。,记录的定位记录指针的绝对定位:把指针移到指定位置。记录指针的相对定位:把指针从当前位置开始,相对于当前记录向前或向后移动若干条记录位置。记录指针的条件定位:按照一定的条件自动地在整张表(或表的某个指定范围)中查找符合条件的记录,如找到符合条件的记录,则把指针定位到该记录上,否则,指针将指向表的末尾。,通过界面操作方式定位 当表处于浏览状态时,记录的定位可以利用菜单命令“表”“转到记录”进行,也可以直接在浏览窗口中通过鼠标操作或键盘上的光标移动操作
24、。All:表中的全部记录Next n:从当前记录开始的n条记录Record n:记录号为n的记录Rest:当前记录及其后的所有记录,使用命令进行记录定位绝对定位GOTO nRecordNumber IN nWorkArea|IN cTableAlias|TOP|BOTTOM其中:记录号nRecordNumber必须在表记录的有效范围内;TOP指首记录;BOTTOM指末记录。相对定位SKIP nRecordsIN nWorkArea|cTableAlias其中:nRecordNumber用于指定记录指针需要移动的记录个数(正表示向后移动,负表示向前移动),缺省时为1。,条件定位LOCATE FO
25、R lExpression ScopeCONTINUE其中:条件表达式lExpression用于表示记录的定位条件;范围Scope用于指定进行条件定位的范围。CONTINUE命令表示从当前记录开始继续进行条件定位,即找到下一条满足条件的记录。,6、记录的修改界面方式的记录修改 对于当前工作区中的表,可以在浏览窗口(或编辑窗口)中对记录进行修改。如需对所有记录(或满足某种条件的记录)的某个字段内容进行有“规律”的修改,则可进行“批量修改”。在游览状态下,利用菜单命令“表”“替换字段”对话框,在该对话框中选择和输入字段替换的有关要求。(如下图所示),界面方式的记录修改(续),使用命令修改记录REP
26、LACE命令REPLACE FieldName1 WITH eExpression1 ADDITIVE,FieldName2 WITH eExpression2 ADDITIVEScope FOR lExpression功能:对当前工作区中的表进行替换修改。其中:字段名FieldName与表达式eExpression用于指定要更新的字段以及这些字段的新值;ADDITIVE仅对备注型字段有效,使用时表示替换的内容追加到原备注中,否则替换原有内容;当FOR和Scope同时缺省时,仅对当前记录进行替换。,UPDATE-SQL命令UPDATE TableName SET Column_Name1=eE
27、xpression1,Column_Name2=eExpression2,WHERE FilterCondition功能:对指定表的内容进行替换修改。其中:表名TableName用于指定要更新记录的表;Column_Name=eExpression用于指定要更新的字段以及这些字段的新值;WHERE子句用于指定要更新的记录,缺省时表示所有记录。需要说明的是,用该命令更新表时,被更新的表不必事先打开。,7、记录的删除与恢复 彻底删除表中的部分记录,分两个步骤:首先标记要删除的记录,然后彻底删除带删除标记的记录。标记要删除的记录(逻辑删除)采用界面操作方式 在浏览状态下,用鼠标单击“删除标记列”或完
28、成删除标记的切换,或在记录定位后利用菜单命令“表”“切换删除标记”来完成;或用菜单命令“表”“删除记录”,打开“删除”对话框,可删除指定范围内的一组符合指定条件的记录。,采用命令方式格式:DELETE Scope FOR lExpression IN nWorkArea|cTableAlias其中:缺省工作区或工作表别名时,指当前工作区中的表;当范围和条件同时缺省时,仅对当前记录加删除标记。有条件无范围时为ALL。格式:DELETE FROM TableName WHERE FilterCondition其中:TableName为表名,缺省条件时为所有记录,此DELETE-SQL命令可在不预先
29、打开表的情况下删除指定记录。,恢复带删除标记的记录采用界面操作方式 在浏览状态下,用鼠标单击“删除标记列”或完成删除标记的切换,或在记录定位后利用菜单命令“表”“切换删除标记”来完成;或用菜单命令“表”“恢复记录”,打开“恢复记录”对话框,可恢复指定范围内的一组符合指定条件的记录。采用命令方式格式:RECALL Scope FOR lExpression 其中:当范围和条件同时缺省时,仅恢复当前记录。有条件无范围时为ALL。,彻底删除记录(物理删除)采用界面操作方式 在浏览状态下,用菜单命令“表”“彻底删除”,可彻底删除带有删除标记的记录。采用命令方式格式:PACK 功能:物理删除带删除标记的
30、记录格式:ZAP功能:删除当前工作区中所打开表中的所有记录注意:物理删除后记录不可恢复。,对带有删除标记的记录的访问格式:SET DELETED ON|OFF功能:指定VFP是否对有删除标记的记录进行处理其中:ON表示忽略有删除标记的记录;OFF(系统默认)表示允许访问有删除标记的记录。,8、数据的复制 利用COPY TO命令可以将表(在当前工作区中已打开)中的数据复制到其他表文件或其他类型的文件中。格式:COPY TO FileName FIELDS FieldList Scope FOR lExpression TYPE SDF|XLS|DELIMITED WITH Delimiter|W
31、ITH BLANK|WITH TAB|WITH CHARACTER Delimiter,其中:FileName:指定COPY TO要创建的新文件名。FIELDS FieldList:指定要复制到新文件的字段,省略则为全部字段。Scope:指定要复制到新文件的记录范围,省略为ALL。FOR lExpression:指定要复制的记录需满足的条件。最后一个选项:指定复制生成的文件类型,缺省则为表文件。,9、数据的统计 格式:COUNT Scope FOR lExpression TO VarName功能:统计指定范围内满足条件的记录数。格式:SUM nExpression Scope FOR lEx
32、pression TO VarName功能:对指定范围内满足条件记录的数值表达式进行求和。,格式:AVERAGE nExpression Scope FOR lExpression TO VarName功能:对指定范围内满足条件记录的数值表达式进行求平均值。其中:TO VarName是将统计结果在屏幕上显示的同时保存到指定的内存变量中,缺省则不保存,只在屏幕上显示;nExpression为指定要进行求和或求平均值的表达式,缺省则为全部数值型字段,六、表的索引,记录的顺序物理顺序:表中的记录通常是按其输入的时间顺序存放的,这种顺序称为记录的物理顺序。逻辑顺序:表中的记录可按某个字段值或某些字段值
33、排序,这种顺序称为逻辑顺序。,1、索引概述索引:索引是根据索引关键字的值进行逻辑排序的一组指针,它提供了对数据的快速访问,且可以对表中的各条记录强制实现唯一性。索引关键字:索引关键字是建立索引的依据,它通常是一个字段或由多个字段组成 的表达式。索引标识:索引的名称。,索引的类型候选索引(Candidate Index):候选索引是以表的候选关键字为索引表达式而创建的索引。注意:对于表的所有记录来说,指定的索引表达式的值不可重复。主索引(Primary Index):对于数据库表来说,可以从候选索引中选取一个作为该表的主索引。每张数据库表只能创建一个主索引。普通索引(Regular Index)
34、:普通索引的索引表达式的值允许出现重复,一张表可以创建多个普通索引。唯一索引(Unique Index):唯一索引的索引表达式的值也可以重复,但在索引文件中重复的值仅存储一次。,2、索引文件的种类结构复合索引文件(Structure Compound Index)非结构复合索引文件(Non-structure Compound Index)独立索引文件(Independent Index),3、创建结构复合索引用“表设计器”创建结构复合索引,用命令创建结构复合索引格式:INDEX ON eExpression TAG TagName FOR lExpression ASCENDING|DESC
35、ENDING UNIQUE|CANDIDATE 其中:eExpression为索引表达式;TagName为索引标识;FOR子句用于筛选参加索引的记录;ASCENDING和DESCENDING用于指定索引是按升序还是降序排序,缺省时为升序;UNIQUE和CANDIDATE用于指定索引文件类型为唯一索引还是候选索引,缺省时为普通索引。,4、索引的修改和删除索引的修改用表设计器修改索引用命令修改索引 通过创建同索引名的索引覆盖原索引索引的删除用表设计器删除索引,用命令删除索引格式:DELETE TAG TagName1,TagName2,功能:删除结构复合文件中指定的索引格式:DELETE TAG
36、ALL功能:删除结构复合索引文件中的所有索引,并从磁盘上删除该索引文件。,5、索引的使用打开表的同时指定主控索引格式:USE TableName ORDER TagName功能:打开表的同时指定索引标识TagName为主控索引。打开表后再设置主控索引格式:SET ORDER TO TagName IN nWorkArea|cTableAlias ASCENDING|DESCENDING其中:索引名TagName用于指定主控索引,缺省时取消主控索引。,6、利用索引快速定位记录格式:SEEK eExpression ORDER TagName ACENDING|DESCENDING IN nWor
37、kArea|cTableAlias 功能:在一张表中搜索指定表达式的值首次出现的记录,这条记录的索引关键字必须与指定的表达式匹配。,七、有关表操作的常用函数,SELECT()函数格式:SELECT(0|1|cTableAlias)功能:测试工作区号其中:参数0用于返回当前工作区号,1用于返回当前未被使用的最大工作区号;别名cTableAlias用于返回该表所在的工作区号,使用别名时必须加引号。USED()函数格式:USED(nWorkArea|cTableAlias)功能:用于测试一张表的别名是否已被使用,或在指定的工作区中是否有表打开。其中:任选项省略时表示当前工作区。,ALIAS()函数格
38、式:ALIAS(nWorkArea)功能:返回当前或指定工作区中表的别名。FIELD()函数格式:FIELD(nFieldNumber,nWorkArea|cTableAlias)功能:用于返回已打开表的指定序号的字段名。其中:字段序号nFieldNumber是指表结构建立时的字段顺序号,第一个字段的序号为1;工作区号与别名缺省时表示当前工作区。,FCOUNT()函数格式:FCOUNT(nWorkArea|cTableAlias)功能:用于返回已打开表的字段个数。其中:工作区号与别名缺省时表示当前工作区。DELETED()函数格式:DELETED()功能:用于测试表的当前记录是否带有删除标记。
39、如果函数返回.T.,说明记录带有删除标记,否则不带删除标记。,八、数据库表的添加与移去 向数据库中添加或移去表可在“项目管理器”窗口或“数据库设计器”窗口中进行,也可用命令实现。格式:ADD TABLE TableName NAME LongTableName功能:向数据库中添加表其中:NAME子句用于指定长表名,格式:REMOVE TABLE TableName DELETE功能:将表从数据库中移去其中:DELETE用于说明从数据库中移去表后删除该表格式:FREE TABLE TableName功能:删除存储在数据库表中的后链,使之成为自由表,九、有关数据库及数据库表的几点说明数据库表具有自
40、由表的所有特性,还具有一些字段扩展属性、表属性、主索引以及表间关系等在使用多个数据库时,如要打开或说明非当前数据库中的表,可使用“!”符号,即!。在移动数据库文件的存储位置时,应相应地考虑该数据库的数据库表文件的存储位置,否则可能会出现数据库与数据库表之间的前后链不一致。不要轻易地从数据库中移去表,因为数据库表移去时会丢失存储在数据库中的字段扩展属性、表属性等。多次修改数据库结构、数据库表结构之后,应进行数据库清理操作。,3.4 永久关系与参照完整性,表之间的关系关系的种类一对一关系一对多关系多对多关系分析并确定表之间关系,1、表之间的永久关系 数据库表间的永久关系是根据表的索引建立的,索引的
41、类型决定了要创建的永久关系类型。,永久关系的创建确定两张具有一对一或一对多关系的表建立主表的主索引或候选索引建立子表的主索引或候选索引(一对一关系)或建立子表的普通索引(一对多关系)在“数据库设计器”窗口中,将主表的主索引或候选索引标识拖放到子表相应的索引标识上,即完成了永久关系的设置(如下图所示),永久关系的创建(续),永久关系的编辑 在“数据库设计器”窗口中,双击关系连线打开“编辑关系”对话框,在该对话框中可重新选择用以建立关系的两张表的索引标识。永久关系的删除 在“数据库设计器”窗口中,单击关系连线后(此时连线变粗),按【Del】键。,2、参照完整性“参照完整性”(Referential
42、 Integrity,简称RI)是用来控制数据的完整性,尤其是控制数据库中相关表之间的主关键字和外部关键字之间数据一致性的规则。,参照完整性的一般要求 对于一对多关系的两张表,其数据的完整性、一致性要求相关表之间应该满足如下三个规则:子表中的每一个记录在对应的主表中必须有一个记录。在子表中插入记录时,其外部关键字必须是父表主关键字值中的一个。在父表中删除记录时,与该记录相关的子表中的记录必须全部删除。,编辑参照完整性,参照完整性的设置,四、VFP数据完整性综述,3.5 有关数据库及其对象的常用函数,格式:DBC()功能:返回当前打开的数据库的完整文件名。格式:DBUSED(cDatabaseName)功能:返回指定的数据库是否已经打开。如果已打开,则函数返回值为.T.,否则函数返回值为.F.。格式:DBGETPROP(cName,cType,cProperty),功能:返回当前数据库的属性,或返回当前数据库中的表字段、表或视图属性。其中:cName用于指定数据库名、字段名、表名或视图名;cType用于指定对象名的类型;cProperty用于指定属性名称。格式:DBSETPROP(cName,cType,cProperty,ePropertyValue)功能:为当前数据库或当前数据库中表的字段、表或视图设置属性。其中:ePropertyValue为设置的属性值,