数据库与表的创建及使用2-副本.ppt_第1页
数据库与表的创建及使用2-副本.ppt_第2页
数据库与表的创建及使用2-副本.ppt_第3页
数据库与表的创建及使用2-副本.ppt_第4页
数据库与表的创建及使用2-副本.ppt_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

1,3.3.4 表的打开与关闭,一张表,在进行任何操作前,都必须先打开。被打开的表称为当前表。 (1)显式打开:利用菜单等界面操作或用USE命令直接打开表; (2)隐式打开:在执行某些操作(界面或SQL命令)时,系统会自动打开相应的表。,2,一、表的打开 当一张表的表结构刚创建完时,该表处于打开状态。 (1)通过界面操作打开表 使用菜单命令 “项目管理器”窗口 “数据工作期”窗口,3,(2)使用USE命令打开表 例: USE xs USE js ALIAS jiaoshi IN 4 USE zg IN 0 NOUPDATE USE xs AGAIN IN 5 USE xs AGAIN IN 15,4,二、表的关闭 当退出VFP系统时,所有的表都将被关闭。 (1)通过界面操作关闭表 “数据工作期”窗口 (2)使用命令关闭表 USE &关闭当前的表 CLOSE TABLES &关闭所有的表 CLOSE ALL &关闭所有的数据库、表和索引,且将当前工作区设为1。,5,三、工作区 打开一张表时,必须为该表指定一个工作区。在VFP系统启动后,系统默认当前工作区号为1。 1、工作区的基本概念 (1)工作区是打开表的一个区域 (2)工作区的打开用命令: SELECT 工作区号 其中:工作区号用数字表示,范围从1到32767(前10个工作区也可以用字母AJ表示)。,例:SELECT 0 &表示选择了一个未被使用的编号最小的工作区。,6,(3)每个工作区中只能打开一个 表文件 例如: SELECT 1 & 打开1号工作区 USE XS & 在1号工作区打 开XS表 LIST &在主窗口显示记录 USE CJ & 再打开CJ表, XS表已经关闭 LIST & 在主窗口显示记录,7,(4)每个表文件可在多个工作区 中被打开,一张表可以在多个工作区中打开,但在USE命令后要加上AGAIN子句,例如: SELECT 11 & 打开11工作区 USE XS & 打开表XS SELECT 22 & 打开22工作区 USE XS AGAIN & 再打开表XS,8,(5) 工作区中的表可赋予一个别名 在工作区中打开表的时候,可为表赋予一个别名,命令格式: USE 表文件名 ALIAS 别名,例如: USE STUDENT ALIAS XS 如果省略别名,则系统默认表文件名为别名,例如命令: USE CJ 命令中省略了ALIAS子句,则文件名CJ就是别名。,9,(6)数据操作只对当前工作区的当前表文件有效,正在使用的工作区称为当前工作区,当前工作区中打开的表文件称为当前文件。 无论界面方式,还是命令方式的各种数据操作,只对当前工作区的当前文件有效。,10,设置当前工作区的方法有:,在“数据工作期”窗口中设置 步骤为: 在“窗口”菜单中选“数据工作期”,打开“数据工作期”窗口,在“别名”列表中选择别名,则该别名所在工作区成为当前工作区。,11,命令格式: SELECT 工作区号/别名 例如,已经在第2工作区打开表XS.DBF,则命令: SELECT 2 和 SELECT XS 是等价的,都可以将当前工作区设置为第二工作区。,命令方式:,12,也可在命令中强行指定工作区: IN 工作区号/别名 如: USE cj IN 5 把cj表在第5工作区中打开,而不改变当前工作区。 如: GO TOP IN cj 把文件cj的指针移到文件头,而不管它是否在当前工作区。,13,2、有关工作区的函数,SELECT(别名) 返回“别名”表所在的工作区号,别名必须放在引号中。 例: ? SELECT (0) & 返回当前工作区号。 ? SELECT(1) &返回未用的最大工作区号,即32767。,14,ALIAS(工作区号) 返回指定工作区的表的别名 ALIAS() 返回当前工作区的表的别名 例如: SELECT 2 USE XS ? ALIAS(2) & XS ? SELECT(“XS“) & 2,15,USED(“表文件别名”) 返回“别名”表是否打开。已经打开则返回.T.,否则.F. 例:use js alias jiaoshi ? used(“jiaoshi”) ? used(“js“),.T.,.F.,16,练习:,执行下列命令后: CLOSE TABLES ALL SELECT 0 USE XS ALIAS STU USE JS IN 0 函数USED(”JS”)的值是? 函数USED(”XS”)的值是? 函数SELECT()的值是? 函数ALIAS()的值是?,.T.,.F.,1,stu,17,四、表的独占与共享使用,在多用户系统中,多个用户可以使用同一张表,即表的共享使用。 有些情况下,某个用户希望单独使用一张表,即表的独占使用。,18,1、设置打开表的默认状态 (1)界面方式: “工具”菜单 “选项”“数据” (2)命令方式: SET EXCLUSIVE OFF 设置“共享”为默认打开方式 SET EXCLUSIVE ON 设置“独占”为默认打开方式,注:改变SET EXCLUSIVE的设置并不改变已打开的表的状态。,19,2、在打开表时指定使用方式 (1)界面方式: 在“打开”或“使用”窗口中有“独占”复选框,打表示独占。 (2)命令方式: USE XS SHARED & 以共享方式打开表 USE XS EXCLUSIVE & 以独占方式打开表,注:一张表同时被多次打开时,只以第一次的打开方式为准。,20,练习:,执行下列命令后: SET EXCLUSIVE OFF USE JS USE XS EXCLUSIVE IN 0 JS表的打开方式是? XS表的打开方式是?,JS表是共享方式; XS表是独占方式,21,3.3.5 记录的处理,注意:表是用来存储数据的,表结构是表的框架,创建表结构之前要认真考虑,一旦创建完成,就很少修改。即结构是静态的。 而数据记录是要经常修改的,即记录是动态的。,22,一、记录的输入 1、立即输入记录 在创建表结构后,在出现“现在输入数据记录吗?”对话框时,单击“是”,则出现“编辑”窗口。 注意:输入记录时,每个字段的数据,必须与该字段的类型和宽度一致。,23,2、在浏览窗口中追加记录 命令:USE 表文件名 BROWSE / EDIT &打开表,并进入浏览/编辑窗口 在“表”菜单中,选择“追加新记录”命令项; 在“显示”菜单中,选择“追加方式”。 浏览窗口与编辑窗口相互之间的切换,利用“显示”菜单。,24,3、用INSERT-SQL命令追加记录 命令格式: INSERT INTO 表名(字段1,字段2)VALUES(表达式1,表达式2) 该命令适合用于程序中。 例: INSERT INTO xs(xh,xm,xb,ximing) VALUES (“950106“,“高山“,“男“,“),25,4、用APPEND与APPEND FROM命令追加记录 命令格式: APPEND BLANK IN Workarea/cTableAlias APPEND FROM Filename Delimited/XLS 将其他文件(表文件、文本文件、Excel文件等)中的数据导入到当前工作区中的表。,26,5、备注型与通用型字段数据的输入 备注型字段显示“memo”表示无内容,显示“Memo”表示有内容。 输入方法:按+或双击该字段。 通用型字段显示“gen”表示无内容,显示“Gen”表示有内容。 输入方法:按+或双击该字段后,利用“编辑”菜单“插入对象”插入其内容。,27,二、表的浏览,浏览窗口的使用 界面方式 BROWSE命令(常用格式见P88) 步骤: (1)打开表 USE 表文件名 (2)在命令窗口键入 BROWSE (3)在浏览窗口浏览或修改 表记录,28,三、记录的筛选,筛选记录指从表中选出满足条件的记录来进行浏览或其他操作,不满足条件的记录则被“隐藏”起来。,29,操作步骤: (1)“表”菜单“属性” “工作区属性”对话框 (2)在“数据过滤器”文本框中输入筛选条件表达式 (3)单击“确定”此时浏览表, 将只显示满足条件的记录。,1、通过界面筛选记录,30,2、使用命令 命令格式: SET FILTER TO 条件表达式 去掉筛选条件:SET FILTER TO,注意:本命令设置的过滤器对SELECT-SQL、DELETE-SQL和UPDATE-SQL命令不起作用。,31,四、筛选字段(限制对字段的访问),筛选字段是选取表的部分列。 1、界面操作步骤: (1)“表”菜单“属性” “工作区属性”对话框 (2)单击“字段筛选”按钮,打开“字段选择器”对话框,选择所需字段。,32,2、使用命令 命令格式: SET FIELD TO 字段列表,例:CLOSE TABLES ALL USE XS SET FIELD TO XH,XM BROWS FOR XB=女 NOMODIFY TITLE 女学生,33,记录指针:是一个 指示器,指向表 中的记录。,记录开始标志,记录结束标志,五、记录的定位,1、记录标志,34,几个概念,三个控制标志:记录的开始标志、记录指针标志、记录的结束标志 记录号 当前记录,35,函数 RECNO( ) 返回当前记录号 ( 数值型) 函数BOF( ) 测试记录指针是否在文件头 (逻辑型) 函数EOF( ) 测试记录指针是否在文件尾 (逻辑型),几个函数,36,记录号 学号 姓名 性别 专业代号 系名 1 990101 李林 男 102006 信息管理系 2 990102 高山 男 102006 信息管理系 3 990106 陆海涛 男 102006 信息管理系 4 5 6 7 ,文件头 BOF( ),记录指针RECNO( ) 5,文件尾 EOF( ),37,BOF()的值为: .T. EOF()的值为: .T. RECNO()的值为: 1,当打开一张空表,即表中只有结构,没有记录,则:,记录指针的初始值总是1,不可能为0或负数,最大值是表中记录总数+1。,38,BOF()的值为: .F. EOF()的值为:.F. RECNO()的值为:1,当刚刚打开一张表,如果表中有结构,也有记录,则:,39,命令:USE 表文件名 ? BOF( ) ? EOF( ) ? RECNO( ) 其中:EOF()和RECNO()用得较多。,40,2、记录的范围,记录的范围共有4个选项: ALL 全部记录 NEXT n 从当前记录开始的n条记录 RECORD n 指定的第n条记录 REST 从当前记录开始到 最后的所 有记录,41,3、记录定位,表文件的很多数据操作,如删除、插入等需要确定记录的位置,即确定“当前记录”,(1)绝对定位命令 :,GO RECORD n 把指针定位到第n条记录上 GO TOP 把指针定位到第一条记录上 GO BOTTOM 把指针定位到最后一条记录上,42,SKIP 数学表达式 功能:把记录指针向文件尾(+)或文件头(-)移动指定的记录条数。 若值为正数,+号可省略。 若值为+1,则+1省略。,(2)相对定位命令:,例如命令: SKIP 2*3-1 &把指针向文件尾移动5条记录 SKIP -2 & 把指针向文件头移动2条记录,43,LOCATE FOR 功能:把记录指针指向满足条件的记录。 若没有满足条件的记录,则指向文件尾。,(3)条件定位命令:,例如命令: USE xs LOCATE FOR xm=“王刚” CONTINUE,44,打开表文件后,在“表”菜单中,选“转到记录”,再选“定位”,打开对话框:,(4)条件定位界面操作,在上图的FOR文本框中,输入: 姓名=“张三”,则给出了记录定位的条件。,45,FOR文本框中,应当给出一个条件表达式,其值为逻辑值,即“真”或“假”。,例如:系名=“计算机系” 性别=“男” 成绩 = 70 .AND. 成绩 = 90 都属于条件表达式。,注意: 条件表达式中的数据类型应当一致! 定位到的记录称为“当前记录”,46,六、记录的修改,表文件的结构是相对固定的,记录是经常要修改的。 1、在浏览窗口中修改记录 只能修改少量数据,47,2、批量修改记录 (1)界面方式: 操作步骤:打开表选择“表”菜单的“替换字段” 打开“替换字段对话框”,48,(2)命令方式: SQL命令格式: UPDATE 表名 SET 字段1=表达式1,字段2=表达式2 WHERE 条件表达式 例如:把成绩表中所有课程代号为“1001”的成绩加 5 分的命令为: UPDATE CJ SET CJ=CJ+5 WHERE KCDH=1001,用UPDATE-SQL命令更新 表时,该表不必事先打开。,省略WHERE时,表示 所有记录,UPDATE CJ SET CJ=CJ+5,练习:在JS表中要按如下要求更改基本工资(JBGZ)字段的值: 工龄在10年以下(不含10年)基本工资加20 工龄在1019年 基本工资加35 工龄在20年以上(含20年) 基本工资加50 可用一个UPDATE命令完成上述更改: UPDATE js_jbgz=IIF(js.gl10,_ _, IIF(_ _ ,jbgz+50,jbgz+35),set,jbgz+20,js.gl=20,50,VFP命令格式: REPLACE 范围 字段1 WITH 表达式1 ADDITIVE,字段2 WITH 表达式2 FOR 条件表达式 例如:把成绩表中所有课程代号为“1001”的成绩加 5 分的命令为: USE cj REPLACE ALL cj WITH cj+5 FOR ; kcdh=1001,用REPLACE命令更新 表时,该表必须事先打开。,FOR子句和范围均省略时, 表示仅对当前记录进行替换。,REPLACE cj WITH cj+5,51,七、记录的删除与恢复,删除表中的记录要分两个步骤来实现: (1)标记要删除的记录 (逻辑删除) (2)彻底删除带删除标记的记录。 (物理删除),52,1、逻辑删除 (1)界面方式 在浏览窗口中单击要删除的记录的左边的小方框,可删除指定记录。 在“表”菜单中选择“删除记录”,在“删除”对话框中可按指定条件删除一批记录。,53,(2)命令方式 SQL命令格式: DELETE FROM 表名WHERE 条件表达式 例如:要删除成绩表中成绩在60分以下的记录的命令是: DELETE FROM CJ WHERE CJ60,VFP命令格式: DELETE 范围FOR 条件表达式IN 工作区 例如:要删除成绩表中成绩在60分以下的记录的命令是: DELETE FOR CJ60,54,2、物理删除记录,设置了删除标记的记录,才可以被物理删除 (1)界面方式: 在“表”菜单中选“彻底删除”。,(2)命令方式: 命令格式: PACK &删除加了删除标记的记录 要删除一张表中的所有记录,可用命令: ZAP 用ZAP命令删除记录后,表中只剩下表的结构,成为空表。,55,3、恢复记录,逻辑删除的记录,也可以恢复,即去掉删除标记,使之恢复正常。,(1)界面方式: 在“浏览窗口”单击带删除标记记录的小方块,使小方块由黑变白。,(2)命令方式: 恢复记录的命令格式: RECALL 范围 FOR 条件表达式,56,4、对逻辑删除记录的访问,(1)测试记录的删除标记 测试函数: DELETED() 如果该函数的返回值为真,则当前记录带有删除标记。,例如: USE XS BROWS FOR DELETED() & 浏览带有删除标记的记录,57,(2)控制对逻辑删除的记录的访问 命令格式: SET DELETED ON/OFF 其中: ON 不能访问逻辑删除的记录 OFF允许访问逻辑删除的记录,58,练习:,已知自由表STUDENT中含有20条记录,执行下列程序段后,N的值为? USE STUDENT DELETE NEXT 4 SET DELETE ON N=RECCOUNT(),20,59,函数补充:,FCOUNT(工作区号或别名) 返回指定工作区中打开的表的字段个数,省略参数则指当前工作区的表 FIELD(字段序号) 返回当前表文件中的指定字段序号的字段名,60,八、数据的复制,命令格式(P95): COPY TO 文件名 FIELDS 字段名表 范围FOR 条件 TYPE SDF/XLS/DELIMITED WITH 字符|BLANK|TAB 功能:将当前工作区中表的数据复制到其他文件中,61,记录的顺序,1、物理顺序 按记录输入的时间顺序存放。 2、逻辑顺序 对记录按某个字段值或某些字段值排序。,3.3.6 索引的创建与使用,62,一、索引的概念 什么是索引(Index)? (1) 对数据的某些操作,如查找,如果数据是有规律排列的,速度快。 (2)索引就是一种排序。 (3)索引是按指定字段的逻辑排序。,63,记录号 XH XM XB ZYDH XIMING 1 990302 张璋 男 102001 信息管理系 2 990506 王旺 男 201004 计算机系 3 990101 钱前 女 102001 信息管理系 4 990402 孙隼 女 201004 计算机系 5 990201 赵昭 女 302001 计算机系,XS. DBF,按学号排序,XH 990101 990201 990302 990402 990506,记录号 3 5 1 4 2,原来的记录号,指针,如对XS表按学号建立索引,64,二、索引文件的种类,(1)结构复合索引文件 结构复合索引文件可以存储表的多个索引,文件名与表文件名相同,在创建时由系统自动给定。扩展名为CDX。 结构复合索引文件与表文件同步打开、更新和关闭。,65,(2)非结构复合索引文件 非结构复合索引文件名由用户给出,要用打开命令将其打开。可减轻应用程序的维护负担。,(3)独立索引文件 独立索引文件只能存储一个索引,可临时创建,用命令打开,其扩展名为IDX。,66,三、使用表设计器创建结构复合索引文件,在用“表设计器”创建或修改表结构时,可以立即创建索引。,注意: (1)不能对备注型和通用型字段建立索引。 (2)不要建立无用的索引,否则会降低系统性能。,67,1、排序,索引时可指定索引是升序()还是降序()。,68,一张表可以创建多个索引,为了区分一张表的不同索引,每一个索引都必须有一个索引名,即索引标识。 索引标识必须以下划线、字母或汉字开头,长度不超过10个字符。,2、索引名(TAG),69,(1)主索引(Primary Index) 对数据库表,可建立主索引,组成主索引的字段或表达式的值不能重复,如学号的值是唯一的,可作为主索引字段。 主索引只能用于数据库表,不能用于自由表。,3、索引的类型,(2)候选索引(Candidate Index) 不允许有重复的值的索引,一张表可建立多个候选索引。 候选索引可用于数据库表或自由表。,70,(3)普通索引(Regular Index) 记录的排序,允许有重复的值,一张表可建立多个普通索引。,(4)唯一索引(Unique Index) 允许有重复的值,但在显示时,只显示一个值。,71,4、索引表达式,索引表达式是作为建立索引的依据,也就是排序的依据,它可以是一个字段或字段表达式,也叫索引关键字。 索引表达式例: Xm+xb Jbgz+jt Xm+str(jbgz) Dtoc(gzrq,1)+str(jbgz),索引表达式注意问题:,如果索引表达式是字符型表达式,则各字段在表达式中的前后顺序将影响索引的结果。例 Xm+xb。 如果索引表达式是算术表达式,则按照表达式的运算结果进行排序。例 Jbgz+jt。 不同数据类型的字段构成一个索引表达式时,必须转换同一数据类型(通常转换为字符型)。 例:Xm+str(jbgz) Dtoc(gzrq,1)+str(jbgz),73,5、筛选,指定仅有符合条件的记录参加索引。,74,五、索引的使用,1、设置主控索引 一张表可以建立多个索引,但在使用表中的数据时,只能按一种索引的顺序进行。这种索引就是主控索引。主控索引可以是复合索引文件中的一个标识(主控标识),也可以是一个独立索引文件。,75,USE 表文件名 ORDER TAG 标识名 例: CLOSE TABLES ALL USE xs ORDER xh USE xs IN 0 ALIAS xs2 AGAIN ORDER xb BROW,(1)打开表的同时指定主控索引,76,记录号 XH XM XB ZYDH XIMING 1 990302 张璋 男 102001 信息管理系 2 990506 王旺 男 201004 计算机系 3 990101 钱前 女 102001 信息管理系 4 990402 孙隼 女 201004 计算机系 5 990201 赵昭 女 302001 计算机系,XS.DBF,记录号 XH XM XB ZYDH XIMING 3 990101 钱前 女 102001 信息管理系 5 990201 赵昭 女 302001 计算机系 1 990302 张璋 男 102001 信息管理系 4 990402 孙隼 女 201004 计算机系 2 990506 王旺 男 201004 计算机系,建立索引后显示的结果,注意:索引显示的记录号是原来 数据库文件的记录号!,XS.CDX,77,界面方式: “表/属性”“工作区属性”对话框 命令方式: SET ORDER TO 标识名/索引编号 如:SET ORDER TO xm SET ORDER TO 0 & 不按索引顺序排序, 按原来表记录的顺序,(2)打开表后再指定主控索引,78,2、有关索引的函数,(1) 返回打开的索引文件名 CDX (工作区/别名 ) 返回复合索引文件名 NDX (工作区/别名 ) 返回某一索引文件名,(2) 返回主控索引标识或文件 ORDER ( 工作区/别名 ) 返回当前表或指定表的主控索引文件或标识,(3) 返回复合索引文件中的索引标识名 TAG ( CDX文件, TAG序号 , 工作区/别名 ),79,3、利用索引快速定位记录,排序以后,再查找有关信息,速度会加快。,(1)SEEK命令 命令格式: SEEK 表达式 ORDER TAG名 ASCENDING/DESCENDING IN 工作区/别名 ,80,例如: USE XS ORDER TAG XH & 打开表文件XS,指定标识 XH SEEK “990201” & 查找学号为“990201”的记录,注意:SEEK 命令只能在索引过的表中使用,并且只能搜索索引关键字。,81,如果找到与表达式匹配的记录,则 RECNO()= 找到的记录号 FOUND()函数的值为“真” EOF()函数的值为“假” 如果未找到相匹配的记录,则 RECNO()=记录个数加1 FOUND()函数的值为“假” EOF()函数的值为“真”,82,(2)SEEK函数,SEEK(表达式 ,工作区/别名 ,TAG名

温馨提示

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

评论

0/150

提交评论