890 likes | 1.06k Views
Visual FoxPro6.0 数据库及其操作. 3.1 数据库的建立 3.2 数据表的设计与建立 3.3 数据表的基本操作 3.4 排序与索引 3.5 数据查询 3.6 数据统计 3.7 多工作区操作 3.8 数据词典. 数据库(. DBC). 备注(. FTP). 库表(. DBF). 索引(. IDX). 3. 1 数据库的建立. 数据库是表的集合,即在一个数据库中可以包含若干个通过关键字段相互关联的表。一个数据库文件(. DBC) 中存储了所包含的表与表之间的联系,以及依赖于表的视图、联接和存储过程等信息。
E N D
Visual FoxPro6.0数据库及其操作 3.1 数据库的建立 3.2 数据表的设计与建立 3.3 数据表的基本操作 3.4 排序与索引 3.5 数据查询 3.6 数据统计 3.7 多工作区操作 3.8 数据词典
数据库(.DBC) 备注(.FTP) 库表(.DBF) 索引(.IDX) 3.1 数据库的建立 数据库是表的集合,即在一个数据库中可以包含若干个通过关键字段相互关联的表。一个数据库文件(.DBC)中存储了所包含的表与表之间的联系,以及依赖于表的视图、联接和存储过程等信息。 把表放入数据库中可以减少数据冗余,保护数据的完整性,使得对数据的管理更加方便和有效。
项目(.PJX) 文档 类 数据 代码 其他 项目是文件、数据、文档和VFP对象的集合。利用“项目管理器”可以很方便地组织和管理项目中的各类数据和对象 用户在开发一个应用系统时,通常都是先从创建项目开始的。
项目(.PJX) 文档 类 数据 代码 其他 查询(.QPR) 数据库(.DBC) 自由表(.DBF) 备注(.FTP) 库表(.DBF) 索引(.IDX) VFP项目组织简图
1. 建立工作目录: 组织和管理磁盘中的各类文件 2.建立项目文件 ⑴ 菜单:选择“文件/新建”菜单命令,或按工具栏“新建”按钮,在“新建”对话框中选择“项目”项 ⑵ 命令:CREATE PROJECT [<项目文件名>] 3.打开项目文件 ⑴ 菜单:选择“文件/打开”菜单命令,或按工具栏的“打开”按钮,在“打开”对话框中选择项目文件(*.PJX) ⑵ 命令: MODIFY PROJECT [<项目文件名>]
3.1.2 数据库的建立 1. 建立数据库 ⑴ 项目管理器:“新建:数据库” ⑵ 菜单:选择“文件/新建:数据库”菜单命令 ⑶ 命令:CREATE DATABASE <数据库名> 2.在项目中添加数据库 在项目管理器中选定“数据库”项,按“添加”按钮,在“打开”对话框中选择需要添加的数据库文件
3.1.3 数据库的基本操作 1. 打开数据库 ⑴ 项目管理器:选定要打开的数据库,按“打开”按钮 ⑵ 菜单:选择“文件/打开”菜单命令 ⑶ 命令 ① 打开数据库文件: OPEN DATABASE [<数据库文件名>] ② 打开数据库设计器: MODIFY DATABASE [<数据库文件名>]
2. 关闭数据库 ⑴ 项目管理器:选定要关闭的数据库,按“关闭”按钮 ⑵ 命令:CLOSE DATABASES 3. 删除数据库 ⑴ 项目管理器:选定数据库后,按“移去”按钮,将从项目中移去选定的库文件;按“删除”按钮,则将选定的库文件从磁盘上删除 ⑵ 命令:DELETE DATABABE <数据库文件名>
3.2 数据表的设计与建立 1. 数据表和数据库 表(Table)是处理数据和建立关系型数据库及应用程序的基本元素。数据库(DATABASE)是表的集合 2. 数据表的类型 ⑴ 自由表:不属于任何数据库而独立存在的表 ⑵ 数据库表:属于某一数据库的表 3. 数据表的结构 数据表形式上是一组相关联的数据 按行和列排列的二维表格,用来描述一个实体 字段 记录
3.2.1 表结构的设计 在VFP中,二维表中的每一列称为一个字段(Field),除标题行外的每一行称为一条记录 (Record)。每一列的标题叫字段名,列标题下的数据叫字段值,所有的字段名构成二维表的标题行(表头),标题行就叫数据表的结构(Structure)。一个数据表就是由表结构和记录两部分组成。 设计表的结构即定义该表所包含的字段名、类型、宽度、小数位数、索引和NULL等。
1.字段名 字段名用来标识表中的字段,它必须以字母或汉字开头,由字母、汉字、数字或下划组成,不能含空格。数据库表的字段名最长为128字符(64个汉字),自由表的字段名最长为10个字符(5个汉字)。一个表最多可以有128个字段,且字段名不能重复。 2.字段的数据类型 字段的数据类型决定了存储在此字段中的数据的类型,由字段的数据类型决定对该字段所允许的操作。 VFP提供了13种数据类型,如下所示:
字符型:可以是英文字母、汉字、数字字符 各种字符型文本,所占用的宽度为1~254个字节,如学生情况表XSDA中的“姓名”字段的数据类型可以设置成字符型。 数据类型 货币型:货币单位,如货物的价格。货币型数据的表示方法是在数据前添加符号$。 数值型:可以是正数或负数,也可以是整数或小数,数据长度最多为20位。如表XSDA中的“入学分”字段的数据类型可以设置成数值型。
浮点型:功能上类似于“数值型”,其长度在表中最长可达20位。浮点型:功能上类似于“数值型”,其长度在表中最长可达20位。 数据类型 日期型:由年、月、日构成的数据类型,如表XSDA中的“出生日期”字段的数据类型可以设置成日期型。 日期时间型:由年、月、日、时、分、秒构成的数据类型,如学生上课的时间。
双精度型:双精度数值类型,一般用于要求精度很高的数据。双精度型:双精度数值类型,一般用于要求精度很高的数据。 数据类型 整型:不带小数点的数值类型,其优点在于比其他数值型数据占据有存储空间要小,它只用4个字节,简记I型。 逻辑型:值为“真”(.T.)或“假”(.F.),如表XSDA中的“是否团员”字段的数据类型可以设置成逻辑型。
备注型:不定长的字符型文本,如用于存放个人简历等。备注型数据类型的固定长度为4个字节,但实际长度仅受磁盘存储空间限制,并且所保存的数据信息实际上并不存放在表文件中,而是存放在与表文件同名,扩展名为.FPT的文件中。备注型:不定长的字符型文本,如用于存放个人简历等。备注型数据类型的固定长度为4个字节,但实际长度仅受磁盘存储空间限制,并且所保存的数据信息实际上并不存放在表文件中,而是存放在与表文件同名,扩展名为.FPT的文件中。 数据类型 通用型:用于标记电子表格、文档、图片等OLE对象。通用型数据类型的固定长度也为4个字节,但实际长度仅受磁盘存储空间限制,并且所保存的数据信息也是存放在与表文件同名,扩展名为.FPT的文件中。
3.字段宽度 数据类型为C、N、F的字段的宽度必须能容纳将要显示的信息的内容,C型字段的宽度不能大于254个字节,否则必须使用M型字段。数据类型为Y、D、T、I、B、L、M、G的字段的宽度由系统规定。 4.小数位数 对于N型和F型的字段,还要定义小数位数。小数位数指小数点右边有几位数字。字段宽度包括整数位数、小数位数、正负号和小数点。对于整数,小数位数设为0;对于纯小数,小数位数至少比字段宽度少1位。
5.使用空值(NULL) 在创建数据表结构时,是否选定字段为NULL值,这决定该字段中的数据是否接收空值。空值不同于0,空字符串或者空白,而是一个不确定的值。
3.2.2 表结构的建立 表结构的定义在“表设计器”中完成。打开表设计器的方法有: ⑴ 菜单:选择“文件/新建”菜单命令 ⑵ 命令:CREATE <表文件名> ⑶ 项目管理器 定义表结构就是设置表的字段属性,包括字段名、数据类型、字段宽度和小数位数等。
输入记录数据可以选择“显示/浏览”或“编辑”菜单命令,在“浏览”或“编辑”窗口中进行。 ⑴ 一般数据的输入 字符型、数值型、逻辑型、日期型等字段类型数据可以直接在浏览窗口或编辑窗口中输入。
⑵ 备注型字段数据的输入 双击名为“memo”的备注字段标志,进入备注窗口,输入文本内容 ⑶ 通用型字段数据的输入 双击名为“gen”的通用字段标志,进入通用型字段输入编辑窗口。选择“编辑/插入对象”菜单命令,在“插入对象”对话框中选择插入OLE对象 如果在数据表中定义了备注型或通用型字段,系统会自动生成与表文件名相同的备注文件(.FPT)。备注文件是表文件的辅助文件,它随着表文件的打开而打开,随着表文件的关闭而关闭 无论一个表中定义了多少个备注型或通用型字段,系统只生成一个备注文件。
Visual FoxPro 6.0数据表分为数据库表和自由表两种,当某一个表不从属于任何一个数据库的时候就是一个自由表。在创建表时,如果当前没有打开任何数据库,则创建的表就是自由表;否则,创建的就是从属于当前数据库的数据库表。一个自由表可以被添加到某一个数据库中成为从属于该数据库的数据库表;反之,一个从属于某个数据库的数据库表也可以从该数据库中移出,使其成为自由表,两者可以相互转换。
将自由表添加到数据库 ⑴ 项目管理器 选择“数据库:表”项,按“添加”按钮 ⑵ 命令:ADD TABLE <数据表文件名> 数据库中的表只能属于一个数据库文件,如果向当前数据库中添加的表已属于其它数据库,则需要先从其它数据库中移去该数据表,然后才能将它添加到当前数据库中。
从数据库中移去数据表 ⑴ 项目管理器 选定要移去的表,按“移去”按钮,在提示对话框中按“移去”按钮;若 按“删除”按钮,则不仅从数据库中移去该表,同时也从磁盘上删除了该表 ⑵ 命令:REMOVE TABLE <数据表文件名>。
3.2.3 表结构的修改 表结构的修改主要包括:添加和删除字段;修改字段名称、数据类型、字段长度;是否允许为NULL值;添加、删除和修改索引标识等。表结构的修改主要是在表设计器中进行,通常首先要打开表文件,然后再打开所选表的“表设计器”对话框。 方法一:用菜单方式修改表的结构 方法二:使用命令方式修改表的结构
方法一:菜单方式修改表的结构 1. 选择“文件”菜单的中的“打开”或按 “Ctrl+O”键,也可以单击工具栏上的“打开” 按钮,在“打开”对话框中选择“文件类型”、 为“表(*.dbf)”,选择表所在的文件夹,找 到表文件后,双击要打开的表。 2. 选择“显示”菜单的中的“表设计器”, 打开所选表的“表设计器”对话框,然后就可 以进行表结构的有关修改。
方法二:用命令方式修改表的结构 命令格式:MODIFY STRUCTURE 功能:打开表设计器窗口,显示并修改当前 数据表的结构。 说明:在使用此命令之前,一定要打开被修 改的数据表。
3.3 数据表的基本操作 3.3.1 表的打开与关闭 3.3.2 表记录的浏览 3.3.3 表记录的定位 3.3.4 表记录的修改 3.3.5 表记录的追加与插入 3.3.6 表记录的删除与恢复 3.3.7 表与表结构的复制 3.3.8 数组和表之间的数据交换
显示结构 修改结构 数据表结构 新建表 排序 数据表记录 打开/关闭 索引 增加记录 修改记录 删除记录 显示记录 检索记录 统计数据 复制表 复制结构
3.3.1 表的打开与关闭 命令格式:USE [<表文件名>] [EXCLUSIVE] [SHARED] 功能:打开指定的数据表文件。 • 如果只用USE,不带任何选项,则表示关闭当前打开的数据表文件。 • EXCLUSIVE选项表示以独占的方式打开数据表文件,不允许其它用户在同一时刻也使用该数据表。 • SHARED选项表示以共享的方式打开数据表文件,允许其它用户在同一时刻也使用该数据表。 【例3.1】用命令以独占方式打开学生表XSDA.dbf,然 后再用命令关闭该文件。 USE D:\vfp\XSDA.dbf EXCLUSIVE USE
1.浏览窗口显示方式 编辑方式和浏览方式。 把浏览窗口分割成两各窗格,各用一种显示方式。 3.3.2 表记录的浏览
(2) 显示记录(主窗口) 命令:LIST|DISPLAY [<范围>] [FIELDS <字段名表>][WHILE <条件>] [FOR<条件>] • LIST命令表示连续显示,DISPLAY命令表示显示满一屏时暂停,等待按任一键继续显示。 • 若无<范围>和<条件>选项,LIST命令显示表中所有记录,而DISPLAY命令只显示当前一条记录。 • 若无FIELDS<字段名表>选项,显示表中记录的全部字段数据,否则,按指定的字段名显示记录数据。 • 若无OFF选项,记录号一起显示;若有OFF选项,记录号不显示,只显示记录内容。
数据表的浏览应用示例 1. 显示所有男生的姓名与在2007年的年龄 2. 显示所有姓“张”同学的学号、姓名 3. 显示所有姓名中含有“林”字同学的学号、姓名 4. 显示所有在本月过生日同学的姓名和出生日期 5. 显示当前记录信息 LIST 姓名,2007-YEAR(出生日期) FOR 性别=‘男’ LIST 学号,姓名,FORLEFT(姓名,2)=[张] LIST LIST 学号,姓名 FOR AT(“林”,姓名)#0 $$ “林”$姓名 LIST FIELDS 姓名,出生日期 FOR MONTH(出生日期)=MONTH(DATE()) DISPALY
3.3.3 表记录的定位____1.记录指针 记录指针存放的是记录号。被记录指针指向的记录称为“当前记录” 向表中录入数据时,系统会按照录入次序为记录加上记录号 数据表刚打开时,记录指针总是指向首记录 通过移动记录指针可以指定当前要操作的记录
3.3.3 表记录的定位____2.移动记录指针 ⑴ 菜单:打开浏览窗口,选择“表/转到记录”菜单命令 ⑵ 命令 ① 绝对移动:[GO[TO]] <记录号>|TOP|BOTTOM 功能:将记录指针定位在指定记录号的记录上 TOP表示第一条记录,BOTTOM表示最后一条记录 ② 相对移动:SKIP [+|-][<算术表达式>] 功能:将记录指针从当前位置向前或向后 移动若干条记录位置
【例3.2】用命令方式定位并显示表XSDA的指定记录。【例3.2】用命令方式定位并显示表XSDA的指定记录。 USE D:\VFP\XSDA GO TOP DISPLAY GO 6 DISPLAY GO BOTTOM DISPLAY 【例3.3】用命令方式显示表XSDA倒数第5条记录信息。 GOTO BOTTOM SKIP -4 DISPLAY
3.3.4 表记录的修改 1.在浏览窗口中修改数据 方法一:用菜单方式显示数据记录和修改数据 【例3.4】用编辑方式显示“学生情况表”的数据记录,并把第4条记录同学的籍贯字段内容“浙江”改为“福建”。
方法二:用命令方式显示数据记录和修改数据 方法二:用命令方式显示数据记录和修改数据 命令格式1:EDIT [<范围>] [FIELDS<字段名表>] [FOR/WHILE <条件>] 命令格式2:CHANGE [<范围>] [FIELDS<字段名表>] [FOR/WHILE <条件>] 功能:打开编辑方式窗口,显示数据表中满足指定范围 和条件的记录,并进行修改。 说明: • 如果不指定任何选项,从当前记录开始显示所有字段的数据。 • FIELDS<字段名表>选项,指定在窗口中显示的字段,供编辑修改。不指定此项,则显示全部字段。
命令格式3:BROWSE [FIELDS<字段名表>] [FOR <条件>] [FREEZE <字段名>][NOAPPEND] [NOEDIT/NOMODIFY] 功能:打开浏览方式窗口,显示数据表中满足指定条件的记 录,并进行编辑修改。 说明: • 如果不指定任何选项,显示当前数据表的全部记录。 • FIELDS<字段名表>选项,指定在窗口中显示的字段,供编辑修改。不指定此项,则显示全部字段。 • FREEZE <字段名>选项,表示在窗口中只允许修改由<字段名>指定的字段,其它字段只能显示不能修改。不指定此项,允许修改所有字段。 • NOAPPEND表示在窗口中不能追加任何记录。 • NOEDIT/NOMODIFY表示在窗口中不能修改表中的记录。不指定此项,表示可修改记录。
2.成批量的修改数据 方法一:用菜单方式成批修改数据 【例3.5】给学生成绩表XSCJ.dbf增加一个“平均分” 字段(N,5,1),然后要求用菜单方式 计算出所有同学的“平均分”字段值。
方法二:用命令方式成批修改数据 命令格式:REPLACE [<范围>] <字段1> WITH <表达式1> [,<字段2> WITH <表达式2>…] [FOR/WHILE <条件>] 功能:对当前数据表中指定范围内满足条件的记录,自动用给定的表达式的值替换对应的字段值。 说明: • 此命令可对表中数据进行成批的修改,即用<表达式1>的值替换<字段1>的值,用<表达式2>的值替换<字段2>的值,…,一次可替换多个字段的值。 • 若无范围无条件选项,则只替换修改当前记录的指定字段内容。 • 若无条件选项,则替换修改指定范围内所有记录的指定字段内容。 • 若无范围选项,则替换修改整个数据表中满足条件的记录的指定字段内容。
【例3.6】XSCJ有学号、高等数学、英语、计算机基础、马哲五个字段,现要求增加一个“总分”字段(N,5,1),然后要求用REPLACE命令计算出所有同学的“总分”字段值。 CLOSE ALL USE XSCJ MODIFY STRUCTURE && 打开表设计器,增加总分字段 REPLACE 总分 WITH 英语+高等数学+ ; 计算机 基础+马哲 ALL
3.3.5 表记录的追加与插入__1.在浏览窗口中追加记录 ⑴ 菜单:打开浏览窗口,选择“显示/追加方式”菜单命 令,可以在原有记录的后面追加多条新记录 选择“表/追加新记录”菜单命令,每次只能添加一条新 记录。 ⑵ 命令:APPEND [BLANK] BLANK表示空记录
3.3.5 表记录的追加与插入__ 2.插入记录 命令:INSERT [BLANK][BEFORE] 功能:在数据表的当前记录之前或之后插入一条 记录。 BEFORE表示“之前”
3.3.5 追加记录____3.从其它文件中追加记录 ⑴ 菜单:打开浏览窗口,选择“表/追加记录”菜单命令 ⑵ 命令:APPEND FROM <源表文件名> [FIELDS <字段名表>][FOR <条件>] 功能:将指定表的满足条件记录追加到当前打开的数据表的尾部。选择“表∣追加记录”命令,打开“追加来源”对话框,如下图所示。在“来源于”文本框中输入追加记录的来源表的文件名,也可单击其右边的浏览按钮,从对话框中选择来源文件。两个表的结构要求完全相同。
记 录 RECALL DELETE 逻辑删除 ZAP PACK 物理删除 3.3.6 表记录的删除与恢复 1. 逻辑删除: 给记录加删除标记 ⑴ 鼠标操作:在浏览窗口中,单击左侧白色 方框使之变黑 ⑵ 菜单:选择“表/删除记录”菜单命令 ⑶ 命令:DELETE [<范围>][FOR <条件>] 2. 恢复逻辑删除: 取消删除标记 ⑴ 鼠标操作:单击逻辑删除标记,取消黑色方框 ⑵ 菜单:选择“表/恢复记录”菜单命令 ⑶ 命令:RECALL [<范围>][FOR <条件>] 3. 物理删除:从磁盘上删除记录,不可恢复 ⑴ 菜单:选择“表/彻底删除”菜单命令 ⑵ 命令:PACK(删除带有删除标记的记录) ZAP (一步、全部清除表中记录,仅保留表结构)
3.3.7 表与表结构的复制 1. 数据表文件的复制 ⑴ 菜单:打开表文件,选择“文件/导出”菜单命令, 显示“导出”对话框 ⑵ 命令:COPY TO <新表文件> [<范围>][FIELDS <字段名表>] [FOR <条件>][WHILE <条件>] 2. 数据表结构的复制 命令:COPY STRUCTURE TO<新表文件> [FIELDS <字段名表>]
原数据表 (无序) 排序 排序结果 数据表 (有序) 3.4 排序与索引 3.4.1 排序 排序是把数据表中的记录按照某个字段值的大小重新排列,作为排序依据的字段称为“关键字”。 按照关键字的值从小到大的排序称为升序,从大到小的排序称为降序。 排序后生成一个新的数据表文件,其结构和数据可以与源文件完全相同,也可以取自源文件的一部分字段。
排序命令: SORT TO <新文件名> [<范围>][FIELDS <字段名表>][FOR <条件>] ON <字段名1>[/A][/D][/C][,<字段名2>[/A][/D][/C]…] 功能:将当前数据表按指定的一个或多个字段进行排序,并将排序的结果保存到一个新的数据表中。 /A表示升序,/D表示降序,/C表示字母不分大小写,默认为升序。
原数据表 (无序) 索引 索引文件 (有序) 3.4.2 索引____1.基本概念 ⑴ 索引是由指向表记录的指针构成的文件,这些指针逻辑上按照索引关键字的值进行排序 索引文件和表文件分别存储,并且不改变表中记录的物理顺序