数据库vfp第三章数据库和表.ppt
第三章 数据库和表,创建、维护和管理数据库,要点,建立数据库数据库的基本操作数据词典,一、建立数据库,可以使用项目管理器或create database命令等方法建立数据库。在开发环境下通常使用项目管理器建立数据库,在程序运行时刻通常以命令方式建立数据库。Create database命令语法格式,Create database databaseName|?,二、数据库的基本操作,数据库的基本操作包括:打开数据库;向数据库中添加表;获取数据库中的表信息;从数据库中移去表;删除数据库中的表;多数据库操作;关闭数据库等,二、数据库的基本操作,打开数据库刚创建的数据库会自动保持打开状态,而对于已经存在的数据库,使用前必须首先打开数据库使用交互模式打开数据库使用open database命令打开数据库,Open database fileName|?exclusive|shared noupdate,二、数据库的基本操作,检查数据库的打开状态Dbc()函数返回当前打开数据库的名称和路径,如果没有打开的数据库,该函数返回空值可使用dbused()函数来检测数据库的打开状态Adatabase()函数可以把所有打开的数据库的名称和路径保存到内存变量数组中,同时返回打开数据库的数目,如果没有打开的数据库,返回0.,二、数据库的基本操作,向数据库中添加表在打开数据库设计器的情况下,可以通过交互模式向数据库添加一个已存在的自由表。此外,可以使用add table命令向当前数据库添加。语法格式:Add table tableName|?name longtablename要注意的是,被添加的表必须为自由表,且数据库必须以独占方式打开,二、数据库的基本操作,获取数据库中的表信息使用display tables命令显示表信息Display tables to printer prompt|to file filename使用adbobjects()函数将表信息保存到数组中Adbobjects(ArrayName,cSetting)使用indbc()函数指定的数据库对象是否已经存在于当前数据库中Indbc(cDatabaseName,cSetting),二、数据库的基本操作,从数据库中移去表交互模式从数据库中移去表使用命令从数据库中移去表Remove table TableName|?deleted重命名数据库中的表可以使用交互模式和命令模式命令语法格式Rename table tableName1 to tableName2,二、数据库的基本操作,从数据库中删除表可以使用交互模式和命令模式命令语法格式Drop table TableName|fileName|?recylce交互模式修改数据库可以使用modify database 命令打开数据库设计器,进行交互式的修改。Modify database DatabaseName|?nowait noedit,二、数据库的基本操作,多数据库操作Foxpro同时可以打开多个数据库。但只有一个数据库可以成为当前数据库。可以使用命令指定当前数据库Set database to databaseName要获得当前数据库的名称,使用dbc()函数关闭数据库Close databases all删除数据库Delete database databaseName|?deleteTables,三、数据词典,所谓数据词典是包含数据库中所有表信息的一个表。用于存储表的长表名或长字段名、有效性规则和触发器,以及有关数据库对象的定义(如视图和命名连接)数据词典使数据库的设计和修改更加灵活。使用数据词典,可以设置字段级和记录级的有效性检查,保证主关键字字段内容的唯一性。如果不用数据词典,这些功能就必须靠自己编程实现。,三、数据词典,数据词典可创建和指定的项目包括:建立表的主关键字和候选索引关键字为表和字段指定长名称为每个字段和表添加注释为表的各字段指定标题,这些标题作为表头显示在browse窗口或grid列中为字段指定默认值设置字段的输入掩码和显示格式设置字段级规则和记录级规则为表设置触发器建立存储过程建立数据库表间的永久关系建立到远程数据源的连接建立本地视图和远程视图,三、数据词典,设置长表名和表注释为了更清楚地描述表的含义,可以为数据库表设置长表名和表注释可以通过create table命令的name子句设置长表名。可以使用dbsetprop()函数设置表注释。Dbsetprop(cName,cType,cProperty,cPropertyValue)Cname必须是长表名;cType是CONNECTION、DATABASE、FIELD、TABLE、VIEW之一。,三、数据词典,设置长字段名数据库表允许字段名称最多为128位字符,而自由表最多只能为10个字符。如将表从数据库中移去,长字段名将被截取为10个字符。字段的输入输出格式可以通过格式和输入掩码控制向字段中输入的值,以及字段的显式格式。格式设置决定整个字段的输入方式;输入掩码可以控制每个字符的输入方式。?Dbsetprop(“学生档案表.联系电话“,”FIELD“,”InputMask”,”999-99999999”),三、数据词典,设置字段标题可以为每个字段设置一个标题,在编辑窗口或grid控件中显示字段时,使用该标题作为列标题。Dbsetprop(“testtb.联系电话”,”FIELD”,”caption”,”telephone”)设置字段注释添加字段注释可以使用户更容易理解字段的用途Dbsetprop(“testtb.联系电话”,”FIELD”,”comment”,”该字段用于保存学生的联系电话”),三、数据词典,设置字段级有效性规则可以使用字段级有效性规则控制用户输入到字段中的信息类型或检查其他字段值的字段数据。使用表设计器设置使用命令设置使用create table命令的check子句或alter table的set check子句设置字段级规则alter table 学生档案表 alter column maths set check maths=0.and.maths=100 error 请输入0-100间的值,三、数据词典,设置记录级有效性规则使用记录级有效性规则,可以控制用户输入到记录中的信息类型。使用表设计器设置记录级有效性规则使用命令设置记录级有效性规则使用可以使用create table的check和alter table的set check子句来设置记录级有效性规则alter table 学生档案表 set check total=chinese+maths error 成绩合计不正确,三、数据词典,存储过程存储过程是保存在数据库中的专门进行数据库操作的代码过程。其通常与触发器结合使用,来控制数据的完整性。打开数据库时,存储过程被自动加载到内存中,可以和其他过程文件一样进行调用在打开数据库的情况下,执行modify procedure命令可以打开存储过程文本编辑器可以使用display procedure命令显示当前数据库中的存储过程名称。,三、数据词典,设置触发器触发器是绑定在表上的表达式,当表中的任何记录被指定的操作命令修改时,触发器被激发。触发器作为特定表的属性被创建和存储。触发器必须返回.t.或.f.,并且必须返回.t.时,操作才能继续进行可以使用表设计器和create trigger命令创建触发器。一张表最多只能有3个触发器。结合存储过程的触发器示例(见备注),三、数据词典,建立和删除表间关系建立表间永久关系设计器方式和命令方式使用带foreign key子句的create table或alter table命令建立永久关系删除表间永久关系设计器方式和命令方式使用带drop foreign key 子句的alter table命令删除表间的永久关系,三、数据词典,建立表间临时关系使用set relation建立临时关系。建立前,必须打开一个表(父表),而且还必须在另一个工作区打开其他表(子表)。相关的表通常有一个相同的字段,且子表必须建立索引。语句示例:set ralation to id into 表2在建立一对一关系基础上可使用set skip to语句建立一对多关系。不带参数的set relation to 和set skip to可以删除一对一关系和一对多关系,三、数据词典,建立参照完整性参照完整性即根据一系列规则来保持数据的一致性。foxpro使用前面介绍的字段级规则、记录级规则、触发器、存储过程来实现参照完整性规则。参照完整性的作用:当主表没有关联记录时,记录不得添加到相关表中;主表的值不能改变,若这个改变将导致相关表中出现孤立记录;若主表记录在相关表中有匹配记录,则该主表记录不能被删除参照完整性生成器级联、限制、忽略的含义。,