null第三章 表的创建和使用第三章 表的创建和使用本章
知识点
高中化学知识点免费下载体育概论知识点下载名人传知识点免费下载线性代数知识点汇总下载高中化学知识点免费下载
:自由表的创建、使用与维护
3.1 表结构
3.2 表的打开与关闭
3.3 记录的处理
3.4 表的索引
3.5 有关表操作的常用函数3.1 表结构3.1 表结构表及表结构的基本概念
(1)表的概念
(2)表结构概述
表结构的创建
(1)用“表设计器”创建表结构
(2)用create table-SQL命令创建表结构
(3)NULL值的使用
表结构的修改
(1)用“表设计器”修改表结构
(2)用alter table-SQL命令修改表结构null
1、表:是指存放在磁盘文件中的一张二维表,扩展名为.dbf,不可用A-J中的单个字母作表文件名。2、表的分类:数据库表:表文件属于某一个数据库。
自由表:表文件与数据库无关联。表结构主要是指表的字段及其属性表结构主要是指表的字段及其属性1、字段名(field name)
每一个字段的名字,用以在表中标识该字段。
命名规则:“见名知意”
2、数据类型(type)
表中的每个字段都有特定的数据类型
13种字段类型,表(3-1)P65null 3、字段宽度(width)
指该字段所能容纳的最大字节数
*整型I,备注型M,通用型G
——4字节
*货币型Y,日期型D,日期时间型T,双精度型B
——8字节
*逻辑型L
——1字节
*字符型C,数值型N,浮点型F字段的宽度需指定若表包含备注或通用型字段,系统自动生成一相应的备注文件(扩展名为.fpt)null4、小数位数(decimal)
字段宽度=整数部分+小数点+小数部分
特例:
字段宽度=整数部分+1
——纯小数
5、空值支持
空值,是用来标记记录中“没有值”。
不等同于0,空字符串,逻辑“假”null自由表设计器1)打开表设计器(多种方式)
2)在表设计器中创建表结构字段名最好不要用中文字符
用create table-SQL命令创建表结构用create table-SQL命令创建表结构 一般格式:
create table xs(xh c(8),xm c(8),xb c(2))
&&其中字段类型必须用字母表示
参见表 (2-1)P65
create table js(gh c(5),xm c(8), ximing c(18),gz n(7,2))使用NULL值使用NULL值NOT NULL和NULL子句
例如:
create table zg(gh c(6) not null,; xm c(8) not null,csrq d null)
注意:当表中字段可以接受NULL值时
该表最多只能有254个字段用表设计器修改表结构用表设计器修改表结构可用界面操作方式或命令modify structure
打开表设计器,在表设计器中修改表结构
命令窗口用alter table-SQL命令修改表结构用alter table-SQL命令修改表结构1)添加字段(add column)
例如:添加“班级名称bjmc”到xs表中
alter table xs add column bjmc c(12)
2)重命名字段(rename column)
例如: 重新命名xs表的“bjmc”字段为“bj”
alter table xs rename column bjmc to bj
3)删除字段(drop column)
例如: 删除xs表中的“bj”字段
alter table xs drop column bj3.2 表的打开与关闭3.2 表的打开与关闭基本概念
(1)工作区
(2)表的别名
“数据工作期”窗口
表的打开与关闭
表的独占与共享“数据工作期”窗口“数据工作期”窗口数据工作期是当前数据动态工作环境的一种表示。
VFP启动后,系统自动生成一个数据工作期,称为“默认”数据工作期。
每一个表单、表单集或
报表
企业所得税申报表下载财务会计报表下载斯维尔报表下载外贸周报表下载关联申报表下载
在运行过程中,为了管理自己所用的数据,可以形成自己的数据工作期。
每一数据工作期包含有自己的一组工作区,这些工作区含有打开的表、表索引和表关系。
“数据工作期”窗口的打开:
菜单命令:窗口\数据工作期
工具按钮:常用\数据工作期窗口
通过数据工作期窗口,可选择查看数据工作期,可进行有关表的一些操作工作区:用以标识一张打开 的表的区域工作区:用以标识一张打开 的表的区域(1)打开一张表时,必须为该表指定一个工作区。
(2)每个工作区有一个编号,称为工作区号,编号范围1-32767,前10个工作区号也可用字母A-J表示。
(3)每工作区在某一时刻只能打开一张表,打开另一表时,前一张表自动被关闭。
(4)用户可同时在多个工作区中打开多张表,也可将一张表同时在多个区中打开。
当前工作区:VFP正在使用的工作区,即默认工作区
vfp系统启动后,系统默认当前工作区为1。当前工作区当前工作区设置当前工作区
(1) “窗口”/“数据工作期”/“别名”中选所要打开的表的别名
(2)命令
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
: SELECT nWorkArea|cTableAlias
例,SELECT JS/SELECT 2
SELECT 0 &&选择未被使用的最小编号的工作区
测试当前工作区
可用函数select([0|1|cTableAlias])来测试工作区号:
0返回当前工作区号,1返回当前未用的最大工作区号
别名cTableAlias用于返回该表所在的工作区号
操作非当前工作区中的表
(1)其他工作区选为当前工作区
SELECT 2
USE XS
(2)在命令中强行指定工作区
GO TOP IN 2/GO TOP IN XS
表的别名:是对打开的表的一个临时标识表的别名:是对打开的表的一个临时标识别名的指定:USE xs ALIAS student
若打开表时没指定表的别名,则自动以表文件名作为别名
若一张表同时在多个工作区中打开且均未指定别名:
(1)则在第一次打开的工作区中,别名与表名相同
(2)其它工作区中用A-J以及W11-W32767表示
别名的查看:
(1)“数据工作期”窗口
(2)alias函数: alias([nWorkArea])
返回当前或指定工作区中表的别名
若工作区号缺省表示当前工作区表的打开:使用表时首先必须把表显式或隐式地打开表的打开:使用表时首先必须把表显式或隐式地打开显式打开是指用户利用菜单等界面操作(文件\打开)或USE命令直接打开表;
隐式打开是指在执行某些界面操作(项目管理器中“浏览”等按钮)或执行SQL命令时系统会自动地打开相应的表。
(1)“文件”->“打开”
(2)工具条上“打开”按钮
(3) USE XS
(4)USE XS IN 0 noupdate &&不许修改
SELECT 0
USE XS &&在未被使用的编号最小的工作区内打开一张表
(5)多次打开一张表:
USE XS
SELECT 0
USE XS AGAIN 表的关闭表的关闭(1)“数据工作期” 中,选一张表->“关闭”按钮
(2)USE
(3)USE IN 2 或
SELECT 2
USE
(4)CLOSE ALL &&关闭所有的数据库、表和索引,将当前工作区设置为0
CLOSE DATABASES &&关闭所有的数据库
CLOSE TABLES &&关闭所有的表
(5)退出VFP系统表的独占与共享使用表的独占与共享使用表的独占使用:一张表只能被一个用户打开
表的共享使用:一张表可以同时被多个用户打开
设置表的使用方式
(1)默认情况下:独占,默认方式的设定:“工具”->“选项”
(2)SET EXCLUSIVE OFF/ON
(3)USE XS SHARED/EXCLUSIVE
(4)打开表时,在“打开”窗口右下角,
有“独占”复选框
注:改变set exclusive的设置并
不能改变已打开表的状态,
若一张表同时被多次打开,
只以第一次的打开方式为准
3.3 记录的处理3.3 记录的处理1、记录的输入
2、表的浏览与定制
3、记录的定位
4、记录的修改
5、记录的删除
6、数据的复制
7、数据的统计记录的输入记录的输入1) 表结构创建后立即输入记录
2)在浏览窗口中追加记录
3)使用insert-SQL命令追加记录
4)使用append与append from追加null显示/浏览(编辑)进行转换表结构创建后立即输入记录在浏览窗口中追加记录在浏览窗口中追加记录在浏览状态下向表中追加记录 使用insert-SQL命令追加使用insert-SQL命令追加
格式:
insert into xs(xh,xm,xb,nl) values ;
(“0012304”,”张三”,”男”,17)
注:若字段列表省略,则指全部字段null使用append /append from命令追加记录append blank ——追加一条空记录
append [blank] [in nWorkArea | cTableAlias]
append from ——从其他表或文件中导入数据
append from filename [ delimited / xls ]
delimited用于说明追加文件为文本文件
xls用于说明追加文件为Excel文件
缺省时追加文件为表文件
要注意文件的格式追加文件的格式追加文件的格式文本文件:
每条记录以回车符结尾;
各字段内容用逗号分隔;
字符型字段值要加引号。
Excel文件:
工作表的列结构与表的表结构相对应。表的浏览与定制表的浏览与定制表的浏览
1、界面方式(浏览窗口)
2、browse命令
记录的筛选
1、界面方式
2、命令方式 set filter to [lExpression]
字段的筛选
1、界面方式
2、命令方式 set field to [FieldList]browse 命令browse 命令语法格式:browse [fields FieldList] [for lExpression] [freeze FieldName] [noappend] [nodelete] [nomodify] [title cExpression]
freeze用于指定可以修改的字段,其它字段不可修改
1)全部浏览 browse
2) 字段的筛选浏览 browse fields xh,xm,xb
3)记录的筛选浏览 browse for xh=‘女’
4)字段,记录同时筛选
browse fields xh,xm for xh=‘女’null语法格式:set filter to [lExpression]
lExpression用于指定记录需要满足的条件
缺省时表示所有记录(即取消筛选)
例:
close tables all
Use js
set filter to xb=“女”
Browse fields gh,xm nomodify title ‘女教师’
set filter toset filter tonull记录筛选记录筛选的界面操作:表\属性Set field to Set field to 语法格式:set field to [FieldList]
lExpression用于指定所需字段
缺省时表示所有字段(即取消筛选)
例:
close tables all
Use js
set field to gh,xm
Browse for xb=‘女’ nomodify title ‘女教师’
set field tonull字段筛选字段筛选的界面操作:表\属性记录的定位记录的定位向表中输入数据时,VFP为每记录按输入顺序指定了“记录号”,第一个输入的记录,记录号为1,依此类推。
1、记录指针标志
当一个表文件被打开,系统自动生成三个控制标志:
记录的开始标志:介于表结构和第1条记录之间
记录指针标志:指示当前处理的记录位置,记录指针指向的哪个记录称为“当前记录”
记录的结束标志:整个表记录结束的标志
2、有关函数
3、记录的定位方式
4、命令方式实现记录定位null记录指针标志有关函数有关函数 recno()——返回当前记录号
bof() ——测试记录指针是否指向开始标志
eof() ——测试记录指针是否指向结束标志
当打开一张表时记录指针的情况
记录定位方式记录定位方式null3) locate命令——条件定位
Locate for xm=‘张洪’ 如果表有一个主控索引Skip、goto top、goto
bottom命令将使记录指针移动到索引顺序决定的记录上
对于条件定位,可以使用continue命令从当前记录位置
开始继续进行条件定位,即定位到下一条满足条件的记录1) go/goto n 定位到第n条记录
go/goto top 定位到第一个记录
go/goto bottom 定位到最后一个记录记录的修改记录的修改界面方式
A、用相应的命令或界面操作打开浏览窗口或编辑窗口
B、有规律的批量修改:浏览状态下,表/替换字段
命令方式
A、 update-SQL命令 (参见P78命令语法格式)
update js set gl=gl+1 where gl<60
B、 replace 命令 (关键字additive仅对备注型字段有效,使用时表示替换的内容追加到原备注中,否则替换原内容)
use js
replace jbgz with jbgz+100 for ;
year(date())-year(gzrq)>20记录的删除记录的删除删除记录一般分两步进行:标记要删除的记录,彻底删除带删除标记的记录
(1)标记要删除的记录
(2)恢复带删除标记的记录
(3)彻底删除记录
(4)对带有删除标记的记录的访问标记要删除的记录标记要删除的记录1)界面方式
2)命令方式delete或delete-SQL命令(P79语法格式)
例如:use js
delete for (date() –csrq) /365>60
或
delete from js where year(date()-year(js.csrq)>60)
delete只能对已打开的表操作,delete –sql无需打开表恢复带删除标记的记录恢复带删除标记的记录界面操作
A、浏览窗口中单击删除标记
B、菜单命令:表/切换删除标记(记录指针需指向要取消删除标记的记录)
C、菜单命令:表/恢复记录,在某一范围恢复一组符合指定条件的记录
命令操作 recall [Scope] [for lExpression]
recall——恢复当前记录
recall all ——恢复所有记录
recall all for xb=“男” ——恢复所有xb为“男”的记录彻底删除记录彻底删除记录界面操作
表处于“浏览”状态,用菜单命令“表/彻底删除”
命令操作
pack——删除当前工作区中打开表的带删除标记的记录
zap ——删除当前工作区中打开表的所有记录,而不管记录是否有删除标记,只留表结构对带有删除标记的记录的访问对带有删除标记的记录的访问
可用set deleted命令来指定是否处理标有删除标记的记录
语法格式
set deleted on|off
on 忽略有删除标记的记录
off 允许访问有删除标记的记录(系统默认值)数据的复制数据的复制copy to 命令将当前工作区中已打开的表中的数据复制到其它表文件或其它类型的文件中。
语法格式:
copy to FileName [ fields FieldList] [Scope]
[ for lExpression ]
[ [type] sdf |xls | delimited [ with Delimiter | with blank | with tab | with character Delimiter]]
例,
use xs
Copy to xs1 for xb=‘女’ &&生成一个xs1.dbf文件
Copy to xs1 fields xh,xm sdf &&生成一个xs1.txt文件
Copy to xs1 xls &&生成一个xs1.xls文件数据的统计数据的统计计数:
count [Scope] [for lExpression] [to VarName]
求和:
sum [nExpression] [Scope] [for lExpression] [to VarName]
求平均:
average [nExpression] [Scope] [for lExpression] [to VarName]
例如:
Close tables all
Use cj
Count for cj<60 to a1 &&结果存到变量a1中
Sum cj for cj<60 to a2
Average cj to a3
3.4 表的索引3.4 表的索引1、记录的顺序
2、索引概述
3、结构复合索引的创建
4、索引的修改和删除
5、索引的使用
6、索引的应用记录的顺序记录的顺序记录的顺序
表中记录的存储顺序,称物理顺序
表被打开后使用时.记录处理的顺序,称逻辑顺序
文件的排序:
(1)把原有的标记录按某个逻辑顺序从新写入另一个文件中
(2)建立一个逻辑顺序号与物理顺序号的对照表,把对照表放到一个文件中
方法二优点:
(1)生成速度快
(2)文件小
(3)实际中常常要从多个角度查询表
索引概述索引概述索引:
由一系列记录号组成的一个列表
由索引序号和表的记录号组成
索引关键字(索引表达式):
作为建立索引的依据,一个字段或字段表达式
多个字段建立索引表达式
索引标识:为区分一张表的不同索引,每个索引必须有一个索引名,即索引标识,索引标识的长度最大为10个字符
索引的类型
索引文件的种类多个字段建立索引表达式多个字段建立索引表达式各字符字段在索引表达式中的前后顺序将影响索引的结果, ximing+xm与xm+ximing结果不同
多个数值型字段求和建立的索引表达式,将按照字段的和索引xs.yingyu+xs.shuxue
不同类型字段构成表达式,要转换数据类型,通常会转换为字符型
索引的类型索引的类型(1)主索引 (只适用于数据库表)
表中所有记录不能有重复值
每张数据库表只能创建一个主索引
(2)候选索引
在指定的关键字或表达式中不允许出现重复值
一张表中可有多个候选索引
(3)普通索引
可以指定记录顺序,但允许关键字段或表达式出现重复值
一张表中可有多个普通索引
(4)唯一索引
索引表达式的值可以重复,但在索引文件中重复的值(记录号)仅存储一次
一张表中可有多个唯一索引索引文件的种类索引文件的种类(1)结构复合索引文件 .cdx
与对应的表文件名相同,系统自动给定
与表同时打开,更新,关闭
不要建立无用的索引,多余的索引将降低系统的性能
(2)非结构复合索引文件 .cdx
文件名由用户指出
不随表的打开而自动打开, 用打开索引文件命令将其打开
若想创建多个索引,又不想在每次打开表时维护,以减轻应用程序的负担,可用非结构复合索引文件
(3)独立索引文件 .idx
只存储一个索引的文件
也不会随表的打开而自动打开
一般作为临时索引文件,该索引文件查找速度快结构复合索引的创建结构复合索引的创建(1)界面方式:
“表设计器”->“索引”选项卡->“索引名”,“类型”,“表达式”
(2)命令方式:
index on eExpression tag TagName && tag前没有to
[for lExpression] [asending|desending]
[unique |candidate] && 缺省为普通索引
例 index on xm+xh tag xh
还可用create table-SQL或alter table-SQL命令的有关子句创建
注意:不能对备注型字段和通用型字段建立索引索引的修改和删除索引的修改和删除索引的修改
(1)“表设计器”->“索引”
(2)INDEX命令建同名索引,则替换原索引
索引的删除
(1)“表设计器”->“索引”
(2)命令: delete tag TagName1[, TagName2]
例如:
Delete tag xh
Delete tag all &&索引文件同时被删除
注:
若要删除主索引或候选索引,且环境设置为set safety on,
会显示是否删除的确认对话框索引的使用索引的使用索引的作用:a提高查询速度;b使记录的显示和处理顺序按照某种指定的方式进行;c限制记录数据的唯一性。
打开表的同时,可打开多个索引,但还要将一个索引设置为主控索引,在某一时刻只有该索引对表的显示和访问顺序进行控制
(1) use 表文件名 order tag 标识名
use xs order tag xh
(2) 打开表之后再设置主控索引
set order to [TagName [in nWorkArea|cTableAlias]
[asending|desending]] &&缺省TagName取消主控索引索引的应用索引的应用1)利用索引快速定位
seek命令: 在表中搜索指定表达式的值首次出现的记录
seek eExp [order TagName [ascending|descending]
[ in nWorkArea|cTableAlias ] ]
seek(eExp)函数:相当于seek命令,后执行函数found()
2)索引的其它用法:建立表之间的永久关系和临时关系a.找到:
RECNO():返回相匹配记录的记录号
FOUND():.T.
EOF():.F.
b.没找到:
RECNO():=n+1
FOUND():.F.
EOF():.T.
null3.5 有关表操作的常用函数1、select([0|1|cTableAlias])—测试工作区号
0 :返回当前工作区号,也可缺省;
1 :返回当前未被使用的最大工作区号;
cTableAlias :返回该表所在的工作区号,使用别名时必须加引号
2、used([nWorkArea|cTableAlias]) —测试一张表的别名是否
已被使用或在指定的工作区中是否有表打开
3、alias([nWorkArea]) —返回当前或指定工作区中表的别名常用函数常用函数4、field(nFieldNumber [, nWorkArea|cTableAlias])
返回已打开表的指定序号的字段名
5、fcount([nWorkArea|cTableAlias])
返回已打开表的字段个数
6、delete([nWorkArea|cTableAlias])
返回表当前记录是否有删除标记
7、cdx(nWorkArea) —返回打开的复合索引文件名
8、order([nWorkArea|cTableAlias])
返回当前表或指定表的主控索引名