VFP 二级考前强化指导
description
Transcript of VFP 二级考前强化指导
VFPVFP 二级考前强化指二级考前强化指导导
主讲: 李 慧主讲: 李 慧
题型构成题型构成 笔试笔试 6060 分分 基础知识的单项选择题基础知识的单项选择题 2020 分分 VFPVFP 知识的单项选择题知识的单项选择题 1010 分分 VFPVFP 知识的填空题知识的填空题 3030 分分
上机上机 4040 分分
上机上机 4040 分分 一、项目、表、数据库的基本操作 一、项目、表、数据库的基本操作 1212 分分 二、设计查询 二、设计查询 88 分分 三、设计菜单 三、设计菜单 55 分分 四、设计表单 四、设计表单 1010 分分 五、程序改错 五、程序改错 55 分分
课时安排课时安排 第一讲 项目管理器与数据库的操作第一讲 项目管理器与数据库的操作
第二讲 查询设计与第二讲 查询设计与 SQLSQL 命令命令
第三讲 程序设计第三讲 程序设计
第四讲 表单设计(第四讲 表单设计( 22 次)次)
第五讲 菜单设计第五讲 菜单设计
第一讲 第一讲 Visual FoxVisual FoxProPro 数据库及其操作数据库及其操作
比例分析比例分析 选择题:选择题: 5/105/10
填空题:填空题: 直接考题:直接考题: 5/205/20 间接考题:间接考题: 10/20 10/20 (( SQLSQL 语句语句 // 命令操命令操
作)作)
本章要点本章要点 Visual FoxProVisual FoxPro 数据库的基本概念以及对数据库的基本概念以及对
数据库的基本操作数据库的基本操作 建立数据库表,数据库表中的字段属性,建立数据库表,数据库表中的字段属性,
对数据库表的操作对数据库表的操作 对数据库表中的记录进行基本操作对数据库表中的记录进行基本操作 索引的概念、种类、如何建立索引、索引索引的概念、种类、如何建立索引、索引
文件的种类文件的种类 实体完整性、域完整性、建立参照完整性实体完整性、域完整性、建立参照完整性 建立自由表、数据库表与自由表的关系建立自由表、数据库表与自由表的关系
本章要点(续)本章要点(续) 多个表同时使用多个表同时使用 如何建立排序如何建立排序
4.1 4.1 Visual FoxProVisual FoxPro 数数据库及其建立据库及其建立
4.1.14.1.1 基本概念基本概念 11 .数据库.数据库
定义:定义: 数据库是一个逻辑上的概念和手段,通过一组系统数据库是一个逻辑上的概念和手段,通过一组系统
文件将相互关联的数据库表及其相关的数据库对象文件将相互关联的数据库表及其相关的数据库对象统一组织和管理。统一组织和管理。
在在 Visual FoxProVisual FoxPro 应该把应该把 dbfdbf 的数据库文件称作的数据库文件称作数据库表,简称表,而不再称作数据库或数据库文数据库表,简称表,而不再称作数据库或数据库文件。件。
建立数据库后,用户可以在磁盘上看到文件名相同,建立数据库后,用户可以在磁盘上看到文件名相同,但扩展名分别为但扩展名分别为 dbcdbc 、、 dctdct 和和 dcxdcx 的三个文件。的三个文件。
4.1.2 4.1.2 建立数据库建立数据库 11 .常用方法.常用方法
使用项目管理器中建立数据库使用项目管理器中建立数据库 使用“新建”对话框建立数据库使用“新建”对话框建立数据库 使用命令方式建立数据库使用命令方式建立数据库
命令格式:命令格式: CREATE DATABASECREATE DATABASE 数据库文件扩展名数据库文件扩展名 .dbc.dbc 可以缺省,由系统默认。可以缺省,由系统默认。 如果不指定数据库名称或使用问号都会弹出创建对话框请如果不指定数据库名称或使用问号都会弹出创建对话框请
用户输入数据库名称。用户输入数据库名称。
4.1.4.1. 3 3 打开数据库打开数据库 1.常用方法1.常用方法
在“项目管理器”中打开数据库在“项目管理器”中打开数据库 通过“打开”对话框打开数据库通过“打开”对话框打开数据库 使用命令方式打开数据库使用命令方式打开数据库
命令格式:命令格式: OPEN DATABASEOPEN DATABASE
4.1.44.1.4 添加数据库添加数据库 1.方法1.方法
在项目管理器中单击“数据”选项,然后单击在项目管理器中单击“数据”选项,然后单击“添加”按钮,选择所需的数据库后,单击“添加”按钮,选择所需的数据库后,单击“确定”按钮,可以看到在项目管理器的数据“确定”按钮,可以看到在项目管理器的数据项下多了一个所添加的数据库。项下多了一个所添加的数据库。
4.1.54.1.5 修改数据库修改数据库 1.打开数据库设计器1.打开数据库设计器
常用方式:常用方式: 从项目管理器中打开数据库设计器从项目管理器中打开数据库设计器 用“打开”对话框打开数据库设计器用“打开”对话框打开数据库设计器
选择“文件”菜单中的“打开”命令调出对话框,选择数选择“文件”菜单中的“打开”命令调出对话框,选择数据库名,单击“确定”即可打开数据库设计器。据库名,单击“确定”即可打开数据库设计器。
使用命令方式打开数据库设计器使用命令方式打开数据库设计器 命令格式:命令格式:
MODIFY DATABASEMODIFY DATABASE
22 .在数据库设计器中修改设计器.在数据库设计器中修改设计器
4.1.64.1.6 删除数据库删除数据库 1.1.常用方法常用方法
使用项目管理器删除数据库使用项目管理器删除数据库 使用命令方式删除数据库使用命令方式删除数据库
命令格式:命令格式: DELETE DATABASEDELETE DATABASE DELETETABLESDELETETABLES 用于在删除数据库的同时从磁盘上删用于在删除数据库的同时从磁盘上删
除该数据库所含的表等。除该数据库所含的表等。
4.1.74.1.7 关闭数据库关闭数据库 1.1.常用方法常用方法
直接单击数据库设计器右上角的“关闭”按钮直接单击数据库设计器右上角的“关闭”按钮或者关闭数据库窗口,关闭数据库。或者关闭数据库窗口,关闭数据库。
CLOSE DATABASES[ALL]CLOSE DATABASES[ALL] 命令:其中命令:其中 ALLALL用于关闭所有打开的数据库以及数据库中的表、用于关闭所有打开的数据库以及数据库中的表、自由表、索引等。自由表、索引等。
4.4. 22建立数据库表建立数据库表
4.2.1 4.2.1 在数据库中建立表在数据库中建立表 11 ..建立数据库表建立数据库表
方法:方法: 使用项目管理器建立数据库表使用项目管理器建立数据库表 使用“新建”或使用“新建”或 CREATECREATE 命令建立数据库命令建立数据库
新建立的表处于打开状态,此时可以直接进行录入及修新建立的表处于打开状态,此时可以直接进行录入及修改表结构等操作。改表结构等操作。
如果以后再对表进行操作,应先使用如果以后再对表进行操作,应先使用 USEUSE 命令打开表命令打开表
4.2.2 4.2.2 数据库表的字段属性(数据库表的字段属性(重重点点))
11 ..字段显示属性字段显示属性
字段名规则字段名规则 字段名是字段的惟一标志,由字段名是字段的惟一标志,由 1~1281~128 个非空字符组个非空字符组
成(成(自由表字段名自由表字段名长度不能超过长度不能超过 1010 个字符。个字符。 自由表字段名最长为自由表字段名最长为 1010 个字符。个字符。 数据库表字段名最长为数据库表字段名最长为 128128 个字符。个字符。 字段名必须以字母或汉字开头。字段名必须以字母或汉字开头。 字段名可以由字母、汉字、数字和下划线组成。字段名可以由字母、汉字、数字和下划线组成。 字段名中不能包含空格。字段名中不能包含空格。
字段类型字段类型
类型类型 用途用途 宽度限定宽度限定 存储字节存储字节
字符型 字符型 CC 存储字符序列存储字符序列 ≤≤254254 个字符个字符 实际定义宽度实际定义宽度
数值型 数值型 NN 存储各种数值(整数)存储各种数值(整数) ≤≤2020 位位 88
逻辑型 逻辑型 LL 存储真和假存储真和假 =1=1 11
日期型 日期型 DD 存储年、月、日存储年、月、日 =8=8 88
日期时间型 日期时间型 TT 存储年、月、日、时、分、秒存储年、月、日、时、分、秒 =14=14 1414
货币型 货币型 YY 存储币值存储币值 ≤≤2020 位(位( bitbit )) 88
整数型 整数型 II 存储整数存储整数 ≤≤1010 位位 44
浮点型 浮点型 FF 存储整数和带小数位的数存储整数和带小数位的数 ≤≤2020 位位 88
双精度型 双精度型 BB 存储整数和带超长小数位的数存储整数和带超长小数位的数 ≤≤2020 位位 88
备注型 备注型 MM 存储超常的字符(>存储超常的字符(> 254254 个)个) =4=4 不受限制不受限制
二进制字符型二进制字符型 存储二进制数据存储二进制数据 实际定义宽度实际定义宽度
二进制备注型二进制备注型 存储超长二进制数据存储超长二进制数据 =4=4 不受限制不受限制
通用型 通用型 GG 标记标记 OLEOLE =4=4 不受限制不受限制
表 4.1 Visual FoxPro 字段类型
设置字段的显示格式设置字段的显示格式 ------ 含义:指定该字段在浏览窗口中显示时的大小写、字体和样式等。含义:指定该字段在浏览窗口中显示时的大小写、字体和样式等。
AA ::只允许字母和汉字,不允许空格或标点符号只允许字母和汉字,不允许空格或标点符号。。 DD :使用当前的:使用当前的 SET DATESET DATE 格式。格式。 EE :以英国日期格式编辑日期型数据。:以英国日期格式编辑日期型数据。 KK :当光标移动到文本框上时,选定整个文本框。:当光标移动到文本框上时,选定整个文本框。 LL :在文本框中显示当前导零,而不是空格符号。:在文本框中显示当前导零,而不是空格符号。 MM :允许多个预设置的选择项。:允许多个预设置的选择项。 RR :显示文本框的格式掩码,掩码字符并不存储在控制源中。:显示文本框的格式掩码,掩码字符并不存储在控制源中。 TT :删除输入字段前导空格和结尾空格:删除输入字段前导空格和结尾空格。。 !:把小写字母转换为大写字母!:把小写字母转换为大写字母。。 $$ :显示货币符号,用于数值型数据或货币型数据。:显示货币符号,用于数值型数据或货币型数据。 ^̂ :使用科学记数法显示数值型数据,只用于数值型数据。:使用科学记数法显示数值型数据,只用于数值型数据。
设置输入掩码设置输入掩码 -------- 含义:指定字段中输入数值的格式含义:指定字段中输入数值的格式。。
XX :可以输入任何字符。:可以输入任何字符。 99 :可以输入数字和正负符号。:可以输入数字和正负符号。 ## :可以输入数字、空格和正负符号。:可以输入数字、空格和正负符号。 $$ :在固定位置上显示货币符号。:在固定位置上显示货币符号。 ** :在值的左侧显示星号。:在值的左侧显示星号。 .. :点分隔符指定数值的小数点位置。:点分隔符指定数值的小数点位置。 ,:用逗号分隔小数点左边的整数部分。,:用逗号分隔小数点左边的整数部分。 $$$$ :在微调控制或文本框中,货币符号显示时不:在微调控制或文本框中,货币符号显示时不
与数字分开。与数字分开。
22 ..设置字段的有效性设置字段的有效性
设置字段的有效性规则和消息设置字段的有效性规则和消息 在创建数据库表时,应该考虑输入的数据能否有一在创建数据库表时,应该考虑输入的数据能否有一
个规则来判断是否符合实际要求。个规则来判断是否符合实际要求。 如果输入的数据通过字段规则的验证,则用户可以如果输入的数据通过字段规则的验证,则用户可以继续输入数据,否则将产生警告信息,要求用户重继续输入数据,否则将产生警告信息,要求用户重新输入。新输入。
设置字段的默认值设置字段的默认值 字段默认值是指在向数据表中添加新的记录时,该字段默认值是指在向数据表中添加新的记录时,该
字段可以是预先准备好的数值或字符串,不需输入。字段可以是预先准备好的数值或字符串,不需输入。 默认值可以是默认值可以是除了通用型除了通用型以外的任何数据类型,如以外的任何数据类型,如
果该字段允许使用空值,则可以设置该字段的默认果该字段允许使用空值,则可以设置该字段的默认值为值为 .NULL.NULL 。。
33 ..设置记录的有效性规则设置记录的有效性规则
设置字段的有效性规则和消息设置字段的有效性规则和消息 记录有效性规则属于表的有效性规则,它可以控制记录有效性规则属于表的有效性规则,它可以控制
用户输入到记录中的信息类型。用户输入到记录中的信息类型。
例:设置例:设置 gzgz 表的记录有效性规则:如果表的记录有效性规则:如果 jbgzjbgz 小小于于 10001000元,元, grsdsgrsds 的值为的值为 00 ,否则为,否则为 jbgzjbgz 的的 66%% (该规则对表中已有的数据不做验证):设置(该规则对表中已有的数据不做验证):设置gzgz 表的记录有效性信息:个人所得税按基本工次表的记录有效性信息:个人所得税按基本工次的的 6%6%收取。收取。
Grsds=IIF(jbgz<1000,0,0.06*jbgz)
44 ..表的触发器(难点)表的触发器(难点) 定义:定义:
触发器是在一个插入、更新或删除操作之后运行的触发器是在一个插入、更新或删除操作之后运行的记录级事件代码。默认情况下,即触发器中无任何记录级事件代码。默认情况下,即触发器中无任何规则时,可以对数据表进行自由插入、更新和删除 规则时,可以对数据表进行自由插入、更新和删除 操作。触发器的返回结果为操作。触发器的返回结果为 .T..T. 时,允许相应的操时,允许相应的操作。作。
种类:种类:插入触发器插入触发器
每次向表中插入或追加新记录时要验证的规则。如果插入每次向表中插入或追加新记录时要验证的规则。如果插入的记录不满足规则要求,系统会提示“触发器失败”。的记录不满足规则要求,系统会提示“触发器失败”。
更新触发器更新触发器 每次向表中修改记录时触发该规则。每次向表中修改记录时触发该规则。
删除触发器删除触发器 每次向表中删除记录时触发该规则。每次向表中删除记录时触发该规则。 触发器的返回值为触发器的返回值为 .T..T. 或或 .F..F. 。如果为。如果为 .T..T. ,则允许执行相应,则允许执行相应
的操作(插入记录、更新记录、删除记录),否则不允许执的操作(插入记录、更新记录、删除记录),否则不允许执行相应的操作。行相应的操作。
例例 11 :设置:设置 xsxs 表的插入触发器:只有学号开头两位 表的插入触发器:只有学号开头两位 是”是” 00”00”至”至” 03”03” 的记录允许插入,否则不允许的记录允许插入,否则不允许插入。插入。
例例 22 :设置:设置 xsxs 表的插入触发器:班级编号表的插入触发器:班级编号 (bjbh)(bjbh) 字字段 段
值不能为空字符串和值不能为空字符串和 NULLNULL值。值。
Between(LEFT(xh,2),”00”,”03”)
Bjbh<>”” .AND. Bjbh<>.NULL.
55 ..使用长表名和注释使用长表名和注释 设置数据库表的长表名,可以在数据库的“表设设置数据库表的长表名,可以在数据库的“表设
计器”对话框中的“表”选项卡中的“表名”文计器”对话框中的“表”选项卡中的“表名”文本框中输入长表名。本框中输入长表名。
VFPVFP 的数据库表支持长表名,的数据库表支持长表名,最大长度为最大长度为 128128个字符个字符。。
表注释是表的说明信息。当表的文件名和长表名表注释是表的说明信息。当表的文件名和长表名都不能完全说明表的含义时,可以设置表的注释。都不能完全说明表的含义时,可以设置表的注释。
4.2.3 4.2.3 数据库表的操作数据库表的操作 11 ..添加数据表添加数据表
一个数据库中可以包括一个或多个相关联的数据表。一个数据库中可以包括一个或多个相关联的数据表。 可以向数据库中加入任何已经建立的表,但这个表可以向数据库中加入任何已经建立的表,但这个表
不能属于其他的数据库,不能属于其他的数据库,因为同一个表在同一时间因为同一个表在同一时间只能属于一个数据库只能属于一个数据库。。
如果要把其他数据库中的表加入到一个新的数据库如果要把其他数据库中的表加入到一个新的数据库中,可以先把要加入的表从原来的数据库中移出。中,可以先把要加入的表从原来的数据库中移出。
22 ..删除数据表删除数据表 数据库删除数据表,和添加数据表的操作方法类似。数据库删除数据表,和添加数据表的操作方法类似。
4.2.4 4.2.4 修改表结构修改表结构 11 .方法:.方法:
在“项目管理器”中修改表结构在“项目管理器”中修改表结构 在“数据库设计器”中修改表结构在“数据库设计器”中修改表结构 使用命令修改表结构使用命令修改表结构
如果当前不在数据库设计器中,则首先要用如果当前不在数据库设计器中,则首先要用 USEUSE命令打开要修改的表,然后使用命令方式命令打开要修改的表,然后使用命令方式 MODIFMODIFY STRUCTUREY STRUCTURE 打开表设计器。打开表设计器。
4.34.3 表的基本操作表的基本操作
4.3.1 4.3.1 使用浏览器操作使用浏览器操作 11 .打开浏览器.打开浏览器
方法:方法: 在项目管理器中将数据库展开至表,并且选择要操在项目管理器中将数据库展开至表,并且选择要操
作的表,然后单击“浏览”命令按钮即可。作的表,然后单击“浏览”命令按钮即可。 在数据库设计器中选择要操作的表,然后从“数据在数据库设计器中选择要操作的表,然后从“数据
库”菜单中选择“浏览”,或者对要操作的表单击库”菜单中选择“浏览”,或者对要操作的表单击鼠标右键,然后从快捷菜单中选择“浏览”。鼠标右键,然后从快捷菜单中选择“浏览”。
在命令窗口中,用在命令窗口中,用 USEUSE 命令打开要操作的表,然命令打开要操作的表,然后输入后输入 BROWSEBROWSE 命令来浏览表。命令来浏览表。
22 .浏览操作.浏览操作 下一记录:下箭头键下一记录:下箭头键 前一记录:上箭头键前一记录:上箭头键 下一页:下一页: PageDownPageDown键键 前一页:前一页: PageUpPageUp键键 下一字段:下一字段: TabTab键键 前一字段:前一字段: Shift+TabShift+Tab键键 可用鼠标上、下、左、右滚动翻页和定位记录可用鼠标上、下、左、右滚动翻页和定位记录
4.3.2 4.3.2 增加记录的命令增加记录的命令 11 .. APPENDAPPEND 命令命令
定义:定义: APPENDAPPEND 命令是在表的尾部增加一个或多个新记命令是在表的尾部增加一个或多个新记
录。录。 22 .. INSERTINSERT 命令命令
定义:定义: INSERTINSERT 命令可以在表的任意位置插入新的记录。命令可以在表的任意位置插入新的记录。
4.3.3 4.3.3 删除记录的命令删除记录的命令 11 .逻辑删除.逻辑删除
命令格式:命令格式: DELETE [FOR<DELETE [FOR< 逻辑表达式逻辑表达式 >]>]
22 .恢复记录的命令.恢复记录的命令 命令格式:命令格式:
RECALL [FOR<RECALL [FOR< 逻辑表达式逻辑表达式 >]>] 33 .物理删除有删除标记的记录.物理删除有删除标记的记录
命令格式:命令格式: PACK [MEMO][DBF]PACK [MEMO][DBF]
44 .物理删除表中的全部记录.物理删除表中的全部记录 命令:命令:
ZAPZAP物理删除表中的全部记录,不管是否有删除标物理删除表中的全部记录,不管是否有删除标
记。记。 该命令只是删除全部记录,并不删除表,执行该命令只是删除全部记录,并不删除表,执行
完该命令后完该命令后表结构依然存在表结构依然存在。。
4.3.4 4.3.4 修改记录的命令修改记录的命令 11 .. EDITEDIT 或或 CHANGECHANGE 命令交互修改命令交互修改
这两个命令均用于交互式地对当前表记录进行这两个命令均用于交互式地对当前表记录进行编辑、修改,操作界面类似于编辑、修改,操作界面类似于 APPENDAPPEND界面。界面。
22 .. REPLACEREPLACE 命令直接修改命令直接修改 使用使用 REPLACEREPLACE 命令直接用指定表达式或值来命令直接用指定表达式或值来
修改记录。修改记录。
如何根据条件个性数据库表中的大量记录(重点)如何根据条件个性数据库表中的大量记录(重点)
法一:利用表菜单中的“替换字段”对话框进法一:利用表菜单中的“替换字段”对话框进行可视化操作行可视化操作
例:在成绩表中,从当前记录开始至向后例:在成绩表中,从当前记录开始至向后 2020条记录,条记录,对课程号(对课程号( kchkch )是“)是“ S02”S02” 的记录,要求将其中的记录,要求将其中成绩成绩 (cj)(cj)低于低于 6060 分的记录全部加分的记录全部加 1010 分分
法二:命令格式法二:命令格式 UPDATEUPDATE 表名 表名 SETSET 字段名字段名 1=1= 修改值修改值 1.. 1.. WHEREWHERE 条件条件
1…1… REPLACE REPLACE 范围 字段名 范围 字段名 WITH WITH 修改值 修改值 FORFOR 条件条件 1 AN1 AN
D D 条件条件 2..2..
例例 11 :调整工资表:调整工资表 (gz)(gz) 中所有讲师的综合中所有讲师的综合津贴津贴 (zhjt)(zhjt) ,要求,要求 19961996 年以前参加工作的年以前参加工作的讲师每人为讲师每人为 280280 ,其余的讲师为,其余的讲师为 150150 。。
例例 22 :修改学生表(:修改学生表( xsxs )中所有记录的)中所有记录的 xxhh 字段值 ,将班级编号(字段值 ,将班级编号( bjbhbjbh )中的第)中的第 22至至 44 位插入到学号中的第位插入到学号中的第 44 与第与第 55 位之间。位之间。
4.3.5 4.3.5 显示记录命令显示记录命令 11 . . LIST/DISPLAYLIST/DISPLAY 命令命令
LISTLIST 的默认范围是所有记录。的默认范围是所有记录。信息充满信息充满 Visual FoxProVisual FoxPro 主窗口或用户自定义窗口主窗口或用户自定义窗口
以后,以后, LISTLIST 不给提示,继续显示。不给提示,继续显示。当当 SET DELETEDSET DELETED 为为 ONON 时, 时, LISTLIST 不显示带删不显示带删
除标记的记录。除标记的记录。 命令格式:命令格式:
LIST/DISPLAY [[FIELDS] Fiedlist] [FOR lExpreLIST/DISPLAY [[FIELDS] Fiedlist] [FOR lExpression1] [OFF]ssion1] [OFF]
[TO PRINTER [PROMPT] | TO FILE FileName][TO PRINTER [PROMPT] | TO FILE FileName]
4.3.6 4.3.6 查询定位命令查询定位命令 11 .用.用 GOGO 、、 GOTOGOTO 命令直接定位命令直接定位 22 .. SKIPSKIP 命令命令
定义:定义: 将记录指针向前或向后相对移动若干条记录。相对将记录指针向前或向后相对移动若干条记录。相对
定位与当前记录有关,它是把记录指针从当前位置定位与当前记录有关,它是把记录指针从当前位置相对移动。相对移动。
33 .用.用 LOCATELOCATE 命令定位命令定位 定义:定义:
LOCATELOCATE 是按条件定位记录位置的命令。是按条件定位记录位置的命令。
4.4 4.4 索引(难点)索引(难点)
4.4.1 4.4.1 索引的概念索引的概念 11 .定义:.定义:
VFPVFP 索引是指由指针构成的文件,这些指针逻辑上按照索引关键索引是指由指针构成的文件,这些指针逻辑上按照索引关键字的值进行排序。字的值进行排序。
22 .索引名(索引标识).索引名(索引标识) 即索引关键字的名称,必须以下划线,字母或汉字开头,且不即索引关键字的名称,必须以下划线,字母或汉字开头,且不
可超过可超过 1010 个字。个字。
3.3. 索引类型:索引类型: 有有 44 种类型:主索引(仅适用于数据库表)、候选种类型:主索引(仅适用于数据库表)、候选
索引、唯一索引、普通索引(默认值)索引、唯一索引、普通索引(默认值)注:只能把表中一个索引设置为“主索引”,其他类型的索引 注:只能把表中一个索引设置为“主索引”,其他类型的索引 可以有多个可以有多个
主索引主索引 定义:定义:
主索引是一种设定为主关键字的索引,其内容在一个表中具有唯主索引是一种设定为主关键字的索引,其内容在一个表中具有唯一性,不允许出现重复值。一性,不允许出现重复值。
它强调的“不允许出现重复值”是指建立主索引的字段值不允许它强调的“不允许出现重复值”是指建立主索引的字段值不允许重复。重复。
如果在任何已含有的重复数据的字段中建立主索引,如果在任何已含有的重复数据的字段中建立主索引, VFPVFP 将产将产生错误信息,如果一定要在这样的字段上建立主索引,则必须首生错误信息,如果一定要在这样的字段上建立主索引,则必须首先删除重复的字段值。先删除重复的字段值。
注意:注意:主索引不等于主控索引主索引不等于主控索引 记录按主控索引的顺序显示,设置方法:记录按主控索引的顺序显示,设置方法: SET ORDER TO SET ORDER TO 索引名索引名
候选索引候选索引 定义:定义:
候选索引和主索引一样,要求字段值的唯一性,并且决候选索引和主索引一样,要求字段值的唯一性,并且决定了处理记录的顺序。定了处理记录的顺序。
建立候选索引的字段可以看作是候选关键字,所以一个建立候选索引的字段可以看作是候选关键字,所以一个表可以建立多个候选索引。表可以建立多个候选索引。
唯一索引唯一索引 定义:定义:
唯一索引的“唯一性”是指允许表中索引项的唯一,而唯一索引的“唯一性”是指允许表中索引项的唯一,而不是字段值的唯一 。不是字段值的唯一 。
在数据库表和自由表中均可为一个表建立多个唯一索引。在数据库表和自由表中均可为一个表建立多个唯一索引。
普通索引普通索引 定义:定义:
普通索引可以决定记录的处理顺序,它不仅允许字段中出普通索引可以决定记录的处理顺序,它不仅允许字段中出现重复值,并且也允许索引项中出现重复值。现重复值,并且也允许索引项中出现重复值。
在数据库表和自由表中均可为一个表建立多个普通索引在数据库表和自由表中均可为一个表建立多个普通索引
总结总结 主索引:字段不能重复,一个数据库表设一个 主索引:字段不能重复,一个数据库表设一个 候选索引:字段不能重复,一个表可设多个候选索引:字段不能重复,一个表可设多个 唯一索引:字段可以重复,索引项不重复唯一索引:字段可以重复,索引项不重复 普通索引:字段可以重复,索引项可以重复普通索引:字段可以重复,索引项可以重复
4.4.2 4.4.2 在表设计器中建立索引在表设计器中建立索引 11 .单项索引.单项索引 22 .复合字段索引.复合字段索引
定义:在多个字段上的索引称做复合字段索引。定义:在多个字段上的索引称做复合字段索引。
注意:不同类型字段构成一个表达式时,必须转注意:不同类型字段构成一个表达式时,必须转成统一的数据数据类型。成统一的数据数据类型。
例:在表例:在表 kckc 表中创建一个普通索引表中创建一个普通索引 ksskcdhksskcdh ,,要求先按要求先按 ksskss 字段排序,字段排序, ksskss 相同的再按相同的再按 kcdhkcdh字段排序。字段排序。
STR(KSS,2)+kcdh
22 .索引文件的种类.索引文件的种类 非结构单索引文件:只包含一种索引(非结构单索引文件:只包含一种索引( .idx.idx )) 非结构复合索引文件:包含多个索引,一个表非结构复合索引文件:包含多个索引,一个表
可建多个非结构复合索引文件(可建多个非结构复合索引文件( .cdx.cdx )) 结构复合索引文件:包含多个索引,一个表只结构复合索引文件:包含多个索引,一个表只
能建立一个结构复合索引文体。能建立一个结构复合索引文体。
4.4.3 4.4.3 利用命令窗口方式建立索利用命令窗口方式建立索引引
11 .命令:.命令: INDEX ONINDEX ON eExpression eExpression TO TO IDXFileName|TAG TagNamIDXFileName|TAG TagName [OF CDXFileName][FORe [OF CDXFileName][FOR lExpresssion][COMPA lExpresssion][COMPACT][ASCENDING |DESCENDING][UNIQUE|CANDIDATE]CT][ASCENDING |DESCENDING][UNIQUE|CANDIDATE][ADDITIVE][ADDITIVE]
22 .说明:.说明: ASCENDING | DESCENDINGASCENDING | DESCENDING 表示建立升序或降序索引,表示建立升序或降序索引,
默认为升序。默认为升序。 UNIQUEUNIQUE表示建立唯一索引。表示建立唯一索引。 ADDITIVEADDITIVE 与建立索引本身无关,表示现在建立索引时与建立索引本身无关,表示现在建立索引时
是否关闭以前的索引,默认是关闭已经使用的索引。是否关闭以前的索引,默认是关闭已经使用的索引。
如:创建一个名为“排名”的索引文件,该索引文件以“政治”字段的分数显
示和处理记录: INDEX ON 政治 TO 排名
4.4.4 4.4.4 使用索引使用索引 11 .打开索引文件.打开索引文件
命令格式:命令格式: SET INDEX TOSET INDEX TO
22 .设置当前索引.设置当前索引 命令格式:命令格式:
SET ORDER TOSET ORDER TO
注意:与表名相同的结构索引文件在打开表时能注意:与表名相同的结构索引文件在打开表时能自动打开,但非结构索引文件不能。自动打开,但非结构索引文件不能。
44 .删除索引.删除索引 格式格式 11 ::
DELETE TAGDELETE TAG TagName1[OF CDXFileName1] TagName1[OF CDXFileName1] ,,[TagName2[OFCDXFileName2]]…[TagName2[OFCDXFileName2]]…
格式格式 22 :: DELETE TAG ALLDELETE TAG ALL [OF CDXFileName] [OF CDXFileName]
说明:说明: TagName1[OF CDXFileName1] TagName1[OF CDXFileName1] 指定要从复合指定要从复合
索引文件中删除的标识。索引文件中删除的标识。 ALL [OF CDXFileName] ALL [OF CDXFileName] 指定从复合索引文件中指定从复合索引文件中
删除所有标识。删除所有标识。
4.5 4.5 数据完整性数据完整性((重点,难点重点,难点))
4.5.14.5.1 实体完整性与主关键字实体完整性与主关键字 11 .实体唯一性.实体唯一性
定义:定义: 在在 VFPVFP 中利用主关键字和候选索引字来保证表中中利用主关键字和候选索引字来保证表中
记录的惟一性,即实体惟一性。记录的惟一性,即实体惟一性。
主关键字称为主索引,候选关键字称为候选索引,主关键字称为主索引,候选关键字称为候选索引,两者作用相同。两者作用相同。
在在 VFPVFP 中将主关键字称为主索引,将候选关键字中将主关键字称为主索引,将候选关键字称为候选索引。建立主索引和候选索引就能够确保称为候选索引。建立主索引和候选索引就能够确保记录的唯一性。记录的唯一性。
4.4. 55 .. 2 2 域完整性与约束规则域完整性与约束规则 11 .域完整性.域完整性
定义:定义: 通过限定字段的取值类型和取值范围来保证域完整通过限定字段的取值类型和取值范围来保证域完整
性,还可以进一步通过域约束规则来保证域完整性。性,还可以进一步通过域约束规则来保证域完整性。
域约束规则也称作字段有效性规则域约束规则也称作字段有效性规则,用于检验输入,用于检验输入数据的正确性。数据的正确性。
建立字段有效性规则通常在“表设计器”中进行,建立字段有效性规则通常在“表设计器”中进行,“字段”选项卡中定义字段有效性规则的项目有规“字段”选项卡中定义字段有效性规则的项目有规则、信息和默认值则、信息和默认值 33 项。项。
4.4. 55 .. 3 3 参照完整性与表之间的关参照完整性与表之间的关联联
11 .建立参照完整性.建立参照完整性 (( 重点重点 )) 含义:含义: 步骤步骤
建立表之间的“永久联系”:在父表中设主索引,建立表之间的“永久联系”:在父表中设主索引,子表建立普通索引,再建立关联。子表建立普通索引,再建立关联。
设置参照完整性约束。设置参照完整性约束。
注意:建立永久联系并不等于设置了参照完整注意:建立永久联系并不等于设置了参照完整性,可以利用“参照完整性生成器”分别对更性,可以利用“参照完整性生成器”分别对更新规则,删除规则和插入规则进行设置。新规则,删除规则和插入规则进行设置。
2.“参照完整性生成器”中单选按钮2.“参照完整性生成器”中单选按钮 级联:级联:
在相关的子表中反映父表中的主关键字或候选关键在相关的子表中反映父表中的主关键字或候选关键字的更改,如果选择该按钮,字的更改,如果选择该按钮, VFPVFP 会自动更改、会自动更改、删除和插入所有相关子表记录的连接字段值。删除和插入所有相关子表记录的连接字段值。
限制:限制: 如果子表有相关记录,则禁止更改父表中相关记录如果子表有相关记录,则禁止更改父表中相关记录
的主关键字或候选关键字字段的值,或者禁止删除的主关键字或候选关键字字段的值,或者禁止删除父表中关联的记录。父表中关联的记录。
忽略:忽略: 不作参照完整性检查,即仍允许更改、删除或插入不作参照完整性检查,即仍允许更改、删除或插入父表中的记录。父表中的记录。
注意:在建立参照完整性之前必须首先清理数据库。 注意:在建立参照完整性之前必须首先清理数据库。 命令为命令为 PACK DATABASEPACK DATABASE 。。
4.4. 66自由表自由表
4.4. 66 .. 11数据库表与自由表数据库表与自由表 11 .创建自由表.创建自由表
方法:方法: 使用项目管理器创建自由表使用项目管理器创建自由表利用菜单方式创建自由表利用菜单方式创建自由表利用命令窗口创建自由表:利用命令窗口创建自由表: Create Create 表名表名
2.表的打开2.表的打开 使用使用 USEUSE 命令方式命令方式 使用“文件”菜单中的“打开”项,进入打开对话使用“文件”菜单中的“打开”项,进入打开对话
框,打开相应的表。框,打开相应的表。
注意:在没有打开数据库时创建的表都是自由表注意:在没有打开数据库时创建的表都是自由表
3.表的关闭3.表的关闭 方法:方法:
使用不带任何选项的使用不带任何选项的 USEUSE 命令,关闭当前已打开命令,关闭当前已打开的表。的表。
使用使用 Close AllClose All 命令,关闭所有类型的文件。命令,关闭所有类型的文件。 使用使用 Close DatabasesClose Databases 命令,关闭已打开的数据库命令,关闭已打开的数据库
文件、表文件、索引文件等。文件、表文件、索引文件等。 使用使用 Close TableClose Table 命令,关闭当前打开的所有表,命令,关闭当前打开的所有表,
不改变当前工作区。不改变当前工作区。 使用使用 QUITQUIT 命令,退出命令,退出 VFPVFP 系统,并关闭所有打系统,并关闭所有打
开的文件,返回操作系统。开的文件,返回操作系统。
4.4. 66 .. 22将自由表添加到数据库将自由表添加到数据库中中
11 .方法:.方法: 使用项目管理器添加自由表使用项目管理器添加自由表 使用数据库设计器添加自由表使用数据库设计器添加自由表 利用窗口命令添加自由表利用窗口命令添加自由表
ADD TABLE ADD TABLE 表名表名 一一个表只能属于一个数据库个表只能属于一个数据库,当一个自由表添,当一个自由表添
加到某个数据库后就不再是自由表了,所以不加到某个数据库后就不再是自由表了,所以不能把已经属于某个数据库的表添加到当前数据能把已经属于某个数据库的表添加到当前数据库,否则会有出错提示。库,否则会有出错提示。
4.4. 66 .. 33从数据库中移出表从数据库中移出表 11 .方法:.方法:
使用项目管理器移出表使用项目管理器移出表 使用数据库设计器移出表使用数据库设计器移出表 利用命令窗口方式移去表利用命令窗口方式移去表
命令格式:命令格式: REMOVE TABLE REMOVE TABLE 表名表名
4.4. 66 .. 44更改数据表名更改数据表名 11 .方法:.方法:
打开要更改的数据表所在的项目,在项目管理打开要更改的数据表所在的项目,在项目管理器中右击要更名的数据表。器中右击要更名的数据表。
从弹出的快捷菜单中选择“重命名”命令,在从弹出的快捷菜单中选择“重命名”命令,在重命名文件中输入要修改的文件名示。重命名文件中输入要修改的文件名示。
4.74.7 多个表的同时使用多个表的同时使用((难点难点))
4.7.14.7.1 多工作区的概念多工作区的概念 11 .多工作区.多工作区
工作区是一个带有编号的内存区域,是有关表工作区是一个带有编号的内存区域,是有关表处理的工作环境。在一个工作区内只能打开一处理的工作环境。在一个工作区内只能打开一个表。个表。
如果在同一时刻需要打开多个表,则只需要在如果在同一时刻需要打开多个表,则只需要在不同的工作区中打开不同的表。不同的工作区中打开不同的表。
系统默认的总是在第系统默认的总是在第 11 个工作区中工作,如果个工作区中工作,如果没有指定工作区,实际是都是在第没有指定工作区,实际是都是在第 11 个工作区个工作区打开表和操作表。打开表和操作表。
22 .利用命令窗口选择工作区.利用命令窗口选择工作区 命令格式命令格式::
SELECT nWorkAreca | cTabeleAliasSELECT nWorkAreca | cTabeleAlias
nWorkArecanWorkAreca 是一个大于或等于是一个大于或等于 00 的数字,用的数字,用于指定工作区号,最小为于指定工作区号,最小为 11 ,最大为,最大为 3276732767 。。
如果如果 nWorkArecanWorkAreca 为为 00 则激活尚未使用的最则激活尚未使用的最小工作区。小工作区。
4.7.2 4.7.2 使用不同工作区的表使用不同工作区的表 11 .不同工作区.不同工作区
除了利用除了利用 SELECTSELECT 命令来切换工作区,命令来切换工作区, Visual Visual FoxProFoxPro也允许利用也允许利用 IN IN 命令在一个工作区内使命令在一个工作区内使用另一个工作区的表。用另一个工作区的表。
直接利用表名或表的别名引用另一个表中的数据,直接利用表名或表的别名引用另一个表中的数据,只需在别名后加上点号分隔符“只需在别名后加上点号分隔符“ .”.” 或“﹣或“﹣ >”>”操作符,然后再接字段名即可。操作符,然后再接字段名即可。
如:当前使用的是第如:当前使用的是第 22 个工作区的表,现在要显示第个工作区的表,现在要显示第 11个工作区中的学生表的学号和姓名字段值,可以使用命个工作区中的学生表的学号和姓名字段值,可以使用命令:令:
?学生?学生 ..学号,学生﹣学号,学生﹣ >>姓名姓名
4.7.3 4.7.3 表之间的关联表之间的关联 11 .表间的联系方式.表间的联系方式
在关系数据库中,经常要同时使用不同表中的数据,所以就要求在在关系数据库中,经常要同时使用不同表中的数据,所以就要求在不同的表之间建立关联。不同的表之间建立关联。
表间字段联系方式有表间字段联系方式有 33 种类型:一对一关系、一对多关系、多对多种类型:一对一关系、一对多关系、多对多关系。关系。
通常在建立数据库时,建立一个“纽带表”,将多对多的关系分解通常在建立数据库时,建立一个“纽带表”,将多对多的关系分解成为两个一对多关系表。成为两个一对多关系表。
22 .建立临时关联.建立临时关联 命令格式:命令格式:
SET RELATION TO …… INTO ……SET RELATION TO …… INTO …… 33 .取消临时关联.取消临时关联
命令格式:命令格式: SET RELATION OFF INTOSET RELATION OFF INTO
数据库笔试练习数据库笔试练习 1.1. 在在 VFPVFP 中以下叙述正确的是()中以下叙述正确的是() A.A. 关系也被称为表单关系也被称为表单 B. B. 数据库文件不存储用户数据数据库文件不存储用户数据 C.C. 表文件的扩展名是表文件的扩展名是 .dbc.dbc D.D. 多个表存储在一个物理文件中多个表存储在一个物理文件中
2. 2. 不允许出现重复字段值的索引是()不允许出现重复字段值的索引是() A A 候选索引和主索引候选索引和主索引 B B 普通索引和唯一索引普通索引和唯一索引 C C 唯一索引和主索引唯一索引和主索引 D D 唯一索引唯一索引
3.3. 当前打开的图书表中有字符字段“图书当前打开的图书表中有字符字段“图书号”,要求将图书号以字母号”,要求将图书号以字母 AA 开头的图书开头的图书记录全部打上删除标志,使用的命令是记录全部打上删除标志,使用的命令是()()
A DELETE FOR A DELETE FOR 图书号图书号 =“A”=“A” B DELETE WHILE B DELETE WHILE 图书号图书号 =“A”=“A” C DELETE FOR C DELETE FOR 图书号图书号 =“A*”=“A*” D DELETE FOR D DELETE FOR 图书号图书号 =“A%”=“A%”
4.4. 下面有关表间永久联系和关联的描述中,下面有关表间永久联系和关联的描述中,正确的是()正确的是()
A A 永久联系中的父表一定有索引,关联中的永久联系中的父表一定有索引,关联中的父表不需要有索引父表不需要有索引
B B 无论永久联系还是关联,子表一定有索引无论永久联系还是关联,子表一定有索引C C 永久联系中子表的记录指针会随父表的记永久联系中子表的记录指针会随父表的记
录指针的移动而移动录指针的移动而移动D D 关联中父表的记录指针会随子表的记录指关联中父表的记录指针会随子表的记录指针的移动而移动针的移动而移动
5.5. 在创建数据库表结构时,为该表中一些在创建数据库表结构时,为该表中一些字段建立普通索引,其目的是()字段建立普通索引,其目的是()
A A 改变表中记录的物理顺序 改变表中记录的物理顺序 B B 为了对表进行实体完整性约束为了对表进行实体完整性约束 C C 加快数据库表的更新速度加快数据库表的更新速度 D D 加快数据库表的查询速度加快数据库表的查询速度
6. VFP6. VFP 的“参照完整性”中的插入规则包的“参照完整性”中的插入规则包括的选择是()括的选择是()
A A 级联和忽略 级联和忽略 B B 级联和删除级联和删除 C C 级联和限制 级联和限制 D D 限制和忽略限制和忽略
7.7. 在在 VFPVFP 中,数据库表中,数据库表 SS 中的通用型字段中的通用型字段的内容将存储在的内容将存储在 ____ 表备注表备注 (.FPT)____(.FPT)____ 文文件中件中
上机例上机例 11 1.1. 按如下要求修改按如下要求修改 SJKSJK 中工资表的结构中工资表的结构 (( 11 )为岗位津贴字段设置标题:岗位津贴)为岗位津贴字段设置标题:岗位津贴 (( 22 )设置工号字段的输入掩码:工号以)设置工号字段的输入掩码:工号以 11 个任意英文字个任意英文字
母开头,后跟母开头,后跟 44位数字。位数字。 (( 33 )创建一个普通索引)创建一个普通索引 jbgwjbgw ,按基本工资与岗位津贴,按基本工资与岗位津贴
的降序排列。的降序排列。 (( 44 )为)为 gongzigongzi 表创建注释信息:“职工工资表”。表创建注释信息:“职工工资表”。 2.2. 把把 AA :: \B001.GIF\B001.GIF 文件添加到文件添加到 TESTTEST 项目中的适当位项目中的适当位
置,将包含状态设置为“排除”。置,将包含状态设置为“排除”。 3.3. 计算计算 gongzigongzi 表中所有教师的住房公积表中所有教师的住房公积 (zfgj)(zfgj) 字段的值 字段的值
必须为基本工资的必须为基本工资的 8%8% 4.4. 设设 XSXS 表的更新触发器:只能更新学号以表的更新触发器:只能更新学号以 9999 开头的学开头的学生。生。
数据库上机练习数据库上机练习 强化指导强化指导 P40 P40 习题习题 11 ,习题,习题 22 P168 P168 上机模拟试卷 一上机模拟试卷 一 P170 P170 上机模拟试卷二上机模拟试卷二 P172 P172 上机模拟试卷三 上机模拟试卷三 的项目数据库操作题都做的项目数据库操作题都做