1、第五章 数据库与视图5.1数据库的创建和管理一、数据库的概念数据库为一种容器,包含一个或多个表、表之间的关系、视图,索引关系,存储过程等。1、表的类型表(自由表):独立存在的二维表数据库表(数据表):数据库中的二维表,可以单独使用。 2、数据库表和自由表的异同点:l 相同点:扩展名都为dbf,打开表命令use。自由表和数据库表可以相互转换。l 不同点:(1)数据库表必须先打开数据库,再打开表Open database 数据库名Use 表名(2)自由表不能建主索引,数据库表可以建立主索引(3)自由表建立的关系为临时关系,数据库表可以建立永久关系。(4)数据库表可以设置数据有效性,而自由表不可以。
2、自由表的字段名长度只能为10个字符,数据库表的可以为128个字符。二、数据库的建立方法: 1、 命令方式:CREATE DATABASE 数据库名 &数据库文件的扩展名DBC 2、菜单方式:文件菜单-新建-数据库注意:建立后会产生三个文件,扩展名分别为:DBC : 数据库文件DCT : 数据库文件的备注文件DCX : 数据库文件的索引 以上三个文件是建立数据库时自动生成的,不管数据库中现在是否有表,也不管表中有没有备注、通用字段,表是否建立了索引 例如:CREATE DATABASE 学生数据库执行后产生:学生数据库.DBC、学生数据库.DCT、学生数据库.DCX 三个文件 三、打开数据库:
3、OPEN DATABASE 数据库名 EXCLUSIVE/SHAREDNOUPDATEVALIDATE 独占 /共享 只读 检查有效性(校验)注:(1) vf可以同时打开多个数据库,但当前数据库只有一个。 (2)指定当前数据库可用命令:set database to 数据库名四、关闭数据库: CLOSE DATABASE &关闭当前数据库CLOSE DATABASE ALL &关闭所有已经打开的数据库CLOSE ALL &关闭所有打开的文件CLEAR ALL & 关闭所有打开的文件,清除内存变量 五、修改数据库MODI DATABASE 数据库文件名例如:CLOSE ALLCREATE DAT
4、ABASE 学生库CREATE DATABASE ABC1CLOSE ALLOPEN DATABASE 学生库OPEN DATABASE ABC1MODI DATABASESET DATABASE TO 学生库MODI DATABASE 六、数据库中表的操作:1、库中新建表2、将自由表添加到库中3、将数据表从数据库中删除(移去或者删除)4、表的操作:修改表结构,浏览表中数据5、连接、视图等 七、浏览数据库文件:仅理解方法:USE 数据库名.DBC /*打开数据库库文件MODI STRU /*修改数据库库文件的结构BROWSE /*浏览数据库库文件内容由此可以看见:数据库的实质其实也是二维表(容
5、器表)。注意:打开数据库是open database 数据库名现在是打开数据库文件。 5.2数据字典数据字典:一张包含数据库中所有信息的特殊的表,存放表中各种数据的定义或者设置信息(包括表的属性、字段属性、记录规则、表间关系、以及参照完整性等信息)说明:对于自由表无效,只能在数据库中使用(针对数据表) VFP中的完整性控制:(1)实体完整性:主关键字不为空,不能有重复值。(学号、工号等住关键字段)(2)域完整性:对于字段的类型、宽度和字段有效性的设置。如:性别字段规定为C型,取值只能输入男或者女 (Valid)注:要求设置字段有效性的表为数据库表(3)参照完整性:控制数据的一致性,设置数据库关
6、联记录的规则和尤其是不同表之间的规则(如:更新是否一致等) 注:要求设置参照完整性的表为数据库表。1、字段属性:数据库中对表修改属性,可以设置字段约束(域完整性) 表设计器=字段选项卡 2、记录规则:(1)记录的有效性:多个字段相互约束(例如:三好生的入校总分不能低于580) 表设计器=表选项卡(2)触发器:对表的插入、删除、修改记录的约束 3、永久关系:表与表之间的关联(只能在数据库表之间建立)(1)关系的类型: 一对一、一对多 通常一方做父表,多方做子表。如果是一对一关系则可任意选择。(2)建立方法:父表建主索引,子表建普通索引(多)或者候选索引(一),再拖放。如子表建立的为候选索引则建立
7、的为一对一关系,否则为一对多关系。4、参照完整性:建立关联后设置的更新规则、插入规则和删除规则。(1)更新规则:指当改动主表中记录时,子表中的记录将如何处理。处理方式有以下三种。l 级联:用新的关键字值更新字表中的所有相关记录。l 限制:若子表中有相关的记录存在,则禁止更新父表中连接字段的值l 忽略:不管子表中是否存在相关记录,都允许更新父表中连接字段的值。(2)插入规则:指当在子表中插入一个新记录或更新一个已存在的记录时,父表对子表的动作产生何种回应。回应方式有以下两种。n 限制:若父表中不存在匹配的关键字值,则禁止在子表中插入。n 忽略:允许插入,不加干涉。(3)删除规则:指当父表中的记录
8、被删除时,如何处理子表。处理方式有以下三种。l 级联:当父表中删除记录时,子表中所有相关记录都被删除。l 限制:当父表中删除记录时,若子表中存在相关记录,则禁止删除l 忽略:当父表中删除记录时,不管子表是否存在相关记录,都允许删除主表中的记录。 操作步骤: 打开数据库=MODIDATABASE=数据库菜单=编辑参照完整性 5.3视图1、概念概念:视图一种为了临时需要建立的虚拟表,可以从表中提取一组记录,改变记录的值,并把更新结果送回到源表中。兼有表和查询的特点。 视图必须以表或其他视图为基础。但不以独立的文件形式存在 。2、视图的特点:1) 视图的来源可以是自由表也可以是数据库表或者是其它视图
9、2) 视图只能在数据库中建立3) 视图为虚拟表,操作和表相同,但不以文件的方式存在。4) 视图修改了记录后会将更新后的结果送回源表,也就是视图能更新源表记录。3、分类 分为本地视图(当前数据库)、远程视图(当前数据库外的数据源) 4、基本操作创建方法:(1)打开数据库(2)create view(或者选新建=视图)(3)选取筛选、排序、连接等选项(4)Modify database 查看 远程视图:当前数据库外的数据源导入到数据库中操作。 例如:EXCEL表、其它数据库系统数据等4、使用方法:open database 数据库use 视图名 &类似打开一张表list. &打开后的操作就和表的操作完全类似 查询1、查询的概念查询是将一张表或者多张表的记录查找出并按指定方式输出的一种文件。查询的扩展名为qpr。2、查询和视图的区别:1) 视图是虚拟的表,只能存在于数据库中。而查询是一个扩展名为QPR的文件。2) 查询不依赖于数据库,数据来源可以是自由表、数据库表或者是视图。3) 查询的去向(即查询结果)有很7种。4) 视图可以更新源表的数据,查询不能更新源表中的数据。