第三章数据库的建立和操作3.1VF数据库的建立3.1.2建立数据库:项目管理器:是一个工作平台·是数据,对象和文档的结合·1、建立项目管理器:后缀名.PJX,PJT是备注文件方法一:方法二命令:CREATEPROJECT项目文件名EG:createproject教务系统creaPROJ教师系统说明:VF中命令不区分大小写,每个命令只能占一行·代码中每个单词可以缩写为前四个字母·2、建立数据库的方法:后缀名.DBC,DCT是备注文件,DCX是索引文件(1)项目管理器中的数据选项卡下建立(2)在文件菜单下新建(3)用命令的方式建立:CREATEDATABASE数据库文件名CREATEDATABASE?/不跟数据库文件名(功能是:弹出一个创建对话框`等待用户输入数据库文件名)3.1.3使用数据库(1)项目管理器中打开数据库:(2)文件菜单下打开(3)打开数据库命令:OPENDATABASE数据库名OPENDATABASE?/不跟数据库文件名(功能是:弹出一个打开对话框`供用户选择数据库)说明:EXCLUSIVE以独占的方式打开数据库NOUPDATE指定数据库以只读方式打开说明:VF中同一个时刻可以打开多个数据库`但在同一时刻只有一个当前数据库`(4)指定当前数据库方法一:常用格式工具栏上列表框中方法二命令:SETDATABASETO数据库名3.1.4修改数据库:用户可以在数据库设计器中完成各种数据库对象的建立、修改和删除等操作命令:MODIFYDATABASE数据库名/?MODIFYDATABASE(功能是:对当前数据库进行修改)EG:OPENDATABASE成绩管理MODIFYDATABASEMODIFYDATABASE设备管理3.1.5删除数据库(1)移去:从项目管理器中删除数据库,但并不从磁盘上删除相应的数据库文件(DBC,DCT,DCX)(2)删除:从项目管理器中删除数据库`同时对应的数据库文件从磁盘上删除删除命令:DELETEDATABASE数据库名.DELETEDATABASE数据库名RECYCLE(功能是:将数据库的磁盘文件删除并放到回收站`)说明:删除数据库时``如果数据库里面有表``只删除数据库文件``数据库表变成自由表``DELETEDATABASE数据库名DELETETABLES(功能是:删除数据库的同时删除里面的表文件)关闭数据库命令:CLOSEDATABASE(功能是:当前打开数据库进行关闭·)命令:CloseALL关闭VF中所有打开的文件3.2建立数据库表:3.2.1在数据库中建立表在关系数据库中将关系称作为表·一个数据库中的数据就是由表的集合构成···表文件的后缀名:.DBF数据库表设计器:•字段•字段的类型和宽度•空值•字段有效性组框•显示组框•字段注释(1)字段名:关系中属性名(列的方向)(2)类型:日常生活当中一种表现形式(字符型C货币性Y数值型N日期型D整型I逻辑型L)(3)空值(NULL):表示一个没有确定的值·不等价于零值、空格··(注意:主关键字段不能为空值,空值的定界符是.NULL.)宽度:一个汉字占两个宽度·一个符号或者字母,数字分别占一个宽度·说明:在表中建立通用型和备注型字段是·要产生一个与表同名的.FPT文件表的建立:(1)命令:CREATE表名3.2.2修改表结构(表的设计器)表的结构:可以修改字段、添加字段、删除字段、修改字段的类型和宽度,建立和修改有效性规则,建立索引和删除索引等等命令:USE表名(打开一个表)MODIFYSTRUCTURE(功能是:对当前打开的表进行修改结构)USE关闭表CLOSEALL关闭所有3.3表的基本操作:浏览、追加记录、修改记录、查询定位记录、显示记录、删除记录··3.3.1使用浏览器操作表(1)在项目管理器中(2)在数据库里面直接浏览(3)命令:USE表名BROWSE(浏览当前表)总结:CLOSEDATABASE,MODIFYSTRUCTURE,BROWSE三个命令后不用加名称。3.3.2增加记录的命令1.追加记录:快捷方式:CTRL+Y2.命令:APPEND在表的尾部追加一条记录APPENDBLANK在尾部追加一条空白记录1.命令:INSERT相对表的指针往后插入一条记录INSERTBLANK相对表的指针往后插入一条空白记录INSERTBEFORE相对当前表的指针往前插入一条新记录3.3.3删除记录1.VF中删除记录分为逻辑删除和物理删除。(1)逻辑删除:只是在记录的左边作一个删除标记(2)物理删除:是建立在逻辑删除的基础上,是将有逻辑标记的记录彻底删除·不能再恢复·逻辑删除命令:DELETE(功能是:对当前打开表中指针所指向的记录进行删除)DELETEALL(功能:逻辑删除当前表的记录)EG:MODIFYDATABASE成绩管理use学生DELETEALLBROWSEDELTEFoR条件表达式(功能:逻辑删除满足条件的记录)EG:逻辑删除男党员的学生的信息?DELETEFOR性别=男AND政治面貌=[党员]说明:VF中所有的符号必须在英文状态下书写2.恢复记录的命令:RECALL(功能:恢复指针指向的记录)RECALLfor条件表达式3.物理删除命令:PACK命令:ZAP表示清空表记录等价于DELETEALL和pack命令的使用3.3.4修改记录1.以交互修改的方式EDIT和CHANGE(编辑状态)EG:use成绩EDITUSE课程CHANGE2.用命令直接修改REPLACE(替换)语法格式:USE表名REPLACE字段名WITH新的值(功能是:对当前指针指向的记录的值进行替换)REPLACEALL字段名WITH新的值(功能:对指定字段的值进行全部替换)REPLACEALL字段名WITH新的值FOR条件表达式(功能是:将满足条件的字段值进行修改)REPLACE(ALL)字段名WITH新的值FOR字段名=值,新的值和值都必须注意类型REPLACE字段名WITH字段名+新的值REPLACE分数WITH分数+15EG:Use学生REPLACE电话号码WITH08515603163REPLACEALL电话号码WITH13511989999将家在上海居住的学生电话号码更新为13588881234REPLACEALL电话号码WITH13588881234FOR地址=上海课堂练习:请将学号为09080102的学生的地址更新为上海?REPLACE地址WITH上海FOR学号=09080102REPLACEALL地址WITH北京FOR学号=09080102将学号为09080102的学生的成绩在原来的基础上增加10%REPLACE分数WITH分数*(1+0.1)FOR学号=09080102将男党员的学生的补贴增加10元?REPLACEALL补贴WITH补贴+10FOR性别=男AND政治面貌=党员3.3.5显示记录命令:LIST(将当前表的记录全部显示到工作区)DISPLAY(将当前指针指向的记录显示到工作区).LISTFOR条件表达式(对满足条件的记录显示到工作区)DISPLAY字段名1,字段名2,………3.3.6查询定位问号?表示输出函数:RECNO()测试当前表的指针位置FOUND()检测是否找到满足条件的内容(1)绝对定位:将指针指向一条记录上··TOP表头BOTTOM表尾命令:GO数值表达式等价于GOTO数值表达式GO+数值/TOP/BOTTOM,或直接用数字EG:USE学生?RECNO()GO3?RECNO()BROWSEGOTO4GOTOPGOBOTTOM(2)相对定位:表示相对当前指针往上或者往下跳转多少条记录命令:SKIP数值表达式说明:数值表达式有正负之分··当为正数就往下跳转``反之往上··如果SKIP没有带数值表达式··默认往下跳1步(3)条件定位:将指针指向满足条件的记录上·命令:LOCATEFoR条件表达式3.4索引VF索引是由指针构成的文件,指针按照逻辑上的关键字的值进行排序(升序/降序)不改变表中记录的物理顺序·说明:在一个表中创建索引·会产生一个表同名的索引文件(.CDX)VF中索引分为:主索引、候选索引、惟一索引、普通索引·1.主索引:建立在其值能够惟一标识一个元组(主关键字)一个表中最多建立一个主索引··2.候选索引:虽然不是主索引··但其值也能够惟一标识一个元组··3.惟一索引:用于一些特殊的程序设计(一个表中可以创建多个惟一索引)4.普通索引:在表中任何字段都可以建立·(可以提高表的查询速度)注意:只有数据库中的表才能建立主索引,不能用命令3.4.2在表设计器建立索引(表的结构)说明:1.表中可以创建多个索引·都保存在一个CDX文件中·2.可以提高查询速度··索引不是越多越好··根据用户的需要来建立··索引太多·会影响对表的操作·3.一个表中的主索引和另外一个表中的普通索引·可以建立表与表之间的永久性关联··