第3章数据库基本操作在VFP中,数据库文件的扩展名是.dbc,数据库可以包含数据表、查询、视图等。数据表是数据库的基础,是关系数据库系统中的基本结构,它是一组相关数据的有序集合,其扩展名为.dbf。3.1创建数据库3.1.1数据库与数据表的概念3.1.2创建数据库数据库不但可以存储数据的结构等数据表信息,而且还可以对数据库中的表进行功能扩展:定义字段级规则,设置默认值、触发器等,创建视图等等。创建一个VFP数据库的方法:先创建一个新数据库,再向其中加入要处理的表格并定义表间关系。我们可以在项目管理器中创建库,也可以创建一个独立于项目之外的数据库。1.通过菜单方式创建数据库:也可以在项目管理器的“数据”选项卡中新建数据库。主选单“文件”——“新建”,选“数据库”,按“新建文件”,在弹出的对话框中输入文件名,保存即可。2.通过命令方式创建数据库:格式:CREATEDATABASE[盘符][路径][数据库名]3.2创建数据库表3.2.1数据库表与自由表数据库表——属于数据库的表自由表——不属于任何数据库的表数据库表和数据库关联,具有自由表没有的属性,如:字段级、记录级规则等。使用数据库下拉菜单命令、数据库设计器或快捷菜单都可以完成数据库中表的建立。3.2.2在数据库中建立数据表1、在项目管理器中选中数据库“学籍管理”下的“表”,单击“新建”按钮,则弹出新建表对话框,选择“新建表”,如下图;2、在弹出的对话框中输入文件名“学生档案”,保存即可弹出表设计器,如图;3、在表设计器中设计表结构,完成后,单击“确定”,即可完成表结构的建立,此时,系统会提示输入数据,可输入数据。也可以通过命令方式打开表设计器创建数据表格式:CREATE[盘符][路径][数据表文件名]功能:在指定位置建立数据表。3.2.3修改表结构1.打开表设计器打开表设计器的方法如下:方法一:打开数据表,然后执行主菜单“显示”菜单中的“表设计器”命令。方法二:在数据库设计器中选择要修改的表,右键单击表名,在弹出的快捷菜单中选择“修改”命令。方法三:使用命令。格式:MODIFYSTRUCTURE或MODISTRU2.修改数据表结构(1)修改已有字段的字段名、类型、宽度等。(2)增加新字段将鼠标移动到原有字段后,单击“插入”按钮,然后添加字段的字段名、类型、宽度等信息。(3)删除原字段若要删除某个字段,先把鼠标定位在要删除的字段上,然后单击“删除”按钮。(4)变动字段位置数据库表的表设计器中设置验证规则目的是为了使输入的数据符合要求,在有矛盾时发出错误提示信息。各种属性的说明:1、字段显示属性格式:确定字段内容在被显示时的样式输入掩码:指定字段中输入数据的格式(即所输入的任何内容均显示成此符号)标题:在浏览表时用此名称代替意义不够直观的字段名设计表结构的说明:2、字段验证规则规则:使所输数据符合设定的条件信息:当所输数据违反规则时,系统提示错在哪里默认值:减少输入重复性数据时的工作量3、字段注释使字段具有更好的可读性4、长表名与表文件名不同,设置了长表名可以一目了然5、记录验证规则规则:使所输记录符合设定的条件信息:当所输记录违反规则时,系统提示错在哪里6、触发器插入触发器:当所插记录符合此规则时,才可以插入到表中更新触发器:当修改后的记录符合此规则时,才可以进行修改删除触发器:当待删记录符合此规则时,才可以被删除掉7、表注释使表具有更好的可读性3.2.4显示表结构1.菜单方式显示数据表结构(1)打开一个数据表(2)在“显示”菜单中选择“表设计器”菜单项2.命令方式显示数据表结构格式:LIST|DISPLAYSTRUCTURE[IN工作区号]|表别名][TOPRINTER[PROMPT]|TOFILES文件名]功能:在屏幕显示数据表结构4.3.1打开和关闭数据表3.3操作数据表1.打开数据表打开数据表的方法如下:(1)通过菜单方式打开数据表:在“文件”菜单中选择“打开”命令,或单击工具栏中的“打开”按钮,在“打开”对话框中选择要打开的表,然后单击“打开”按钮。(2)在项目管理器中打开数据表:(3)通过命令方式打开数据表:格式:USE[路径][表文件名|?][IN工作区号][ALIAS别名]功能:打开一个现存的数据表。2.关闭数据表相关命令如下:(1)USE:关闭当前工作区中已经打开的数据表.(2)CLOSEALL:关闭所有已经打开的数据库、数据表、设计器、工作区等(3)CLEARALL:关闭所有已经打开的数据库和数据表,释放所有内存变量。(4)CLOSEDATABASE:关闭所有已经打开的数据库和数据表,选择1号工作区为当前工作区。(5)CLOSETABLESALL:关闭当前数据库中的所有数据表(6)QUIT:关闭所有数据库和数据表,退出VFP。3.3.2浏览和显示记录1.用菜单方式浏览VFP提供了两种显示方式:编辑、浏览浏览是默认的显示方式,在浏览窗口中以行的方式显示表格内容。变更显示方式的方法:“显示”菜单——“编辑”格式:LIST|DISPLAY[范围][FIELDS字段名列表][FOR条件][TOPRINTER][OFF][TOFILE文件名]功能:显示当前表中的记录内容。2.命令方式浏览记录3.3.3修改和编辑记录1.浏览修改(1)菜单方式①打开数据表。②执行“显示”菜单中的“浏览”命令,系统将打开浏览窗口,如图4.8所示。③浏览窗口中编辑修改数据,完成后关闭窗口。(2)命令方式格式:BROWSE[FIELDS字段名表][FOR逻辑表达式]2.编辑修改格式:EDIT[FIELDS字段名表][范围][FOR逻辑表达式]功能:根据给定条件编辑修改当前打开的数据表记录。3.替换修改格式:REPLACE字段名1WITH表达式1[ADDITIVE],字段名2WITH表达式2…[范围][FOR逻辑表达式]功能:用指定表达式的值替换当前表中满足条件记录的指定字段的值。3.3.4添加记录1.菜单方式追加记录维护数据库的一项经常性的工作就是工具需要随时向表文件添加记录,添加记录包括追加记录和插入记录。菜单方式追加记录基本步骤2.命令方式追加记录APPEND[BLANK][IN工作区号|表的别名]功能:在当前表或指定工作区的表尾追加一条或若干条记录。说明:(1)当执行该命令时,若没有打开的数据表,则系统会提示打开数据表。(2)BLANK:表示在当前表尾添加一条空记录,记录指针指向该空记录,一般需借助REPLACE命令为给该记录各字段赋值。(3)IN工作区号|表的别名:指明要添加新记录所在的工作区或表别名。(4)若没有任何选项,则打开记录输入窗口,可追加若干记录。3.命令方式插入记录命令格式:INSERT[BEFORE][BLANK]功能:在当前表的指定位置插入新记录或空白记录。说明:(1)BEFORE:在当前记录之前插入新记录。若省略此选项,将在当前记录之后插入新记录。(2)BLANK:表示在当前记录后添加一条空记录,记录指针指向该空记录,一般需借助REPLACE命令为给该记录各字段赋值。3.3.5删除和恢复记录1.逻辑删除记录方法一:菜单方式方法二:命令方式格式:DELETE[范围][FOR条件表达式][WHILE条件]功能:逻辑删除满足条件的记录。2.恢复逻辑删除记录恢复逻辑删除是将被逻辑删除的记录恢复为正常记录,即去掉删除标志。方法一:菜单方式方法二:命令方式格式:RECALL[范围][FOR逻辑表达式][WHILE逻辑表达式]功能:将当前数据表中指定范围内满主条件的已被逻辑删除的记录恢复,使之成为正常记录。3.物理删除记录物理删除彻底将数据从数据表中删掉。方法一:菜单方式(1)先对这些记录作逻辑删除。(2)打开主菜单“表”,选中“彻底删除”菜单项,打开确认提示框。(3)单击“是”按钮,将彻底删除已经逻辑删除的所有记录。方法二:命令方式格式:PACK功能:将已被逻辑删除的记录彻底删除。3.3.6记录指针的定位1.记录号和记录指针在VFP中每一条记录按其物理存放顺序有一个惟一的编号,称记录号,第一个记录的记录号是1。每一个打开的数据表,都有惟一的记录指针,它指向数据表的当前记录。刚打开的数据表其记录指针指向逻辑顺序上的第一条记录。2.记录的定位(1)菜单方式实现记录定位打开数据表,菜单:“表”——“转到记录(2)命令方式实现记录定位使用VFP的提供的命令可以实现记录指针的绝对和相对移动。①绝对移动GO[GOTO]TOP|BOTTOM|RECORDN|N②相对移动SKIP[数值表达式]3.3.7复制数据表数据表包括表结构和数据(记录),复制数据表包括表结构的复制和表记录的复制。1.复制表结构通过复制命令可以将该表结构作为新表的结构。命令格式:COPYSTRUCTURETO文件名[FIELDS字段名表][[WITH]CDX|[WITH]PRODUCTION]功能:复制当前表文件的结构作为新表文件的结构。2.复制表记录命令格式:COPYTO文件名[FIELDS字段名表][范围][FOR逻辑表达式][WHILE逻辑表达式]功能:将当前打开的数据表中指定范围内满主条件的记录复制到新的数据表文件中。3.4数据表的排序与索引为了加速检索数据的速度、控制表记录显示的顺序、控制重复字段值的输入,需要对数据记录进行调整。VisualFoxPro提供了两种实现途径:排序、索引3.4.1排序与索引的概念:排序的概念从物理存储上对表进行重新整理,按摩以关键字段的顺序对数据表中记录存放次序重新排列,生成新的数据表文件。索引从逻辑上对表进行重新整理,根据指定的关键字段建立索引文件。该索引文件是一个记录号的列表,指向待处理的记录,确定了记录的处理顺序。索引的概念索引可以帮助我们对其中的数据进行排序,以便加速检索数据的速度;可以快速显示、查询或者打印记录;还可以选择记录、控制重复字段值的输入并支持表间的关系操作。3.4.2数据表排序排序命令格式:SORTTOfilenameONfields1[/A|/D][/C][,fields2……][ASC|DESC][scope][FORcondition1][WHILEcondition2[FIELDSfieldsname]索引有四种可以选择的类型:主索引:可确保字段中输入值的唯一性并决定了处理记录的顺序。可以为数据库中的每一个表建立一个主索引。在字段中控制重复值的输入并对记录排序。如果某个表已经有了一个主索引,可以继续添加候选索引。3.3.3索引类型候选索引:象主索引一样要求字段值的唯一性并决定了处理记录的顺序。在数据库表和自由表中均可为每个表建立多个候选索引。普通索引:也可以决定记录的处理顺序,但是允许字段中出现重复值。在一个表中可以加入多个普通索引。唯一索引:为了保持同早期版本的兼容性,还可以建立一个唯一索引,以指定字段的首次出现值为基础,选定一组记录,并对记录进行排序。3.3.4索引文件索引文件分为两种类型:单一索引文件(.IDX)复合索引文件(.CDX)结构化复合索引文件非结构化复合索引文件说明:单一索引文件只包含一个索引,复合索引文件可包含多个索引,其每一个索引被称为一个“标志”。索引文件名与表文件名相同的复合索引文件称为结构化复合索引文件,该索引文件在打开表的同时被打开,以自动更新文件中的索引。3.3.5索引的建立与删除索引的建立方式有两种:在表设计器的索引页中建立;用命令的方式建立。1.在“索引名”框中,键入索引名。如果我们在“字段”选项卡中设置了索引,则索引名将自动出现。2.从“类型”列表中,选定索引类型。3.在“表达式”框中,键入作为记录排序依据的字段名,或者通过选择表达式框后面的对话按钮,显示“表达式生成器”来建立表达式。4.若想有选择地输出记录,可在“筛选”框中输入筛选表达式,或者选择该框后面的按钮来建立表达式。1.在表设计器中建立索引删除