数据库概述ppt课件.ppt
3.1 数据库概述,第3章 数据库与表的创建及使用,3.2 数据库的创建、打开与使用,3.3 表的创建与使用,3.4 永久关系与参照完整性,3.5 有关数据库及其对象的常用函数,掌握数据库的创建、使用以及与库表的关系,掌握表结构的创建与修改、表的打开与关闭以及工作区的概念和使用,掌握表记录的追加、浏览、定位、修改、删除和筛选操作及相关的命令,掌握索引的概念、类型以及结构复合索引文件的创建、修改和使用方法,掌握永久关系的概念、作用、创建方法以及设置相关表之间的参照完整性,掌握有关数据库及其对象的常用函数,教学目的与要求,3.1 数据库概述,数据库是一个包容器,是许多相关的数据库表及其关系的集合。包括数据表以及表之间的关系。,例如:一个教学数据库管理系统涉及到学生、课程、教师、学生成绩等实体。可以用表格表示,有学生表、教师表、课程表、学生成绩表等。还有学生和课程、学生和成绩以及教师和课程等之间的关系。,3.1.1 数据库的设计过程,确定建立数据库的目的 确定需要的表 确定所需字段 确定表之间的关系 改进优化设计,3.1.2 数据库的组成,数据库与数据库表之间的双向链接。,1、数据库表,注:移动了数据文件或与数据库关联的表文件,可能破坏双向链,可以重新链接或者删除剩余链。,3.1.2 数据库的组成,把分散在相关表中的数据通过联结条件把它们收集到一起,构成一张“虚表”,这张“虚表”就是视图。视图使数据暂时从数据库中分离出来,成为游离数据,以便在主系统之外收集和修改数据。,3、连接保存在数据库中的一个定义,指定了数据源的名称。这里的数据源指的是远程数据源。两种方法连接远程数据源:一种是直接访问在机器上注册的ODBC数据源,另一种是用“连接设计器”设计自定义连接。,2、视图,3.1.2 数据库的组成,在数据库中保存过程和代码的地方。包含用户自定义函数中的任何命令和函数,还有永久关系中参照完整性代码。对数据库中的数据进行地相似或相同的处理,可以编写成自定义函数或过程保存在存储过程中,以供其他时候调用。,创建、修改或移去存储过程有以下几种:(1)在“项目管理器”中,选择并展开一个数据库,选定“存储过程”,然后选择“新建”、“修改”或“移去”按钮。(2)在“数据库设计器”中,从“数据库”菜单中选择“编辑存储过程”按钮。(3)在“命令”窗口中,使用MODIFY PROCEDURE命令。,FUNCTION cj_rule PARAMETERS cj IF cj=0 and cj=100 RETURN.T.ELSE RETURN.F.ENDIFENDFUNC在cj字段的验证规则中设置如下:cj_rule(cj.cj),4、存储过程,3.1.3 数据字典,数据字典是指存储在数据库中的用于描述所管理的表和对象的数据,即关于数据的数据,这些数据称为元数据。可用display|list database命令查看数据库中的信息。,数据字典可以创建和指定以下内容:主关键字和候选索引关键字;表单中使用的默认控件类;数据库表之间的永久关系;字段的输入掩码和显示格式;长表名和表中的长字段名;字段级和记录级有效性规则;表中字段的标题和注释;存储过程;表中字段的默认值;插入、更新和删除事件的触发器。,3.2 数据库的创建、打开与使用,每创建一个新的数据库都将生成三个文件:数据库文件(.DBC)关联的数据库备注文件(.DCT)关联的数据库索引文件(.DCX)注:数据库是一个包容器,但并不在物理上包容任何附属对象,在数据库中仅存储了指向表文件的路径指针。,3.2.1 数据库的创建,1、界面方式,2、命令方式 CREATE DATABASE 数据库名|?注:如果命令中没有数据库名或只给出了?则命令自动打开“新建对话框”。如果给出了数据库名,则创建数据库,并使该数据库处于打开状态,但不出现数据库设计器。,3.2.2 数据库的打开与关闭,1、打开数据库使用打开数据库的命令OPEN DATABASE 数据库名 EXCLUSIVE|SHAREDNOUPDATEVALIDATE多次使用该命令可以打开多个数据库。,所有打开的数据库中只有一个是当前数据库。设置当前数据库的方法:界面中直接使用“常用”工具条 使用命令设置:SET DATABASE TO 数据库名,注:利用DBC()函数返回当前打开的数据库的完整文件名。函数DBUSED(数据库名)返回指定的数据库文件是否处于打开状态。,2、检查数据库的有效性,链接被破坏后可以重新链接,具体方法为在VALIDATE DATABASE 命令中使用RECOVER子句。如:OPEN DATABASE testdata VALIDATE DATABASE RECOVER 如果是从磁盘意外的删除了某个库文件,而表文件中仍保留对该数据库的后链,这个表就不能被添加到其他数据库中,这时需要从表中删除后链:FREE TABLE 表文件名,用户移动了数据库文件或者表文件,则这些文件的相对路径发生改变,则可能会破坏库和库表之间的双向链接。,3.2.2 数据库的打开与关闭,3、关闭数据库,(1)使用“项目管理器”(2)使用CLOSE DATEBASES命令 CLOSE DATABASES关闭当前数据库和表。若无当前数据库,则关闭所有工作区内所有打开的自由表、索引文件和格式文件,并选择工作区1。CLOSE DATABASES ALL关闭所有打开的数据库和其中的表、所有打开的自由表、所有工作区内所有索引和格式文件。CLOSE ALL关闭所有的数据库、表、索引以及各种设计器。,4、删除数据库,利用项目管理器进行。,3.2.2 数据库的打开与关闭,3.3 表的创建与使用,表的分类:数据库表属于某个数据库(简称库表)自由表与数据库无关,注意:一张表在同一时刻只能属于一个数据库,不能将一个数据库的表添加到另一个数据库中。,扩展名都是.dbf,保存一个表的同时将生成一个表的备份文件.fpt,3.3.1 表结构概述,表:指存放在磁盘文件中的一张二维表。一张表保存为一个表文件(.dbf),表的记录必须用一个公共的结构来存储,这个公共结构就是表的结构。,每张表最多有255个字段,3.3.2 利用表设计器或命令创建和修改表结构,界面方式创建表的结构:,界面方式修改表的结构:,命令方式修改表的结构:,1、添加字段 将bjmc(班级名称)字段添加到xs表中 ALTER TABLE xs ADD COLUMN bjmc C(12),2、重命名字段 将bjmc改为bj ALTER TABLE xs RENAME COLUMN bjmc TO bj,3、删除字段 将bj字段删除 ALTER TABLE xs DROP COLUMN bj,3.3.2 利用表设计器或命令创建和修改表结构,3.3.3 字段属性和表属性,1、字段的扩展属性,字段显示时的格式,显示的大小写和样式等,字段输入数据的格式,使字段具有更好的可读性,用于控制输入到字段中的数据的取值范围,用包含该字段的逻辑表达式来验证,如果当前输入值使逻辑表达式的值为假,则拒绝输入该值。如:(xb=男 or xb=女),添加新记录时,为字段指定的初始值,该值与字段指定的类型必须一致。如:性别字段的默认值可指定为男,对有效性规则的说明,例:给jxsj数据库中的cj表的cj字段进行如下设置:1、cj字段在输入时只允许是三位的数字2、设置标题为“成绩”3、输入的成绩值必须在0-100分之间4、设置默认值为60分5、设置注释为:“学生各门课程的成绩”设置如下:,2、数据库表的表属性,3.3.3 字段属性和表属性,库表的字段级和记录级以及表的触发器,为数据的输入和更改实施了约束。,库表的约束机制及其激活时机,3.3.3 字段属性和表属性,3.3.4 表的打开与关闭,工作区的几个概念用以标识一张打开的表的区域。每个工作区都有一个编号,从132767(前10个可以用字母AJ表示);每个工作区只能打开一张表,但一张表可以在多个工作区打开,用AGAIN子句;在工作区打开的表都有一个别名,也可使用表的别名作为工作区号。系统正使用的工作区为当前工作区,启动VFP后默认当前工作区为1。可以用SELECT命令选择当前工作区。如:SELECT 4&选择4号工作区 SELECT 0&选择当前未使用的工作区区号最小的工作区。,1、工作区,2、数据工作期窗口,3.3.4 表的打开与关闭,当前工作区区号,3、表的打开,界面操作使用命令,USE TableName IN nWorkArea|cTableAlias1 AGAINALIAS cTablesAlias2NOUPDATE,3.3.4 表的打开与关闭,USE xs&在当前工作区打开xs表,xsUSE js Alias jiaoshi IN 4&在工作区4中打开js表 USE zg IN 0&在最小未用工作区中打开zg表 USE xs AGAIN IN 5&在工作区5中再次打开xs表,EUSE xs AGAIN IN 15&在工作区15中再次打开xs表,W15,4、表的关闭,1、界面操作,3.3.4 表的打开与关闭,(1)使用菜单命令文件/打开或单击常用工具条上的打开按钮,此时打开的表是在当前工作区中打开。,(2)在数据工作期窗口中单击打开按钮,此时打开的表在当前未被使用的最小工作区中打开,且当前工作不变。,(3)在项目管理器窗口中选择需要打开的表,然后单击修改或浏览按钮,此时表在当前未被使用的最小工作区中打开,且该工作区为当前工作区。,2、使用命令 USE 关闭当前工作区中的表 USE IN 别名|工作区 关闭非当前工作区中的表 CLOSE ALL 或CLOSE DATABASE 或 CLOSE TABLES 关闭所有工作区中的表3、在退出VFP时,所有的表被关闭,5、表的独占和共享使用,(1)“工具”“选项”,3.3.4 表的打开与关闭,独占,(2)使用SET EXCLUSIVE 命令,SET EXCLUSIVE OFF设置“共享”为默认打开方式SET EXCLUSIVE ON设置“独占”为默认打开方式,(3)强行用一种方式打开,在用命令打开表时,加子句“SHARED”(共享)或“EXCLUSIVE”(独占)来指定打开方式。,USE xs SHARED共享方式打开xs表USE js EXCLUSIVE独占方式打开js表,3.3.4 表的打开与关闭,3.3.5 记录的处理,记录的输入,记录的定位,记录的浏览,记录的修改,记录的删除,筛选记录或字段,记录处理,数据的复制,3.3.6 索引的创建和使用,记录的顺序物理顺序表中记录的存储顺序。逻辑顺序表被打开使用时,记录的处理 顺序。,注:物理顺序和逻辑顺序可以相同也可以不 同,但实际应用中往往不同。,1、索引的概述,索引是由一系列记录号组成的一个列表。记录号在列表中的顺序是按照各个记录的索引关键字的值,从小到大或从大到小进行排列的。,(1)索引关键字 通常是一个字段或字段表达式,有时也称索引表达式,它是建立索引的依据。,3.3.6 索引的创建和使用,用多个字段建立索引表达式,应注意:,1)字符型表达式的计算结果影响索引的结果 如:“xs.ximing+xs.xb”和“xs.xb+xs.ximing”2)用多个“数值型”字段求和建立的索引表达式,索引将按字段和,而不是字段本身。3)不同类型字段构成一个表达式时,必须转换数据类型。,(2)索引标识(Tag),即索引关键字的名称,也称索引名。,3.3.6 索引的创建和使用,2、索引文件的种类,索引本身不改变表中数据的物理顺序,只是把索引保存到另一个文件中,这个文件就是索引文件。,1、结构复合索引文件 与对应的表文件的主文件名相同,在创建时系统自动给定。与表文件同时打开、更新和关闭。2、非结构复合索引文件 文件名由用户给出。打开表时,对应的非复合结构索引文件不自动打开,需用命令。3、独立索引文件 只存储一个索引的索引文件,一般作为临时索引文件。好处是查找速度快。也不会随表的打开而打开。,3.3.6 索引的创建和使用,3、创建结构复合索引文件,1、用“表设计器”创建2、用命令创建,语法:INDEX ON 索引表达式 TAG 索引标识名 FOR 条件表达式ASCENDING|DESCEDING UNIQUE|CANDIDATE,ON 索引表达式创建一个关键字段表达式。TAG 索引标识名指定索引的标识名。FOR 条件表达式指定参加索引的表中记录的条件 表达式,默认为表中所有记录参加。ASCENDING|DESCEDING升序或降序。UNIQUE唯一索引。CANDIDATE创建候选索引标识。,3.3.6 索引的创建和使用,(1)主索引在数据表中每张表只能创建一个主索引。组成主索引的关键字的字段或表达式在表的所有记录中不能 有重复值。(2)候选索引指定的关键字段或表达式中不允许有重复值。一张表中可以建立多个候选索引。(3)普通索引允许关键字段或表达式中的值出现重复。一张表中可以建立多个普通索引。在普通索引上查找的记录不具唯一性。(4)唯一索引允许关键字段或表达式中的值出现重复,但仅存储其中的第 一个。,索引的类型:,3.3.6 索引的创建和使用,创建结构复合索引需注意的问题(1)不能对备注型字段和通用型字段建立索引。(2)不要建立无用的索引,多于的索引将降低系统性能。,3.3.6 索引的创建和使用,4、索引的使用,(1)设置主控索引主控索引在某一时刻只有一个索引对表起作用,这个索引称为主控索引。可以是复合索引文件中的一个索引标识,也可以是临时索引文件。,打开表的同时设置主控索引指定复合索引文件的主控标识。USE 表文件名 ORDER TAG 标识名,3.3.6 索引的创建和使用,打开表后再设置主控索引,界面方式命令方式 SET ORDER TO TAG名 IN 工作区|别名 ASCENDING|DESCENDING,3.3.6 索引的创建和使用,(2)利用索引快速定位记录,SEEK命令用于在一张表中搜索指定表达式的值首次出现的记录,这条记录的索引关键字必须与指定的表达式匹配。语法:SEEK 指定表达式 ORDER 索引标识 ASCE|DESCIN 工作区|别名如:USE JS ORDER GH SEEK“A0005”,3.3.6 索引的创建和使用,3.3.7 自由表 3.3.8 利用命令创建和修改表结构,3.4 永久关系和参照完整性,3.4.1 表之间的永久性关系库表之间的一种关系,不仅运行时存在,而且 一直保留。拥有永久关系的表必须在数据库中。表之间的永久关系使用索引建立。永久关系的类型决定了使用的索引的类型。一对多关系中,主表必须用主索引关键字(或主索引标 识),或用候选索引关键字(或候选标识),子表则使用普 通索引关键字(或普通索引标识)。一对一关系中,两张表必须都用主索引关键字(或主索引标识)或候选索引。,永久关系的作用,在“查询设计器”和“视图设计器”中,自动作为默认连接条件。作为表单和报表的默认临时关系,在“数据环境设计器”中显示。用来存储参照完整性信息。,3.4.1 表之间的永久性关系,永久关系的建立,分以下几步进行:确定两张具有一对多或一对一关系的表。建立主表的主索引或候选索引。如果是一对多关系,则在子表中以主表的外关键字建立普通索引;如果是一对一关系,则在子表中以与主表中相同的关键字建立索引或候选索引。从主表的主索引或候选索引到子表的相关的索引建立永久关系。,3.4.1 表之间的永久性关系,具体的操作为:,在界面方式下操作,利用“数据库设计器”。使用命令:在使用CREATE TABLE命令创建表时与FOREIGN KEY 子句一起使用。如:CREATE TABLE cj(xh C(6),kcdh C(6),cj;N(3,0),FOREIGN KEY xh TAG xh REFERENCE xs)如果cj表已经存在,则使用ALTER TABLE 命令来建立。ALTER TABLE cj ADD FOREIGN KEY xh TAG;xh REFERENCE xs,删除、编辑修改永久关系,3.4.1 表之间的永久性关系,3.4.2 相关表之间的参照完整性,1、参照完整性的概念 是用来控制数据的一致性,尤其控制数据库相关表之间的主关键字和外部关键字之间数据的一致性。,数据一致性要求相关表之间须满足以下三个规则:(1)子表中的每一条记录在对应的主表中必须有一个父记录。(2)在父表中修改记录时,如果修改了主关键字的值,则子表中的相关记录的外部关键字值必须同样修改。(3)在父表中删除记录时,与该记录相关的子表中的记录必须全部删除。,孤立记录子表中的某些记录在主表中没有对应父记录。,2、设置参照完整性,建立在永久关系的基础上。参照完整性规则被设置在主表或子表的触发器中,规则的代码保存在数据库的存储过程中。,具体设置:在“数据库设计器”中,通过永久关系建立。,3.4.2 相关表之间的参照完整性,更新规则:级联、限制、忽略删除规则:级联、限制、忽略插入规则:限制、忽略,3、VFP 数据完整性综述,三类完整性:(1)实体完整性(2)参照完整性(3)用户自定义完整性,实体完整性包括:字段的数据完整性和记录的数据完整性。参照完整性指:相关表之间的数据一致性。,3.4.2 相关表之间的参照完整性,3.5 有关数据库及其对象的常用函数,DBC()DBUSED()DBGETPROP()DBSETPROP(),DBGETPROP()函数的利用,例1.要查看js表及它所在的jsxj数据库的注释。,先打开jsxj数据库,然后?DBGETPROP(“jxsj”,”DATABASE”,”Comment”)?DEGETPROP(“js”,”TABLE”,”Comment”),例2.要查看js表jbgz字段的标题、注释与默认值。,?DBGETPROP(“jx.jbgz”,”FIELD”,”Caption”)?DBGETPROP(“jx.jbgz”,”FIELD”,”Comment”)?DBGETPROP(“jx.jbgz”,”FIELD”,”DefaultValue”),DBSETPROP()函数的利用,例1.要设置jsxj数据库和js表的注释。,=DBSETPROP(“jxsj”,”DATABASE”,”Comment”,”教学数据库”)=DBSETPROP(“js”,TABLE,”Comment”,”教师表”),例2.要设置js表的xb字段的标题。,=DBSETPROP(“js.xb”,”FIELD”,”Caption”,”性别”),习题,确定建立数据库的目的:必须充分了解用户的需求。(需求分析),3.1.1 数据库的设计过程,确定表时,应避免重复的信息。重复信息可能带来的后果:表中数据量的成倍增加和用户数据录入工作量的增加。重复录入易致错,从而造成数据不一致。有用的信息易被删除。,确定所需的表:,3.1.1 数据库的设计过程,确定表的字段:,1、每个字段直接和表的主题相关,2、不要包含可推导得到或需计算的数据字段,有了出生年月字段就不需年龄字段了。,3、收集所需的全部信息,4、以最小的逻辑单位存放信息,5、每张表必须明确主关键字,利用主关键字可以连接多张表中的数据,把相关数据组合起来。,3.1.1 数据库的设计过程,确定表之间的关系:,(1)一对多关系(1:n):设有两张表甲、乙。如果甲表中的任一记录在乙表中可以有几个记录与之对应,而在乙表中每个记录在甲表中只有一个记录与之对应,则称甲、乙两张表之间存在一对多关系。,3.1.1 数据库的设计过程,(2)多对多关系(m:n):甲表中的一个记录在乙表中可以对应多个记录,而乙表中的一个记录在甲表中也可以对应多个记录,则称两个表具有多对多关系。,学生表和课程表之间就是多对多关系。建立第三张表成绩表,将多对多关系分解成两个一对多关系。,3.1.1 数据库的设计过程,(3)一对一关系(1:1):甲表中的一个记录在乙表中只对应一个记录,乙表中的一个记录在甲表中也只有一个对应记录。,2、分析并确定表之间的关系,3.1.1 数据库的设计过程,1、长表名 在创建表时,每张表的表文件名就是表名。其长度受操作系统的限制,在VFP中规定,数据库表及自由表的表名最大长度为128个字符。在打开数据库时,长表名可以代替表名。但是使用长文件名打开表时,表所属数据库必须是打开的,且为当前数据库。,长表名的设置:可以在“表设计器”或在使用CREATE TABLE 命令创建表时,用NAME子句指定长表名。,如:CREATE TABLE BK NAME 学生补考表(XH;C(6),KCDH C(2),CJ N(3,0),BACK,3.3.3 字段属性和表属性,2、表记录的验证规则,3.3.3 字段属性和表属性,如何设置:在“表设计器”的“表”选项卡中,在“规则”和“信息”框中输入所需的规则和信息。记录的验证规则是一个逻辑表达式,记录的验证信息是一个带双引号的字符表达式。,例如,对js表中的记录需要满足如下要求:工作日期与出生日期必须相差18年,则应在“记录验证规则”框中输入如下的表达式:year(js.csrq)-year(js.gzrq)=18在信息框中输入:“工作日期与出生日期必须相差18年”,如何设置:在“表设计器”的“表”选项卡中,在“规则”和“信息”框中输入所需的规则和错误信息。,3.3.3 字段属性和表属性,也可以使用CREATE TABLE 或ALTER TABLE 命令的CHECK子句。具体使用参照前面字段级规则的设置。,字段级和记录级规则能够控制输入到表中的信息类型,而不管是通过什么方式来访问。建立在数据库中的规则可以对表的所有用户实施。,如:以下命令建立js表的记录的有效性规则:必须年满18周岁才能参加工作!ALTER TABLE JS ALTER COLUMN SET CHECK;CSRQ-GZRQ=18 ERROR“必须年满18周岁才能参加工作!”以下命令可删除JS表的记录有效性规则:ALTER TABLE JS DROP CHECK,3.3.3 字段属性和表属性,BACK,3、表的触发器,(1)基本概念 表的触发器是在一个插入、更新或删除操作之后运行的记录级事件代码。触发器是绑定在表上的表达式,当表中的任何指定的记录被修改时,触发器被激活。如果从数据库中移去一张表,则同时删除和该表相关联的触发器。与字段级规则和记录级规则不同,触发器不对缓冲数据起作用。,3.3.3 字段属性和表属性,(2)创建表的触发器,可以用“表设计器”或CREATE TRIGGER命令来创建触发器。,注:触发器必须返回“真”或“假”,在记录的验证规则之后进行,且在缓冲更新时不运行。,3.3.3 字段属性和表属性,三种触发器的含义:插入触发器:每次向表中插入或追加记录时触发该规则。更新触发器:每次在表中修改记录时触发该规则。删除触发器:每次在表中删除记录时触发该规则。注:触发器必须返回.T.或.F.,在进行插入、更新、删除时首先检查表的有效性规则、主关键字等信息,然后再检查触发器的返回值,如果对记录执行的操作使逻辑表达式的值为.T.,则允许该操作;否则拒绝该操作。,创建触发器的过程是:利用“表设计器”使用命令,创建插入触发器:CREATE TRIGGER ON 表名 FOR INSERT AS 逻辑表达式创建更新触发器:CREATE TRIGGER ON 表名 FOR UPDATE AS 逻辑表达式创建删除触发器:CREATE TRIGGER ON 表名 FOR DELETE AS 逻辑表达式,3.3.3 字段属性和表属性,(3)移去或删除触发器,在“表设计器”中直接从触发器区域删除表达式。利用命令,格式如下:DELETE TRIGGER ON 表名 FOR DELETE|INSERT|UPDATE,注:如果从数据库中移去或删除表,则所有属于该表的触发器都从数据库中删除。,3.3.3 字段属性和表属性,例:对JS表设置如下规则和触发器:(1)工龄在10年以上(包含10年)的教师,最低工资不得低于800元(2)当csrq字段的值是.NULL.时允许删除,否则不允许删除(3)只有男教师才可被修改,女教师不允许修改设置如下:IIF(gl=10,jbgz=800,.T.),注:在插入(更新、删除)一个记录时,首先要进行记录有效性的检查,然后再激活触发器。,例:CJ表中,XH(学号)字段的前两位表示年级,设置如下规则和触发器:(1)若03级的学生是新生,CJ(成绩)字段必须为0(2)只有02级的学生成绩才允许被修改(3)CJ表中所有记录不允许被删除,(1)iif(left(cj.xh,2)=03,cj.cj=0,.T.)(2)更新触发器:left(CJ.XH,2)=02(3)删除触发器:.F.,BACK,记录的追加:,1、立即输入。2、在浏览状态下向表中追加记录。3、使用INSERT-SQL命令追加记录。4、使用APPEND 与APPEND FROM命令 5、从其他表中追加记录。,返回,3.3.5 记录的处理,INSERT INTO 表名(字段1,字段2);VALUES(表达式1,表达式2),命令的一般格式:,3.3.5 记录的处理,例:给ts表追加记录。,insert into ts(sh,sm,cbsbh,zz,dj,cbrq,rkrq,rkcs,kccs,bz);values(B821-49/472P,高调做事低调做人方法全集,B003,;何跃青,39.8,1997/11/04,1998/04/03,2,2,畅销书),3.3.5 记录的处理,用APPEND命令添加语法:APPEND BLANKIN nWorkArea|cTableAlias功能:在指定表的尾部添加空记录使用该命令必须先用USE命令打开表 用APPEND FROM命令从其他表或文件中导入数据语法:APPEND FROM Filename DELIMITED|XLSDELIMITED表示追加文件为文本文件,XLS表示文件为Excel文件,缺省时追加文件为表文件。数据添加到当前工作区的表中,例:利用append from命令将cbs1.dbf和cbs2.xls中的数据追加到cbs表中,备注型字段的数据输入:双击备注型字段,在出现的编辑窗口中输入备注内容,或者按Ctrl+Home组合键进入编辑窗口。通用型字段的数据输入:双击通用型字段,进入编辑窗口,选择菜单“编辑”“插入对象”由文件创建”选择文件。按Ctrl+Home组合键进入编辑窗口,BROWSE命令的使用,BROWSE FIELDS FieldlistFOR lExpressionFREEZE FieldNameNOAPPENDNODELETENOMODIFYTITLE cExpression,返回,3.3.5 记录的处理,close tables alluse dzbrowse lx=学生 field xm,jg&浏览2006年以后(包含2006年)入学的江苏籍学生的xm、jg,筛选记录,筛选字段,1、界面方式2、命令方式:SET FILTER TO 条件表达式,1、界面方式2、命令方式:SET FIELD TO 字段列表,返回,3.3.5 记录的处理,例:筛选出年龄在20岁以下(包括20岁)的记录,set filter to year(date()-year(csrq)=20,例:筛选出xm、csrq字段,set field to xm,csrq,记录的定位,三个控制标志:记录的开始标志 记录指针标志 记录的结束标志,3.3.5 记录的处理,记录号 学号 姓名 性别 专业代号 系名 1 990101 李林 男 102006 信息管理系 2 990102 高山 男 102006 信息管理系 3 990106 陆海涛 男 102006 信息管理系 4 5 6,函数RECNO()返回当前记录号(数值型)BOF()测试记录指针是否在文件头(逻辑型)EOF()测试记录指针是否在文件尾(逻辑型),具体一张二维表的记录指针:,3.3.5 记录的处理,打开一个表(有记录和无记录)时,三个函数的值分别多少?,记录的定位方式:,绝对定位:指把指针移动到指定的位置。相对定位:把指针从当前位置开始,相对于当前记录向前或向后移动若干个记录位置。条件定位:指按照一定的条件自动地在整张表和表的某个指定范围中查找符合该条件的记录。如果找到,则把指针定位到该记录上,否则将定位到整张表或表的指定范围的末尾。,3.3.5 记录的处理,记录定位的实现,1、界面方式(菜单“表/转到记录”),2、使用命令,GOTO nRecordNumber IN nWorkArea|cTableAlias|Top|Bottom SKIP nRecordsIN nWorkArea|cTableAlias说明:nRecords0,指向文件尾移动nRecords个记录。nRecords0,指向文件头移动|nRecords|个记录。nRecords省略,则等价于SKIP 1。LOCATE FOR lExpressionScope,3.3.5 记录的处理,绝对定位:指把指针移动到指定的位置,使用GOTO命令。例:GOTO 3 IN 2&定位到2号工作区的第三条记录 GOTO TOP&定位到第1条记录 GOTO BOTTOM&定位到最后一条记录,相对定位:把指针从当前位置开始,相对于当前记录向前或向后移动若干个记录位置,使用SKIP命令。Skip 1时,1可以缺省,表示向下一条记录。SKIP 2 IN 2&2号工作区中的记录指针向后移动2个 SKIP-1&向前移动一个,条件定位:指按照一定的条件自动地在整张表和表的某个指定范围中查找符合该条件的记录。如果找到,则把指针定位到该记录上,否则将定位到整张表或指定范围的表的末尾。,LOCATE FOR 条件实例:USE XS?RECNO()LOCATE FOR XB=“男”?RECNO()CONTINUE&记录指针下移到下一个符合条件的记录?RECNO(),返回,使用命令定位记录,记录的修改:,1、界面方式,2、命令方式,语法:UPDATE 表名;SET 字段1=表达式1,字段2=表达式2;WHERE 条件表达式,3.3.5 记录的处理,例:所有书名加上符号,update ts set sm=+alltrim(sm)+,练习:在js 表中要按如下要求更改基本工资(jbgz):工龄在10年以下(不含10年)基本工资加20工龄在10-19年 基本工资加35工龄在20年以上(含20年)基本工资加50可用一个UPDATE 命令完成上述更改:UPDATEjs JBGZ=IIF(js.gl10,_,;IIF(_,jgbz+50,jgbz+35),REPLACE命令,语法:REPLACE 字段1 WITH 表达式1 ADDITIVE,字段2 WITH 表达式2,SCOPEFOR 条件功能:用表达式表示的值去更新指定的字段的值。说明:ADDITIVE仅对备注型字段有效;FOR和SCOPE缺省时均表示对当前记录进行替换;用该命令更新表时,表必须事先打开;执行完该命令后,记录指针位于指定范围的结尾。,3.3.5 记录的处理,例:所有书号以F开头的图书,单价上浮10%,use ts replace dj with dj*1.1 for left(sh,1)=F,例:若XSCJ表中有SX(数学)、YY(英语)、YW(语文)、ZF(总分)字段,都是N型,要将所有学 生的各门成绩汇总后存入ZF字段中,请完成下列命令:UPDATE XSCJ SET ZF=SX+YY+YW或者:Use XSCJREPLACE ALL ZF WITH SX+YY+YW,对所有的记录,否则仅替换当前记录,返回,记录的删除,分两个不步骤实现:1、标记要删除的记录2、彻底删除带删除标记的记录,1、界面方式,2、命令方式,标记要删除的记录,3.3.5 记录的处理,DELETE命令(必须事先打开表)语法:DELETE ScopeFOR 条件表达式 IN 工作区号|表的别名功能:对指定范围内满足条件的记录设置删除标记。如:给ts表中单价在100以上的记录设置删除标记USE tsdelete for dj100 DELETE-SQL语法:DELETE FROM 表名 WHERE 条件表达式 如:给ts表中出版日期在2000年以前的记录设置删除标记 delete from ts where year(cbrq)2000,3.3.5 记录的处理,彻底删除记录利用菜单、PACK、ZAP命令,恢复带删除标记的记录RECALL 命令的使用,返回,3.3.5 记录的处理,复制表的内容:,复制表文件语法:COPY TO Filename FIELDS FieldList ScopeFOR Expression功能:复制当前表文件中满足条件的记录到新表中。,返回,3.3.5 记录的处理,例:将dz表中所有性别为“男”的记录复制到dz1表、文本文件dz3.txt、excel文件dz4.xls中,use dzcopy to dz1 for xb=男“copy to dz3 sdf for xb=男 field xm,xbcopy to dz4 xls for xb=男 field xm,xb,已知自由表STUDENT中包含20条记录,执行下列程序段后,N的值为_。USE STUDENTDELETE NEXT 4SET DELETED ONN=RECCOUNT(),20,第3章 自测题,执行下列命令后,JS表的打开方式为_,XS表的打开方式为_。SET EXCLUSIVE OFFUSE JSUSE XS EXCLUSIVE IN 0,共享,独占,第3章 自测题,执行下列命令后:CLOSE TABLES ALLSELECT 0USE XS ALIAS STUUSE JS IN 0 函数USED(”JS”)的值为_,函数SELECT()的值为_,函数ALIAS()的值为_。,.T.,1,STU,第3章 自测题,对于学生表XS.DBF执行下述程序后,X1,X3的值分别是:_,USE XSLOCATE NEXT 6 FOR XB=“女”X1=RECNO()X2=FOUND()LOCATE NEXT 4 FOR JG=“重庆”X3=RECNO()X4=FOUND()X5=EOF()?X1,X2,X3,X4,X5CLOSE DATARETURN,X1=4,X3=7,第3章 自测题,若XS表与CJ表之间已建立了参照完整性:更新级联、删除限制、插入限制。就如下图中的数据而言,如果把XS表中950102 的XH改为 951102,则CJ表中将会有_条记录被更改。如果把CJ表中XH为950105 的学生成绩记录均删除,则XS表中将会有 _条记录被删除。如果想在XS表中插入XH为990101 的学生记录,则允许否?_,允许,3,0,第3章 自测题,本章实验内容:,第3章 实验,本章共5个实验实验3.1 数据库与表的创建实验3.2 表记录的维护处理实验3.3 记录的定位与表索引的创建和使用实验3.4 数据库表的扩展属性与参照完整性规则实验3.5 项目、数据库和表操作综合,第3章 上机实验(1),第3章上机实验(2),掌握数据库的创建、使用以及与库表的关系,掌握表结构的创建与修改、表的打开与关闭以及工作区的概念和使用。,掌握表记录的追加、浏览、定位、修改、删除和筛选操作及相关的命令。,掌握索引的概念、类型。结构复合索引文件的创建、修改和使用方法。,掌握永久关系的概念、作用、创建方法,以及设置相关表之间的参照完整性。,掌握有关数据库及其对象的常用函数。,要点总结,end,