江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
3.1 Visual FoxPro数据库及其建立

考点1 建立和使用数据库

  1数据库的建立
  (1)在项目管理器中建立数据库。
  (2)通过“新建”对话框建立数据库。
  (3)使用命令建立数据库,格式为:
  CREATE DATABASE[DatabaseName |?]
  2数据库的打开
  (1)在项目管理器中打开。
  (2)通过“打开”对话框打开数据库。
  (3)使用命令打开数据库,格式为:
        OPEN DATABASE[FileName |?][EXCLUSIVE I SHARED]
            [NOUPDATE]
            [VALIDATE]

考点2 修改和删除数据库

  Visual FoxPro在建立数据库时建立了扩展名分别为dbc、dct和dcx的3个文件,用户不能直接修改这些文件。
  Visual FoxPro中修改数据库实际是打开数据库设计器,完成数据库中各种对象的建立、修改和删除等操作。
  可以有3种方法打开数据库设计器。
  (1)从项目管理器中打开数据库设计器。
  (2)从“打开”对话框中打开数据库设计器。
  (3)使用命令打开数据库设计器,格式为:
      MODIFY DATABASE[DatabaseName|?]
  在项目管理器中不管删除还是移去数据库文件,都不会删除其所包含的各个对象做口数据表)。如果要在删除数据库的同时删除其所包含的数据表,就必须使用命令,格式为:
        DELETE DATABASE DatabaseName|?[DELETETABLES][RECYCLE]
小提示:
  在Visual FoxPro中,Open DataBase和Modify DataBase命令的区别在于:Open DataBase打开的只是数据库的工作环境,并不会进入数据库设计器;Modify DataBase是打开数据库设计器。

4.2 建立数据库表

考点3 在数据库中建立表

  在数据库中建立数据表,最直接的方法就是在数据库设计器中利用鼠标右键单击空白处,选择“新建表”命令,在弹出的表设计器中设置数据表结构。另外可以在命令窗口利用OPEN DATA命令先打开数据库,然后利用CREATE命令打开表设计器进行数据表设计,如图4-l所示。
 
            图4-1 表设计器
  1字段名
  (l)自由表字段名最长为10个字符。
  (2)数据库表字段名最长为128个字符。
  (3)字段名必须以字母或汉字开头。
  (4)字段名可以由字母、汉字、数字和下划线组成。
  (5)字段名中不能包含空格。
  2字段类型和宽度
  (1)字符型:可以是字母、数字等各种字符型文本,如用户名称。
  (2)货币型:货币单位,如货物价格。
  (3)数值型:整数或小数,如订货数量。
  (3)浮点型:功能类似于“数值型”,其长度在表中最长可达20位。
  (4)日期型:由年、月、日构成的数据类型,如订货日期。
  (5)日期时间型:由年、月、日、时、分、秒构成的数据类型,如员工上班的时间。
  (6)双精度型:双精度数慎类型,一般用于要求精度很高的数据。
  (7)整型:不带小数点的数值类型,如订单的行数。
  (8)逻辑型:值为“真”( .T.)或假(.F.),如表示订单是否已执行完。
  (9)备注型:不定长的字符型文本。在表中占4个字节,表备注型文件的扩展名为FPT。
  (10)通用型:用于标记电子表格、文档、图片等OLE对象,在表中占4个字节。
  (11)字符型(二进制)。
  (12)备注型(二进制)。
  3空值
  一个字段是否允许为空值与实际应用有关,比如作为关键字的字段是不允许为空值的,而那些在插入记录时允许暂缺的字段值往往允许为空值。
  4字段有效性组框
  在字段有效性组框中可以定义字段的有效性规则、违反规则时的提示信息和字段的默认值。
  5显示组框
  在显示组框下可以定义字段显示的格式、输入的掩码和字段的标题。输入掩码是字段的一种属性,用限制或控制用户输入的格式。标题用于字段显示时的标题,如果不指定标题则显示字段名。当字段名是英文或缩写时,则通过指定标题可以使界面更友好。
  6字段注释
  可以为每个字段添加注释,便于日后或其他人对数据库进行维护。

考点4 修改表结构

   在Visual FoxPro中可以对表结构任意修改,修改表结构和建立表结构时,表设计器界面完全一样。修改数据表结构时,首先应该用USE命令打开要修改的数据表,然后利用MODIFY STRUCTURE打开表设计器进行修改,具体操作有以下几种。
  (1)修改已有字段。
  (2)添加新字段。
  (3)删除不用的字段。

4.3 表的基本操作

考点5 使用浏览器操作表

  在交互式工作方式下,最简单、方便的方法就是使用BROWSE浏览器浏览表,打开浏览器的方法有多种。在项目管理器中将数据库展开至表,然后单击“浏览”按钮,或直接在窗口中输入BROWSE命令(首先应该打开表文件)。
  1浏览器操作
  (1)下一记录(下箭头键)。
  (2)前一记录(上箭头键)。
  (3)下一页(PageDown键)。
  (4)上一页(PageUp键)。
  (5)下一字段(Tab键)。
  (6)前一字段(Shift+Tab键)。
  2修改记录
  只需将光标定位到要修改的记录和字段上,就可以进行修改了。
  3删除记录
  Visual FoxPro中删除记录有逻辑删除和物理删除两种,逻辑删除只在记录旁做删除标记(如图4-2所示),必要时可以进行恢复物理删除是在逻辑删除的基础上真正地将记录从表中删除。要在浏览器中删除有删除标记的记录,可选择“表/彻底删除”菜单命令。
 
图4-2 增加和删除记录

考点6 增加、删除、修改和显示记录的命令

  1增加记录
  APPEND命令是在表的尾部增加记录,格式有如下两种。
  格式1:APPEND
  格式2:APPEND BLANK
  2插入记录
  格式:INSERT [BEFORE][BLANK]
  3删除记录
  删除记录有物理删除和逻辑删除两种,Visual FoxPro用来删除记录的命令如下。
  (1)设置删除标记的命令
  格式:DELETE [FOR lExpressionl]
  说明:如果不使用FOR短语指定逻辑条件,则只删除当前记录,否则逻辑删除满足条件的所有记录。
  (2)恢复记录的命令。
  格式:RECALL [FOR lExpressionl]
  说明:使用该命令恢复表中逻辑删除的记录,短语FOR的功能同上。
  (3)物理删除有删除标记的记录
  格式:PACK
  说明:此命令用来物理删除当前表中所有带删除标记的记录。
  (4)物理删除表中的全部记录
  格式:ZAP
  说明:不管表中记录是否带有删除标记,此命令可以一次性将当前表中的记录全部物理删除,但表结构仍保留使用此命令相当于DELETE ALL与 PACK的连用。
  4修改记录
  在Visual FoxPro中可以交互修改记录,也可以用指定值直接修改记录。
  (1)用EDIT或CHANGE命令交互式修改。
  (2)用REPLACE命令直接修改。
  5显示记录
  格式:LIST/DISPLAY [[FIELDS]FieldList][FOR LExpressionl][OFF]
          [TO PRINTER[PROMPT]|TO FILE FileName]

考点7 查询定位的命令

  (1)用GOTO命令直接定位
  (2)SKIP命令
  (3)用LOCATE命令定位。
  LOCATE命令是按条件定位记录位置,格式为:
        LOCATE FOR IExpressionl
  LOCATE命令常用结构如下。
        LOCATE FOR IExpression1
        DO WHILE FOUND()
          ****处理数据***
            CONTINUE
          ENDDO
小提示:
  连续使用DELETE ALL和PACK命令,其操作结果与ZAP命令一样,都可以将表中的所有记录一次性物理删除。

4.4 索引与排序

考点8 索引的基本概念

  索引是对表中的记录按照某种逻辑顺序重新排列。
  (l)主索引:在指定的字段或表达式中不允许出现重复值的索引,且一个表只能创建一个主索引。
  (2)候选索引:具有与主索引相同的性质和功能,但一个表中可以创建多个候选索引,其指定的字段或表达式中也不允许出现重复值。
  (3)唯一索引:它的“唯一性”是指索引项的唯一,而不是字段值的唯一。但在使用该索引时,重复的索引段值只有唯一一个值出现在索引项中。
  (4)普通索引:不仅允许字段中出现重复值,并且索引项中也允许出现重复值。

考点9 索引的建立

  1单项索引
  在表设计器界面中有“字段”、“索引”和“表"3个选项卡,在“字段”选项卡中定义字段时就可以直接指定某些字段是否为索引项,用鼠标单击定义索引的下拉列表框可以看到3个选项:无、升序和降序(默认是无)。如果选定升序或降序,则在对应的字段上建立一个普通索引,索引名与字段名同名,索引表达式就是对应的字段。
  2复合字段索引
  (1)在“索引”选项卡中的索引名栏目中输入索引名。
  (2)在索引类型的下拉框中选择索引类型。
  (3)单击表达式栏右侧的按钮,打开表达式生成器。
  (4)在“表达式”文本框中输入索引表达式(如图4-3所示),最后单击“确定”按钮。
 
         图4-3 表达式生成器界面


  3使用命令建立索引
  格式:INDEX ON eExpression TO IDXFileName | TAG TagName[OF CDXFileName]
          [FOR lExpression][COMPACT]
          [ASCENDING | DESCENDING]
          [UNIQUE | CANDIDATE]
          [ADDITIVE]
  从索引的组织方式来讲,索引共有3种类型。
  (1)单独的IDX索引,是一种非结构索引。
  (2)采用非默认名的CDX索引,也是一种非结构复合索引。
  (3)与表同名的CDX索引,是结构复合索引。
   结构复合索引文件可随表的打开而打开,在同一个索引文件中能包含多个索引方案或索引关键字,在添加、更改或删除记录时自动维护索引。

考点10 索引的使用

  (l)打开索引文件,格式为:
        SET INDEX TO Indexfilelist
  (2)设置当前索引,格式为:
        SET ORDER TO[nIndexNumber |[TAG]TagName][ASCENDING|DESCENDING]
  (3)使用索引快速定位,格式为:
SEEK eExpression[ORDER nIndexNumber|[TAG]TagName][ASCENDING| DESCENDING]
  (4)删除索引,格式为:
      DELETE TAG TagNamel   &&TagName1为索引名
    要删除全部索引,可使用命令:DELETE TAG ALL

考点11 排序

  索引可以使用户按照某种顺序浏览或查找表中的记录,这种顺序是逻辑的,如要对表中的记录按物理顺序重新排列,可使用SORT命令,格式为:
SORT TO TableName ON FieldNainel[/A}/D][/C][,FieldName2[/A|/D][/C]…][ASCEND  ING | DESCENDING][FOR lExpressionl][FIELDS FieldNameList]

小提示:
  在数据库表中只能有一个主索引,且只能在表设计器中建立。其他3种索引可以建立多个,既能在表设计器中建立,也能以命令方式建立,但在自由表中不能为其创建主索引,只能创建后3种索引,同样也可以建立多个。

4.5 数据完整性

考点12 实体完整性与主关键字

  (1)实体完整性是保证表中记录唯一的特性,即在同一个表中不允许有重复的记录出现。在Visual  Pro中通过主索引和候选索引来保证数据的实体完整性。
  (2)如果一个字段的值或几个字段的值能够唯一标志表中的一条记录,则称这个字段为候选关键字。在Visual FoxPro中将主关键字称做主索引,将候选关键字称为候选索引。

考点13 参照完整性与表之间的关联

  1建立表之间的联系
  参照完整性与表之间的联系有关,其含义大致是:当插入、删除或修改一个表中的数据时,通过参照引用相互关联的另一个表中的数据,检查对表的数据操作是否正确。
  在数据库设计器中设计表之间的联系时,要在父表中建立主索引,在子表中建立普通索引,然后通过父表主索引和子表的普通索引建立起两个表之间的联系。
  2设置参照完整性约束
  建立参照完整性之前,首先必须清理数据库,即物理删除表中被逻辑删除的记录,然后选择两个关联表之间的连线并选择“数据库”、“编辑参照完整性”菜单命令,打开如图4-4所示的“参照完整性生成器”对话框。
 
          图4-4 “参照完整性生成器”对话框

小提示:
  欲建立两表之间的联系,首先用鼠标选中一个表的主索引,按住鼠标左键不放,并拖动鼠标到另一个表的索引上,这时鼠标箭头变成小矩形状,最后释放鼠标。

4.6 自由表

考点14 数据库表与自由表
  自由表是不属于任何数据库的表。在没有打开数据库时,所建立的表就是自由表。数据库表与自由表之间可以相互转化。
  1建立自由表的方法
  (1)在项目的“数据”选项卡中选择“自由表”,单击“新建”按钮。
  (2)在没有打开数据库的情况下,通过“新建”对话框,选择“表”并单击“新建文件”按钮。
  (3)在没有打开数据库的情况下,在命令窗口输入CREATE命令,新建自由表。
  2数据库表相对于自由表的特点
  (l)数据库表可以使用长表名,在表中可以使用长字段名。
  (2)可以为数据库表中的字段指定标题和添加注释。
  (3)可以为数据库表中的字段指定默认值和输入掩码。
  (4)数据库表的字段有默认的控件类。
  (5)可以为数据库表规定字段级规则和记录级规则。
  (6)数据库表支持主关键字、参照完整性和表之间的联系。
  (7)支持INSERT,UPDATE和DELETE事件的触发器。

考点15 将自由表添加到数据库中
  (1)在数据库设计器中可利用“数据库”→“添加表”菜单命令,在“打开”对话框中选择自由表文件,将其添加到数据库中。
  (2)直接用命令方式将自由表添加到当前数据库中,格式为:
        ADD TABLE TableName|?[NAME LongTableName]

考点16 从数据库中移出表

  (1)直接利用命令移出数据库表,格式为:
        REMOVE TABLE TableName |?[DELETE][RECYCLE]
  (2)从项目管理器中移出数据库。
  (3)从数据库设计器中移出数据库。

4.7 多个表的同时使用
  在Visual FoxPro中,一次可以打开多个数据库,每个数据库都可以打开多个数据表。

考点17 多工作区的概念

  指定工作区的命令格式为SELECT nWorkArea | cTableAlias,每个表打开后都有两个默认别名,一个是表的自身名,另一个是工作区所对应的别名。在前10个工作区中指定的默认别名是工作区字母A~J,其后面的工作区所对应的别名为W11~W32767。
  另外还可以在USE命令中通过ALIAS短语指定表别名。
  例如:USE学生表IN 1 ALIAS student,为学生表指定了别名student。

考点18 使用不同工作区的表

  除了使用SELECT命令切换不同的工作区之外,也可以在一个工作区使用其他工作区的数据表。即通过短语:IN nWorkArea|cTableAlias。在表别名后加上“.”或“->”操作符,可在一个工作区中直接调用其他工作区中数据表的记录。例如当前工作区号为2,要调用1区上学生表中的班级号的相关字段,可使用命令:
  学生表.班级号 或学生表->班级号或A.班级号或A ->班级号

考点19 表之间的关联

  使用SET RELATION命令建立表间记录指针的临时联系(关联)。
  格式:SET RELATION TO eExpressionl INTO nWorkAreal I cTableAliasl。
  说明:eExpressionl是指建立临时联系的索引关键字,一般是父表的主索引,子表的普通索引。用工作区号 nWorkAreal或表的别名cTableAlias I说明临时联系是由当前工作区的表到哪个表。
  利用SET RELATION TO命令将取消当前表到所有表的临时联系。