第三章 表和数据库主 讲,梁 爽第三章 表和数据 库
3-1 Visual FoxPro中的表文件一、表文件的组成
表是 VFP中最基本的文件,是 VFP处理数据和建立关系型数据库及应用程序的基本单元,是二维表。
表的扩展名为,DBF,由表名、表结构和表记录构成。
表的结构就是二维表的表头,表中的列称为 字段,每一字段都有唯一的名称,称为 字段名 。表中的每一行称为一条 记录 。
最前面的记录称为首记录,最后面的记录称为尾记录。
VFP有两种类型的表,数据库表 和 自由表 。
对表的结构进行定义时,需要定义表中各字段的参数,字段名,
字段类型,字段宽度 和 小数位数,是否允许为空、是否建立索引等 。
表的 逻辑结 构数据表 实 例第三章 表和数据 库二、数据表的建立
建立一个表文件包括两部分工作,建立表结构 和 输入表记录 。
1、建立表结构
(1) 命令方式,CREATE [表文件名 ]
(2) 菜单方式
(3) 使用工具按钮
(4) 在数据库设计器中建立
(5) 使用项目管理器建立
在打开的表设计器中,建立数据表结构 。
第三章 表和数据 库
2、输入表记录
(1) 编辑方式:,显示,- >,编辑,
(2) 浏览方式:,显示,- >,浏览,
若对以前建立的表追加记录,先要打开表,然后单击,显示,
菜单下的,追加方式,进入追加记录状态
3、修改表结构
(1) 命令方式,MODIFY STRUCTURE
(2) 菜单方式
(3) 数据库设计器
(4) 项目管理器
在打开的表设计器中进行表结构的修改。
第三章 表和数据 库
3-2 表的基本操作一、打开和关闭数据表
1、打开表命令格式,USE [表名 /?]
2、关闭表命令格式一,USE //关闭在当前工作区打开的表二、显示记录
1,LIST [范围 ] [FOR 条件 ] [FIELDS 字段名表 ]
注意,如果同时缺省 <范围 >和 <条件 >子句,LIST命令自动显示全部记录,并且指针自动移到 EOF位置。
2,DISPLAY [范围 ] [FOR 条件 ] [FIELDS 字段名表 ]
注意,如果同时缺省 <范围 >和 <条件 >子句,DISPLAY命令只显示当前的一条记录,也就是指针所指向的那条记录。
第三章 表和数据库三、表结构的显示和修改
1、显示表结构
LIST/DISPLAT STRUCTURE
2、修改表结构
MIDIFY STRUCTURE
第三章 表和数据库四、记录的定位
1、菜单方式
2、命令方式( 表文件结构 )
(1) 绝对定位,GO/GOTO <记录号 >/ TOP/BOTTOM
(2) 相对定位,SKIP n/-n
(3) 常用函数
RECNO( ):返回当前记录号
BOF( ):测试指针是否指向文件首
EOF( ):测试指针是否指向文件尾第三章 表和数据库五、修改记录
1,BROWSE [范围 ] [FOR 条件 ] [FIELDS 字段名表 ]
2,CHANGE [范围 ] [FOR 条件 ] [FIELDS 字段名表 ]
3,EDIT [范围 ] [FOR 条件 ] [FIELDS 字段名表 ]
4,REPLACE [范围 ] [FOR 条件 ] 字段名 WITH 表达式注意,REPLACE是成批替换修改命令,将规定范围内符合条件的记录,用指定表达式的值去替换指定字段的值。
第三章 表和数据库六、追加记录
1、菜单方式:当打开一个表后,主菜单后会出现,表,
菜单项,选择里面的,追加新记录,,就可以在表尾部逐条追加新记录;若选择里面的,追加记录,,则可追加其他表中的记录。
2、命令方式:
逐条追加记录,APPEND [BLANK]
成批追加记录,APPEND FROM 另一表名 [范围 ]
[FOR 条件 ] [FIELDS 字段名表 ]
第三章 表和数据库七、记录的插入
INSERT:用编辑方式在当前记录后插入新的记录
INSERT BLANK:直接在当前表中插入空记录。
INSERT BLANK BEFORE:在当前记录前插入记录。
第三章 表和数据库八、删除记录删除可分为 逻辑删除 和 物理删除 两种操作 。 逻辑删除还可以恢复,而物理删除则不可恢复 。
1,逻辑删除 ( 就是给指定的记录作删除标记 )
(1) DELETE [范围 ] [FOR 条件式 ]
(2),表 /删除记录,-确定范围和条件
(3) 单击记录 左侧 小方框第三章 表和数据库
2,恢复删除记录 (将被逻辑删除的记录去掉删除标记 )
(1) RECALL [范围 ] [FOR 条件式 ]
(2) 单击记录左侧小方框
(3),表 /恢复记录,-确定范围和条件
3,物理删除 ( 就是删除带有删除标记的记录 )
(1) PACK
(2),表 /彻底删除,
4,清空数据表
ZAP
第三章 表和数据库九、其他文件操作
1、表文件的复制
COPY TO <新表文件名 > [FOR 条件 ] [FILEDS 字段名表 ]
2、表文件结构的复制
COPY STRUCTURE TO <目的表文件名 > [FILEDS 字段名表 ]
第三章 表和数据库
3-3 排序及索引一、排序
SORT TO 新文件名 ON 字段 1[/A|/D][/C][,字段 2...]
[范围 ] [FIELDS 字段名表 ] [FOR 条件式 ]
【 说明 】
1.对当前打开的表对指定范围内满足条件的记录,按指定的字段(叫“关键字”)进行排序,生成新的表文件。
2.排序的关键字只能是 C,N,D型数据
3,/A:升序 (默认 ); /D,降序; /C:不区分大不写第三章 表和数据库二、索引排序要产生一个新文件,这将占用大量磁盘空间,因此,在实际操作中一般都是建立索引。
索引是从 逻辑 上对表进行重新整理,按照指定的关键字段的建立索引。索引是一个已排序了的关键字值与记录号的 对应列表,索引并不改变表中记录的存储顺序,只改变了 Visual FoxPro读取每条记录的顺序。
表中记录实际排列顺序称为 物理顺序,在输入记录的时候确定;由索引决定的顺序称为 逻辑顺序 或 索引顺序 。
第三章 表和数据库
1、简单索引的建立和打开
(1) 建立索引
INDEX ON 关键字段 TO 索引文件名 (升序 )
INDEX ON -关键字段 TO 索引文件名 (降序 )
(2) 打开和关闭索引打开索引,USE <表名 > INDEX <索引文件名 >
SET INDEX ON <索引文件名 >
关闭索引,SET INDEX TO 或 CLOSE INDEX
主控索引的设置,SET ORDER TO 索引文件名 /数值第三章 表和数据库
2、复合索引的建立
INDEX ON 关键字段 TAG 索引标识名 [ASCE/DESC]
结构复合索引在打开表文件时,会自动打开。
主控索引的设置,SET ORDER TO TAG 索引标识
3、删除索引
DELETE TAG 索引标识名
DELETE TAG ALL
第三章 表和数据库三、数据表的查询在数据资源的管理过程中,使用最频繁的操作莫过于查询满足一定条件的一系列数据,从而为日常决策提供足够的判断依据 。 对表记录的查询系统提供了两类查询命令:
顺序查询 和 索引查询 。
索引查询是根据主索引进行查找。查找与索引关键字相匹配的第一条记录。
第三章 表和数据库
1、顺序查询
LOCATE [范围 ] FOR 条件式
【 说明 】 在表指定范围中查找满足条件的第一条记录
CONTINUE
【 说明 】 继续查找下一个满足条件的记录
CONTINUE命令必须在 LOCATE命令之后使用,否则出错 。
第三章 表和数据库
2,索引查询
(1) FIND 字符串 /数值常量
【 说明 】
在表文件的主控索引中查找关键字值与 <字符串 >或 <数值常量 >相匹配的第一个记录 。
查询字符串,字符串可以不用定界符括起来 。
允许查询字符型内存变量,但必须使用 宏替换函数 。
由于索引文件中关键字表达式值相同的记录总是排在一起的,可用 SKIP,DISP命令来逐个查询 。
第三章 表和数据库
(2) SEEK 表达式
【 说明 】
在表文件的主索引中查找关键字值与 <表达式 >值相匹配的第一个记录 。 可以查找字符型,数值型,日期型,逻辑型表达式的值 。
表达式为字符串时,必须用定界符括起来 。 日期常量也必须用大括号括起来 。
表达式可以为一复杂的表达式,先计算表达式的值,然后用其值进行查询 。
由于索引文件中关键字表达式值相同的记录总是排在一起的,可用 SKIP,DISP命令来逐个查询 。
第三章 表和数据库
3-4 表的统计汇总
1、统计记录个数
COUNT [范围 ] [FOR 条件式 ] [TO 内存变量 ]
【 说明 】
用于统计当前表中指定范围内满足条件的记录个数 。
若无 <范围 >和 FOR <条件 >,则将计算所有记录个数 。
TO <内存变量 >,可将计算结果保存在 <内存变量 >中 。
第三章 表和数据库
2,数值字段纵向求和
SUM [表达式表 ] [范围 ] [FOR 条件式 ] [TO 内存变量表 ]
【 说明 】
对指定范围内,满足条件的记录按指定数值型表达式分别求和 。
缺省范围,条件表示对全部记录统计 。
缺省数值型表达式表,表示对库中所有数值型字段和。
数值型表达式表的个数应与内存变量的个数一致。
TO <内存变量 >,则可将计算结果保存在 <内存变量 >
中,否则只在屏幕上显示结果。
第三章 表和数据库
3、数值字段求平均值
AVERAGE [表达式表 ] [范围 ] [FOR 条件式 ] [TO 内存变量表 ]
【 说明 】
对指定范围内,满足条件的记录,按指定的数值型字段计算平均值 。
缺省范围,条件表示对全部记录操作 。
缺省数值型表达式表,表示对当前库中所有数值型字段求平均值。
数值型表达式表的个数应与内存变量的个数一致。
第三章 表和数据库第三章 表和数据库
4、表达式统计
CALCULATE 表达式表 [范围 ]
[FOR 条件式 ] [TO 内存变量表 ]
【 说明 】
对当前表文件中指定范围内满足条件的记录进行指定的计算工作 。
表达式表可以是下列函数的任意组合:
函数名 功能
AVG() 计算平均值
CNT() 统计记录个数
MAX() 求最大值
MIN() 求最小值
SUM() 求和
3-5 多表的使用迄今所讲述的对表的操作都是在一个工作区进行的,
每个工作区最多只能打开一个表文件,用 USE命令打开一个新的表,同时也就关闭了前面已打开的表。在实际应中,
用户常常需要同时打开多个表文件,以便对多个表文件的数据进行操作。为了解决这一问题,Visual FoxPro引入了工作区 的概念。 Visual FoxPro允许用户在表间建立临时关系和永久关系。
第三章 表和数据库一、工作区的概念在 VFP中,一共有 32767个工作区,每个工作区在同一时刻只能打开一个表 。
刚进入系统时,总是默认在 1号工作区中工作。
工作区的编号为 1,2,,32767,其中前十个工作区的别名为 A-J。
第三章 表和数据库正在操作的工作区称为当前工作区,系统中同一时刻有且只有一个当前工作区,选定当前工作区的命令是:
SELECT 数字区号 /字母区号 /别名在当前工作区表中访问其他工作区表中记录的格式是:
字母区号 ->字段名 或 字母区号,字段名别名 ->字段名 或 别名,字段名第三章 表和数据库
2、工作表的关联
SET RELATION TO 关联字段 INTO 别名注意:当前进行关联操作的工作区表称为主表 (父表 ),被关联工作区表称为从表 (子表 ),子表需要按照被关联字段建立索引。子表的记录指针随着父表的记录指移动。
3、工作表的联接
JOIN WITH 工作区号 TO 新表名 FOR 条件
[FIELDS 字段名表 ]
第三章 表和数据库
3-6 创建基本数据库一、数据库的基本操作
1、建立数据库
(1)通过,新建,对话框建立数据库
(2) 使用命令建立数据库
CREATE DATABASE [数据库名 ]
第三章 表和数据库
2、打开数据库
OPEN DATABASE [数据库名 ]
3、添加数据表在数据库设计器添加表使用命令添加表
ADD TABLE [自由表名 ]
4、在数据库设计器移去或删除表使用命令移去或删除表移去表,REMOVE TABLE [自由表名 ] [DELETE]
第三章 表和数据库
5、关闭数据库
CLOSE DATABASE
CLOSE ALL
6,删除数据库命令方式,DELETE DATABASE [数据库名 ]
[DELETE TABLES]
第三章 表和数据库
7、建立表间永久关系
(1)建立一对一关系父表和子表必须具有同一属性的字段,并分别设置索引父表的索引设为主索引子表的索引设为主索引或者候选索引
(2)建立一对多关系父表和子表必须具有同一属性的字段,并分别设置索引父表的索引设为主索引子表的索引设普通索引或唯一索引第三章 表和数据库第三章 表和数据库
[范围 ]短语
ALL 表示对全体记录操作
RECORD n 表示第 n条记录
NEXT n 从当前记录开始的连续 n条记录
REST 从当前记录开始到最后的记录第三章 表和数据 库记录字段字段名第三章 表和数据库文件起始 标识 (BOF)
首 记录 (TOP)
第 2个 记录
……
第 i个 记录
……
尾 记录 (BOTTOM)
文件 结 束 标识 (EOF)
记录指针 SKIP
表的逻辑结构