《数据库与表的创建和使用.ppt》由会员分享,可在线阅读,更多相关《数据库与表的创建和使用.ppt(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、VFP程序设计教程南京理工大学紫金学院 计算机系1Chapter03 数据库与表的创建和使用23.1 VFP数据库概述n数据库的组成数据库的组成表及表间的联系:表及表间的联系:基本上只有三种关系,包括一对一关系、一对多关系、多对多关系。视图:视图:包含本地视图和远程视图。连接:连接:访问远程数据库,目的创建远程视图存储过程:存储过程:存储在数据库文件中的程序代码。33.2 数据库的创建、打开与使用n如何创建如何创建命令:create database 数据库名n生成文件生成文件数据库文件数据库文件(.dbc),数据库备注文件数据库备注文件(.dct)和数据库索引和数据库索引文件文件(.dcx)
2、n如何打开如何打开命令:命令:open database 数据库名数据库名noupdatevalidate 43.2 数据库的创建、打开与使用n添加或移去表添加或移去表 n如何关闭如何关闭n如何删除如何删除不能从资源管理器或delete file命令删除,原因是不会删除数据库中包含表的链接信息。表如何变成自由表:FREE TABLE 表名53.3 表的创建与使用n表结构概述、创建与修改表结构概述、创建与修改n表的打开与关闭表的打开与关闭 n表记录的处理表记录的处理n表索引的创建与使用表索引的创建与使用n数据库表扩展属性设置数据库表扩展属性设置n表间永久性关系的创建表间永久性关系的创建n表间参照
3、完整性规则的设置表间参照完整性规则的设置63.3.1 表的基本概念n表:是指存放在磁盘文件中的一张二维表,包括表:是指存放在磁盘文件中的一张二维表,包括自由表和数据库表。自由表和数据库表。表文件:.dbf记录:表中的一行。它是多个字段的集合,同一张表记录:表中的一行。它是多个字段的集合,同一张表的每个记录都有相同的字段。的每个记录都有相同的字段。字段:表中的一列。它规定了数据的特征。字段:表中的一列。它规定了数据的特征。n表结构:表名表结构:表名+表头表头(字段列表字段列表)。表名:不使用字母A-J或a-j命名 字段列表:VFP中,每个表最多255个字段 7字段的基本属性n字段的属性:字段名、
4、数据类型、字段宽度、小字段的属性:字段名、数据类型、字段宽度、小数位数、空值支持数位数、空值支持。n字段名:自由表字段名最多由字段名:自由表字段名最多由10个字符组成,个字符组成,数数据库表字段名支持长名,最多可达据库表字段名支持长名,最多可达128个字符。个字符。n数据类型:主要掌握数据类型:主要掌握6 6种,具体是:种,具体是:字符型(字符型(C C)数值型(数值型(N N)日期型(日期型(D D)逻辑型(逻辑型(L L)备注型(备注型(M M)通用型(通用型(G G)8字段的基本属性n字段宽度:指该字段所能容纳数据的的最大字节字段宽度:指该字段所能容纳数据的的最大字节数,其中:数,其中:
5、日期型字段固定是日期型字段固定是8 8个字节;个字节;逻辑型字段固定是逻辑型字段固定是1 1个字节;个字节;备注型字段固定是备注型字段固定是4 4个字节;个字节;通用型字段固定是通用型字段固定是4 4个字节。个字节。n小数位数:指数值型数据将保留几位小数;此时小数位数:指数值型数据将保留几位小数;此时字段宽度字段宽度=整数位数整数位数+小数点(小数点(1位)位)+小数位数。小数位数。nNULL 值值(空值空值):无明确的值无明确的值,不等同于零或空格。不等同于零或空格。9表结构的创建n使用表设计器使用表设计器n使用使用CREATE TABLE命令命令格式:CREATE TABLE 表名(字段列
6、表)例如,例如,CREATE TABLE teacher(gh c(16),xm CREATE TABLE teacher(gh c(16),xm c(8),xb c(2),gzrq d,csrq d,jbgz n(7,2),dty c(8),xb c(2),gzrq d,csrq d,jbgz n(7,2),dty l,jl m,zp g)l,jl m,zp g)10表结构的修改(使用表设计器)n使用表设计器使用表设计器命令格式:命令格式:modify structuren使用ALTER TABLE命令命令格式:ALTER TABLE 表名 ADD COLUMN 字段名 数据类型(宽度)&增
7、加字段ALTER 字段名 数据类型(宽度)&修改字段RENAME 旧字段名 TO 新字段名&重命名字段DROP 字段名&删除字段 113.3.2 表的打开与关闭n工作区工作区n表的打开和关闭表的打开和关闭12什么是工作区n打开表:打开表:表文件从磁盘读到内存中n工作区:工作区:表文件在内存中的存储区域n工作区号:工作区号:工作区的编号,从1开始编号,范围从1到32767。13表的打开nuse use 表名表名&在当前工作区(默认工作区)打开一张表在当前工作区(默认工作区)打开一张表每个工作区只能存放一张表,若同一工作区先后打开不同的表,后打开的表替换并关闭先前打开的表当前工作区:正在使用的工作
8、区,系统默认当前工作区号为1nselect 0&选择未被使用的最小工作区最为当前工作区,而不是选择工作区0nselect 工作区号&选择指定工作区号作为当前工作区nselect 表名&选择表名所在工作区作为当前工作区14表的打开nuse use 表名表名 in 0 in 0&当前工作区不变,在未被使用的最小工作区打开表名 nuse use 表名表名 in in 工作区号工作区号&当前工作区不变,在指定的工作区打开表名 nuse use 表名表名 alias alias 别名别名 in in 工作区号工作区号&在指定工作区打开表,并用表别名表示工作区默认工作区别名:1-10,别名为A-J;11-
9、32767,别名为w11-w32767nuse use 表名表名 again in again in 工作区号工作区号&在指定工作区重复打开表;处于共享状态,无法修改 15表的关闭nuse in use in 工作区号工作区号&关闭当前工作区中的表nuse in use in 工作区别名工作区别名&关闭指定工作区的表 nuseuse&关闭当前工作区中的表nclose tables allclose tables all关闭所有工作区中的表,且将当前工作区设置为1 163.3.3 表记录的处理n表记录的添加表记录的添加n表记录的浏览表记录的浏览n表记录的筛选表记录的筛选n表记录的修改表记录的修改
10、n表记录的复制表记录的复制n表记录的删除表记录的删除17表记录的添加n添加单行记录添加单行记录INSERT INTO 表名表名()VALUES(值值)n批量添加记录批量添加记录APPEND FROM 表名 APPEND FROM 文件名delimited/xls 18表记录的浏览nBROWSE命令命令BROWSE命令用来打开表的浏览窗口,可通过不同的子句来实现对特定记录的浏览。Browse&浏览全部记录 Browse For&浏览部分记录Browse Field&浏览部分字段19表记录的筛选n记录筛选记录筛选 set filter to&相当于关系运算中的选择运算,选出部分记录set filt
11、er to&去掉筛选条件,回到原来状态n字段筛选字段筛选set field to set field to&相当于关系运算中的投影运算,选出部分字段 set field to all set field to all&回到原来状态20表记录的修改nREPLACEREPLACE命令命令(非SQL命令)命令格式:命令格式:replacereplace 范围语句withwith,with 范围语句:范围语句:all|next n|rest|record n nUPDATEUPDATE语句语句(SQL(SQL 命令命令)命令格式命令格式:UpdateUpdate 表名 SETSET 字段1=表达式1,
12、字段2=表达式2;WHEREWHERE 21表记录的复制nCOPY TO命令(非SQL命令)n命令格式:命令格式:COPY TO 文件名 Fields ScopeFORSDF|XLS|DELIMITEDWITH Delimiter|Blank|Tabncopy to 表名 ncopy to 表名 FIELD ncopy to 表名 FOR ncopy to 文件名 sdf&生成一个系统标准文件,默认是文本文件.txtncopy to 文件名 xls&生成Excel表格文件 22表记录的复制nSELECT语句(SQL命令)n命令格式:命令格式:nSELECT*FROM WHERE INTO TA
13、BLE/DBF 表名;nSELECT*FROM WHERE TO FILE 文件名;nSELECTSELECT*FROMFROM 表名 INTO TABLEINTO TABLE stu1nSELECTSELECT FROMFROM 表名 INTO TABLEINTO TABLE stu2 nSELECTSELECT*FROMFROM 表名 WHEREWHERE INTO TABLEINTO TABLE stu3 nSELECTSELECT*FROMFROM 表名 TO FILETO FILE stu4 23表记录的删除n非SQL命令 逻辑删除:nDELETE FOR 物理删除:nPACK,删除
14、具有删除标记的记录nZAP,删除表中所有记录,这个命令慎用nSQL命令逻辑删除:nDELETE FROMDELETE FROM 表名 WHEREWHERE 24表记录的删除n对带有删除标记记录的访问对带有删除标记记录的访问【命令格式】SET DELETED ON|OFF【作用】指定VFP是否处理标有删除标记的记录。其中,ON忽略标有删除标记的记录;OFF(系统默认值)则允许访问标有删除标记的记录 可利用DELETE()函数测试记录是否已经被删除。nBROWSE FOR DELETE()&仅仅浏览有删除标记的记录。253.3.4 表的索引n表记录的定位和基本概念表记录的定位和基本概念n创建索引创
15、建索引n索引类型索引类型n索引文件索引文件n索引修改和删除索引修改和删除26表记录的定位n物理顺序物理顺序 每个记录存到表中时的输入顺序每个记录存到表中时的输入顺序n记录号记录号表示记录在表中的物理顺序,通过表示记录在表中的物理顺序,通过RECNO()RECNO()计算计算n记录指针记录指针存放着表中当前记录号的变量存放着表中当前记录号的变量 27表记录的定位n定位方式定位方式绝对定位:绝对定位:把记录指针移到指定的位置n命令格式go/goto 记录号|TOP|BOTTOM 相对定位:相对定位:当前记录向前或向后移动若干个记录。n命令格式 skip 记录数表首和表尾定位表首和表尾定位:nbof
16、()函数:记录指针指向记录开始标志(即表头),记录指针指向记录开始标志(即表头),返回结果为返回结果为.T.neof()函数:记录指针指向记录结束标志(即表尾),记录指针指向记录结束标志(即表尾),返回结果为返回结果为.T.28表记录的定位n定位方式定位方式条件定位(顺序查找)条件定位(顺序查找)n 命令格式命令格式LOCATE FOR LOCATE FOR 条件表达式条件表达式n从整个表中的第一条记录开始顺序查找符合该条从整个表中的第一条记录开始顺序查找符合该条件的记录。件的记录。nCONTNINUECONTNINUE语句,可使记录指针指向表中满足条件语句,可使记录指针指向表中满足条件的第二
17、条记录的第二条记录 29基本概念n逻辑顺序逻辑顺序:表中记录按照一定方式显示的顺序n索引:索引:可将表中记录按照逻辑顺序显示。显著特点:显著特点:可按照逻辑顺序显示表记录,但不改变表中记录的物理顺序。n索引关键字(索引表达式)索引关键字(索引表达式)用来建立索引的一个字段或字段表达式。不同类型字段构成一个表达式时,必须转换数据类型。不同类型字段构成一个表达式时,必须转换数据类型。n 索引标识(索引名):索引标识(索引名):索引关键字的名称;必须以下划线、字母或汉字开头,且不可超过10个字节。30创建索引n表设计器方式(人机对话方式):表设计器方式(人机对话方式):n命令方式命令方式:INDEX
18、 ON INDEX ON 索引表达式索引表达式 TAG TAG 索引名索引名。索引使用(主控索引):索引使用(主控索引):nUSE 表名 ORDER 标识名:打开表的同时指定主控索引 nSET ORDER TO 标识名:为已打开的表确定主控索引 31索引类型n主索引:组成主索引关键字的字段或表达式,表主索引:组成主索引关键字的字段或表达式,表的所有记录中不能有重复的值。的所有记录中不能有重复的值。n候选索引:在指定的关键字段或表达式中不允许候选索引:在指定的关键字段或表达式中不允许有重复值的索引。有重复值的索引。主索引只有一个,候选索引可有多个;要求创建主索引和候选索引的字段取值既不能为空,也
19、不能重复n普通索引:普通字段创建,可以有重复值。普通索引:普通字段创建,可以有重复值。n唯一索引:取值可以重复,但显示唯一。唯一索引:取值可以重复,但显示唯一。32索引文件n复合索引文件:表中所有的索引都放在一个文件复合索引文件:表中所有的索引都放在一个文件中。中。结构复合索引文件(扩展名为结构复合索引文件(扩展名为.CDX.CDX):文件名与表名):文件名与表名相同,会随着表的打开自动打开,可以做到与表文件相同,会随着表的打开自动打开,可以做到与表文件同步更新;而且表中记录仍然物理顺序排列。同步更新;而且表中记录仍然物理顺序排列。非结构化复合索引文件:文件名不一定与表名相同,非结构化复合索引
20、文件:文件名不一定与表名相同,不随着表的打开而自动打开。不随着表的打开而自动打开。n独立索引文件(独立索引文件(.idx):老版本):老版本FoxBASE采用,采用,每个索引都建立一个索引文件。每个索引都建立一个索引文件。33索引修改和删除n修改修改:打开表设计器,在索引对话框中进行所需打开表设计器,在索引对话框中进行所需修改;或用命令重新建立一个相同标识名而索引修改;或用命令重新建立一个相同标识名而索引表达式不同的索引。表达式不同的索引。n删除删除:打开表设计器,在索引对话框中删除不需打开表设计器,在索引对话框中删除不需要的索引标识即可;要的索引标识即可;或或 用命令:用命令:DELETE
21、TAG DELETE TAG ALL|ALL|索引标识索引标识1 1,索引标识索引标识2 2 注意:删除不需要的索引标识,注意:删除不需要的索引标识,ALL表示全部标识表示全部标识343.3.5 数据库表n数据库表和自由表的区别数据库表和自由表的区别n数据库表的操作数据库表的操作n数据库表的字段扩展属性和表属性数据库表的字段扩展属性和表属性 35数据库表与自由表的区别n自由表:自由表:不属于任何数据库 n数据库表数据库表:包含在数据库中n自由表包含的基本信息自由表包含的基本信息具有字段名、数据类型和宽度、是否支持NULL值基本信息还可以建立候选索引、普通索引和惟一索引这些信息。36数据库表与自
22、由表的区别n数据库表除了具有自由表的基本属性信息外,数据库表除了具有自由表的基本属性信息外,还可以指定主索引和扩展属性。具体包括还可以指定主索引和扩展属性。具体包括:字段的显示格式、输入掩码、默认值、字段有效性规则及信息和注释 表的长表名、记录有效性规则及信息、触发器等 n主索引和扩展属性存放在数据字典中,而且数主索引和扩展属性存放在数据字典中,而且数据字典位于数据库文件中。据字典位于数据库文件中。n数据库表变成自由表后,主索引和一切扩展属数据库表变成自由表后,主索引和一切扩展属性均自动丢失。性均自动丢失。37数据库表的操作n从数据库菜单中选择添加表,从打开对话框中选择从数据库菜单中选择添加表
23、,从打开对话框中选择所需的表并确定之。所需的表并确定之。n可利用数据库设计器工具栏很方便进行下列操作:可利用数据库设计器工具栏很方便进行下列操作:浏览:浏览:在浏览窗口中显示表或视图的内容;修改:修改:调出表设计器或视图设计器对表或视图进行修改;移去:移去:使表从数据库中还原成自由表。对视图移去相当于删除;删除:删除:从磁盘上彻底删除数据表和视图,并且无法回收。38数据库表的字段扩展属性n字段显示属性字段显示属性字段格式:字段格式:控制整个字段输入的内容。nA:只允许字母和汉字(不允许空格或标点符号)n!:用于将字符型数据的字母转换为大写字母 nT:删除字段的前后空格 输入掩码:输入掩码:控制
24、字段每个位置的输入值。nA:只允许输入字母 n9:只允许输入数字 n*:允许输入任意字符n,千分号:分隔小数点左边的整数部分 标题:标题:控制字段输出时显示的字段名称。默认值:默认值:默认值可以是字符型数据、数值型数据和日期型数据;如果为字符常量,默认值必须加双引号。39数据库表的字段扩展属性n字段验证规则(字段级规则)字段验证规则(字段级规则)控制某个字段输入数据是否合理合法,实现域控制某个字段输入数据是否合理合法,实现域完整性。完整性。规则:规则:输入有效数据的表达式 信息:信息:输入数据返回规则或者输入数据不合法时的提示信息,须要加双引号加双引号 n显示类(默认控件)显示类(默认控件)n
25、字段注释:对字段的编辑说明。字段注释:对字段的编辑说明。40数据库表的表扩展属性n长表名:长表名:就是表的别名,显示给用户看,最长128个字符n记录验证规则(记录级规则)记录验证规则(记录级规则)控制几个字段之间输入的数据是否合理合法。控制几个字段之间输入的数据是否合理合法。规则:输入有效数据的表达式规则:输入有效数据的表达式 信息:须要加双引号。信息:须要加双引号。n触发器:触发器:设置表记录操作的门槛,规定允许操作满足的条件 插入触发器:插入触发器:设置允许添加记录需满足的条件更新触发器:更新触发器:设置允许修改记录需满足的条件删除触发器删除触发器:设置允许删除记录需满足的条件413.4
26、表之间的永久关系与参照完整性n表之间的关系表之间的关系一对一关系:一对一关系:主表中的每一个记录只与相关表中的一个记录相关联。一对多关系:一对多关系:主表中每一个记录与相关表中多个记录相关联(每一个主关键字值在相关表中可出现多次)。多对多关系:多对多关系:一表中的每一个记录对应着二表中的多个相关记录;同时二表中的每一个记录也对应着一表中的多个相关记录。42表之间的永久关系n永久关系:永久关系:是数据库表之间的一种关系,不仅运行时存在,而且一直保留,通过索引建立。n表间永久关系的创建:表间永久关系的创建:在数据库设计器中,选择想要关联的索引名,然后把它拖到相关表的索引名上,所拖动的父表索引必须是
27、一个主索引或候选索引。建立好关系后,出现一条连接两个表的直线。433.4.1 表之间的永久关系n表间永久关系的编辑:表间永久关系的编辑:单击所需关系线,右击鼠标,从快捷菜单中选择编辑关系,在编辑关系对话框中改选其它相关表索引名或修改参照完整性规则。n表间永久关系的删除:表间永久关系的删除:在数据库设计器中,单击两表间的关系线。关系线变粗,表明已选择了该关系,按下 delete 键。443.4.2 参照完整性n概念:概念:控制表间数据的一致性,尤其是不同表的主关键字和外部关键字之间数据的一致性。n如何编辑参照完整性:如何编辑参照完整性:右击表之间的纽带连线;选择“编辑参照完整性”命令,系统提示要
28、求“清理数据库”;“数据库”菜单“清理数据库”命令;重新选择“编辑参照完整性”命令,打开“编辑参照完整性”对话框。45参照完整性规则参照完整性规则 n更新规则更新规则(主表记录被修改时触发主表记录被修改时触发)级联:子表同步更新 限制:禁止主表更新,不允许主表更新 忽略:允许主表更新,子表保持不变 n删除规则删除规则(主表记录被删除时触发主表记录被删除时触发)级联:子表同步删除n主表物理删除,子表逻辑删除限制:禁止主表删除,不允许主表删除 忽略:允许主表删除,子表保持原样n插入规则插入规则(子表插入记录时触发子表插入记录时触发)限制:禁止子表插入,不允许子表插入 忽略:允许子表插入,主表保持不
29、变 463.5 数据库及其对象操作函数ndbc()函数和函数和dbused()函数函数 dbused()dbused()函数:函数:返回指定的数据库文件是否已经打开;如果已经打开,则函数返回值为.T.,否则函数返回值为.F.dbc()dbc()函数:函数:返回当前打开的数据库的完整文件名,无需参数473.5 数据库及其对象操作函数ndbgetprop()函数:函数:查看数据库对象属性查看数据库对象属性 命令格式:dbgetprop(cName,cType,cProperty)ncName:数据库对象名称 ncType:数据库对象类型ncProperty:数据库对象属性 483.5 数据库及其对
30、象操作函数ndbsetprop()函数:函数:设置数据库对象属性设置数据库对象属性 dbsetprop(cName,cType,cProperty,cPropertyValue)ncName:数据库对象名称 ncType:数据库对象类型ncProperty:数据库对象属性ncPropertyValue:数据库对象属性值 49表操作常用函数nSELECT()函数:用来测试工作区号。函数:用来测试工作区号。其中,参数0用于返回当前工作区号;1用于返回当前未被使用的最大工作区号;别名cTableAlias用于返回该表所在的工作区号,使用时别名必须加引号。nUSED()函数:用于测试一张表的别名是否已
31、被函数:用于测试一张表的别名是否已被使用,或在指定的工作区中是否有表打开。使用,或在指定的工作区中是否有表打开。其中,工作区号与别名缺省时,表示当前工作区。其中,工作区号与别名缺省时,表示当前工作区。nALIAS()函数:用于返回当前或指定工作区中表函数:用于返回当前或指定工作区中表的别名。的别名。其中,工作区号缺省时表示当前工作区。其中,工作区号缺省时表示当前工作区。50表操作常用函数nFIELD()函数:用于返回已打开表的指定序号的字函数:用于返回已打开表的指定序号的字段名。段名。其中,工作区号与别名缺省时,表示当前工作区。nFCOUNT()函数:用于返回已打开表的字段个数。函数:用于返回已打开表的字段个数。其中工作区号与别名缺省时,表示当前工作区中的表。其中工作区号与别名缺省时,表示当前工作区中的表。nDELETE()函数:用于测试表的当前记录是否带有函数:用于测试表的当前记录是否带有删除标记。如果函数返回删除标记。如果函数返回.T.,说明记录带有删除,说明记录带有删除标记,否则不带有删除标记。该函数无参数。标记,否则不带有删除标记。该函数无参数。51