1 / 39

表的创建和基本操作

表的创建和基本操作. 西南财经大学 经济信息工程学院. 表的创建. 表:保存在磁盘中的一张二维表( . DBF/.FPT) 与数据库相关联的表叫数据库表 ; 与数据库无关联的表叫自由表。 字段( Field): 表中的一列,规定了数据的特征。 记录( Record): 表的一行,多个字段的集合。 表结构( Structure): 存储表记录的一个公共结构。. 要建立一张完整的表,必须先建立表的结构, 然后再输入记录(数据). 字段的基本属性. 字段名 : 用以标识一个字段的名字。

reeves
Download Presentation

表的创建和基本操作

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 表的创建和基本操作 西南财经大学 经济信息工程学院

  2. 表的创建 表:保存在磁盘中的一张二维表( .DBF/.FPT) • 与数据库相关联的表叫数据库表 ; • 与数据库无关联的表叫自由表。 字段(Field):表中的一列,规定了数据的特征。 记录(Record):表的一行,多个字段的集合。 表结构(Structure):存储表记录的一个公共结构。 要建立一张完整的表,必须先建立表的结构, 然后再输入记录(数据)

  3. 字段的基本属性 • 字段名:用以标识一个字段的名字。 • 字段的数据类型:说明字段是什么类型的数据;不同的数据类型的表示和运算的方法不一样;其中备注型和通用型的具体数据都保存在.FPT文件中 • 字段宽度: • 指该字段所能容纳数据的最大字节数。 • 小数位数: • 数值型、浮点型、双精度型的字段可指定小数据位。 • 字段宽度=整数部分宽度+小数点1位+小数位宽度 • 小数位至少比整个字段宽度小2。 • NULL值: • 不是一种数据类型,用来指示数据存在或不存在的一种属性。

  4. 表结构的创建 • 表结构的设计 • 建立表的结构 • 设置工作目录 • 界面操作(p58) • 命令方式 set default to [<路径名>] • 使用“表向导”设计表的结构 • 使用“表设计器”设计表的结构

  5. CREATE TABLE-SQL • 格式 • CREATE TABLE|DBF 表文件名(字段名1 字段类型[(字段宽度[,小数位数])][,字段名2 字段类型[(字段宽度[,小数位数])]]……) CREATE TABLE xs2 (xh c(6) NOT NULL ,xm c(8),xb c(2)) 命令字 表文件名 字段名 类型宽度 使用NULL值 对于一些宽度固定的字段类型,宽度不用标出。

  6. 修改表结构 • 表设计器方式 • 在“项目管理器”中使用“修改”按钮 • MODIFY STRUCTURE命令 • ALTER TABLE-SQL命令方式 • ADD COLUMN:添加字段。 ALTER TABLE xs ADD COLUMN bjmc c(12) • RENAME COLUMN:重命名字段。 ALTER TABLE xs RENAME COLUMN bjmc TO bj • DROP COLUMN:删除字段。 ALTER TABLE xs DROP COLUMN bj • ALTER COLUMN:修改宽度

  7. 记录的处理 • 记录的追加 • 表创建好后立即输入记录 • 输入数据的注意事项(p65) • 通用型和备注型字段的输入 • 浏览状态下追加记录 • 用INSERT-SQL命令追加记录 • 用APPEND命令追加记录 • APPEND • APPEND FROM 表文件名:从其他表中追加记录。 • APPEND FROM TXT 文本文件名SDF:从文本文件添加。 • 从其他类型的文件追加记录

  8. INSERT-SQL命令 • 格式 • INSERT INTO 表名 [(字段1[,字段2…])];VALUES (表达式1[,表达式2…]) • 例 • INSERT INTO xs (XH,XM,XB,XIMING); • VALUE (“96010057”,”曹晓燕“,”女”,”文”) 追加进表的记录总在最后一条。

  9. 表的打开和关闭 • 打开表(分为“独占”和“共享”两种方式) • 使用“文件”菜单 • 使用use命令 USE [<文件名>|<?>][EXCLUSIVE|SHARED] • 关闭表 • 退出VFP • USE

  10. 记录的浏览 • 浏览窗口 • BROWSE命令 • 格式 BROWSE [FIELDS 字段名1,字段名2…] FOR/WHILE [条件] • 例 BROWSE FIELDS xh,xm,xb FOR xb=‘男’ 浏览XS表中所有男同学的XH,XM,XB信息。

  11. 记录的定位 • 记录的指针 • 系统在打开一个表文件后将自动生成三个控制标志:记录开始标志、记录指针标志、记录结束标志。 文件头 (含表结构等信息) 第1号记录 第2号记录 第n号记录 记录开始标志 记录指针 记录结束标志

  12. 记录指针 • 记录指针是VFP系统内部的一个指示器,在表中指向记录。每当打开一个表文件时,指针总是指向第一条记录。 • 记录指针指向的记录叫当前记录,改变指针的指向叫记录的定位。 • 测试当前记录用函数RECNO()。最小值为1,最大值为RECCOUNT()+1。 • 打开表时记录指针情况: • 表中无记录:BOF()=.T. EOF()=.T. RECNO()=1 • 表中有记录:BOF()=.F. EOF()=.F. RECNO()=1

  13. 记录的定位方式 在浏览状态下“表/转到记录” • 记录指针的绝对移动 • GO/GOTO n:当n大于记录总数时将拒绝移动。 • GO TOP GO BOTTOM • 记录指针的相对移动 • SKIP [n]:n>0向文件尾方向;n<0向文件头方向。 • 记录的条件定位 • LOCATE [范围] FOR/WHILE [条件](忽略) • 记录的索引定位:SEEK

  14. 一些子项的含义 • 范围 • ALL:全部记录 • NEXT n:从当前记录开始的N个记录 • RECORD n:第N个记录 • REST:从当前开始到结束的所记录 • 条件 • FOR:在指定范围内对所有满足条件的记录操作 • WHILE:从当前记录开始到第一个不满足条件记录之间的记录

  15. 练习 Use xs Go 3 ?recno() Go 20 ?recno() Use xs Go 3 ?recno() skip 20 ?recno() 已知XS表中的总记录数为18。

  16. 记录的修改 • 一个表只要不是只读方式打开,就可以对其记录进行编辑和修改。 • 对少量的记录直接在浏览窗口中修改。 • 批量记录的修改 • 使用“表”菜单中的“替换字段…”命令项 • REPLACE命令 • UPDATE-SQL命令UPDATE 表名 SET 字段1=表达式1[,字段2=表达式2…];WHERE 条件表达式

  17. 记录的删除 • 删除记录分两步走 • 做删除标记 • 彻底删除带标记的记录 • 界面方式删除 • 对少量的记录直接在浏览窗口中删除 • 在某一范围内删除一组符合特定条件的记录“表”菜单中的“删除记录…”命令项 • “表”“恢复记录” • “表”“彻底删除”

  18. 有关删除记录的命令 • 删除1:DELETE FROM 表名 [WHERE 条件表达式] • 删除2:DELETE [范围] [FOR/WHILE 条件表达式] • 恢复删除:RECALL [范围] [FOR/WHILE 条件表达式] • 彻底删除:PACK • 删除所有记录:ZAP(不管记录是否有删除标记) • 使用DELETE()函数可测试当前记录是否有删除标记 • 控制其它命令对有删除标记的访问 • SET DELETED ON:使命令忽略有删除标记的记录 • SET DELETED OFF:允许访问有删除标记的记录(默认)

  19. 筛选记录 • 指从表中选出满足指定条件的记录,不满足条件的记录则被“隐藏”。 • 界面方式:在“工作区属性”对话框中“数据过滤器”文本框中输入条件。 • 命令方式:SET FILTER TO 条件表达式 • 取消筛选:SET FILTER TO • 在有FOR子句的命令中,执行时进行临时性筛选。 SET FILTER TO 命令设置的过滤器不会对SELECT-SQL、 DELETE-SQL和UPDATE-SQL命令起作用。

  20. 筛选字段 • 筛选字段是选取表的部分列。 • “工作区属性”对话框中打开“字段筛选器” • 命令: • SET FIELDS ON:指定只能访问出现在字段列表中的字段 • SET FIELDS OFF:可访问所有字段(默认) • SET FIELDS TO 字段列表:指定可访问字段名称 • SET FIELDS TO ALL:可访问所有字段

  21. 数组和表之间的数据交换 • 将当前的表记录传递给数组 • 将数组的值传递到当前记录 SCATTER [FIELDS <字段名表>][MEMO] TO <数组名> [BLANK]|MEMVAR[BLANK] GATHER FROM <数组名>|MEMVAR [FIELDS <字段名表>][MEMO]

  22. 多记录和数组之间的数据交换 • 将表的多条记录传递给数组 • 将数组的值追加到表中 COPY TO ARRAY <数组名> [FIELDS <字段名表>][范围] APPEND FROM ARRAY<数组名> [FIELDS <字段名表>]

  23. 1 2 3 内存 表的使用 • 工作区 • 工作区用以标识一个打开表的区域。 • 每个工作区有一个编号。 • 在某一时刻,一个工作区中只能打开一个表。 • 一个表可以多个工作区中被多次打开。

  24. 1 xs 2 teacher 3 内存 工作区中表的别名 • 表的别名是对工作区中打开的表的一个临时标识。 • 定义表的别名 • 打开表时指定别名USE 表文件名 ALIAS 别名 • 如果在打开表时没有指定别名,则系统默认用表文件名作为别名。

  25. 当前工作区 • VFP正在使用的工作区称为当前工作区。 • 用SELECT(0)(0 可省略)测试当前工作区号。 • 用ALIAS()函数测试当前工作区中表的别名。 • 状态栏中可显示当前工作区中表的别名。 1 xs 2 teacher 3 内存

  26. 选用工作区 • 在“数据工作期”窗口中设置。 • 使用命令:SELECT 工作区号|别名 • 操作非当前工作区中的表 • 将所在工作区设置为当前工作区 • 在命令中强行指定工作区命令 IN 工作区|别名 • SELECT 0:选择未使用最小编号的工作区

  27. 打开窗口与使用窗口的区别: 使用窗口中打开的表占用当前工作区;而打开窗口中打开的表占用当前未使用的工作区。 表的打开和关闭 • 表的打开 • 界面方式:文件打开、窗口数据工作期 • 命令方式:USE 表文件名 [IN 工作区号|别名] • 一张表在多个工作区中打开用AGAIN子句 • 表的关闭 • 数据工作期窗口中关闭 • 关闭指定工作区中的表:USE [IN 工作区号|别名] • 关闭所有工作区中的表:CLOSE ALL、CLOSE DATABASE、CLOSE TABLES、QUIT

  28. 2.5 表的索引 • 记录的顺序 • 物理顺序:表中记录的存储顺序。按记录输入的时间顺序存放。 • 逻辑顺序:记录的处理顺序。对记录按某个(些)字段的值进行排序。

  29. 索引 • 索引的功能 • 根据“索引表达式”的值进行记录的逻辑排序。 • 索引机制 • 建立一个逻辑顺序号与记录号(物理顺序)的对照表。 • 索引文件 • 对照表存放的文件。一个索引文件中可存放很多索引。 • 索引更新 • 记录增、改、删后,索引要进行相应的更新,否则索引 • 与表不匹配。

  30. 索引的构成 • 索引名 • 又叫索引标识、TAG,标记一个索引的名称。 • 索引表达式 • 又叫索引关键字,是排序的依据。 • 索引类型 • 四种:主索引、候选索引、普通索引、唯一索引 • 筛选条件 • 把符合条件的记录进行索引。

  31. 索引的类型 • 主索引(Primary Indexes) • 每张表只能创建一个,关键字的值不能重复。 • 只适用于数据库表的结构复合索引。 • 候选索引(Candidate Indexes) • 关键字的值不允许有重复值。 • 普通索引(Regular Indexes) • 关键字的值可重复,一张表可建立多个。 • 唯一索引(Unique Indexes) • 允许关键字值重复,重复的值在索引表中只出现第一个。

  32. 索引文件的种类 • 两类三种索引文件 • 复合索引文件(扩展名为.CDX) • 结构复合索引文件(最普通、最重要)主文件名与表文件名同,由系统自动生成,打开与关闭与表文件同步,是表的一部分。 • 非结构复合索引文件名由用户给出,要用专门的命令打开。 • 独立索引文件(扩展名为.IDX) • 只存储一个索引的文件。

  33. 结构复合索引文件的创建 • 在“表设计器”中创建 • 用命令创建 • INDEX ON 索引表达式TAG 索引标识名 [FOR 条件表达式 ][ASCENDING|DESCENDING][UNIQUE|CANDIDATE] • 注意点: • 不能对备注型或通用型字段建立索引; • 不要建立多余的无用的索引,会降低系统性能; • 关键字由多个字段组成时要注意数据类型的一致。

  34. 索引的修改和删除 • 在“表设计器”中修改和删除索引。 • 用INDEX命令修改。(不能修改索引标识) • 用DELETE TAG命令删除索引 • DELETE TAG 标识名1 [OF CDX文件1] [,标识名2 [OF CDX文件2]] • DELETE TAG ALL [OF CDX文件名] 如果要删除的是主索引或侯选索引, 且SET SAFETY为ON时,系统会发出警告。

  35. 主控索引 • 主控索引:对表正在起作用的索引。 • 设置主控索引 • 在“数据工作期”中打开“工作区属性”对话框设置; • USE 表文件名ORDER [TAG] 标识名 [OF CDX文件名]USE 表文件名 ORDER IDX文件名USE 表文件名 ORDER 索引编号 • SET ORDER TO • [索引编号|IDX文件|[TAG] Tag名 [OF CDX文件] • [IN 工作区 | 别名] [ASCENDING | DESCENDING]]

  36. 查询 • 顺序查询 • LOCATE [<范围>][FOR<条件>] • CONTINUE • 索引查询 • FIND • SEEK <表达式>

  37. 多区操作 • 表之间的关联 • 表之间的关联指不同工作区中的两个表的记录指针同步移动的关系(需要先建立索引) • 命令 • SET RELATION TO [<关联字表达式>] INTO <别名>[ADDITIVE] • 一对多的关系 • 先用set relation to 命令 • SET SKIP TO [<表别名1>][<表别名2>] • P106-108

  38. 表之间的连接 • 将两个表连接成一个新的表,新表中的字段从不同的表中选取出来。 JOIN WITH <工作区号>|<别名> TO <新表名> [FIELDS <字段名表>] FOR <连接条件>

  39. 统计 • 计数命令 COUNT [<范围>] [FOR <条件1>] [WHILE<条件2>][TO <内存变量>] • 求和/平均值命令 SUM|AVERAGE [<数值表达式>][<范围>][FOR <条件1>] [WHILE<条件2>][TO <内存变量>] • 计算命令 CALCULATE [<表达式表>] >][<范围>] [FOR <条件1>] [WHILE<条件2>][TO <内存变量>] P111-112

More Related