540 likes | 643 Views
第四章 数据库与表的基本操作. 本 章 内 容. §4.1 数据库的基本操作 §4.2 表的基本操作 §4.3 表的索引 §4.4 数据完整性 §4.5 多表操作. §4.1 数据库的基本操作. VFP 数据库是存储表、视图、表间联系等对象的“容器”。“表”是数据库中最基本的数据对象。 建立 VFP 数据库一般生成 3 个文件: 数据库文件( .dbc ) ,数据库备注文件( .dct )和数据库索引文件( .dcx )。
E N D
第四章 数据库与表的基本操作 本 章 内 容 §4.1 数据库的基本操作 §4.2 表的基本操作 §4.3 表的索引 §4.4 数据完整性 §4.5 多表操作
§4.1 数据库的基本操作 VFP数据库是存储表、视图、表间联系等对象的“容器”。“表”是数据库中最基本的数据对象。 建立VFP数据库一般生成3个文件:数据库文件(.dbc),数据库备注文件(.dct)和数据库索引文件(.dcx)。 建立数据库的一般步骤:建立一个数据库,并打开“数据库设计器”。刚建的数据库是一个空的数据库,接着向数据库添加表和其他对象,并建立表间联系。 不属于数据库的表称为自由表,添加到数据库中的表称为数据库表,二者不同之处在于数据库表增加了数据完整性约束。
§4.1.1 创建数据库 建立数据库常用的方法有以下3种: 1.在“项目管理器”中建立数据库 (1)打开某个项目,例如打开“职工管理”项目。 (2)在“项目管理器”中,选择“数据库”选项,然后单击“新建”按钮,打开“新建数据库”对话框,单击其中的“新建数据库”按钮,打开“创建”对话框,如图4-1所示。 图4-1 “创建”对话框
(4)单击“保存”按钮,即在当前项目中建立了一个“职工业绩.dbc”的数据库文件。 此时屏幕上会显示一个空的“数据库设计器”窗口,同时还激活了“数据库设计器”工具栏,如图4-2所示。“数据库设计器”是创建、修改和管理数据库的工具。 图4-2 “数据库设计器”窗口
2.使用“新建”对话框建立数据库 (1)单击工具栏中的“新建”按钮,打开“新建”对话框,如图4-3所示。 (2)在“文件类型”选项组中,选择“数据库”选项,单击“新建文件”按钮,打开“创建”对话框。接下去的操作步骤与方法1相同。 图4-3 “新建”对话框
3.使用命令建立数据库 在命令窗口中键入: CREATE DATABASE [数据库名] 说明:使用命令建立数据库,不打开“数据库设计器”,但刚建的数据库是打开的。 注意: 在使用“新建”对话框或者CREATE DATABASE命令建立数据库时,若要将所建立的数据库包含于某个项目中,则需要将数据库“添加”到该项目中。
§4.1.2 修改数据库 1.打开数据库 要使用数据库或修改数据库,例如,在数据库中添加表,都要先打开数据库。 打开数据库的常用方法有以下3种: (1)在“项目管理器”中打开数据库 1)在“项目管理器”中打开“职工管理.pjx”项目,选择“职工业绩.dbc”数据库。 2)单击“修改”按钮,打开“数据库设计器”窗口,同时激活“数据库设计器”工具栏,如图4-2所示。 (2)使用“打开”对话框打开数据库 1)单击工具栏中的“打开”按钮,或选择“文件”菜单中的“打开”命令,弹出“打开”对话框,如图4-4所示。
图4-4 “打开”对话框 2)在“文件类型”选项组中,选择“数据库”;在“文件名”文本框中,输入或选择要打开的数据库名称;勾选“独占”复选框,以此方式打开的数据库可修改。 3)单击“确定”按钮,即打开“数据库设计器”窗口和工具栏。
(3)使用命令打开数据库 1)打开数据库 命令格式:OPEN DATABASE [数据库名|?] [EXCLUSIVE|SHARED] [NOUPDATE] 说明:使用该命令打开数据库,不显示“数据库设计器”窗口和“数据库设计器”工具栏。 2)修改数据库 命令格式:MODIFY DATABASE [数据库名|?] [NOWAIT] [NOEDIT] 说明: ①该命令打开数据库,同时显示“数据库设计器”窗口。 ②NOWAIT:该选项在交互方式的命令窗口中无效,只在程序中使用。其作用是“数据库设计器”打开后,程序不停顿而继续执行。
2.设置当前数据库 同一时刻VFP可以打开多个数据库,但只有一个数据库是当前数据库。 (1)使用工具栏中的数据库下拉列表设置当前数据库 在工具栏的数据库下拉列表中,单击某数据库的名称,该数据库即成为当前数据库,如图4-5所示。 图4-5 数据库下拉列表 (2)使用命令设置当前数据库 在命令窗口中键入:SET DATABASE TO [数据库名]
3.向数据库添加表 (1)在“数据库设计器”窗口中打开要操作的数据库。 (2)鼠标右击“数据库设计器”窗口,弹出“数据库”快捷菜单。选择其中的“添加表”命令,弹出“打开”对话框;或者,单击“数据库设计器”工具栏中“添加表”按钮,弹出“打开”对话框,如图4-7所示。 图4-7 “打开”对话框
(3)在“打开”对话框中,选择要添加的表文件,如选定“Zgjk.dbf”表,然后单击“确定”按钮,所选定的表即添加到“数据库设计器”窗口中。 (4)重复以上的操作,将前面所建的与职工业绩相关的表(职工简况表Zgjk.dbf、工资表Gz.dbf、销售表Xs.dbf、商品表Sp.dbf)都添加到“数据库设计器”窗口中,如图4-8所示。 图4-8 添加表文件后的“数据库设计器”
4.创建数据库表 鼠标单击“数据库设计器”工具栏中“新建表”按钮,弹出“新建表”对话框。接下去的操作是创建数据库表,其方法与创建自由表相似,如何创建表将在下一节的内容中介绍。 值得强调的是:在“数据库设计器”中创建的表是数据库表,而不是自由表,且自动地被包含在该数据库中。
5.移去或删除数据库表 VFP中有两种表:数据库表(属于数据库)和自由表(不属于数据库)。数据库表可以从数据库中移出去而成为自由表;反之,自由表也可以移入数据库而成为数据库表。 移去或删除数据库表的操作步骤如下: (1)在“数据库设计器”窗口中,选定要移去的表。 (2)单击“数据库设计器”工具栏中“移去表”按钮,弹出提示对话框。 (3)若选择“移去”,则表与数据库脱离包含关系,而成为自由表,但没有被物理删除;若选择“删除”,则从磁盘上物理删除该表。
§4.2 表的基本操作 §4.2.1 表的设计 1.表的设计 (1)设计表就是在使用VFP创建表之前的规划工作。 (2)表的设计包括以下内容: 1)设计表的结构。 2)设计表的数据记录。 (3)设计表的方法一般用表格表示。 2.表结构的设计 设计表的结构就是设计表的字段,即确定表的每一个字段的属性,字段属性包括字段名、类型、宽度和小数位4个参数。
3.表记录的设计 职工简况表(Zgjk.dbf)数据记录的设计如下表所示。
§4.2.2 创建表结构 创建表分为两个步骤:第一步是创建表结构,即定义表的字段;第二步是向表中输入数据记录。 VFP提供两种创建表的方法,一种是使用“表向导”,另一种是使用“表设计器”。用“表设计器”创建表的操作步骤如下: 1.打开“表设计器” 打开“表设计器”有如下的方法: (1)打开“项目管理器”窗口,选择“表”选项,单击“新建”按钮,打开“新建表”对话框,单击“新建表”按钮,打开“创建”对话框,输入表名,然后单击“保存”按钮,打开“表设计器”。 (2)单击“新建”按钮,打开“新建表”对话框,选择“表”选项,单击“新建文件”按钮,打开“创建”对话框,输入表名,然后单击“保存”按钮,打开“表设计器”。 (3)在“命令”窗口中,键入CREATE并回车。
2.定义表结构 (1)在项目中打开表“表设计器” 1)打开项目文件“职工管理.pjx”,在“项目管理器”中,选择“自由表” 。 2)单击“新建”按钮,弹出“新建表”对话框,单击其中的“新建表”按钮,打开“创建”对话框。 3)在“保存在”文本框中,选择保存表的文件夹;在“输入表名”文本框中,输入表的名称:Zgjk。 4)单击“保存”按钮,即在“职工管理”项目中创建了一个“Zgjk.dbf”表,并打开表“表设计器” 。 (2)输入表结构 按照所定义的Zgjk.dbf表的结构,在表设计器中依次输入各字段的字段名、类型、宽度和小数位的属性值 ,如图4-13所示。
图4-13 “表设计器”的“字段”选项卡 说明:建立数据库表和自由表的“表设计器”界面是不同的。建立数据库表时,“表设计器”有“显示”、“字段有效性”和“匹配字段类型到类”选项组,而建立自由表则没有这些选项组。
(3)保存表结构 所有的字段属性设定完后,单击“确定”按钮,即弹出提示框,询问“现在输入数据记录吗?”。若打算以后再输入记录,则单击“否”按钮,关闭表设计器;若要立即输入数据记录,则单击“是”按钮,打开输入表记录的窗口。 不论回答“是”还是回答“否”,表结构都建立完毕,表文件已经存在。
§4.2.3 输入表数据记录 1.在创建表时输入记录 (1)“编辑”和“浏览”方式输入记录 当表结构定义完毕,VFP询问“现在输入数据记录吗?”。如果回答“是”,则直接进入表的“记录编辑”窗口。“记录编辑”窗口有“编辑”和“浏览”两种显示方式,VFP默认“编辑”方式,如图4-14所示。在此窗口中,用户可以逐条记录地输入数据。 图4-14 “记录编辑”窗口“编辑”显示方式
若选择“显示”菜单中的“浏览”命令,则“记录编辑”窗口切换为“浏览”显示方式,如图4-15所示。“浏览”显示方式更符合大多数用户的使用习惯。 图4-15 “记录编辑”窗口“浏览”显示方式
(2)输入备注(M)型字段的数据 1)把光标移到备注型字段memo上。 2)双击鼠标或者按Ctrl+PgDn键,打开备注型字段编辑窗口,输入备注的内容,如图4-17所示。 3)备注内容输入完毕,单击“关闭”按钮,返回“记录编辑”窗口,此时备注型字段标志的第一个字母变为大写Memo。 图4-17 备注型字段编辑窗口
(3)输入通用(G)型字段的数据 1)把光标移到通用型字段的gen上。 2)双击鼠标或者按Ctrl+PgDn键,打开通用型字段编辑窗口。 3)选择“编辑”菜单中的“插入对象”命令,打开“插入对象”对话框,并选中“由文件创建”单选按钮,如图4-18所示。 图4-18 “插入对象”对话框
4)在“由文件创建”文本框中,直接输入图像文件的路径及文件名,或者单击“浏览”按钮,打开“浏览”对话框选择所需要的图片,然后单击“确定”按钮,返回“插入对象”对话框。4)在“由文件创建”文本框中,直接输入图像文件的路径及文件名,或者单击“浏览”按钮,打开“浏览”对话框选择所需要的图片,然后单击“确定”按钮,返回“插入对象”对话框。 5)在“插入对象”对话框中,单击“确定”按钮,返回通用型字段编辑窗口,所选的图片显示于通用型字段的编辑窗口。 6)单击“关闭”按钮,返回“记录编辑”窗口,此时通用型字段的标志变为首字母为大写的Gen。 (4)保存表记录 所有的记录输入后,单击“记录编辑”窗口的“关闭”按钮。 说明:表文件的扩展名为.dbf,若表结构中包含备注(M)型或通用(G)型的字段,则自动产生同名的表的备注文件(.fpt),将备注型和通用型字段的内容存放在备注文件(.fpt)中。表文件(.dbf)中备注型和通用型字段的宽度为4B,是用于存放链接指针,指针指向同名的备注文件(.fpt)。
2.追加记录 若要对只有结构的空表或者记录不完整的表追加记录,可按以下步骤操作。 (1)打开表文件 1)使用“打开”对话框打开表文件 单击工具栏中的“打开”按钮,弹出“打开”对话框。在“文件类型”列表框中选择“表(*.dbf)”;在当前文件夹的表文件名列表框中,选定要打开的表文件;勾选“独占”复选框;单击“确定”按钮,即打开表文件。 2)使用命令打开表文件 打开表文件命令格式为:USE <表文件名> 说明:若在命令动词USE后面不指定表文件名,则关闭当前工作区的表文件。
(2)打开“浏览”窗口 表文件在内存中打开后,若要查看表的记录内容,则要打开“浏览”窗口。打开“浏览”窗口的方法是:执行“显示”菜单中的“浏览”命令;或者在命令窗口中键入:BROWSE。 (3)追加记录 1)若选择“表”菜单中的“追加新记录”命令,则每次操作只能追加一条记录。 2)若选择“显示”菜单中的“追加方式”命令,则可以连续追加多条记录。(相当于执行APPEND命令) (4)保存记录 记录输入后,单击“浏览”窗口的“关闭”按钮。 职工管理需要多个表,工资表(Gz.dbf)、销售表(Xs.dbf)和商品表(Sp.dbf)的结构和数据记录内容,如图4-21、图4-22、图4-23、图4-24、图4-25和图4-26所示。可用以上介绍的方法建立这些表。
§4.2.4 修改表结构 表结构的创建和修改都是在“表设计器”中进行,表结构的修改的操作步骤如下。 (1)以独占的方式打开要修改的表文件。 (2)选择“显示”菜单中的“表设计器”命令,打开“表设计器”对话框。 (3)在“表设计器”中修改结构,表结构的修改与创建的数据编辑方法相同。修改完毕,单击“确定”按钮,则弹出提示框。 (4)单击“是”按钮。
§4.2.5 修改表记录 在“浏览”窗口中,既可以查看表的记录,又可以修改表记录的数据。所以修改表记录的便捷方法是在“浏览”窗口中进行,具体操作步骤如下: (1)以独占的方式打开要修改的表文件。 (2)选择“显示”菜单中的“编辑”或“浏览”命 令,打开记录“浏览”窗口。 (3)在“浏览”窗口中修改记录数据。 (4)修改完毕,单击“关闭”按钮。
§4.2.6 表记录的定位 1.记录指针 VFP在表中设置一个记录指针,记录指针指向的记录称为当前记录。对表的操作通常是对当前记录操作。 2.表记录的定位 表记录的定位就是移动记录指针,以确定当前记录。 (1)使用菜单中的命令定位记录 操作步骤如下: 1)打开表文件。 2)选择“显示”菜单中的 “浏览”命令,打开记录“浏览”窗口。 3)选择“表”菜单中的“转到记录”命令,弹出“转到记录”命令的子菜单。 4)在“转到记录”的子菜单中选择“记录号”命令,打开“转到记录”对话框。输入记录号,然后单击“确定”按钮,记录指针即指向指定的记录。
(2)在“浏览”窗口中定位记录 1)打开表文件。 2)选择“显示”菜单中的“浏览”命令,打开记录“浏览”窗口。 3)在“浏览”窗口中,左端第一列的小方块为记录“定位标记”。鼠标单击“定位标记”,记录指针即指向指定的记录,如图4-31所示。 图4-31 在“浏览”窗口中直接定位记录
§4.2.7 删除表记录 在VFP中,删除表记录分为两步:先逻辑删除,然后物理删除。逻辑删除只是在记录旁作删除标记,必要时还可以撤消删除标记恢复记录;物理删除是从表文件中删除表中记录。 1.逻辑删除记录 (1)在浏览窗口中,单击要删除的记录左端第二列小方块。 (2)选定要删除的记录,然后选择“表”菜单中的“切换删除标记”命令。 (3)选定要删除的记录,然后按快捷键Ctrl+T。 被逻辑删除的记录的左侧出现“删除标记”,如图4-32所示。 图4-32 逻辑删除记录
2.恢复被逻辑删除记录 恢复被逻辑删除记录有如下几种方法: (1)在浏览窗口中,单击“删除标记”(“删除标记”是反复开关)。 (2)选定要恢复的记录,然后选择“表”菜单中的“切换删除标记”命令。 (3)选定要恢复的记录,然后按快捷键Ctrl+T。 3.物理删除记录 如果要将有逻辑删除标记的记录物理删除,可执行“表”菜单中的“彻底删除”命令;或键入命令:PACK
§4.2.8 表的操作命令 1.VFP命令的结构 VFP命令由命令动词、语句体和注释三个部分组成。例如,显示表记录的命令为: LIST [范围] [表达式表] [FIELDS <字段名表>] [FOR|WHILE <条件>] [OFF] [TO PRINT|<文件>] &&显示表记录 (1)命令动词 命令动词LIST表示执行什么操作,即表示“做什么?” (2)语句体 语句体(命令动词之后的内容)由若干个短语(又称为子句)组成,表示操作的对象以及对操作的限制,即表示“怎么做”。 (3)注释 注释(&&符号之后的内容)是命令的非执行部分,它不是指挥计算机完成某个操作,而是写给用户看的提示文字。
2.短语的具体含义 (1)范围子句([范围]) 范围子句用于限制参加操作的记录(行),具体内容及其意义如下: 1)ALL 对全部记录操作 2)NEXT <n> 对当前及以下共n个记录操作 3)RECORD <n> 对第n号记录操作 4)REST 对当前到最后一条记录操作 注意:当命令中缺省范围短语时,不同的命令有不同的默认值。修改类的命令,通常默认当前一条记录;统计类的命令,通常默认ALL。
(2)字段子句([ FIELDS <字段名表> ]) 字段子句用于指定参加操作的字段,即限制参加操作的列。字段名之间用逗号分隔,构成字段名表。 (3)条件子句([FOR | WHILE <条件>]) 1)FOR <条件> 对所有满足条件的记录操作。(遇假绕过) 2)WHILE <条件> 遇到不满足条件的记录即停止操作。(遇假即停) (4)输出子句(TO <设备名>|<文件名>|<内存变量名>) 输出子句用于指定命令执行结果的输出去向。默认输出到VFP主窗口。 (5)OFF子句 选用OFF子句时,不显示记录号。
3.命令中符号的约定 (1)< > 表示其中内容为必选项。 (2)[ ] 表示其中内容为任选项。 (3) | 表示或者 (4)… 表示有限次重复 4.命令书写的规则 (1)每条命令以命令动词开始,短语的顺序可任意,可用分号作为续行号,命令行以回车键结束。 (2)命令动词与短语以及短语与短语之间至少用一个空格隔开。 (3)命令中的字符皆为半角,字母大小写等效。 (4)大多数命令动词与命令关键字只需键入前4个字符。
5.创建表文件的命令 格式:CREATE [表文件名] 功能:创建表文件。 6.打开表文件的命令 格式:USE <表文件名> [ IN 区号|别名] [ ALIAS 别名] 功能:在指定的区打开表文件,并为表文件指定一个别名。 【例4-2】USE Zgjk IN 2 ALIAS Zg 说明: (1)若不指明区号,默认在当前工作区打开表文件。 (2)表文件刚打开时,指针指向第1记录。
7.关闭表文件的命令 格式:USE 功能:关闭当前工作区中的表文件。 8.追加记录的命令 格式:APPEND [ BLANK ] 功能:在表尾添加记录。 说明: (1)事先打开表文件是对表记录进行增加、删除和修改等编辑操作的前提。 (2)执行APPEND命令:出现记录编辑窗口,等待用户由键盘输入追加的记录数据。 (3)执行APPEND BLANK命令:直接在表尾追加一条空记录。
9.插入记录的命令 格式:INSERT [BLANK] [BEFORE] 功能:在指定位置插入记录。 说明: (1)若缺省BLANK,则出现记录编辑窗口,等待用户由键盘输入要插入的记录数据;若选用BLANK,则直接插入一条空记录。 (2)若缺省BEFORE,则新记录插在当前记录之后;若选用BEFORE,则新记录插在当前记录之前。
10.显示记录的命令 格式:LIST | DISPLAY [范围] [表达式表] [FIELDS <字段名表>] [FOR | WHILE <条件>] [OFF] [TO PRINT | <文件>] 功能:显示指定范围满足条件的记录。 说明: (1)当缺省范围时,LIST命令默认ALL,DISPLAY命令默认当前记录。 (2)在显示的方式方面,LIST命令是滚动显示,DISPLAY命令是分屏显示。
12.浏览修改 格式:BROWSE [ FIELDS <字段名表>] [LAST] 功能:在浏览窗口显示当前表的记录,供浏览 与修改。 说明: (1)若缺省字段子句,则默认全部字段。 (2)若选用LAST子句,则保留前一次浏览窗口的格式。例如,修改了字段的排列顺序之后,使用BROWSE LAST浏览,则无法显示修改的结果。
13.替换修改记录的命令 格式:REPLACE <字段名1> WITH <表达式1> [ADDITIVE] [ , <字段名2> WITH <表达式2>…] [范围] [FOR | WHILE <条件>] 功能:对于当前表中的记录,用表达式的值替换指定的字段的值。 说明:若缺省范围和条件子句,则默认当前记录。 【例4-5】将Zgjk表中所有职工的基本工资增加50元。 USE Zgjk REPL ALL 基本工资 WITH 基本工资+50
14.逻辑删除记录的命令 格式:DELETE [范围] [FOR|WHILE <条件>] 功能:对当前表中指定范围满足条件的记录加上删除标记。 说明:若缺省范围和条件子句,则默认当前记录。 【例4-6】逻辑删除Zgjk表中所有服装部门的职工。 USE Zgjk DELE ALL FOR 部门= "服装" LIST &&被逻辑删除的记录前出现“*”号
15.恢复记录的命令 格式:RECALL [范围] [FOR|WHILE <条件>] 功能:对当前表中指定范围满足条件的记录撤消删除标记。 说明:若缺省范围和条件子句,则默认当前记录。 【例4-7】接上例,撤消Zgjk表中所有的逻辑删除。 RECALL ALL LIST &&逻辑删除标记“*”消失
16.物理删除记录的命令 格式:PACK 功能:物理删除带有删除标记的记录。 17.清除记录的命令 命令格式:ZAP 功能:物理删除当前表中的所有记录。 说明: (1)相当于执行DELETE ALL和PACK两条命令 (2)表记录被删除后剩下表结构,表文件仍然存在。
18.记录指针绝对定位的命令 格式:GO[ TO ] TOP | BOTTOM | <数值表达式> 功能:将记录指针移到指定的记录。 说明: (1)GO TOP 将记录指针指向首记录。若没有打开表的索引文件,则首记录按物理顺序(即记录号)定义;若打开了表文件的索引文件,则首记录按逻辑顺序定义。 (2)GO BOTTOM 将记录指针指向尾记录。若没有打开表的索引文件,则尾记录按物理顺序(即记录号)定义;若打开了表文件的索引文件,则尾记录按逻辑顺序定义。 (3)GO <数值表达式> 将记录指针指向记录号为<数值表达式>值的记录。
19.记录指针相对定位的命令 格式:SKIP [<数值表达式>] 功能:记录指针从当前记录开始移动<数值表达式>值所表示的记录个数。 说明: (1)当<数值表达式>值为正时,指针向记录号增大方向跳过指定个数的记录;当<数值表达式>值为负时,指针向记录号减小方向跳过指定个数的记录。 (2)SKIP,SKIP 1,SKIP +1 都表示指针下移(增大)一条记录。
20.复制表文件的命令 格式:COPY TO <目标表文件名> 功能:将当前表文件复制到指定的文件。 说明:如果表文件(.dbf)包含备注文件(.fpt)和索引文件(.cdx),则3个文件一起复制。 【例4-10】为职工简况表Zgjk制作副本。 USE Zgjk COPY TO Zgjk2 USE Zgjk2 &&复制的表文件写在磁盘上,要先打开才能显示其内容 LIST &&显示记录数据