第2章 数据库表索引_第1页
第2章 数据库表索引_第2页
第2章 数据库表索引_第3页
第2章 数据库表索引_第4页
第2章 数据库表索引_第5页
已阅读5页,还剩117页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章VisualFoxpro数据库、表、索引2.1VFP中数据库的基本概念

在VisualFoxPro中,数据库是一个逻辑上的概念和手段,通过一组系统文件将相互联系的数据库表及相关的数据库对象统一组织和管理。VisualFoxPro数据库除了包含有存储数据的表外,还包含视图、连接、存储过程等数据库对象。有关这些数据库对象在后面章节中在做一一介绍。在VisualFoxPro中,数据库建立后是一个独立的文件,其扩展名为.DBC,同时还有一个与之相关的数据库备注文件扩展名为.DCT和一个数据库索引文件扩展名为.DCX。就是在数据库建立后,磁盘上可以看到文件名相同,但扩展名分别为.DBC、.DCT、.DCX的三个文件,这三个文件用户一般不能直接使用。2.1数据库的创建新建数据库的方法:交互创建数据库使用命令方式创建数据库

2.1数据库的创建交互创建数据库使用“项目管理器”创建数据库

步骤一:点击新建按钮步骤二:点击新建数据库按钮2.1数据库的创建交互创建数据库使用“项目管理器”创建数据库

步骤三:输入数据库名称,点击保存按钮2.1数据库的创建交互创建数据库使用菜单和工具栏“新建”命令创建数据库

2.1数据库的创建交互创建数据库使用菜单和工具栏“新建”命令创建数据库

步骤一:文件类型选择“数据库”,点击新建文件按钮数据库的创建交互创建数据库使用菜单和工具栏“新建”命令创建数据库

步骤二:输入数据库名称,点击保存按钮2.1数据库的创建使用命令方式创建数据库

CREATEDATABASE[<数据库文件名>|?]注意:在使用命令创建数据库时,如果命令中没有指定数据库名称,或是命令后带的是“?”,则会打开“创建”对话框。如果命令后带有数据库的名称,则创建数据库,并使数据库处于打开状态,但不打开“数据库设计器”窗口。2.1数据库设计器和“数据库”菜单在新的数据库文件创建后,将会打开“数据库设计器”窗口:2.1数据库设计器和“数据库”菜单数据库设计器工具栏和数据库设计菜单:新建表添加表移去表新建远程视图新建本地视图修改表浏览表编辑存储过程连接

2.1数据库的组成数据库的组成:表、本地视图、远程视图、连接、存储过程2.2数据库的基本操作打开数据库修改数据库关闭数据库删除数据库1.打开数据库要使用数据库就必须先打开数据库,打开数据库的方法也有三种:(1)在项目管理器中打开首先打开项目管理器进入,首先单击【数据】选项卡,在里面选择【数据库】,然后单击【数据库】左边的“+”,弹出如图所示的界面,然后选中要打开的数据库名,单击【打开】按钮,数据库就自动打开,可以在工具栏看到如图所示的打开数据库的标志。图3.5(2)使用【打开】对话框打开首先在【文件】菜单里选择【打开】或单击工具栏的【打开】按钮图标,出现如图所示的【打开】对话框。在对话框里【文件类型】选择【数据库(*.dbc)】,然后选择查找范围,找到所要打开数据库名的位置,选中数据库名,单击【确定】按钮,打开数据库进入如图所示的界面。注意:在打开对话框中有“以只读方式打开”和“独占”复选框可以选择,这里“以只读方式打开”指的数据库打开后不能进行修改;而“独占”指的不允许其他用户在同一时刻使用该数据库。(3)使用命令打开在命令窗口中可以使用命令打开已经存在的数据库。【命令格式】OPENDATABASE[DatebaseName]【命令说明】DatebaseName指要打开的数据库名。也可以不用,就弹出【打开】对话框用以打开指定的数据库名。【例】打开数据库。命令如下:OPENDATABASE超市管理

2.修改数据库(1)在项目管理器中修改首先打开项目管理器,首先单击【数据】选项卡,在里面选择【数据库】,然后单击【数据库】左边的“+”,弹出如图所示的界面,然后选中要修改的数据库名,单击【修改】按钮,弹出如图所示的界面。(2)使用【打开】对话框打开后修改与数据库打开的第二种方法一样。(3)使用命令修改【命令格式】MODIFYDATABASE[DatebaseName]【命令说明】DatebaseName指要修改的数据库名。也可以不用,就弹出【打开】对话框用以打开指定所要修改的数据库名。3.关闭数据库(1)在项目管理器中关闭首先打开项目管理器,然后选中已经打开的数据库名,单击【关闭】按钮就可以关闭该数据库,可以在工具栏中看到该数据库已经关闭。(2)使用命令关闭【命令格式】CLOSEDATABASE【命令说明】该命令是关闭当前所打开的数据库。【例】关闭打开的数据库。命令如下:CLOSEDATABASE4.删除数据库(1)在项目管理器中删除首先打开项目管理器,然后选中所要删除的数据库名,单击【移去】按钮,弹出如图所示的对话框。这里有【移去】和【删除】两个按钮选择,如果选择【移去】按钮该数据库并没有从磁盘上删除,而是把该数据库从该项目管理器中移去,但还可以使用该数据库;如果选择【删除】就可以真正把该数据库从磁盘上删除,不可以在使用该数据库。(2)使用命令删除【命令格式】DELETEDATABASE[DatabaseName]【命令说明】该命令是删除已经关闭了的数据库,删除之前必须先关闭该数据库。【例】删除数据库。命令如下:DELETEDATABASE超市管理2.3表的基本知识表的基本概念表的建立表的基本操作排序和索引2.3.1表的基本概念表是数据库中的重要数据对象,在关系数据库中将关系也称为表,表是有表结构和表数据组成。表结构就是字段,表数据就是记录。在VisualFoxpro中,表有两种表,就是数据库表和自由表。数据库表是依附于一个指定数据库的表;而自由表是不依附于任何一个数据库。前者支持长表名、长字段名,给表设置主索引、默认值、规则、触发器,而后者不具备。但两种表都是一个独立的.DBF。现将表结构的一些基本内容和概念作以下说明:表文件表文件,.DBF文件,存放表结构和表记录表备注文件,存放表中备注型字段内容,文件扩展名为.FPT表索引文件,在索引页建立索引后产生,文件扩展名为.CDX姓名性别出生年月婚否教研室职称月收入简历照片张三男1957-8-12T语文教授1343.56略略李四女1960-8-23T数学副教授1050.20略略景秀丽女1979-2-11T外语讲师890.00略略王五男1967-5-23T计算机讲师678.00略略赵六男1963-12-8F外语副教授1040.40略略马识途男1975-4-21F计算机讲师860.00略略李华男1988-8-15T数学讲师880.00略略1.表结构的分析记录(行)属性(列)值字段名Teacher表关系名字段名字段名就是关系的属性名和表的列名。一个表有若干列组成,每一列都有自己的唯一名字,就是字段名,以后可以通过字段名直接引用表中的数据。字段名的命名规则如下:

(1)自由表字段名最长为10个字符。(2)数据库表字段名最长为128个字符。(3)字段名必须以字母或汉字开头。(4)字段名可以由字母、汉字、数字和下划线组成。(5)字段名不能包含空格。字段的基本属性字段名(FieldName),每一个字段必须取一个名字,称为“字段名”,用以在表中标志该字段。以字母或汉字开头,可包括字母、汉字、数字和下划线,长度不超过10。字段的数据类型(Type),表中每个字段都有特定的数据类型。字段宽度(Width),指该字段所能容纳数据的最大的字节数,字段的宽度必须能足够容纳可能的最长的数据信息。除字符型、数值型、浮动型字段由用户根据需要设定字段宽度外,其它类型均由系统规定宽度。字段的基本属性小数位数(Decimal),对于数值型、浮点型和双精度型的字段,还可以指定其小数的位数。小数位和正负号都须在字段宽度中占一位。空值(NULL)支持,空值是用来指示记录中的一个字段“没有值”的标志。空值表示没有任何值或没有确定值,空值不同于数值0、空字符串或逻辑“假”。2.字段数据类型和宽度字段数据类型是存储在字段中的值的数据类型,可以通过宽度来决定存储数据的大小和精度。其主要的数据类型有以下几种:(1)字符型(C)一般字段存储的内容由字母、数字、特殊符号或标点等组成时,该字段可以设置成字符型。它的长度最多达254个字符,比如用户的名字。(2)货币型(Y)用于保存货币类型的数据它占8个字节,数值范围为-922337203685477.5808~922337203685477.5807。它的小数位数固定为4为,整数位最大达15位。(3)数值型(N)用于保存整数或小数,它的长度可以达20位,但长度包括整数位数、小数点、小数位数。(4)日期型(D)用于保存只含年、月、日的日期数据,其范围为公元0年1月1日~9999年12月31日。宽度固定为8位。(5)日期时间型(T)用于保存还有时间和时间的数据,宽度也为8位。(6)逻辑型(L)用于保存字段内容只有两种结果供选择,它包含两个值真(.T.)和假(.F.)。(7)通用型(G)用于保存电子表格、文档、图片等OLE信息,它在表中只占4个字节。(8)备注型(M)用于保存数据长度难于确定的文本信息,它在表中占4个字节。其重要内容存放到了由表同名的扩展名为.DBT的文件中,该文件最大达2GB。(9)整型(I)用于保存整数数据,它的宽度为4个字节。(10)双精度用于保存数值精度要求很高的数据,它所表示的数值对多可精确到小数点后7位。(11)浮点型用于保存数值的数据,其长度可达20位。等等。用户可以根据实际情况来设置数据类型及相应的数据宽度。2.3.2表的建立建立自由表的方法一般有三种方法:1.在项目管理器中建立表首先打开项目管理器,首先单击【数据】选项卡,在里面选择【自由表】,然后单击【新建】按钮,弹出如图所示的对话框。单击【新建表】,进入创建对话框如图所示。在这里选择表所要保存的位置和输入表的名字,如“学生”,然后单击【保存】按钮,弹出如图所示的【表设计器】对话框。在上图中定义表结构,设置字段名、字段类型、字段宽度或小数位数,以及是否允许为NULL。设置完成后单击【确定】按纽,系统弹出提示对话框如图所示。在该对话框中如果单击【是】按钮,将进入记录输入窗口如图所示;如果单击【否】按钮,则保存表的结构但没记录。

2.使用【新建】对话框建立表首先在【文件】菜单里选择【新建】或单击工具栏的【新建】按钮图标,打开如图所示的【新建】对话框。在对话框里选择【表】,然后单击【新建文件】按钮,进入如图,然后按在项目管理器中的建立表的操作进行。3.使用命令建立表【命令格式】CREATE[TableName]【命令说明】参数TableName指的表名,用户可以指定所创建的自由表名,也可以不指定。2.3.3数据库表的创建新建数据库表的方法:使用界面方式(包括表向导和表设计器)创建数据库表使用命令方式创建数据库表2.3.3数据库表的创建用表设计器设计表结构:用菜单或工具栏打开“表设计器”CREATECREATE?CREATE表文件名“项目管理器”中的“新建”2.3.3数据库表的创建“表设计器”对话框2.3.3数据库表的创建“表设计器”对话框2.3.3数据库表的创建使用向导设计表结构:

2.3.3数据库表的创建使用向导设计表结构:

2.3.3数据库表的创建用命令设计表结构:CREATE

TABLE|DBF

表文件名(字段名1字段类型[(字段宽度[,小数位数])];[NULL|NOTNULL][,字段名2字段类型[(字段宽度[,小数位数])]]...]2.3.3数据库表的创建用命令设计表结构:【例3.1】:使用CREATE

创建“仓库”表:CREATETABLE仓库(仓库号C(3),面积N(7,2),电话号码C(8))【例3.2】:以下命令用于创建一个库存表:库存.dbf,其中仓库号和零件号不可为空。其余字段可以为空。CREATETABLE库存(仓库号C(3)NOTNULL,零件C(3)NOTNULL,库存量N(8)NULL,入库时间DNULL)【例3.3】:执行以下命令可以设置两个字段不为NULL值。SETNULLOFFCREATETABLE项目(项目号C(3),l预算N(9),开工日期D,完成日期D)2.3.3数据库表的创建修改表结构的方法:使用界面方式修改数据库表使用命令方式修改数据库表

2.3.3数据库表的创建使用界面方式修改数据库表2.3.3数据库表的创建使用命令方式修改数据库表

ALTERTABLE表名ADD|ALTER[COLUMN]字段名字段类型[(字段宽度[,小数位数])]或ALTERTABLE表名DROP[COLUMN]字段名或ALTERTABLE表名RENAMECOLUMN原字段名TO新字段名其中,ADD子句用于增加字段,ALTER子句用于修改字段,DROP子句用于删除字段,RENAME子句用于修改字段名。2.3.3表数据的录入表数据的输入要点:逻辑型字段只能接受.T.,.Y.,.F.,.N.四个字母之一;日期型数据必须与日期格式相符,默认按美国格式mm/dd/yy;对于备注型和通用型字段,输入时将光标定位在memo或gen区,双击鼠标,打开相应的编辑窗口,输入完后,按ctrl+w存盘退出,按esc或ctrl+Q输入作废。2.4表的基本操作表的打开表结构操作表数据的添加表数据浏览记录定位表数据的插入表数据的修改表数据的删除表的复制表的关闭数据库表的其他操作2.4.1表的打开表的打开方法比较多,在这里介绍一些常用的方法:(1)在项目管理器中打开表首先打开项目管理器,首先单击【数据】选项卡,在里面选择【表】,然后单击【表】左边的“+”,弹出如图所示的界面。然后选中要修改的表名“学生”,单击【修改】按钮,弹出如图3所示的界面。(2)使用【打开】对话框打开表首先在【文件】菜单里选择【打开】或单击工具栏的【打开】按钮图标,出现如图所示的【打开】对话框。然后在对话框里“文件类型”选择“表(*.dbf)”,然后选择查找范围,找到所要打开表名的位置,选中表名“学生”,单击【确定】按钮就完成表的打开。注意 :在打开对话框中有“以只读方式打开”和“独占”复选框可以选择,这里“以只读方式打开”指的表打开后不能进行修改;而“独占”指的不允许其他用户在同一时刻使用该表,但可以修改表结构和表数据。

3)使用命令打开表【命令格式】USETableName【命令说明】TableName指要打开的表名。也可以不用,就弹出【打开】对话框用以打开指定路径下的表名。【例】打开“学生”表。命令如下:

USE学生 &&打开表后,出现如图所示的状态栏,表明已经打开表

2.4.2表结构操作要对表结构进行修改操作必须先要打开表,然后在能进行相应的操作。其重要操作为:(1)表设计器操作首先打开指定表,然后单击【显示】菜单下的【表设计器】选项,然后在里面进行修改字段表结构、插入字段、删除字段等,最后单击【确定】按钮。(2)命令操作首先使用命令浏览表结构。【命令格式】LISTSTRUCTURE|DISPLAYSTRUCTURE【命令说明】该命令就是浏览当前所使用表的结构。但只能浏览不能修改。然后进入修改表界面,打开表设计器。【命令格式】MODIFYSTRUCTURE【命令说明】该命令就是打开【表设计器】,进行修改表结构。【例】修改“学生”表的表结构。命令如下:USE学生MODISTRU &&进入表设计器。【例】浏览“学生”表的表结构。命令如下:USE学生LISTSTRU &&显示结构内容如图所示。2.4.3表数据的添加(1)菜单操作在表已经打开的情况下,并且是以非只读方式打开,单击【显示】菜单下的【追加方式】,进入如图所示的界面,然后输入数据(数据参见图),单击【X】关闭窗口,就保存了所输入的数据。

(2)命令操作【命令格式】APPEND[BLANK]【命令说明】该命令用于在当前表最后一条记录后添加一条新的记录,只能在最后添加。如果带BLANK参数指添加一条空记录。【例】给“学生”表添加一条空记录。命令如下:

APPEBLAN &&给当前添加一条空记录。2.4.4表数据浏览(1)菜单浏览首先打开表,然后单击【显示】菜单下的【浏览】选项。然后浏览到当前表的所有数据。(2)命令浏览【命令格式一】LIST|DISPLAY[FIELDSFieldList][Scope][FORlExpression1]【命令说明】该命令主要用于显示表中的数据。LIST是显示所有数据,而DISPLAY只显示当前记录。这两条命令只能用于浏览不可以修改。FIELDSFieldList参数用于指定所要显示的字段。Scope参数指显示记录的范围,默认为ALL。FORlExpression1参数用于设置记录的显示条件。【例】显示“学生”表中记录数据。命令如下:USE学生DISP &&显示学生表的第一条记录。LIST &&显示学生表的所有记录。LISTFOR性别=”男” &&显示学生表的所有男生记录。【命令格式二】BROWSE[FIELDSFieldList][FORlExpression1]【命令说明】该命令用于浏览显示数据,具有修改数据的功能。FIELDSFieldList参数用于显示浏览当前表的指定字段,字段之间用逗号分隔。FORlExpression1参数用于显示浏览满足条件的记录。【例】浏览学生表中所有的女生情况。命令如下:BROWSEFOR性别=”女” &&显示学生表的所有女生记录,如图所示。BROWSE命令例题【例】使用BROWSE命令浏览表teacher.dbf中的记录。USEteacherEXCLUSIVEBROWSE【例】使用BROWSE命令浏览表teacher.dbf中职称是“讲师”的记录。USEteacherEXCLUSIVEBROWSEFOR职称="讲师"【例】使用BROWSE命令浏览表teacher.dbf中记录的“姓名”、“性别”、“出生年月”三个字段的内容。USEteacherEXCLUSIVEBROWSEFIELDS姓名,性别,出生年月LIST/DISPLAY命令【命令格式】LIST/DISPLAY[<范围>][FIELDS<字段名表>][FOR<条件表达式>][OFF][TOPRINT][TOFILE<文件名>]【功能】在工作区窗口显示当前表中符合条件的记录。【说明】LIST命令的范围默认值为ALL,DISPLAY命令的默认值为当前记录。如省略范围,使用[FOR<条件>]子句,默认范围为ALL。若省略FIELDS子句,默认所有字段。若省略OFF子句,显示记录号,否则不显示记录号。若使用TOPRINT子句,输出记录到打印机。默认输出到屏幕。若使用TOFILE<文件名>子句,将输出内容写入指定表文件。LIST/DISPLAY命令例题【例】在工作区窗口显示表teacher.dbf中记录。USEteacherEXCLUSIVELIST【例】在工作区窗口显示表teacher.dbf中计算机教研室老师的记录。USEteacherEXCLUSIVELISTFOR教研室="计算机"LIST/DISPLAY命令例题【例】在工作区窗口显示表teacher.dbf中70年以前出生的老师记录。USEteacherEXCLUSIVELISTFOR出生年月<{^1970/1/1}【例】在工作区窗口显示表teacher.dbf中月收入在1000元以上的老师的姓名、月收入。USEteacherEXCLUSIVELISTFOR月收入>1000FIELDS姓名,月收入LIST/DISPLAY命令例题【例】在工作区窗口显示表teacher.dbf中已婚老师记录。USEteacherLISTFOR婚否OFF表结构的显示【命令格式】LIST/DISPLAYSTRUCTURE【功能】在工作区窗口显示当前表的结构。【例】显示表teacher.dbf的结构。USEteacherLISTSTRUCTURE2.4.5记录指针的定位表中的每个记录都有一个编号,称为记录号。对于打开的表,会被分配一个记录指针。记录指针指向的记录称为当前记录。定位记录就是移动记录指针,使指针指向符合条件的记录过程。使用RECNO()函数可以获得当前记录的记录号。表文件有两个特殊的位置:文件头(表起始标记)和文件尾(表结束标记)。文件头在表的第1个记录之前,当记录指针指向文件头时,BOF()函数的值为.T.;文件尾在表的最后1个记录之后,当记录指针指向文件尾时,EOF()函数的值为.T.,表的结构绝对定位将记录指针直接定位到某条记录,称记录的绝对定位。【命令格式】GO/GOTO[TOP/BOTTOM]/<n>]【功能】将记录指针指向定位记录【例2.21】GO命令定位示例。USEteacher?RECNO()&&刚打开的表,指针指向第1个记录GOBOTTOM&&定位到末记录?RECNO()?EOF()GO3?RECNO()GOTOP&&定位到首记录?RECNO()这里为了避免移动到文件头和文件尾,可以借助测试函数是否到文件头函数BOF()和是否到文件尾函数EOF()来检测指针移动位置情况。相对定位【命令格式】SKIP[+/-][<数值表达式>]【功能】从当前记录开始向前或向后移动记录指针。【说明】SKIP向表尾方向移动1个记录。SKIP+n向表尾方向移动n个记录。SKIP-n向表头方向移动n个记录。【例】定位并显示学生表指定的记录。命令如下:USE学生?BOF(),EOF(),RECNO() &&显示为.F.,.F.,1SKIP+2 &&定位到第3号记录DISPSKIP-1 &&定位到第2号记录DISP(3)条件定位命令【命令格式】LOCATEFORlExpression1…[COUNTINUE]【命令说明】该命令用于定位到满足条件的记录上。找到满足条件的继续将定位在第一个上,如果还要定位到第二个满足条件的记录上,则用COUNTINUE。可以利用FOUND()函数来测试是否找到满足条件的记录,如果找到其值为.T.,否则为.F.。【例】定位并显示男生的情况。命令如下:USE学生LOCATEFOR性别=”男”&&定位到第一个男生的记录,为徐小小?FOUND() &&结果为.T.DISPCOUNT &&定位到第二个男生的记录,为王三?FOUND()DISP(4)菜单操作先浏览指定表的数据,然后单击【表】菜单下的【转到记录】选项,在里面选择【第一个】、【最后一个】、【下一个】、【上一个】、【记录号】、【定位】则定位到相应的记录。与相应的命令功能一样,在此不在叙述。2.4.6记录的插入【格式】INSERT[BEFORE][BLANK]【功能】在当前表中某个记录的之前或之后插入记录。【说明】INSERT表示在当前记录的之后插入一条记录。INSERTBEFORE表示在当前记录的之前插入一条记录。INSERTBLANK或INSERTBEFOREBLANK表示在当前记录之后或之前插入一条空记录。插入空记录后,其后所有记录的记录号加1,空记录只有记录号而无内容。【例】给“学生”表的第一条前后各插入一条空记录。命令序列如下:USE学生INSERTBLANK &&在第一条的后面插入一条空记录。GOTOPINSERTBEFOREBALANK &&在第一条的前面插入一条空记录。BROW &&浏览结果如图所示。2.4.7记录的删除和恢复

1记录的逻辑删除【命令格式】DELETE[<范围>][FOR<条件>]【功能】逻辑删除指定范围内符合条件的记录。删除标记用“*”表示。【例】逻辑删除表teacher.dbf中的第3个和第5个记录。USEteacherEXCLUSIVEGO3DELETEGO5DELETELIST【例】删除“学生”表中的部分数据。命令序列如下:USE学生DELEFOR性别=”男&&给所有为男生的记录做删除标记。DELEFORLEN(ALLTRIM(学号))=0&&给所有学号为空的记录做删除标记。2记录的恢复【命令格式】RECALL[<范围>][FOR<条件表达式>]【功能】恢复指定范围内符合条件的被逻辑删除的记录为正常记录。【说明】RECALL仅恢复当前记录指针指向的带有删除标记一个记录。RECALLALL恢复所有带删除标记的记录。若使用FOR<条件表达式>子句,则恢复指定范围内所有符合条件的带有删除标记的记录。【例】恢复做了删除标记记录。命令序列如下:USE学生RECALLFOR性别=”男”&&去掉所有做了删除标记的男生记录。RECALLALL &&去掉所有做了删除标记记录。3记录的物理删除【命令格式】PACK【功能】物理删除所有带删除标记的记录。【说明】PACK命令不受SETDELETEON/OFF状态的影响。【例】物理删除表teacher.dbf中的第3个记录。USEteacherEXCLUSIVERECALLALLGO3DELETEPACKBROWSE4记录的清空【命令格式】ZAP【功能】物理删除表中的全部记录,删除后,表中只保留结构,没有记录。2.4.8VFP表的修改

1表结构的修改【命令格式】MODIFYSTRUCTURE【功能】打开“表设计器”对话框,修改当前表的结构。【例】用命令修改表teacher.dbf的结构。USEteacherEXCLUSIVEMODIFYSTRUCTURE2表记录的修改1.在“浏览”窗口中修改记录2.EDIT/CHANG命令3.REPLACE命令【命令格式】REPLACE[<范围>][<字段名1>WITH<表达式1>],[<字段名2>WITH<表达式2>]…[<字段名n>WITH<表达式n>][FOR<条件表达式>]【功能】用表达式的值替换指定字段的值,即用表达式1的值替换字段名1原来的值;用表达式2的值替换字段名2原来的值;……。

2.4.9表的关闭【命令格式】USE【命令说明】关闭当前所打开和正使用的表

2.5数据库表的其他操作(1)自由表添加到数据库有时给了给表设置规则或默认侄,需要把自由表变成数据库表,其方法是:在【数据库】菜单或快捷菜单中单击【添加表】选项,弹出打开表的对话框,选择所要添加的表,然后单击【确定】按钮,就把自由表变成了数据库表。(2)数据库表结构的修改在数据库设计器中,选中所要修改的表,然后在【数据库】菜单或快捷菜单中单击【修改】选项,修改表的结构,单击【确定】按钮完成修改。(3)数据库表数据的浏览在数据库设计器中,选中所要浏览的表,然后在【数据库】菜单或快捷菜单中单击【浏览】选项,可以归表中的数据进行修改、删除、追加等操作。

(4)数据库表的移去有时可以根据需要将数据库表移出成为自由表,其方法是:先在数据库设计器中选中所要移出的表,然后在【数据库】菜单或快捷菜单中单击【移去】或【删除】选项,弹出对话框。单击【移去】按钮,则把数据库表变成了自由表。(5)数据库表的删除数据库中不需要的数据库表可以删除,删除之后不能在恢复。操作方法与移去表的方法基本一样,只单击【删除】按钮,则把所选择的表物理删除。

2.6排序和索引排序索引索引在数据库设计器的应用数据表的排序

排序(SORT)操作的结果是创建一个新的数据表文件,这个新文件可以与原来的表文件大小、内容完全一样,但是其中数据记录的排列顺序经过求重新整理。

索引的目的也是对数据表排序,但是它不会创建一个新的数据表文件,而是创建一个不能脱离原表独立使用的索引文件。在索引文件中包含了排序关键字和记录编号字段,系统使索引文件中的关键字值按要求排序,并通过记录号连接到原表相应记录上。排序字段单关键字排序SORT命令语法SORTTOTableNameON

FieldName1[/A][/D][/C][,FieldName2[/A][/D][/C]...][ASCENDING|DESCENDING][Scope][FORlExpression][FIELDSFieldNameList]范例以“身份证号码”字段为关键字段递增排序后将结果存入表test1.dbf中单关键字排序SORT命令范例以“性别”为关键字段进行递减排序后,将结果存入表test2.dbf中。组合关键字排序

记录以“性别”字段为第一级关键字,按递增排序(即男性在前女性在后);若遇到性别值相同的记录时,则以“身高”字段为第二级关键字,按递增排序;若还有身高值又相同的记录,则以“学生姓名”字段为第三级关键字,按递增排序(即汉语拼音的顺序)。组合关键字排序

递减排序“性别”递减排序(即女性在前);“身高”字段递增排序;“学生姓名”字段递减排序选择性排序

制定排序范围为前5条记录排序条件为身高大于170cm的记录排序后的新表将只有这几个字段内容索引的类型

VisualFoxPro支持4种不同类型的索引

主索引

候选索引

普通索引

唯一索引

主索引是能够惟一地确定数据表中一条记录的字段,或字段组合表达式。

表中仅能拥有一个主索引字段,但是却可以拥有多个候选索引。其他具备唯一性验证能力的字段,就只能指定为候选索引。普通索引的字段不要求具有数据的唯一性;表记录排序时,会按自然顺序把关键字段值相同的记录排列在一起。唯一索引对关键字段值的要求与普通索引一样,但是在排序时,它只将相同关键字值的第一条记录编入索引中。索引文件的创建

1.使用表设计器创建单字段索引

设置索引排序方式普通索引索引文件的创建

1.使用表设计器创建字段表达式索引

索引名称普通索引单击该按钮索引文件的创建

1.使用表设计器创建字段表达式索引

索引表达式普通索引索引文件的创建

1.使用表设计器创建字段表达式索引

设置筛选表达式普通索引索引文件的创建

1.使用表设计器创建字段表达式索引

筛选表达式普通索引索引文件的创建

1.使用表设计器创建字段表达式索引

范例编号索引的名称索引的类型关键值表达式升序或降序1身份证号码主索引身份证号码升序2学生姓名普通索引学生姓名升序3性别普通索引性别降序4出生日期普通索引出生日期升序5身高普通索引身高降序6性别与日期普通索引IIF(性别,"T","F")+DTOS(出生日期)降序通过表设计器为数据库Campus的表student创建如下5个索引项。索引文件的创建

1.使用表设计器创建字段表达式索引

单击输入索引名称索引文件的创建

1.使用表设计器创建字段表达式索引

升序索引文件的创建

1.使用表设计器创建字段表达式索引

完成的索引项索引文件的创建

2.使用INDEX命令创建字段表达式索引

语法INDEXONeExpressionTAGTagName[OFCDXFileName][FORlExpression][ASCENDING|DESCENDING][UNIQUE|CANDIDATE][ADDITIVE]关键字表达式索引的标识名称指明新建索引项将存放的独立复合索引文件名索引文件的创建

2.使用INDEX命令创建字段表达式索引

索引的名称索引的类型表达式升序或降序身份证号码候选索引身份证号码升序学生姓名普通索引学生姓名升序性别普通索引性别降序出生日期普通索引出生日期升序身高普通索引身高降序性别与日期普通索引IIF(性别,"T","F")+DTOS(出生日期)降序范例用INDEX命令为数据库Campus的表student创建下表的6个索引项,并将这些索引项添加到结构复合索引文件student.cdx中。索引文件的创建

2.使用INDEX命令创建字段表达式索引

范例一索引文件的创建

2.使用INDEX命令创建字段表达式索引

范例二索引文件的创建

2.使用INDEX命令创建字段表达式索引

范例三索引操作

4.索引项的删除选中索引项后单击“删除”按钮在打开数据表文件后,对于结构复合索引文件或独立复合索引文件,都可以使用删除命令DELETETAGALL|<TagName1>[,<TagName2>]……删除索引项索引操作

5.重建索引

执行REINDEX命令可以更新已有的索引。范例一因为此时仅有结构化复合索引文件student.cdx被打开,所以会更新student.cdx的所有索引索引操作

5.重建索引

执行REINDEX命令可以更新已有的索引。范例二因为student.dbf与stucdx.cdx都被打开,所以会更新stucdx.cdx中所有的索引数据库表之间的关系临时关系是指在两张打开的表之间建立起来的一种临时性关联。若其中一张表关闭,临时关系将被解除。永久关系是数据库表之间的一种永久关联,不仅运行时存在,而且一直保留。表之间的永久关系是通过索引建立的。临时关系与永久关系之间的区别与联系永久关系临时关系区别作用设置参照完整性控制两张打开的表之间记录的访问创建方法1.创建主表的主索引或候选索引2.创建子表的任意类型索引3.基于索引创建永久关系1.打开两张要创建临时关系的表2.设置子表的主控索引3.选择主表工作区4.用SETRELATION命令创建临时关系创建条件只能在同一张数据库中的表之间创建可以在任意库表,自由表,视图,临时表之间创建

主表数一张表可以作为多张永久关系的子表,即一张子表可以有多张主表一张表只能作为一张临时关系的子表生命期永久存储在数据库文件中随表的关闭而解除联系1.创建永久关系或临时关系的基础是两张表之间存在着关系2.VFP根据表之间的永久关系在表单或报表的数据环境中自动创建临时关系3.一张主表可以有多张子表3.索引在数据库设计器的应用(1)主索引的建立由于自由表中是不能建立主索引,但有时为了保证表中数据的唯一性或者某字段不允许出现重复值,需要利用数据库设计器为数据库表建立主索引。其方法是:选择所要设置主索引的表,进入【表设计器】对话框的【索引】选项卡,如图3.30所示,然后在类型下给学号字段设置主索引。单击【确定】按钮完成主索引的建立。(2)多表间关系的建立首先打开“成绩管理”数据库设计器,给学生表以字段“学号”建立主索引,课程表以字段“课程号”建立主索引,选课表分别以字段“学号”和“课程号”建立普通索引。然后用鼠标把学生表中学号主索引拖动选课表的学号普通索引,建立一对多的联系;同样的方法给课程表中课程号主索引和选课表中课程号普通索引建立一对多的联系。如图3.33所示。图3.33(3)设置表间关系的参照完整性参照完整性是指数据库中的相关表之间的一种数据完整性约束规则,有更新、删除、插入规则。要建立这里规则必须依赖于前面所建立的永久关系和清理数据库。更新规则:是指当主表中与从表连接的字段值发生变化时,从表如何处理对应的数据。如果选择【级联】,则用连接字段主表的值自动修改从表对应的记录。如果选择【限制】,若在从表中找到对应的记录,则禁止主表修改连接字段的值。如果选择【忽略】,则可以随意修改主表的数据,不受从表的影响。删除规则:是指当主表删除记录时,从表如何处理对应的记录。如果选择【级联】,则删除从表中与主表连接字段对应的记录。如果选择【限制】,则禁止删除主表中与从表连接字段对应的记录。如果选择【忽略】,则可以随意删除主表的记录,不受从表的影响。插入规则:是指当给从表插入记录时,与连接阶段相关的主表如何处理该操作。如果如果选择【限制】,如果在主表中找不到对应的连接字段值,则禁止从表插入记录。如果选择【忽略】,则可以随意给从表插入记录,不受主表的影响。

【例3-26】给“学生管理”数据库中的学生、课程、选课表设置完整性。操作步骤如下:首先给这三表按图3.33建立好永久关系。然后单击【数据库】菜单下的【清理数据库】,执行清理数据库操作。清理完成后单击【数据库】菜单下的【编辑参照完整(I)…】,如图3.34所示。将所有关

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论