1第3章数据表与数据库的基本操作3.1VF项目管理器3.4数据库的创建与使用3.2数据表的操作退出3.3排序与索引3.5多表操作23.1VF项目管理器3.1.1项目管理器的基本功能项目:是文件、数据、文档以及VFP对象的集合,项目文件的扩展名为.PJX。项目管理器:VisualFoxPro处理数据和对象的主要组织工具,整个系统的控制中心。在建立表、数据库、查询、表单、报表以及应用程序时,可以用项目管理器来组织和管理文件。3启动项目管理器的方式:(1)新建项目:命令方式:CREATEPROJECT菜单方式:文件→新建(2)打开已有项目:命令方式:MODIFYPROJECT项目文件名菜单方式:文件→打开3.1.2项目管理器的基本操作4项目管理器的组成(1)项目管理器包含的6个选项卡:•“数据”选项卡:包含了一个项目中的所有数据;•“文档”选项卡:包含了用户处理数据时使用的所有文档(如表单,报表,标签);•“代码”选项卡:包含了用户的所有代码程序文件;•“类”选项卡:用来显示和管理类库文件;•“其他”选项卡:用来显示和管理上述以外的文件;•“全部”选项卡:用来显示和管理所有类型的文件。5使用项目管理器1.创建和修改文件:使用“新建”或“修改”按钮。2.查看表中的数据:使用“浏览”按钮。3.添加或移去文件:使用“添加”或“移去”按钮。6定制项目管理器(1)移动位置:鼠标拖动标题栏(2)改变窗口大小:在窗口边界拖动鼠标(3)展开和折叠项目管理器:鼠标单击窗口右边的箭头按钮(4)重新安排选项卡:将选定的选项卡从项目管理器中拖开成为浮动选项卡,可通过快捷菜单访问“项目”菜单中的选项;单击选项卡上的关闭按钮或将选项卡拖回将还原选项卡(5)使项目管理器成为工具栏的一部分:用鼠标将其拖到工具栏中。73.3数据表的操作3.3.1自由表与数据库表3.3.2创建数据表3.3.3表文件的打开与关闭3.3.4表结构的操作3.3.5表文件的数据添加3.3.6记录的显示与定位3.3.7记录的删除与恢复8数据库与表是两个不同的概念:表(.DBF)是处理数据、建立关系数据库和应用程序的基本单元,用于存储信息。数据库(.DBC)是表的集合,它控制这些表协同工作,共同完成某项任务。表自由表数据库表3.2.1自由表与数据库表9自由表加入数据库的就成为数据库表;把数据库表移出数据库,就成为自由表。数据库还用于存储“数据库表”的属性,有效性规则、说明、默认值,以及视图与远程数据库的连接和存储过程。把许多表组织到一个数据库中,可以减少数据的冗余度,保护数据的完整性,充分发挥VisualFoxPro6.0的处理数据的强大功能。VF数据库与表103.3.2创建数据表在建立表结构以前,首先应该根据用户的需求,明确所要创建的表中应该包含哪些字段,每个字段的名称、类型和宽度。11概念模型12数据模型教师(编号,姓名,生日,性别,职称,专业,)班级(班号,名称,专业,班主任)课程(课程号,名称,学时,性质,学分,停开否)成绩(学号,课程号,学期,平时成绩,期考成绩,总评成绩)学生(学号,姓名,生日,性别,班级,简历,照片)132、定义表结构在VisualFoxPro6.0中,一个数据表包括表结构和表记录两部分。以文件形式保存,扩展名为.DBF。定义表结构就是定义各个字段的属性,基本的字段属性可包括字段名、字段类型、字段宽度和小数位数等。14字段名用来标识字段,通常是二维表列标题名或其缩写,它是一个以字母或汉字开头,由字母、汉字、数字、下划线等组成的序列的字符序列。一个表最多定义255个字段。字段的总宽度不能超过65000个字节当表中定义了备注型字段时,系统自动生成一个与表文件同名的、扩展名为.FPT的辅助文件来存放此类字段的内容。定义表结构VisualFoxPro中的数据类型1、字符型(Character,简写为C)2、数值型(Numeric,简写为N)整型(Integer,简写为I)浮点型(Float,简写为F)双精度型(Double,简写为B)货币型(Currency,简写为Y)3、逻辑型(Logic,简写为L)4、日期型(Date,简写为D)日期时间型(DateTime,简写为T)5、备注型(Memo,简写为M)6、通用型(General,简写为G)16建立表前的准备例如创建学生表基本情况应包括:学号、姓名、性别、生日、班号、简历等内容。结构如下:字段字段名类型宽度小数位1学号字符型102姓名字符型83生日日期型84性别字符型25班号字符型86简历备注型47照片通用型4173建立表结构使用命令建立表结构:格式:CREATE表文件名功能:建立一个表文件。参数:表文件名指定要创建的表的名称。说明:输入命令后,按Enter键,屏幕上会出现“表设计器”对话框,利用该对话框即可建立表的结构。18■建立表结构是通过CREATE命令的执行,在磁盘上建立起一个新的表文件。■若定义了备注型字段,则同时建立了一个.FPT为扩展名的表备注文件。■若在文件名前指定了驱动器标识符,则文件建立在指定的驱动器上,否则建立在当前驱动器上。■不指定文件扩展名时,缺省扩展名为.DBF。■若磁盘上存在这个文件或文件重名,系统显示一个警告对话框,提示是否要改写表。如果需要改写,则选择【是】,否则选择【否】。■不要用A-J单个字母作为表文件名,因为他们是专门用于工作区别名的。19使用菜单创建表【文件】|【新建】利用键盘操作:先按Alt+F组合键,再按Ctrl+N键也可以直接按Ctrl+N键。在“新建”对话框中,选择“表”单选项再单击【新建文件】按钮,进入到的“打开”对话框。在这个对话框中首先是(关键也是)选择一个表,或为表新取一个文件名,然后按【保存】按钮VFP会进入“表设计器”。203.2.3表文件的打开和关闭打开表文件:use文件名[EXCLUSIVE][SHARED]关闭表文件(1)USE:关闭当前工作区中打开的表(2)CLOSEALL:关闭所有工作区所有打开的数据库、表,并选择工作区1。(3)CLOSEDATABASES[ALL]:关闭当前数据库和表。ALL指定关闭所有打开的数据库和其中的表、所有打开的自由表,并选择工作区1。(4)CLOSETABLES[ALL]:关闭当前数据库中所有表,但不关闭数据库。带ALL,则关闭所有数据库中所有的表和所有自由表,但不关闭数据库。另外,退出VisualFoxPro也会关闭所有的文件。213.2.4表结构的操作格式:MODIFYSTRUCTURE功能:修改表的结构。1.修改表结构222.显示表结构格式:DISPLAY/LISTSTRUCTURE[TOPRINTER/FILE文件名]功能:显示当前表的结构。参数描述:[TOPRINTER]:把显示内容同时送到打印机。DISPLAY与LIST的区别:前者是分屏显示,按任意键继续;后者是滚动显示,按CTRL+S键暂停或继续。233.复制表结构格式:COPYSTRUCTURETO文件名[FIELDS字段名表]功能:复制表的结构。参数描述:文件名是指的与源表(当前表文件)结构相同的新的表文件名或只含有指定字段的表文件名。FIELDS字段名表则用于指定要复制到新表文件中的字段名。24复制表结构例:USE学生COPYSTRUCTURETOSTUDENTFIELDS学号,姓名,班号&&将当前表(学生表)的学号、姓名、班号三个字段复制到一个新表文件STUDENT.DBF中注意:此命令只是复制表的结构,形成的新表是一个空表,即不会含有任何的记录。254.复制表文件格式:COPYTO新文件名[范围][FIELDS字段名表][FOR条件][WHILE条件]功能:将当前表中选定的部分记录的部分字段复制成一个新表例:USE学生COPYTO男生FIELDS学号,姓名,班号FOR性别=男&&生成新的表文件“男生.DBF”USE男生&&需打开新生成的表BROWSE&&浏览男生.DBF中的记录263.2.5表文件的数据添加格式一:APPEND[BLANK]功能:在当前表的末尾自动添加一个或多个新记录。参数描述:[BLANK]:添加一个空记录。格式二:APPENDFROM表文件名[FIELDS字段名1,字段名2…][FOR条件]功能:从其它数据表中将符合要求(字段名和字段类型相同)的记录添加在当前数据表的尾部。27例:USESTUDENTAPPENDFROM学生FIELDS学号,姓名,班号FOR班号=0101&&将学生表中的班号为“0101”学生记录(只包括学号、姓名和班号)追加到STUDENT表中。282.表数据的插入格式:INSERT[BEFORE][BLANK]功能:以窗口方式插入一条记录。参数描述:[BEFORE]:在当前记录之前插入,缺省时为之后。293.2.6记录的显示与定位格式:DISPLAY/LIST[范围][[FIELDS]字段名表][FOR条件][OFF][TOPRINTER]功能:在主窗口中显示当前表文件的内容。参数描述:[OFF]:不显示记录号。[TOPRINTER]:把显示内容同时送到打印机。DISPLAY与LIST的区别:(1)前者是分屏显示,按任意键继续;后者是滚动显示,按CTRL+S键暂停或继续。(2)缺省[范围]时,前者只显示当前记录,后者显示所有记录。例:USE学生LIST&&显示学生表中所有记录LIST学号,姓名,班号,生日FOR性别==女&&在主窗口中显示性别为“女”的学生的学号、姓名、班号和生日3031①利用菜单浏览和修改表中的数据第一步:在项目管理器中选择【数据】选项卡第二步:在数据库中选择一个表第三步:单击项目管理器中的【浏览】按钮(2)在浏览窗口中显示32VFP系统打开全屏幕浏览窗口第四步:在浏览窗口中修改数据记录标志位{当前记录标志删除标志位关闭按钮第五步:修改结束后单击关闭按钮关闭浏览窗口在浏览窗口中可以去除、恢复垂直分隔线,也可以改变字段的显示宽度。33②利用命令浏览和修改表中的数据格式:BROWSE[FIELDS字段名表][LOCK数据型表达式][LAST][FOR逻辑型表达式]功能:在屏幕上打开一个浏览窗口,在窗口中显示表的记录。参数描述:[Fields字段名表]:指定在浏览窗口中显示的表的字段。LOCK数据型表达式:将浏览窗口一分为二,指定在左窗口中显示的字段数。LAST:按最后一次关闭浏览窗口的方式打开浏览窗口。FOR逻辑型表达式:指定在浏览窗口中显示的记录所要求满足的条件。说明:1、BROWSE命令可以带有很多任选项,命令格式中只介绍了BROWSE命令的最基本的任选项。342、在字段名表中,除了可以使用表所定义的字段以外,还可以使用计算字段。计算字段:就是由表中的字段组合成的合法的表达式。注意:计算字段名不能与当前表中的字段名同名,长度不能超过10个字符。计算字段是只读的,它的值随着组成计算字段的表中的字段值的变化而变化。计算字段的格式为:计算字段名=表达式BROWSEFIELDSNAME_BIRTH=姓名+:+性别+:+DTOC(生日)+出生当执行上述命令后屏幕显示结果35在计算字段后面使用:H参数,窗口中显示中文字段名BROWSEFIELDSNAME_BIRTH=姓名+:+性别+:+;DTOC(生日)+出生:H=姓名和出生日期,宿舍,电话执行上述命令后,屏幕显示结果计算字段指定的中文名计算字段的值指定中文字段名362.记录的定位记录指针:用来指示表文件中记录位置的指针。其值是当前记录在表中的记录号。表没打开时值为0,刚打开表时值为1。当前记录:指针当前所指向的记录。37记录指针测试函数(1)记录号:RECNO()(3)文件尾标:EOF()(2)文件首标:BOF()注意:(1)首尾标是文件的起始和结束标识,而不是第一条和最后一条记录,而是GO1(或GOTOP)后再SKIP-1和GOBOTTOM后再SKIP。(2)显示结果用?函数名()38定位记录格式:G