《(精品)第3章数据库与表的创建及使用.ppt》由会员分享,可在线阅读,更多相关《(精品)第3章数据库与表的创建及使用.ppt(120页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章 数据库与表的创建及使用 数据库是一个容器,存储和管理各种对象。数据库是一个容器,存储和管理各种对象。如表、视图、关系、连接以及存储过程。支持如表、视图、关系、连接以及存储过程。支持长表名、长字段名以及各种数据完整性检查机长表名、长字段名以及各种数据完整性检查机制等。制等。3.1 3.1 数据库概述数据库概述 3.2 3.2 数据库的创建、打开与使用数据库的创建、打开与使用 3.3 3.3 表的创建与使用表的创建与使用 3.4 3.4 永久性关系与参照完整性永久性关系与参照完整性 3.5 3.5 库操作几个常用函数库操作几个常用函数3.1 数据库概述nVFP数据库数据库是许多相关表及其关
2、系集合是许多相关表及其关系集合 例如:教学管理中,例如:教学管理中,数据库表之间的关系数据库表之间的关系:(专业代号)(专业代号)(工号)(工号)(课程代号)(课程代号)(学号)(学号)教师表教师表课程表课程表任课表任课表成绩表成绩表专业表专业表学生表学生表DB结构图结构图:DB自由表自由表数据库表数据库表1数据库表数据库表2数据库表数据库表n记录记录1记录记录n字段字段1字段字段n数据的集合数据的集合实体集实体集实体实体属性属性RETURN3.1.1 数据库设计的过程n步骤:五个步骤:五个 P67-P70 (1)确定建立数据库的目的确定建立数据库的目的 需求分析(重要)需求分析(重要)(2)
3、确定所需表确定所需表 减少信息冗余(技巧)减少信息冗余(技巧)冗余缺点:工作量增加,误操作,数据不一致性冗余缺点:工作量增加,误操作,数据不一致性 (3)确定所需字段确定所需字段 a.字段与主题相关字段与主题相关 b.不包含可推导字段不包含可推导字段 c.收集所需的全部信息收集所需的全部信息 d.以最小的逻辑单位存储信息以最小的逻辑单位存储信息 e.每张表有明确的主关键字每张表有明确的主关键字 续DB的设计过程(4)确定表之间的关系确定表之间的关系 三种关系:三种关系:a.一对一一对一 b.一对多一对多 c.多对多多对多 需建纽带表需建纽带表(5)改进设计改进设计RETURN3.1.2 数据库
4、的组成数据库是由数据库表、视图、连接、存储过程等内容组成的。数据库表:从属于某一个数据库的表 数据库表与数据库之间的相关性 是通过双向链接实现的 (后后链链)存存放放库库表表文文件件DBF的的表表头头中中的的路路径径和和数数据据库库名名,将将自自身身与与包包含含自自身身的的数数据据库库容容器器相相链链(前前链链)保保存存在在数数据据库库文文件件DBC中中表表文文件的路径和文件名,将库与库表相链接件的路径和文件名,将库与库表相链接数数据据库库数数据据库库表表 表的添加、新建、移去等与库之间关系表的添加、新建、移去等与库之间关系 添加添加:自由表加到数据库中自由表加到数据库中,成为数据库表成为数据
5、库表 (建立了数据库与表之间的双向链接建立了数据库与表之间的双向链接)新建新建:新建的表直接创建成数据库中的表新建的表直接创建成数据库中的表 移去移去:数据库表从数据库中释放出来数据库表从数据库中释放出来,成为自由表成为自由表 (删除了数据库文件与表文件的双向链接删除了数据库文件与表文件的双向链接)视图、连接、存储过程、数据字典等内容后面介绍视图、连接、存储过程、数据字典等内容后面介绍RETURNRETURN3.2 数据库的创建、打开与使用n每创建一个数据库都将生成三个文件每创建一个数据库都将生成三个文件 数据库文件,其扩展名:.dbc 数据库备注文件,其扩展名:.dct 数据库文件的索引文件
6、,其扩展名:.dcx 数据库文件并不在物理上包含任何附属对象(如表或字段等),在其中仅存储了指向表文件的路径指针。这也是VFP数据库与PB、VC、SQL数据库的最大区别。RETURN3.2.1 创建数据库n创建数据库的方法:(1)“项目管理器”-“数据库”-“新建”,则打开“新建”对话框-输入数据库名-“保存”-“数据库设计器”,“数据库设计器”工具栏 创建数据库方法(2)(2)工具栏中工具栏中“新建新建”-“数据库数据库”(不属于项目管理器不属于项目管理器)RETURN创建数据库(3)(3)CREATE DATABASE 数据库名数据库名/?数据库名数据库名:则创建数据库,并处于打开状态,但
7、不出则创建数据库,并处于打开状态,但不出现数据库设计器现数据库设计器?:自动打开自动打开“新建新建”对话框对话框RETURN3.2.2 数据库的打开与关闭n打开数据库有多种方式:(1)新建的数据库,保存后自动打开 (2)打开数据库中表时,自动打开其数据库 (3)“项目管理器”-选数据库-单击“修改”打开数据库 (4)打开一个项目文件后,自动打开其包含数据库 (5)使用 OPEN DATABASE 命令打开数据库打开数据库OPEN命令 基本语法:OPEN DATABASE DatabaseEXCLUSIVE|SHARED NOUPDATEVALIDATE EXCLUSIVE|SHARED:以独占
8、还是共享方式打开(缺省独占)NOUPDATE:数据库打开后,不能修改 VALIDATE:打开数据库时进行有效性检验 另外,数据库也可以同时打开多个。例:OPEN DATABASE db1 OPEN DATABASE db2 OPEN DATABASE db3RETURN数据库的使用设置当前数据库 在打开数据库时,最后一个打开库为当前数据库 也可以把其他数据库设置为当前数据库 设置方式:(1)“常用”工具栏-数据库下拉列表-选择数据库 (2)使用 SET DATABASE TO Database 注意:VFP多种操作命令是针对当前数据库。RETURN数据库的使用检查有效性在移动库或库表文件时,这
9、些文件的相对路径会改变,可能会破坏关联的库和表的双向链接。可以使用 VALIDATE DATABASE 命令检查库的有效性和更新链接。其基本语法:VALIDATE DATABASE RECOVER TO PRINTER TO FILE 文件RECOVER:更新链接,缺省检查库的有效性TO 字句:检查结果信息的去向。缺省在VFP主窗口显示。注意:该命令要求当前库必须以独占方式打开。RETURN数据库的使用关闭数据库(1)“项目管理器”-选数据库-单击“关闭”按钮 关闭选择数据库及其所属表(2)CLOSE DATABASE 命令 关闭当前数据库及其所属表(3)CLOSE DATABASE ALL
10、命令 关闭所有数据库及其所属表 如没有打开的库,则关闭所有工作区的自由表、索引和格式文件,并将当前工作区设置为工作区1RETURN数据库的使用删除数据库 删除数据库意味着将删除存储在该数据库中的一切信息。操作:“项目管理器”-选择数据库-单击“移去”按钮 注意:通过该操作删除数据库,则该库所属的库表将自动变为自由表。RETURN3.3 表的创建与使用数据库表:表文件属于某一个数据库。数据库表:表文件属于某一个数据库。自由表:表文件与数据库无关联。自由表:表文件与数据库无关联。数据库表除具有自由表的所有特性数据库表除具有自由表的所有特性外,还具有数据库管理的其他特性外,还具有数据库管理的其他特性
11、表的概念的概念 表:表:是指存放在磁盘文件中的一张二维表。保存为一个表文件(.dbf),不可用AJ单字母作文件名 注意:每张表最多可以有255个字段字段(field):表中的一列 学生表中的学号、姓名、年龄等纪录(record):表中的一行。纪录是多个字段的集合表的创建和使用3.3.1 3.3.1 表结构表结构3.3.2 3.3.2 用表设计器创建与修改表结构用表设计器创建与修改表结构3.3.3 3.3.3 字段属性与表属性字段属性与表属性3.3.4 3.3.4 表的打开与关闭表的打开与关闭3.3.5 3.3.5 记录的处理记录的处理3.3.6 3.3.6 索引的创建与使用索引的创建与使用3.
12、3.7 3.3.7 自由表自由表3.3.8 3.3.8 利用命令创建和修改表结构利用命令创建和修改表结构RETURN3.3.1 表结构 1、字段名字段名(field name)每一个字段的名字,用以在表中标识该字段。命名规则:“见名知意见名知意”2、数据类型数据类型(type)表中的每个字段都有特定的数据类型 11种字段类型,表(3-1)P76 3、字段宽度、字段宽度(width)指该字段所能容纳的最大字节数 *整型,备注型,通用型 4字节 *货币型,日期型,日期时间型,双精度型 8字节 *逻辑型 1字节4、小数位数、小数位数(decimal)字段宽度字段宽度=整数部分整数部分+小数点小数点+
13、小数部小数部分分 特例特例:字段宽度字段宽度=整数部分整数部分+1 纯小数纯小数5、空值支持、空值支持 空值,是用来标记记录中空值,是用来标记记录中“未知值未知值”。不等同于不等同于0,空字符串,逻辑,空字符串,逻辑“假假”RETURN3.3.2 用表设计器创建和修改表结构 一、利用表设计器创建表结构 P77 打开表设计器,在表设计器中创建表结构自由表设计器二、用表设计器修改表结构1、如表已在项目中,则可先选定要修改表,然后单击“修改”打开“表设计器”对话框。2、在命令窗口使用 modify structure 打开对话框 命令窗口RETURN3.3.3 字段属性与表属性一、数据字典二、数据库
14、表的字段扩展属性三、数据库表的表属性RETURN 一、数据字典n数据字典:数据字典:P72 是包含数据库中所有表信息的一张表n元数据:元数据:存储在数据字典中的信息即数据的数据 每个数据库带有一个数据字典,其数据存储在数据库文件中。数据字典扩展了对数据的描述,从而增强了数据管理和控制功能。数据字典内容 表中字段的标题、注释、默认值、输入掩码和表中字段的标题、注释、默认值、输入掩码和显示格式,以及表单中使用的默认控件类等显示格式,以及表单中使用的默认控件类等 表的主索引关键字。表的主索引关键字。数据库表之间的永久关系。数据库表之间的永久关系。长表名和表注释。长表名和表注释。字段级和记录级有效性规
15、则。字段级和记录级有效性规则。存储过程。存储过程。插入、更新和删除事件的触发器。插入、更新和删除事件的触发器。RETURN二、数据库表字段的扩展属性n字段的基本属性-与自由表相同 字段名、类型、宽度、小数位数等n数据库表字段的扩展属性 1、数据库表的字段显示属性 2、数据库表的字段验证 3、数据库表字段默认控件类RETURN1、数据库表的字段显示属性n显示属性指定输入和显示字段时的格式 格式、掩码、标题和注释RETURN库表的字段显示属性格式n字段的格式:指定字段显示的格式 包括在浏览窗口、表单或报表中显示时的大小写和样式等。在说明格式时,格式可以使用一些字母(或字母的组合)来表示。见课本P7
16、8表3-2例如:xh字段(学号)的格式为“T!”表示在输入和显示学号时其前导空格自动被删除,且所有字母转换为大写字母。RETURN库表的字段显示属性掩码n字段的输入掩码:指定字段中输入数据的格式 在说明输入掩码时,可以使用一些字母(或字母的组合)来表示。见课本P79表3-3例如:指定jbgz字段(基本工资)的 输入掩码为“99,999.99”表示在输入基本工资时,使用“会计”格式。RETURN库表的字段显示属性标题和注释n标题和注释都是为了使表具有更好的可读性。在浏览表时,系统通常使用字段名作为各列的标题,但如果为字段设置了标题属性,则系统将以所设置的字段标题作为列的标题。标题和注释不是必需的
17、。在设置表结构时,如果字段名不能明确表达列的含义,可以为字段设置一个标题,如果标题还不能充分表达含义或需要给字段以详细说明,可加上注释。RETURN2、数据库表的字段验证n字段验证限定字段的取值及取值范围 字段有效性规则和信息、默认值RETURN库表的字段验证规则n字段有效性规则用来控制输入到字段中数据的取值范围,是一个逻辑表达式,且当前字段包含在该表达式中。在字段值改变时发生作用,输入的值用规则进行验证,如不符合规则,则拒绝该输入值,并显示提示框n字段有效性信息字符性表达式,通常与有效性规则配合使用,用于指定不满足规则时显示的提示框信息注意:对表中已有记录,如需设置或修改字段规则,首先必须确
18、保表中所有记录都满足有效性规则,否则该规则无法设置或在确认保存时选择对现有数据不做检查。RETURN库表的字段验证默认值n默认值向表中添加新记录时,为字段所指定最初的值,必须是一个与字段类型相同的表达式。作用:可以减少数据输入的工作量。P80表3-4 各数据类型的字段默认值RETURN3、数据库表字段默认控件类n字段默认控件类指定在使用“表单向导”生成表单或从数据环境中将字段拖放到表单上时,与该字段相对应的控件类。RETURN三、数据库表的表属性三、数据库表的表属性 数据库表不仅可以设置字段的扩展属性,而数据库表不仅可以设置字段的扩展属性,而且可以为表设置一些属性。表属性也是作为数据且可以为表
19、设置一些属性。表属性也是作为数据字典保存在数据库文件中。字典保存在数据库文件中。见见P81-图图3-9 设置表属性设置表属性 长表名、表的注释长表名、表的注释 表记录的验证规则表记录的验证规则 触触 发发 器器RETURN库表的表属性库表的表属性长表名、表注释长表名、表注释长表名长表名 表名:表名:每张表的文件名,长度首先受操作系统限制(每张表的文件名,长度首先受操作系统限制(DOS为为8个字符,个字符,Windows95后为后为255个字符),其次个字符),其次vfp中规定数据库与自由表的表中规定数据库与自由表的表名最大长度为名最大长度为128个字符个字符 如设置了长表名则该表在各种对话框、
20、窗口中均以长表名代替表名如设置了长表名则该表在各种对话框、窗口中均以长表名代替表名 打开数据库表时,长表名与文件名可以同样使用打开数据库表时,长表名与文件名可以同样使用 长表名设置:长表名设置:“表设计器表设计器”-“表表”表注释表注释:表的说明信息。项目管理器中显示:表的说明信息。项目管理器中显示RETURN库表的表属性记录验证n表的记录级验证包括记录有效性规则和信息表的记录级验证包括记录有效性规则和信息记录有效性规则记录有效性规则验证多个字段之间关系是否满足某种规则验证多个字段之间关系是否满足某种规则 是一个逻辑型表达式。是一个逻辑型表达式。记录有效性信息记录有效性信息不满足规则时,显示提
21、示信息不满足规则时,显示提示信息 是一个字符型表达式。是一个字符型表达式。当记录指针移动时,都要检查规则当记录指针移动时,都要检查规则 在记录值发生改变时被激活 (1)如该记录值没改变,不检查如该记录值没改变,不检查 (2)修改记录没移动记录指针,先检查记录级规则修改记录没移动记录指针,先检查记录级规则 (3)如对一张表增设字段级有效性规则,先对所有记录进行检查,如如对一张表增设字段级有效性规则,先对所有记录进行检查,如有记录不符合规则,则该规则不被承认有记录不符合规则,则该规则不被承认,除非在确认保存时选择不对现有数除非在确认保存时选择不对现有数据进行验证。据进行验证。RETURN数据库表的
22、表属性触发器触发器n表的触发器规则表的触发器规则 是在插入、更新、删除之后运行的记录级事件代是在插入、更新、删除之后运行的记录级事件代码码,是绑定在表上的表达式是绑定在表上的表达式 插入触发器插入触发器:每次向表中插入或追加记录时触发该规则每次向表中插入或追加记录时触发该规则 更新触发器更新触发器:每次在表中修改记录时触发该规则每次在表中修改记录时触发该规则 删除触发器删除触发器:每次在表中删除记录时触发该规则每次在表中删除记录时触发该规则触发器返回值是一个逻辑值:触发器返回值是一个逻辑值:.T.允许执行;允许执行;.F.不允许操作。不允许操作。库表的触发器创建触发器创建n创建方法有两种:创建
23、方法有两种:(1)“表设计器表设计器”-“表表”库表的触发器创建触发器创建(2)(2)CREATE TRIGGER命令方式命令方式 CREATE TRIGGER ON js FOR UPDATE js.gl=50 CREATE TRIGGER ON JS FOR INSERT JS.GL“打开打开”(2)工具条上工具条上“打开打开”按钮按钮 (3)USE XS (4)USE XS IN 0 noupdate&不许修改不许修改 SELECT 0 USE XS&在未被使用的编号最小的工作区内打开一张表在未被使用的编号最小的工作区内打开一张表 (5)多次打开一张表多次打开一张表:USE XS SEL
24、ECT 0USE XS AGAIN RETURN三、表的关闭n表的关闭表的关闭(1)“数据工作期数据工作期”中中,选一张表选一张表-“关闭关闭”按钮按钮(2)USE(3)USE IN 2 或或SELECT 2USE(4)CLOSE ALLCLOSE DATABASESCLOSE TABLES(5)退出退出VFP系统系统RETURN四、表的独占与共享n表的独占与共享使用表的独占与共享使用 表的独占使用表的独占使用:一张表只能被一个用户打开一张表只能被一个用户打开 表的共享使用表的共享使用:一张表可以同时被多个用户打开一张表可以同时被多个用户打开以独占方式打开n设置表的使用方式设置表的使用方式 (
25、1)默认情况下默认情况下:独占独占 默认方式的设定默认方式的设定:“工具工具”-“选项选项”(2)SET EXCLUSIVE OFF/ON (3)USE XS SHARED/EXCLUSIVE (3)打开表时打开表时,在在“打开打开”窗口有下角窗口有下角,有有“独占独占”复选框复选框*RETURN3.3.5 记录的处理 一、记录的输入一、记录的输入 二、记录的浏览二、记录的浏览 三、记录的定位三、记录的定位 四、记录的修改四、记录的修改 五、记录的删除五、记录的删除 六、记录的复制六、记录的复制 七、记录的统计七、记录的统计RETURN一、记录的输入1、表结构创建后立即输入记录、表结构创建后立
26、即输入记录 浏览窗口编辑窗口显示/浏览(编辑)进行转换在浏览窗口追加记录在浏览窗口追加记录2、在浏览状态下向表中追加记录、在浏览状态下向表中追加记录 表表追加新记录追加新记录 追加一条追加一条显示显示追加方式追加方式 可追加多条可追加多条SQL追加记录3、使用insert-SQL命令追加记录 格式:insert into xs(xh,xm,xb,nl)values;(“0012304”,”张三”,”男”,17)注:若字段列表省略,则指全部字段对应关系APPEND追加记录4、使用APPEND命令追加记录 1)APPEND BLANK 追加空记录并打开编辑窗口 BLANK-追加一条空记录(在程序)
27、2)使用APPE FROM 文件名 DELIMITED|XLS 从其他表或文件导入数据备注与通用字段输入5、在浏览窗口输入备注与通用字段数据 将光标移到备注或通用字段后,按下Ctrl+Home组合键 或 双击字段,输入数据在浏览窗口 无内容显示备注“meno”通用”gen”有内容显示备注“Meno”通用”Gen”RETURN二、记录的浏览 1、浏览窗口、浏览窗口(界面界面)2、介绍、介绍BROWE命令命令 1)全部浏览全部浏览 use xs browse 结果2)有条件的浏览有条件的浏览 use xs browse fields xh,xm,xb3)有条件的记录的筛选有条件的记录的筛选 use
28、 xs browse for 条件表达式条件表达式 browse fields xh,xm for xh=女女4)筛选记录筛选记录 一种:界面操作界面操作 表表属性属性 另一种:命令方式另一种:命令方式筛选记录筛选记录 SET FILTER TO 条件表达式条件表达式 例:例:use xs set filter to xb=“男男”SET FILTER TO 取消筛选取消筛选 即显示全部记录即显示全部记录限制对字段访问5)筛选字段筛选字段 一种命令方式一种命令方式:SET FIELD TO 字段名列表字段名列表 如如:use xs Set field tp xh,xm brow 取消字段筛选,
29、显示所有字段取消字段筛选,显示所有字段 SET FIELD TO 字段筛选另一种:表-属性 筛选字段RETURN三、记录的定位三、记录的定位 1、记录指针标志-用于指示当前处理的记录位置(当前记录)。记录定位:使记录指针指向用户所需操作记录的过程 当一个表文件被打开,系统自动生成三个控制标志:记录的开始标志 记录指针标志 记录的结束标志 见下图记录指针记录指针第n条记录文件头记录开始标志记录开始标志记录结束标志记录结束标志记录的定位-函数2、几个函数 recno()返回当前记录号 bof()返回记录开始标志的状态 eof()返回记录结束标志的状态 当打开一张表时记录指针的情况当打开一张表时记录
30、指针的情况表中记录情况表中记录情况bof()recno()Eof()无记录无记录.t.1.t.有记录有记录.f.1.f.记录的定位-界面方式3、记录定位界面方式 绝对定位相对定位条件定位记录的定位命令方式4、使用命令定位、使用命令定位1)go/goto n 定位到第定位到第n条记录条记录 go/goto top 定位到第一个记录定位到第一个记录 go/goto bottom 定位到最后一个记录定位到最后一个记录2)skip命令命令相对定位相对定位 skip nn=1 默认值,记录指针向下移动一个默认值,记录指针向下移动一个n0 记录指针向表尾移动记录指针向表尾移动n个个 n0 记录指针向表头移
31、动记录指针向表头移动n个个 如果表有一个如果表有一个主控索引主控索引Skip、goto top、goto bottom命令将使记录指针移动到索引顺序决定的记录上命令将使记录指针移动到索引顺序决定的记录上3)LOCATE FOR 条件表达式条件表达式 条件定位条件定位 如:如:Locate for xm=长三长三对于对于条件定位条件定位,可以使用,可以使用continue命令从当前记录位置命令从当前记录位置开始继续进行条件定位,即定位到下一条满足条件的记录开始继续进行条件定位,即定位到下一条满足条件的记录RETURN四、记录的修改1、在浏览窗口修改、在浏览窗口修改 1)use xs browse
32、 浏览窗口浏览窗口 2)use xs edit 编辑窗口编辑窗口记录的批量修改2、批量记录的修改、批量记录的修改 1)界面方式界面方式 2)update-SQL 命令命令 例如:例如:update js set gl=gl+1 where gl20RETURN五、记录的删除记录的删除步骤:记录的删除步骤:1)标记要删除的记录)标记要删除的记录逻辑删除逻辑删除2)彻底删除带删除标记的记录)彻底删除带删除标记的记录物理删除物理删除1、标记要删除的记录、标记要删除的记录1)界面方式)界面方式 删除标记记录的删除命令方式12)命令方式)命令方式两种两种一种一种:delete-SQL命令命令 例如:例如
33、:delete from js where;year(date()-year(js.csrq)60)Delete sql命令可以在不预先打开表的情况下删除指命令可以在不预先打开表的情况下删除指定表的记录定表的记录另一种另一种:Delete 命令命令 DELETE 范围范围 FOR 条件条件 例如:例如:Close tables allUse jsDelete for (date()-csrq)/36560 -指逻辑删除所有年龄指逻辑删除所有年龄60岁岁注意注意:只能对已打开表进行删除只能对已打开表进行删除记录的删除命令方式22、恢复带删除标记的记录、恢复带删除标记的记录 recall恢复当前记
34、录恢复当前记录 recall all 恢复全部记录恢复全部记录 recall all for xb=“男男”恢复指定条件记录恢复指定条件记录3、彻底删除、彻底删除 pack删除带删除标记的记录删除带删除标记的记录 zap全部删除,只留表结构全部删除,只留表结构4、对带删除标记的记录的访问、对带删除标记的记录的访问 SET DELETE ON|OFF ON忽略带删除标记的记录忽略带删除标记的记录 OFF允许访问带删除标记的记录允许访问带删除标记的记录(系统默认系统默认)RETURN六、记录的复制利用利用COPY TO 复制数据到其他表文件或复制数据到其他表文件或其他类型文件中其他类型文件中 CO
35、PY TO 文件名文件名 字段名列表字段名列表 范围范围 FOR 条件条件 如如:USE XS COPY TO XS1 FOR XB=女女 表文件表文件 COPY TO XS1 FIELDS xh,xm SDF -文本文本 COPY TO XS1 XLS -电子表格电子表格 该命令与该命令与APPE FROM 追加命令一对。追加命令一对。RETURN七、记录的统计nCount 计数计数nSum 求和求和nAverage求平均值求平均值n例如:例如:nClose tables allnUse cjnCount for ch60 to a1&结果存到变量结果存到变量a1中中nSum cj to a
36、2 for cj“索引索引”选选项卡项卡 P98 “排序排序”“索引索引名名”“类类型型”“表达表达式式”“筛选筛选”(2)INDEX命令命令 INDEX ON XM+XH TAG XH 注意:不能对备注型字段和通用性字段建立索引注意:不能对备注型字段和通用性字段建立索引n索引的类型索引的类型(1)主索引主索引 XH表中所有记录不能有重复值表中所有记录不能有重复值 只适用于数据库表中只适用于数据库表中(2)候选索引候选索引 在指定的关键字或表达式中不允许出现重复值在指定的关键字或表达式中不允许出现重复值 一张表中可有多个候选索引一张表中可有多个候选索引(3)普通索引普通索引 可以指定记录顺序可
37、以指定记录顺序,但允许关键字段或表达式出现但允许关键字段或表达式出现重复值重复值(4)唯一索引:唯一索引:索引表达式的值可以出现重复值,但索引表达式的值可以出现重复值,但在索引文件中仅存一个在索引文件中仅存一个索引关键字索引关键字(索引表达式索引表达式):作为建立索引的依据作为建立索引的依据,一个字段或字段表达式一个字段或字段表达式注意:不能对备注型和通用型字段建立索引。注意:不能对备注型和通用型字段建立索引。n多个字段建立索引表达式应注意多个字段建立索引表达式应注意:(1)XS+XMXM+XS (2)多个数值型字段求和建立的索引表达式多个数值型字段求和建立的索引表达式,将按将按照字段的和索引
38、照字段的和索引 XS.YINGYU+XS.SHUXUE (3)不同类型字段构成表达式不同类型字段构成表达式,要转换成同一类型要转换成同一类型n索引的修改索引的修改 (1)“表设计器表设计器”-“索引索引”(2)INDEX命令建同名索引,则替换原索引命令建同名索引,则替换原索引n索引的删除索引的删除 (1)“表设计器表设计器”-“索引索引”(2)DELETE TAG命令命令例如:例如:Delete tag xhDelete tag allRETURN四、索引的使用n设置主控索引设置主控索引 (1)USE 表文件名表文件名 ORDER TAG 标识名标识名 USE XS ORDER TAG XH
39、(2)打开表之后再设置主控索引打开表之后再设置主控索引 SER ORDER TO n几个有关索引的函数几个有关索引的函数 CDX():返回打开的复合索引文件名返回打开的复合索引文件名 ORDER():返回当前表或指定表的主控索引名返回当前表或指定表的主控索引名n利用索引快速定位利用索引快速定位(1)SEEK命令:命令:a.找到:找到:RECNO():返返回回相相匹匹配配记记录录的记录号的记录号 FOUND():.T.EOF():.F.b.没找到:没找到:RECNO():=n+1 FOUND():.F.EOF():.T.在一张表中利用主控索引在一张表中利用主控索引搜索首次出现的一个索引关键搜索首
40、次出现的一个索引关键字与指定表达式相匹配的记录字与指定表达式相匹配的记录USE XS ORDER TAG XHSEEK“01”索引定位函数n(2)SEEK():相当于相当于SEEK命令后,再执行命令后,再执行FOUND()SEEK(表达式表达式)RETURN3.3.7 自由表 自由表:不隶属于任何数据库的表 自由表不具有数据库表的扩展属性 在表设计器中创建自由表结构自由表设计器n将自由表添加到数据库中有四种方式:(1)“项目管理器”-“JXSJ数据库”并展开-“表”-“添加”-“打开”对话框-选择表将自由表添加到数据库(2)(2)数据库处于打开状态,“数据库设计器”-“添加表”按钮 将自由表添
41、加到数据库(3-4)(3)数据库处于打开状态数据库处于打开状态“数据库数据库”菜单菜单-“添加表添加表”(4)ADD TABLE 自由表名自由表名 例:例:OPEN DATABASE jxsj EXCLUSIVE ADD TABLE XS创建数据库新表n三种方法:三种方法:(1)“项目管理器项目管理器”-“数据库数据库”并展开并展开-“表表”-“新建新建”-“库表设计器库表设计器”(2)数据库处于打开状态数据库处于打开状态,“数据库设计器数据库设计器”-“新表新表”按钮按钮 (3)数据库处于打开状态数据库处于打开状态,“数据库数据库”菜单菜单-“新表新表”移去数据库表n移去表三种方法移去表三种
42、方法:(1)“项目管理器项目管理器”-“数据库数据库”并展开并展开-“表表”-“移去移去”(2)数据库处于打开状态数据库处于打开状态,“数据库设计器数据库设计器”-“移去移去”按钮按钮 移去数据库表(3)(3)REMOVE TABLE XS DELETE有DELETE:表从数据库中删除并从磁盘中删除无DELETE:表从数据库中删除,成为自由表注意:1、一张表在同一时间内只能属于一个数据库 2、如果意外删除数据库,其包含库表仍保留对该库引用的后链,因此这些表也就不能添加到其他数据库中。这是就需要利用 FREE TABLE 表名 命令删除后链,使之成为自由表。数据库及库表的说明数据库及库表的说明(
43、1)从单表,库表与自由表相比,除扩展属性及主索引外,其他相)从单表,库表与自由表相比,除扩展属性及主索引外,其他相差无几。但在实际应用中,一个系统有多张表组成,表间都有一差无几。但在实际应用中,一个系统有多张表组成,表间都有一定关系及约束条件,因此应尽量使用库表。定关系及约束条件,因此应尽量使用库表。(2)同时使用多个库时,要打开或说明非当前库的表,可使用)同时使用多个库时,要打开或说明非当前库的表,可使用“!”符号。如:符号。如:USE jxsj!xs(3)移动库时,应考虑该库的存储位置,否则可能会出现库与库表移动库时,应考虑该库的存储位置,否则可能会出现库与库表之间的前后链不一致。之间的前
44、后链不一致。(4)不要轻易从库中移去表,因为库表移去时会丢失库的扩展属性。)不要轻易从库中移去表,因为库表移去时会丢失库的扩展属性。(5)多次修改库或库表结构之后,应进行库清理操作。)多次修改库或库表结构之后,应进行库清理操作。“数据库设计器数据库设计器”-“数据库数据库/清理数据库清理数据库”RETURN3.3.8 利用命令创建和修改表结构1、使用、使用 CREAT TABLE-SQL 命令创建表命令创建表结构结构 P101 *该命令可创建自由表和库表该命令可创建自由表和库表 注意:创建库表时,相应库必须打开注意:创建库表时,相应库必须打开 如:如:CREAT TABLE xscj(xh C
45、(6),cj N(3,0)CHECK cj=0 AND cj=0 AND cj右击关系连线右击关系连线-“参照完整性参照完整性”(2)“数据库设计器数据库设计器”-“编辑关系编辑关系”-“参照完整性参照完整性”通过该对话框设置规则,系统自动生成程序代码通过该对话框设置规则,系统自动生成程序代码 保存在数据库的存储过程中,通过主子表触发器实现保存在数据库的存储过程中,通过主子表触发器实现VFP数据完整性综述n实体完整性实体完整性 字段数据完整性字段数据完整性:输入到字段中的数据的类型或值:输入到字段中的数据的类型或值 必须符合某个特定要求。由字段有效性规则来实施。必须符合某个特定要求。由字段有效
46、性规则来实施。记录数据完整性记录数据完整性:为记录赋予数据完整性的规则。:为记录赋予数据完整性的规则。由记录有效性规则来实施。由记录有效性规则来实施。n参照完整性参照完整性 相关表之间的数据一致性。由表的触发器实施。相关表之间的数据一致性。由表的触发器实施。n用户自定义完整性用户自定义完整性 用户通过编写的程序代码来控制数据的完整性。用户通过编写的程序代码来控制数据的完整性。通过字段级、记录级和表间三级完整性约束,有效地实通过字段级、记录级和表间三级完整性约束,有效地实现数据的完整性和一致性。现数据的完整性和一致性。RETURN4.8 几个常用函数nDBC()返回当前打开数据库的完整文件名返回
47、当前打开数据库的完整文件名nDBUSED(“数据库名数据库名”)返回指定数据库文件是否已打开。如打开返回返回指定数据库文件是否已打开。如打开返回.T.nDBGETPROP(“对象名对象名”,“类型类型”,“属性名属性名”)P106 返回当前数据库属性,或者当前库表、表字段或视图属性返回当前数据库属性,或者当前库表、表字段或视图属性 “对象名对象名”指数据库名、表名、字段名或视图名指数据库名、表名、字段名或视图名 “类型类型”见表见表3-8 “属性名属性名”见表见表3-9 例例 DBGETPROP(“xs.cj”,“FIELD”,“CAPTION”)返回返回xs表的表的cj字段的标题字段的标题nDBSETPROP(“对象名对象名”,“类型类型”,“属性名属性名”,“属性值属性值”)设置当前数据库或者当前库中表、表字段或视图属性设置当前数据库或者当前库中表、表字段或视图属性 例例 DBSETPROP(“xs.xh”,“FIELD”,“CAPTION”,“学号学号”)将将xs表的表的xh字段的标题属性设置为字段的标题属性设置为“学号学号”本章结束