VFP第三章表
- 格式:rtf
- 大小:9.49 MB
- 文档页数:40
3.4 表的使⽤
1. ⼯作区
⼯作区:
指⽤来标识⼀张打开的表的区域。
⼀个⼯作区在某⼀时刻只能打开⼀张表,但可以同时在多个⼯作区打开多张表,⼀张可以在多个⼯作区中多次被打开。
每个⼯作区都有⼀个编号。
表的别名:
在⼯作区中打开表时为该表所定义的名称。
可以⾃定义别名,否则系统默认就以表名作为别名。
若⼀张表在多个⼯作区中被打开,系统默认在表名后依次加_a 、_b…。
⾃定义别名的格式: USE ALIAS
当前⼯作区:
正在使⽤的⼯作区。
可以通过“数据⼯作期窗⼝”或⽤ SELECT命令把任何⼀个⼯作区设置为当前⼯作区。
SELECT 命令格式: SELECT |
要操作⾮当前⼯作区中的表,可以把其它⼯作区选为当前⼯作区,或在命令中强⾏指定⼯作区。
命令格式: IN |
ALIAS([⼯作区号])函数:
测试指定⼯作区中的表的别名,⽆参数时指当前⼯作区表的别名。
SELECT([别名])函数:
测试指定别名的表所在的⼯作区号,⽆参数时指当前⼯作区的区号。
2. 表的打开和关闭
打开表的途径
关闭表的途径
⽂件菜单中的打开
⼯具栏上的打开
数据⼯作期窗⼝中关闭
USE
数据⼯作期窗⼝中打开
USE
USE IN |
CLOSE ALL
USE IN
USE AGAIN
CLOSE DATABASE
CLOSE TABLE
USE ALIAS
退出VFP系统,则关闭所有的表。
3.1 VFP6.0表1. 表的概念表(数据表):是指存放在磁盘⽂件中的⼀张⼆维表。
(相当FoxPro 2.x 版本中的数据库)⾃由表:不属于任何数据库的表。
数据库表:包含在⼀个数据库中的表。
表⽂件名:表名可以由字母、数字或下划线组成,系统⾃动给出的扩展名为 .DBF。
备注⽂件名:当表中有备注型或通⽤型字段时,系统⾃动⽣成与所属数据表的表名相同、扩展名为:.FPT的⽂件名。
表结构:存储表记录的公共结构。
(就是指⼀张表的表头结构,即字段的属性)。
记录:表中的⼀⾏。
它是多个字段的集合,同⼀张表的每个记录都有相同的字段。
字段:表中的⼀列。
它规定了数据的特征。
关系型数据表的特点:(1)每⼀个字段不可再分解,也不能有名字相同的字段;(2)每⼀列中的数据都有相同的数据类型;(3)表中没有内容完全相同的⾏(记录)。
2. 字段的基本属性字段的属性:包括:字段名、数据类型、字段宽度、⼩数位数、空值⽀持字段名:即每个字段的名字,必须以字母开头,可由字母、数字、下划线组合⽽成,字母⼤、⼩写⽆区别,但其中不许有空格或其它字符。
⾃由表的字段名最多由10个字符组成,数据库表的字段名⽀持长名,最多可达128个字符。
如果从数据库中移去⼀个表,那么此表的长字段名将被截短成 10 个字符。
VFP允许长字段名和长表名,但使⽤长名称对于跨平台的操作可能遇到难以预料的结果。
数据类型:指该字段的数据特征。
字段宽度:指该字段所能容纳数据的的字节数。
⼩数位数:指数值型数据将保留⼏位⼩数。
此时的字段宽度 = 整数位数+1+⼩数位数。
NULL 值(空值):⽆明确的值。
NULL 值不等同于零或空格。
⼀个 NULL 值不能认为⽐某个值(包括另⼀个 NULL 值)⼤或⼩,相等或不同。
VFP 6.0表中字段的数据类型字段类型代号说明字段宽度使⽤⽰例C字母、汉字和数字型⽂本每个字符为1个字节,最多可有 254 个字符学⽣的学号或姓名, "8199101" 或 '李⽴'货币型Y货币单位8 个字节⼯资, $1246.89⽇期型D包含有年、⽉和⽇的数据8 个字节出⽣⽇期,{^1980/07/08}⽇期时间型T包含有年、⽉、⽇、时、分、秒的数据8 个字节上班时间,{^2005/02/20 9:15:15 AM}逻辑型L“真”或“假”的布尔值1 个字节课程是否为必修课,.T. 或 .F.数值型N整数或⼩数在内存中占 8 个字节;在表中占1 ⾄20个字节考试成绩, 83.5双精度型B双精度浮点数8 个字节实验要求的⾼精度数据浮点型F与数值型⼀样 整型I不带⼩数点的数值4 个字节学⽣的数量通⽤型GOLE 对象在表中占 4 个字节图⽚或声⾳备注型M不定长度的⼀段⽂字在表中占 4 个字节学⽣简历字符型(⼆进制)C任意不经过代码页修改⽽维护的字符数据每个字符⽤1个字节,最多可有 254 个字符 备注型(⼆进制)M任意不经过代码页修改⽽维护的备注数据在表中占 4 个字节 3. 表的基本操作表的创建:设计表名和表结构、输⼊记录、建⽴索引数据维护:增加记录、修改记录、删除记录创建表的主要步骤:设计表结构→输⼊记录→建⽴索引→数据维护4.关于表操作的⼏个基本命令命令格式功能CREATE 表⽂件名创建⼀个新的⾃由表的结构USE 表⽂件名打开指定的表⽂件USE关闭当前表⽂件LIST ALL显⽰当前表的全部记录内容(类似于DOS 命令中的dir)DISPLAY ALL分屏式地显⽰当前表的全部记录内容(类似于DOS中的dir/p)DISPLAY STRUCTURE显⽰当前表的结构(分屏显⽰)LIST STRUCTURE显⽰当前表的结构(不分屏显⽰)MODIFY STRUCTURE调出表设计器,修改当前表的结构。
1. 索引(Index)索引是根据索引关键字(即索引表达式)的值进行逻辑排序的一组指针。
索引提供对数据的快速访问,可以对表的各行强制实现唯一性。
索引文件由索引序号和对应于索引序号的表的记录号(亦称为指针)组成。
2. 索引关键字(Index Key)索引关键字是用来作为建立索引的依据。
它通常是一个字段或字段表达式。
例如,学生表(XS.DBF)中有8个记录,输入时的物理顺序如下:记录号XH XM XB ZYDH XIMING1 950101 李林男102001 信息管理系2 950106 高山男102001 信息管理系3 950105 陆海涛男102001 信息管理系4 950104 柳宝女102001 信息管理系5 950102 李枫女102001 信息管理系6 950103 蓝军男102001 信息管理系7 960201 林一风男109003 计算机科学系8 960203 高平男109003 计算机科学系现以XH字段作为索引关键字,按升序建立索引,索引文件的情况如下:P83Index # Table Record # XH1 1 9501012 5 9501023 6 9501034 4 9501045 3 9501056 2 9501067 7 9602018 8 960203第一列是索引号,第二列是对应于表中的记录号。
当该索引起作用时,浏览学生表时,记录按学号的顺序排列。
索引表达式的构成2-1索引表达式的构成与一般表达式的构成一样,只是索引表达式一般与表的字段有关。
索引表达式可以由单个字段构成,也可以是多个字段的组合。
需要注意的是,不能基于备注型字段和通用型字段建立索引。
索引表达式的构成2-2对于基于多个字段的索引表达式,可以按多个字段的值进行排序。
用多个字段建立索引表达式时,要注意以下几点。
⒈字符型表达式⒉算术表达式⒊不同类型字段构成一个表达式⒈字符型表达式⒈表达式中字段的前后顺序将影响索引的结果。
第三章表的创建和使用对于关系型数据库来说,数据均以二维表的形式被保存在表中。
在VFP中表分为两种类型:数据库表和自由表,数据库表是指从属于某个数据库的表(简称―库表‖),而自由表是指不从属于任何数据库的表。
与自由表相比,数据库表具有自由表的所有特性外,还具有数据库管理的其他功能。
3.1 表结构表(Table)是指存储放在磁盘文件中的二维表,一张表保存为一个表文件(.DBF)。
表文件的文件名必须遵守Windows系统对文件名的约定,并且不可用A~J中的单个字母作文件名。
表中的列称为字段(Field)。
字段规定了数据的特征。
例如,学生表中学号、姓名、性别和系名就是字段。
每张表最多可以有255个字段。
表的行叫做记录(Record),每条记录表示一个实体。
记录是多个字段的集合。
同一张表的每一个记录都有相同的字段。
3.1.3 表结构的创建表创建后,系统以扩展名.dbf保存表文件。
如果表中有备注字段或通用字段,则自动地产生与表名相同但扩展名为.fpt的备注文件2. CREATE TABLE-SQLCREATE TABLE-SQL命令的一般格式是:CREATE TABLE 表文件名(字段名1 字段类型[(字段宽度[,小数位数])][NULL|NOT NULL][,字段名2 字段类型[(字段宽度[,小数位数])]]……)说明:本书中命令的表示约定如下:垂直分隔符―|‖分隔的项,表示多项中只能选择一个。
斜体字是占位符,在实际使用中要用具体的信息代替。
方括号[ ]所括的表示是可选项,[ ]本身不是命令的一部分。
省略号―……‖表示参数可以有任意多项。
CREATE TABLE-SQL其中字段类型必须要用字母表示。
例如,学生表结构的创建可以使用以下命令:CREATE TABLE XS2 (xh C(6),xm C(8),xb C(2),zydh C(6),ximing C(18))则XS2表的结构与XS表一模一样。
这个命令主要用在程序代码中。
创建JS表:CREATE TABLE JS (GH C(5), XM C(8),XB L,XDH C(2),GZRQ D, CSRQ D, JBGZ N(7,2),JL M)3. 使用Null 值在建立新表时,可以指定表字段是否接受null 值。
在―表设计器‖的―字段‖选项卡中选定或清除字段的Null 列。
当Null 列被选定时,该字段接受null 值。
或者,在CREATE TABLE 命令中使用NULL 和NOT NULL 子句。
3. 使用Null 值例如,以下命令可以创建ZG表,其中的gh (工号)和xm(姓名)字段不允许为null 值,而csrq(出生日期)字段则允许为null 值:CREATE TABLE zg (gh C(6) NOT NULL, xm C(8) NOT NULL, csrq D NULL)也可以用SET NULL ON 命令控制表字段中是否允许null 值。
3.1.3 修改表结构建立表之后,还可以修改表的结构。
可能要添加、更改或删除字段的名称、宽度、数据类型等。
修改XS表的结构:USE XS && 打开XS表ALTER TABLE TableName ADD|ALTER [COLUMN] FieldName FieldType[(nFieldWith [,nPrecision])] 或ALTER TABLE TableName DROP[COLUMN] FieldName或ALTER TABLE TableName RENAME COLUMN FieldName1 TO FieldName2 ADD增加字段,ALTER修改字段,DROP 删除字段,RENAME字段改名ALTER TABLE - SQL1)添加字段:可使用ALTER TABLE命令的ADD [COLUMN]子句。
例如,可以使用以下命令把―BJMC‖(班级名称)字段添加到XS表中:ALTER TABLE XS ADD COLUMN BJMC C(12)ALTER TABLE - SQL2)重命名字段:可使用ALTER TABLE命令的RENAME COLUMN子句。
例如,可以使用以下命令重新命名XS表的―BJMC‖字段为―BJ‖:ALTER TABLE XS RENAME COLUMNBJMC TO BJALTER TABLE - SQL3)删除字段:可使用ALTER TABLE命令的DROP[COLUMN]子句。
例如,可以使用以下命令从XS表中删掉―BJ‖字段:ALTER TABLE XS DROP COLUMN BJ需要注意:在修改宽度、类型时,是否会引起数据益出、丢失;在修改字段名时,是否会引起数据的丢失以及该字段是否在其他位置被引用。
3.2 表的打开与关闭VFP 在使用一个表时,首先必须把表打开。
一个打开的表必须占用一个工作区。
3.2.1 工作区所谓工作区是指用以标识一个打开的表的区域。
打开一个表时,必须为该表指定一个―工作区‖。
每个工作区有一个编号。
称为工作区号,其编号范围为1~32747(前10个工作区号也可以用字母A~J表示)如果工作区中已有打开的表,可以用表的―别名‖作为工作区号。
默认第一次打开又没有设置别名,那么别名就是表名。
以后看到别名大多数都是指的表名一个工作区中只能打开一个表。
如果在一个工作区中已经打开了一个表,再在此工作区中打开另一个表时,前一个表将自动被关闭。
但可以同时在多个工作区中打开多个表。
一个表也可以在多个工作区中多次被打开。
VFP 正在使用的工作区称为当前工作区,即默认的工作区。
当通过界面交互式地或用命令进行有关表的处理操作时,如果不指定其他工作区,则其作用对象是当前工作区中的表。
VFP启动后,系统默认的当前工作区号为1。
选择工作区格式是:SELECT 工作区号|别名例如,JS表已在2号工作区中打开,当前工作区为1。
要把JS表所在工作区选为当前工作区的命令是:SELECT JS或SELECT 23.2.3 表的打开和关闭在―项目管理器‖窗口中选择需要打开的表后单击―修改‖或―浏览‖按钮时也会自动地打开。
表的这种打开是在当前未被使用的最小工作区中打开,且该工作区为当前工作区。
(2).使用命令打开表在―命令‖窗口或程序中,可以使用USE命令打开一张表。
该命令的基本语法格式:USE TableName[IN nWorkArea|cTableAlis] [AGAIN][ALIAScTableAlias][NOUPDATE]IN子句用于指定表在哪个工作区中打开,缺省时为当前工作区;AGAIN用于说明该表再次打开,即表在多个工作区中同时被打开;ALIAS子句用于定义表的别名,缺省时表的别名一般与表名相同;NOUPDATE指定表打开后不允许修改其结构和数据。
例:下列命令用于打开表可以使用如下命令在当前工作区中打开一个表:USE 表文件名如果要在一个未被使用的区号最小的工作区中打开一个表,可以使用如下命令:USE 表文件名IN 0 或者SELECT 0USE 表文件名在最小未用工作区中打开ZG表,并且不允许修改USE ZG IN 0 NOUPDATE一个表可以在多个工作区中被多次打开。
方法是在再次打开同一个表时,必须在USE命令后面加上AGAIN子句。
例如,USE xsSELECT 0USE xs AGAIN IN 5 &&工作区5别名EUSE xs AGAIN IN 15 &&工作区15别名W15工作区中表的别名表的别名是对工作区中打开的表的一个临时标识。
在工作区中打开表时,可以为该工作区赋予一个自定义的别名。
方法是使用带别名的USE命令:USE 表文件名ALIAS 别名例如,打开XS表,并冠以―STUDENTS‖别名,命令是:USE xs ALIAS STUDENTS工作区表的别名*如果在打开表时没有自定义别名,则系统默认以表文件名作为别名。
例如,用USE xs命令打开xs表,则xs表的别名为―xs‖。
用ALIAS([工作区号])函数可以取得指定工作区表的别名。
如果指定的工作区中尚未打开表,则该函数返回空字符串。
用SELECT([别名])函数可以测试指定别名的工作区区号。
别名在打开表时如果未利用ALIAS子句指定别名,则别名与表名相同,但如果一张表同时在多个工作区中打开均未指定别名,则在第一次打开的工作区中,别名与表名相同,其他工作区中用A~J以及W11~W32747表示。
当前表打开的情况以及表的别名等,用户可以在‖数据工作期―窗口中进行查看。
2. 表的关闭如果在一个工作区中已打开了一个表,当在此工作区中再次打开另一个表时,先前的表将自动被关闭。
另外,可以通过界面操作或命令关闭打开的表。
(1)关闭当前工作区中的表的命令是:USE(2)关闭非当前工作区中的表的命令是:USE IN 别名|工作区或者SELECT 别名|工作区USE(3)关闭所有工作区中的表的命令是:CLOSE ALL 或者CLOSE DATABASES 或者CLOSE TABLES(4)在退出VFP 系统时,所有的表都将被关闭。
3.2.4表的独占与共享使用VFP是一个多用户的开发环境。
网络上的多个用户可以在同一时刻访问一张表。
这种一张表可以同时被多个用户访问的情况,就是表的共享使用。
反之当一个表只能被一个用户打开时,称为表的独占使用。
1.设置独占与共享打开表的默认状态VFP在默认状态下,表是以独占方式打开的。
当打开一个表时,如果没有指定用何方式打开,即用系统默认的方式打开。
系统的默认打开方式可以通过―工具‖菜单中的―选项…‖来设置。
1.设置独占与共享打开表的默认状态或使用SET EXCLUSIVE命令来设置:SET EXCLUSIVE OFF &&设置―共享‖为默认打开方式SET EXCLUSIVE ON &&设置―独占‖为默认打开方式2. 强行用一种方式打开表在打开表时,亦可以用显式指定的独占或共享方式打开。
在―打开‖窗口的右下角有―独占‖复选框,打―√‖表示独占,否则,表示共享。
在―打开‖对话框或―使用‖窗口中也有同样的选择。
强行用一种方式打开表在使用命令打开表时,可以加子句―SHARED‖(共享)或―EXCLUSIVE‖(独占)来指定打开方式。
例如,USE XS SHARED &&以共享方式打开XS表USE JS EXCLUSIVE &&以独占方式打开JS表说明:改变SET EXCLUSIVE的设置并不改变已经打开表的状态。
另外,一个表同时被多次打开时,只以第一次的打开方式为准。
例如,第一次是以独占方式打开一个表,则在另一个工作区中再次打开该表时,即使指定SHARED方式,系统仍将以独占方式打开。