数据库表的操作总结.docx
《数据库表的操作总结.docx》由会员分享,可在线阅读,更多相关《数据库表的操作总结.docx(11页珍藏版)》请在冰豆网上搜索。
数据库表的操作总结
第四章数据库和数据表的操作
4.1VFP数据库及其建立
4.1.1数据库和表的基本概念
数据库:
是一个逻辑上的概念和手段,通过一组系统文件将相互联系的数据库表及其相关的数据库对象统一组织和管理.
数据表:
数据库的主要内容,它是一组相关数据的有序集合,是关系数据库的基本结构,是处理数据,创建关系数据库和应用的基本单元,在VFP中,数据以记录和字段的形式存储在表中
数据表的存在形式
数据库表:
被注册到某一个数据库中
自由表:
独立存在,不与数据库相关联
4.1.2建立数据库(三种途径)
**建立专用目录存放自己的文件
1、在项目管理器中建立数据库
2、通过新建对话框建立数据库
3、使用命令建立数据库
CREATEDATABASE[<数据库名>|?
]
使用命令建立数据库后不打开数据库设计器,只是数据库处于打开状态.
在建立数据库时,建立了扩展名分别为dbc、dct和dcx的三个文件
4.1.3打开数据库(三种方法与建立相对应)
OPENDATABASE[<数据库名>|?
][EXCLUSIVE|sHARED]
独占方式:
不允许其它用户在同一时刻也使用该数据库
4.1.4删除数据库
移去:
从项目管理器中删除,但不从磁盘上删除
删除:
彻底删除
VFP的数据库文件并不真正含有数据库表或其它数据库对象,只是在数据库文件中登录了相关的文件信息,表、视图和其它对象是独立存放在磁盘上。
项目管理器中删除
命令删除:
DELETEDATABASE
4.1.5关闭数据库
CLOSEDATABASE
4.2建立数据库表
4.2.1在数据库中建立表
使用数据库设计器
使用表向导
(数据库菜单操作,数据库快捷菜单操作)
利用表设计器创建数据表结构
1、数据库表名
2、字段名(字段变量)
命名规则:
1)最长128字符2)必须以字母或汉字开头3)可以由字母、数字、汉字和下划线组成4)字段名中不能有空格5)遵循“见名知义”原则
3、字段类型和宽度
字段的数据类型有13种
字符型:
文字性质内容的字段及不参加运算的数字性质内容的字段,最大宽度为254
数值型:
参加运算的数字性质内容的字段(负数与小数点各占一位)
日期型及日期时间型
货币型:
保存货币数值,字段宽度固定为8个字节
逻辑型:
两者取一性质的字段
备注型:
字符个数较多的字段(不定长度的文本数据),字段宽度固定为4个字节
通用型:
用于标记电子表格、文档、图片等OLE对象
4、空值
缺值或没有确定值
5、显示区域
格式:
实质上是一个输出掩码,它决定了字段在表单、浏览窗口等界面中的显示风格
输入掩码是字段的一种属性,用于限制或控制用户输入的格式
标题用于字段显示时的标题,若不指定则显示字段名
6、字段有效性(用于数据输入正确性的检验,不仅可以限制输入数据表中数据的类型,还可以限制输入数据的取值范围)屏蔽非法字段值的输入
7、字段注释:
设置字段的详细说明信息
8、记录有效性:
用于检查同一记录中不同字段间的逻辑关系
9、触发器
10、表注释:
对表中的信息和相关信息进行说明。
方便数据库和数据表的使用及维护
4.2.2修改表结构
1、打开表设计器
MODIFYSTRUCTURE
2、修改已有字段
3、调换字段位置
4、增加新字段
5、删除字段
4.2.3显示表结构
1、在表设计器中显示
2、命令方式显示
LIST|DISPLAYSTRUCTURE
设数据各字段总宽度为50,显示数据库结构命令liststru命令显示可使用字段的总宽度为()
4.3数据表的基本操作
4.3.1数据表的打开与关闭
1、打开(项目管理器、文件菜单、数据工作期、命令)
2、关闭
4.3.2记录的输入
1、记录输入(备注与通用型)
2、记录追加
APPEND:
在表的尾部增加记录,一次可以输入多条
APPENDBLANK:
在表尾增加一条空白记录
INSERT[BEFORE][BLANK]:
在表的任意位置插入新记录
3、从其他数据表文件中追加记录
4.3.3记录的浏览和显示
1、在浏览窗口显示和浏览记录
BROWSE
2、用列表方式显示记录
LIST|DISPLAY
4.3.4记录的查询与定位
当前记录记录指针
几个常用函数:
表文件首测试函数BOF()
测试表文件中的记录指针是否指向开始位置
表文件尾测试函数EOF()
测试表文件中的记录指针是否指向结束位置
记录号测试函数RECNO()
返回当前记录指针指向的记录号
记录数测试RECCOUNT()
返回当前表文件的记录个数
工作区测试函数SELECT()
测试当前工作区,并给出工作区号
测试当前的数据库名DBC()
数据表为空表时,两者同时为真
测试当前工作区上打开的数据表名DBF()
指针的定位:
当需要编辑和修改某一字段的值时,必须先将指针指向该记录
1、用GOTO|GO命令直接定位(绝对移动)
2、SKIP命令(按逻辑顺序定位)(相对移动)
相对于当前记录指针的位置,向前或向后移动一定的数量值
3、用LOCATE命令定位(按条件定位)
CONTINUE(继续查找命令)
函数:
eof()FOUND()(常用于程序代码中判断)
4、菜单方式定位
4.3.5记录数据的修改
1、在浏览窗口修改
2、用EDIT|CHANGE命令式修改(在编辑窗口显示并编辑指定的字段)
3、用REPLACE命令批量(对当前数据表中指定范围内满足条件的记录分别用表达式的值自动取代相应字段的原来值)
4、利用菜单批量修改
4.3.6记录的删除与恢复
1、逻辑删除
DELETE
2、恢复逻辑删除
RECALL
3、物理删除有删除标记的记录(PACK)
4、物理删除表中全部记录(ZAP)
4.4索引
4.4.1基本概念
索引是由指针构成的文件,这些指针逻辑上按照索引关键字值进行排序,实际上创建索引是创建一个由指向.dbf文件记录的指针构成的文件
若要按特定的顺序定位、查看或操作表中记录,可以使用索引作为排序机制,为开发应用程序提供灵活性。
VISUALFoxPro索引是由指针构成的文件,这些指针逻辑上按照索引关键字值进行排序,索引文件和表的.dbf文件分别存储,并且不改变表中记录的物理顺序,实际上创建索引是创建一个由指向dbf文件记录的指针构成的文件。
若要根据特定顺序处理表记录,可选择一个相应的索引,使用索引还可以加速对表的查询操作
♦索引文件可以看成是按关键字段的升序或降序将数据表重新排列后的文件。
♦一个数据表可以有多个索引文件,一个索引文件也可以包含多个索引
♦索引文件不能单独使用,它必须与相应的数据表配合使用才有意义。
索引的类型
1、主索引(只能用在数据库表中,建立的关键字段必须是不重复值项。
一个表只能有一个主索引。
不能用命令建立)
2、候选索引(用于那些不作为主关键字段但字段值又必须惟一的字段,一个表可建立多个候选索引)
3、惟一索引(在使用相应的索引时,重复的索引字段值只有惟一一个出现在索引项中,用于一些特殊的程序设计)
4、普通索引(用于一般的提高查询速度)
4.4.2在表设计器中建立索引
1、单项索引
2、复合字段索引(在多个字段上的索引)
4.4.3用命令建立索引
与表名同名的.cdx索引是一种结构复合压缩索引
在打开表时自动打开
在同一索引文件中能够包含多个索引方案,或索引关键字
在添加、删除、修改记录时自动维护索引
【格式】indexon<表达式>tag<索引标识符>[for<条件表达式>][ascending|descending][unique|candidate][additive]
【格式】indexon<表达式>tag<索引标识符>of<独立复合索引文件名>[for<条件表达式>][ascending|descending][unique|candidate][additive]
独立复合索引文件只能用命令建立
4.4.4使用索引
1、打开索引文件
SETINDEXTO
2、设置当前索引
SETORDERTO
3、使用索引快速定位(SEEK)
4、删除索引(DELETETAGTagName|All)
4.5数据表的统计操作及复制
一、累加求和及求平均值
横向操作
对当前打开表文件中的指定范围内满足条件的数值型字段的数据求和或求平均(纵向操作)
sun/average字段名表范围for条件to变量名表
二、统计记录个数
统计数据表文件中共有多少条记录,或者统计满足某些特定条件的记录个数
COUNT范围FOR条件TO内存变量名
三、统计计算命令
对当前打开的表文件中数值型字段数据求和、求平均、求最大值、最小值等计算
CALCULATE表达式范围条件to内存变量名表
四、分类汇总
对数据按类进行分类合计,将所求的和作为一条新记录送入到新表中
TOTALTO表文件名ON关键字段名FIELDS数值型字段名表范围条件
注意:
在汇总之前,当前表文件应按关键字段名建立了索引,且已经指定为主控索引;新表与当前表的结构相同
五、文件复制
1、复制部分记录或整个数据表
COPYTO文件名范围条件字段名表
2、复制数据表结构
4.6多数据表操作
是内存中开辟的一块与数据表建立起映射关系的区域(内存中的缓冲区)。
内存中最多可以开辟32767个工作区
内存变量与工作区无关
1、工作区编号与别名
VFP中最多开辟了32767个工作区。
编号分别为1、2、3、4、……、32767,其中前10号的别名分别为A、B、C、D、E、F、G、H、I、J,11到32767号分别为W11、W12、W13、W32767
2、当前工作区(在某一时刻,当前工作区只有一个,在当前工作区打开的数据表,称为当前表),VFP启动后,自动指定1号当前
3、数据表的别名
在某工作区中打开数据表时,可以为数据表起一个别名。
use<数据表名>[alias<数据表别名>][in0|<工作区编号>|<工作区别名>]
注意:
若选择IN0,表示在当前没有使用的编号最小的工作区上打开数据表;打开数据表后,可以用数据表的别名代替工作区的别名
1、选择工作区
数据工作期
SELETE工作区编号|工作区别名|数据表别名
2、在不同工作区打开同一数据库
SELE4
USERSGLAGAIN&&在不同的工作区打开相同的数据表
注意:
同一数据表在不同工作区打开后,各自的指针位置可以不同
3、使用非当前工作区中表的数据
4.6.3数据表的关联
1、设置临时关系
数据工作期
2、设置永久关系
4.7管理数据库
4.7.1使用多个数据库
1、在项目中新建、添加、打开和移去数据库
2、设置当前数据库
常用工具栏的数据库下拉列表
SETDATABASETO数据库名
?
DBC()
3、访问其他数据库中的表
4、关闭数据库
5、向数据库中添加和删除表
4.7.2参照完整性
实体完整性与主关键字(实体完整性是保证表中记录惟一,即在一个表中不允许有重复的记录)
域完整性与约束规则
参照完整性与表间的关联(当插入、删除和修改一个表中的数据时,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确)
参照完整性规则包括更新规则、删除规则和插入规则
4.7.3数据交换
1、数据表向数组传递数据
SCATTER[FIELDS字段名表][MEMO]to数组名
将当前数据表的当前记录值传递到指定的数组变量中
设数据表有5个字段:
学号,姓名,英语,数学,计算机,当前记录为一个非空的记录,执行以下命令
DEMENSIONx(3)
SCATTERTOx
COPYTOARRAY数组名[FIELDS字段名表][MEMO]范围fOR条件
2、数组向数据表传递数据
GATHERFROM数组名[FIELDS字段名表][MEMO]
将数组的数据传送到当前表文件的当前记录
Appendfromarray数组名[FIELDS字段名表][MEMO]fOR条件
注意:
字段类型匹配
当前打开数据表