《第三章 数据库及表的操作.doc》由会员分享,可在线阅读,更多相关《第三章 数据库及表的操作.doc(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章 数据库及表的操作数据库是表的集合。从Visual FoxPro 3.0开始引入了真正意义上的数据库概念。把一个二维表定义为表,把若干个关系比较固定的表集中起来放在一个数据库中管理,在表间建立关系,设置属性和数据有效性规则使相关联的表协同工作。数据库文件具有.dbc扩展名,其中可以包含一个或多个表、关系、视图和存储过程等。3.1.1建立数据库常用的建立的数据库有三种:l 在项目管理器中建立;l 从“新建对话框建立数据库”;l 用命令交互建立数据库。在建立建立数据库时,数据库的扩展名为.DBC文件,与之相关的还会自动建立一个扩展名为.DCT的数据库备注文件和一个扩展名为.DCX的数据库索引
2、文件。即数据库建立成功后用户可以在磁盘上看到文件名相同但扩展名分别为.DBC、.DCT、.DCX的三个文件。1. 在项目管理器中建立数据库在项目管理器中建立数据库的界面如图3.1所示,首先选择数据库,然后单击“新建”按钮建立数据库,出现的界面提示输入数据库的名称如输入“stu22”并点击保存按钮。2. 从“新建”对话框建立数据库单击【文件】| 【新建】对话框(如图3.2所示)首先在“文件类型”中选择“数据库”,然后单击“新建文件”按钮建立数据库,后面的操作步骤同上。3. 用命令交互建立数据库建立数据库的命令是:CREATE DATABASE |?如果不指定数据库的名称或使用问号都会弹出对话框请
3、用户输入数据库的名称。若省略扩展名,则默认为.DBC。【例3-1】创建名为stud的数据库create database stud &建立名为stud的数据库 3.1.2打开数据库1菜单方式(1)选择【文件】|【打开】,出现(如图3.3所示)打开对话框。选择数据库文件所在的文件夹,将文件类型选择为“数据库(.dbc)”,选择所要打开的数据库文件名,单击“确定”按钮。2利用项目管理器打开数据库打开已建立的项目文件,出现项目管理器窗口,选择“数据”标签,选择要打开的数据库名,然后单击“打开”按钮。 3命令方式OPEN DATABASE | ? EXCLUSIVESHAREDNOUPDATEEXCL
4、USIVE表示以独占的方式打开,SHARE表达以共享的方式打开,NOUPDAE表示以只读的方式打开。【例3-2】以共享的方式打开数据库studOpen database stud shared在VFP环境下可以同时打开多个数据库,但在同一时刻只有一个当前数据库,将某一数据库指定为当前数据库的命令为:SET DATABASE TO 数据库名【例3-3】将stu11数据库指定当前数据库。Set database to stu11Set database to 使所有数据库都不置为当前数据库。注:在执行查询(query)和表单(form)时也可以自动打开和选择数据库。3.1.3修改数据库数据库设计器
5、是交互修改数据库对象的界面和向导,其中将显示数据库中包含的全部表、视图和联系。可以以下三种方法打开数据库设计器:l 从项目管理器中打开数据库设计器l 从【文件】|【打开】对话框中打开数据库设计器l 用命令打开数据库设计器。打开数据库的命令为:MODIFY DATABASE 数据库名 nowaitnoeditNowait :该参数只在程序中使用(在交互使用的命令窗口中无效)。NOEDIT:使用该参数只是打开数据库,而禁止对数据库进行修改。注:使用modify database命令如果数据库已经存在则直接打开设计器,如果数据库不存在则创建的同时打开数据库设计器。【例3-5】打开stu11数据库和数
6、据库设计器。Modify database stu113.1.4删除数据库在练习时或在开发过程中如果一个数据库不再使用了可以随时删除,一般可以在项目管理器中删除,也可以用命令删除。删除数据库的命令是 delete database 其命令格式为:DELETEDATABASE 数据库名 DELETETABLESRECYCLEDELETEDATABASES:删除数据库文件的同时从磁盘上删除该数据库所含的表文件(DBF文件)。RECYCLE:则将删除的数据库文件和表文件等放入WINDOWSDE 的回收站中,如果需要可以将它们还原。【例3-5】将stud数据库数据库删除。Delete database
7、 stud注:所删除的数据库必须是关闭的,可以使用close database 命令将当前数据库关闭。3.2 建立数据库表上一节介绍了数据库的概念与之相关的基表操作,但还没有和数据打交道,数据库在真正地含有表之前没有任何用途。本节将介绍表的建立及其相关的操作。有关表结构及表的操作将以(图3.4所示)cj11和da11为基表进行操作。 表有二种,一种是数据库表,另一种是自由表。如果建表时数据库是打开的,则建立的表为当前数据库表,否则,建立自由表。一个表由表结构和表记录两部分组成。表结构描述了数据存放形式以及存贮的顺序,确定了表的字段,就完成了对表结构的定义;表记录是表所要保存的数据主体,数据由记
8、录组成,字段是构成记录的基本单元。3.2.1命令的方式建立数据库表 【格式】CREATE | ?【功能】建立一个新的、扩展名为.DBF的表文件。【说明】指定生成的表文件名,若缺省扩展名,则默认为.DBF。 字段名:是某字段的名字。在表中必须为唯一的,字段名必须以汉字、字母和下划线开头,由汉字、字母、数字和下划线组成,对于数据库表支持长字段名,字段名最多为128个字符,自由表不支持长字段名,字段名最多为10个字符。当数据库表转化为自由表时截去超长部分的字符。字段名不能使用系统的保留字。 字段类型:表示该字段中存放数据的类型。一个字段即二维表中的一列,其中的数据应具有共同的属性。若存储的字符超过2
9、54,为节省存储空间可定义为备注型。若要保存图片或OLE对象,可定义为通用型。备注型和通用型字段的信息都没有直接存放在表文件中,而是存放在一个与表文件同名的.FPT文件中。 字段宽度:表示该字段所允许存放数据的最大宽度。由数据的最大宽度决定。过大浪费存储空间,过小数据溢出。字符型字段的最大宽度254个字符,数值型字段和浮点型字段的宽度为20位,逻辑型字段的宽度固定为1,日期型和日期时间型字段的宽度固定为8,通用型字段、备注型字段、整形字段的宽度固定为4。 小数位数:只对数值型字段和浮点型字符等数值类型有效,允许最大宽度20。在计算数值型字段和浮点型字段的宽度时,小数点本身也算作一个字符。数值型
10、字段的小数位数由数据的精度决定位数。【例3-4】建立表da22表结构如下: 字段名数据类型宽度字段名数据类型宽度学号C6姓名C8性别C2出生日期D8邮政编码I4家庭地址C20电子照片G4个人简历M4Create DA22则系统会自动显示如(图3.5所示)表设计器对话框。3.2.2 表结构的显示在表的使用过程,要经常查看表的结构和记录,以随时了解表的变化情况。命令格式 DISPLAY STRUCTURE功能:显示一个表文件结构【例3-5】显示表da11的结构USEcj11 &打开表文件DISPLAY STRUTURE &显示表结构 3.2.3 表结构的修改对表结构的更改包括:添加和删除字段;修改
11、字段名称、大小和数据类型;添加、删除或修改索引标识,以及指定是否支持NULL值等。命令:MODIFY STRUCTURE功能:上述命令可对表结构添加、删除字段,修改字段名称、字段宽度、字段类型等。【例3-6】将da22表的学号字段的数据类型改为整形数据。use da22 &打开表文件Modify structure &修改已打开的表文件的结构3.2.4表结构的复制若需建立新表,且新表的结构与已有的表类似,可使用表结构的复制命令,以提高工作效率(前题:旧表必须打开)。命令:COPY STRUCTURE to 表文件名 功能:将当前表的结构复制到一个新的自由表中语法:COPY STRUCTURE
12、TO FIELDS 字段名表注:该命令执行前,需复制的表文件必须是打开的。【例3-6】用复制命令将da22.dbf中的学号、姓名、性别、出生日期等四个字段,构成一个表名为da33.dbf新的表结构。use da22 &打开表文件copy structure to 学生成绩 fields 姓名,学号,性别,出生日期use 学生成绩display structure3.3表记录的基本操作表一旦建立起来以后,自然就需要对它进行相应的操作。例如,向表中添加记录、删除无用的记录,修改有问题的记录等。使用任何一个表以前,都必须首先打开表。 3.3.1表的打开与关闭USE EXCLUSIVE SHAREDE
13、XCLUSIVE:在网络上以独占的方式打开表。SHARED:在网络上以共享的方式打开表。注:打开表时若表含有备注型字段,则FPT文件也同时被打开。在任一时刻,每个工作区最多允许打开一个表。如果指定工作区已有表打开,在打开新的表时,系统总是先自动关闭原来打【例3-7】以共享的方式打开da22表Use da11 sharedUse &关闭当前已经打开的表3.3.2增加记录表的数据录入有多种方法:第一种方法是在表结构建立时录入数据;第二种方法是在表结构建成并存盘关闭了“表设计器”之后,利用命令向表中在表的末尾添加一个或多个新记录。1.增加一条记录 命令格式:APPEND BLANK BLANK:在当
14、前表的末尾添加一条空记录。 2.从另一个表文件中追加记录APPEND FROM FIELDS FOR 【功能】从指定的表文件中读入数据,并添加到当前表文件的末尾。【例3-8】打开da11表并复制表结构为da13并将出生日期为1990年之前的记录追加到新复制的表中。Use da11Copy stru to da13Use da13 Append from da11 for 出生日期=1990-12-313.3.3表记录的显示LIST | DISPLAY FIELDS FOR WHILE OFFNOCONSOLE TO PRINTER PROMPT | TO FILE【功能】将当前表文件的记录按照
15、指定的选项进行显示。【说明】DISPLAY命令与LIST命令的功能相似,当表文件的数据记录较多时,用DISPLAY命令较为方便。DISPLAY命令只显示当前的一条记录,而LIST命令则是取默认值ALL而显示全部记录。“范围”有以下四种表示方法: ALL:所有记录。 NEXT N:从当前记录开始,后面的N条记录(包括当前记录) RECORD N:第N条记录。 REST:当前记录后的全部记录(包括当前记录)。 【例3-9】显示表cj11.dbf的全部记录use cj11list 【例3-10】显示cj11.dbf表中一班的全部记录use cj11display for 班级=1【例3-11】显示所
16、有学生的学号,姓名,总分 list fields 学号,姓名,班级,总分3.3.4删除记录表记录的删除也是表维护的一项经常性的工作,因为删除意味着数据的消失,所以对记录的删除操作比较慎重,删除可分为逻辑删除和物理删除两种操作。逻辑删除还可以恢复,而物理删除则不可恢复。1.逻辑删除记录逻辑删除就是给指定的记录作删除标记“*”。DELETE FOR WHILE 【功能】对当前表中指定范围内满足条件的记录作删除标记“*”。【例3-12】删除cj11.dbf表中班级为1的记录Use cj11 Delete for 班级=1List2.恢复逻辑删除记录RECALL FOR WHILE NOOPTIMIZ
17、E【功能】将当前表文件中指定范围内满足条件的已作删除标记“*”的记录恢复,即去掉这些删除记录的删除标记,使之成为正常记录。【例3-13】恢复cj11表中被逻辑删除的1班的记录Crcall fro 班级=13.物理删除物理删除是将当前表文件中被逻辑删除的记录全部清除。PACK MEMODBF【功能】将当前表文件中所有带删除标记(*)的记录全部真正地删除掉。【例3-13】物理删除记录号大于16的所有记录Delete for recno()=16pack4.清除所有记录 使用ZAP命令可以物理清除表中的全部记录(不管是否被逻辑删除),该命令只是删除全部记录,并没有删除表,即执行该命令后表结构依然存在
18、。【例3-14】清除da22.dbf表中的所有记录Use da22Zap 3.3.5记录指针的定位 记录号用于标识数据记录在表文件中的物理顺序。记录指针是一个指示器,它始终指向当前表中正在操作处理的那条记录,此记录被称为当前记录。如果要对某条记录进行处理,必须移动记录指针,使其指向该记录。在任意时刻指针只能指向唯一的一条记录。有绝对定位、相对定位和查询定位三种。1.绝对定位 GO | GOTO RECORD IN | IN 【功能】将记录指针绝对定位到指定的记录上。2.相对定位SKIP IN | 【功能】记录指针从当前记录向前(或向后)移动若干个记录。【说明】:表示移动的记录个数。若数值表达式
19、的值为负值,表示向前移动记录;否则,表示向后移动记录。如果缺省此项,则表示向后移动1个记录。GO|GOTO 【功能】将记录指针移动到表文件的首记录或尾记录TOP:将记录指针移动到表文件的首记录。BOTTOM:将记录指针动到表文件的最后一条记录。【例3-15】指针定位操作Use cj11Go 3DispSkip 4DispGo top DispGo bottom4. 条件定位Locate for 条件【功能】将指针定位到符合条件的记录上,该命令执行后仅将指针定位在满足条件的第一条记录上,如果没有满足条件则指针指向文件末尾位置,如果要使指针指向下一条满足locate条件的记录,使用continue
20、命令。【例3-16】打开cj11.dbf表将指针指向总分超过680分的记录Use cj11Locate for 总分=680DispContinueDisp修改记录在表的使用维护过程中,有大量的工作是对数据记录的修改、编辑与更新,通常可以采用编辑修改、浏览修改和替换修改三种方式。3.3.6编辑修改在表的使用维护过程中,有大量的工作是对数据记录的修改、编辑与更新,通常可以采用编辑修改和替换修改二种方式。EDIT / CHANGE FIELDS FOR WHILE 【例3-17】修改da22.DBF学号为的学号、姓名和性别等信息。 USE da22 EDIT FIELDS 学号,姓名,性别 FOR
21、 学号=”3.3.7替换修改REPLACE WITH ADDITIVE, WITH ADDITIVE . FOR WHILE NOOPTIMIZE【功能】用指定表达式的值替换当前表中满足条件记录的指定字段的值。【例3-18】use cj11replace all 总分 with 语文+数学+英语+物理+化学 【例3-19】replace all 总分 with 总分+20 for 班级=23.3.8插入记录INSERT BEFORE BLANK【功能】在当前表文件的指定位置插入新记录或空记录。 【说明】INSERT是在当前记录之后插入新记录,INSERT BEFORE是在当前记录之前插入新记录
22、,INSERT BLANK是在当前记录之后插入空记录。【例3-18】打开cj11.dbf表文件并复制为新的表文件cj13将指针定位到2号记录在其前插入一条新记录。Use cj11Copy to cj13Use cj13Go 2Insert before【例3-19】将指针定位到5号记录并在其后出入一条新记录Go 5InsertDisp【例3-20】将指针定位到8号记录并在其后插入一条空记录Go 6Insert blankdisp3.4文件管理命令 Visual FoxPro除了表文件之外,还有其他多种类型的文件,系统对各类文件提供了通用的管理手段,其功能类似于DOS的文件管理命令,但必须注意它
23、们之间的区别。3.4.1显示文件目录【格式】DIR | DIRECTORY ON LIKE TO PRINTER PROMPT | TO FILE 或LIST | DISPLAY FILES ON LIKE TO PRINTER PROMPT | TO FILE 【例3-21】显示当前目录所有文件Dir *.*【例3-22】显示当前目录所有扩展名为dbc的文件Dri *.dbc3.4.2文件复制【格式】COPY FILE TO 【功能】对各类文件进行复制【说明】此命令类似于DOS操作系统的COPY命令。和必须给出全名,不能使用通配符;不能复制已打开的文件;当复制含有备注型字段或已建立索引的表文
24、件时,必须复制相应的备注文件和索引文件。【例3-23】将cj11改名为cj13.dbf复制到当前目录 COPY FILE cj11.DBF TO cj13.dbf3.4.3文件删除【格式】ERASE | ?或 DELETE FILE | ?【功能】从磁盘上删除指定的文件。【说明】此命令类似于DOS操作系统的DEL命令。如果选择参数?或缺省文件名选项,系统将弹出Open对话框,供用户选择所需删除的文件。【例3-24】删除当前目录下的.BAK文件。Delete file cj13.dbf3.5表的排序索引可以使人们按照某种顺序浏览或查找表中的记录,这时的顺序是逻辑的,是通过索引关键字实现的。VFP
25、从一开始就提供了物理排序的命令,它可以将表中的记录物理地按顺序重新排列。物理排序的命令为:SORT TO ON /A | /D /C , /A | /D /C .ASCENDING | DESCENDING FOR WHILE FIELDS 【功能】对当前打开的表,按指定的字段进行排序,生成新的表文件。用作排序的字段的数据类型允许是N、C、D、L型。 /A 表示升序 /D 表示降序 /C 表示不区分大小写 当有多个关键字段时,先按字段1的值排列,其值相同的,再按字段2的值排列。【例3-25】cj11按总分排序并生成cj21表文件。Use cj11Store to cj21 on 总分 /d3.
26、6表的索引3.6.1索引及索引文件的概述 索引是以索引文件的形式存在的,它根据指定的索引关键字表达式建立的。索引文件可以看成索引关键字的值与记录号之间的对照表,关键字可以是一个字段,也可以是几个字段的组合。在建立索引文件时,把表所有记录的索引关键字表达式的值按指定顺序排序,并把每个索引关键字表达式值与该值在表中所对应的记录对应起来,保存在索引文件中。 索引文件必须与原表一起使用,查询时根据索引关键字表达式的值先在索引文件中找到某字段所在的记录号,然后再到表里直接定位。这样的查找方式使顺序查找和随机查找都有较高的效率。打开索引文件时,将改变表中记录的逻辑顺序,但并不改变表中记录的物理顺序。一个表
27、文件可建立多个索引文件,也可同时打开多个索引文件,但在同一时间内只有一个索引起作用,这个索引称为主控索引。Visual FoxPro系统中支持两种不同的索引文件类型,即单索引文件和复合索引文件。单索引文件是根据一个索引关键字表达式(或关键字)建立的索引文件,文件扩展名为.IDX,它可用INDEX命令的各种形式建立。3.6.2索引文件的类型:(1)结构复合索引文件是由Visual FoxPro自动命名的,且与相应的表文件同名,扩展名为.CDX,包含多个索引方案,或索引关键字。当Visual FoxPro打开一个表文件时,便自动查找一个结构复合索引文件,如果找到便自动打开,该索引文件随表文件同时打
28、开和同时关闭。(2)非结构复合索引文件:与表文件不同名,其扩展名也为.CDX。在打开表时不会自动打开此索引文件,必须通过命令的方式将该索引文件打开,其命令格式为:SET INDEX TO 非结构复合索引名(3)非结构单索引文件:每个文件中只存储一个索引方案,其文件的扩展名为.idx在Visual FoxPro早期版本中使用。3.6.3索引的类型索引按其关键表达式的性质和对照表特点,可分为四种类型。(1)主索引主索引是一个永远不允许在指定字段和表达式中出现重复值的索引。它也是在数据库表的永久关联中创建参照完整性时主表和被引用表使用的索引。每一个表只能建立一个主索引,只有数据库表才能建立主索引。(
29、2)侯选索引 侯选索引也是一个不允许在指定字段和表达式中出现重复值的索引。数据库表和自由表都可以建立侯选索引,一个表可以建立多个侯选索引。 主索引和侯选索引都存储在.CDX结构复合索引文件中,不能存储在独立复合索引文件和单索引文件中,因为主索引和侯选索引都必须与表文件同时打开和同时关闭。(3)唯一索引 系统只在索引文件中保留第一次出现的索引关键字值。数据库表和自由表都可以建立唯一索引(4)普通索引 是一个最简单的索引,允许关键字值的重复出现,适合用来进行表中记录的排序和查询,也适合于一对多永久关联中“多”的一边(子表)的索引。数据库表和自由表都可以建立普通索引。普通索引和唯一索引可以存储在.C
30、DX独立复合索引文件和.IDX单索引文件中。3.6.4索引文件的建立INDEX ON TO | TAG OF FOR COMPACTASCENDING | DESCENDINGUNIQUE CANDIDATEADDITIVE【功能】对当前表文件按指定的关键字建立索引文件。【说明】:指定建立索引文件的关键字表达式,可以是单一字段名,也可以是多个字段组成的字符型表达式,表达式中各字段的类型只能是数值型、字符型和日期型和逻辑型。当表达式是单个字段名时,字段类型不用转换;应转换成同一类型的表达式。TAG :此选项只对建立复合索引文件时有效,指定建立或追加索引标识的标识名。OF :指定独立复合索引文件名
31、。若有此选项,表示在指定的独立复合索引文件中追加一个索引标识,若指定的独立复合索引文件不存在,系统将自动建立指定的文件。若没有此选项,表示在结构复合文件中追加一个索引标识,若结构复合索引文件不存在,系统将自动建立结构复合索引文件。FOR :表示只对满足条件的记录建立索引。COMPACT:此选项只对单索引文件有效,表示建立压缩索引文件。ASCENDING|DESCENDING: ASCENDING表示按升序建立索引,DESCENDING表示按降序建立索引。缺省时,按按升序建立索引。单索引文件不能选用DESCENDING选项。UNIQUE:表示建立的是唯一索引。CANDIDATE:建立候选索引AD
32、DITIVE:表示保留以前打开的索引文件。否则,除结构复合索引文件外,以前打开的其他索引文件都将被关闭。新建的索引文件自动打开,并开始起作用。【例3-26】对cj22.DBF表文件建立出生日期单索引文件STUD.IDX。USE cj22INDEX ON 出生日期 TO STUD【例3-27】对表文件da11.DBF,建立一个基于出生日期字段的结构复合索引文件。USE da11INDEX ON 出生日期 TAG 出生日期 DESCENDING【例3-28】在表文件cj11.DBF的结构复合索引文件中,按学号和姓名各追加一个标识。 USE STUD INDEX ON 学号 TAG 学号【例3-29
33、】在表文件da11.DBF的结构复合索引文件中,先按性别再按学号追加一个标识。 USE da11 INDEX ON 性别+学号 TAG 性别学号【格式2】SET INDEX TO【功能】关闭当前工作区中打开的所有单索引文件和独立复合索引文件。3.6.5设置主控索引【格式】SET ORDER TO | | TAG OF IN | ASCENDING | DESCENDING【功能】重新指定打开的索引文件中的主索引。【说明】的值为指定主索引的编号。3.6.6索引文件的更新 当表中的记录被修改时,系统会自动地更新所打开的索引文件,及时反映数据的变化。对于没有打开的索引文件,索引不能自动更新。为避免使
34、用旧的索引文件导致错误,应该使用重新索引命令更新已经建立的索引文件。 3.6.7索引的删除(1)标识的删除【格式】DELETE TAG OF , OF . 或:DELETE TAG ALL OF 【例3-30】删除索引标识学号【功能】从指定的复合文件中删除标识【说明】OF :指定复合索引文件名,若缺省,则为结构复合索引文件。Use cj11 Dele tag 学号(2)单索引文件的删除【格式】DELETE FILE 【功能】删除指定的单索引文件【说明】关闭的索引文件才能被删除,文件名必须带扩展名。 索引查询(FIND、SEEK)FIND命令【格式】FIND /【功能】在表文件的主控索引中查找关
35、键字值与或相匹配的第一个记录。【说明】必须打开相应的库文件、主索引文件。【例3-31】打开表文件STUD.DBF,查找姓“赵”的记录。 USE STUD SET ORDER TO 姓名 FIND 赵SEEK命令【格式】SEEK 【功能】在表文件的主索引中查找关键字值与值相匹配的第一个记录。【说明】SEEK命令可以查找字符型、数值型、日期型、逻辑型表达式的值。SEEK命令中的表达式的类型必须与索引表达式的类型相同。 可以查找字符、数值、日期和逻辑型字段的值。 内存变量可以直接进行查询,不用进行宏替换。 表达式为字符串时,必须用定界符括起来。日期常量也必须用大括号括起来。 表达式可以为一复杂的表达
36、式,计算机先计算表达式的值,然后用其值进行查询。 由于索引文件中关键字表达式值相同的记录总是排在一起的,可用SKIP、DISP命令来逐个查询。 如果用SET EXACT ON命令,则匹配必须是精确的。【例3-32】用SEEK命令在cj11.DBF中查找记录。 USE cj11 INDEX ON 姓名 TAG 姓名 SET ORDER TO 姓名 SEEK 孙多表的操作3.7数据完整性在数据库中数据完整性是指保证数据正确的特性。数据完整性一般包括实体完整性、域完整性和参照完整性。3.7.1实体完整性与主关键字实体完整性是保证表中记录唯一的特性,即在一个表中不允许重复的记录。在VFP中利用主关键字
37、或候选关键字来保证表中的记录唯一,即保证实体唯一性。在VFP中将主关键字称作主索引,将候选关键字称作候选索引。3.7.2域完整性与约束规则域完整性应该是我们最熟悉的了,以前我们所熟悉的数据类型的定义都是域完整性的范畴。域约束规则也称作字段有效规则,在插入或修改字段值时被激活,主要用于数据输入正确性的校验。3.8多表的操作 迄今所讲述的对表的操作都是在一个工作区进行的,每个工作区最多只能打开一个表文件,用USE命令打开一个新的表,同时也就关闭了前面已打开的表。在实际应用中,用户常常需要同时打开多个表文件,以便对多个表文件的数据进行操作。为了解决这一问题,Visual FoxPro引入了工作区的概
38、念。Visual FoxPro允许用户在表间建立临时关系和永久关系。3.8.1 工作区与多个表1工作区和当前工作区l Visual FoxPro 能同时提供32767个工作区。系统默认值为1区。l 在任意时刻,只有一个工作区是当前工作区,用户只能在当前工作区对打开的当前库进行操作。l 每一个工作区都可以并且只能打开一个数据库文件。l 同一个数据库文件不允许同时在多个工作区打开,但在其它工作区中被关闭之后,可以在任意一个工作区中被打开。l 各工作区中打开的数据库彼此相互独立(指针不受影响)。3.8.2选择当前工作区 每一个工作区用工作区号或别名来标识(1)工作区号 利用数字132767来标识32
39、767个不同的工作区(2)别名 前110工作区用AJ10个字母来标识。 12345678910 ABCDEFGHIJ工作区1132767的别名为字符w加工作区号1132767W11W32767 3.8.3工作区的选择当系统启动时,1号工作区是当前工作区,若想改变当前工作区,则可使用SELECT命令来转换当前工作区。SELECT/【功能】:选择一个工作区作为当前工作区。【说明】: | :指定当前工作区。选择工作区时,可以直接指定区号,也可以通过别名指定工作区,二者是等效的。【例3-33】在3号工作区5工作区分别打开cj11.dbf和da11.dbfSelect 3Use cj11Select 5
40、Use da11Select 3Select 5 别名可以是系统规定的别名,也可以是用户规定的别名,甚至可以用已打开的表名替代工作区别名。此命令允许选用“0”号工作区。如果指定“0”,则表示选用当前未使用过的编号最小的工作区作为当前工作区。 执行该命令后,对任何工作区中的表及记录指针均不发生影响,仅实现各个工作区之间切换。非当前工作区字段的引用Visual FoxPro系统对当前工作区上的表可以进行任何操作,也可以对其他工作区中的表文件的数据进行访问。在主工作区可通过以下两种格式访问其他工作区表中的数据。格式:- . 【例3-34】在1号和2号工作区打开STUD.DBF和SC.DBF,在1号工
41、作区内查看当前记录的学号、姓名、性别、出生日期、班级、总分Select 1 Use cj11Select 2Use da11Display 学号,姓名,性别,出生日期,-班级,-总分也可以在打开表的同时设置工作区其命令为:Use 表名 in 工作区号【例3-34】在3号工作区打开da11.dbf表在4号工作区打开cj11.dbf表Use da11 in 3Use cj11 in 43.8.4表的关联SET RELATION TO INTO / , INTO / IN /所谓表文件的关联是把当前工作区中打开的表与另一个工作区中打开的表进行逻辑连接,而不生成新的表。当前工作区的表和另一工作区中的打
42、开表建立关联后,当前工作区是表的记录指针移动时,被关联工作区的表记录指针也将自动相应移动,以实现对多个表的同时操作。两个表要实现关联必须满足一下条件:1、二个表必须有的公共字段,2、必须是按指定的公共关联字段建立并打开了索引文件。 【例3-35】将表文件CJ11.DBF和DA11.DBF以学号为关键字段建立关联。Use cj11 in 3INDEX ON 学号 tag cj11Set order to cj11Use da11 in 5Index on 学号 tag da11Set order to da11Set relation to 学号 into cSELECT 3 USE CJ11 INDEX ON 学号 tag cj11Set order to cj11Select 5Use da11Index on 学号 tag da11Set order to da11Set relation to 学号 into c412历届最新考题汇编一、选择题(1)打开数据库的命令是【D】A)USEB)USE DATABASE C)OPEND)OPEN DATABASE(2)打开数据库abc的正确命令是【