第三章 数据库及表的操作.doc
《第三章 数据库及表的操作.doc》由会员分享,可在线阅读,更多相关《第三章 数据库及表的操作.doc(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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是在当前记录之前插入新记录
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三章 数据库及表的操作 第三 数据库 操作
限制150内