




已阅读5页,还剩95页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章数据库与表 本章重点和难点 掌握如何建立 修改及删除数据库 掌握如何建立和修改表 掌握记录的添加 删除 修改 排序 索引 查询等操作 掌握多表间的关联操作 主要内容 在关系数据库管理系统中 所有的操作都是在表的基础上进行的 表在VisualFoxPro中分为数据库表和自由表 本章主要介绍在VisualFoxPro环境下如何建立表 如何向表中输入数据 浏览和修改表的结构 修改表中数据及建立索引 多表间的关联等内容 最后介绍了有关数据库表的相关操作 3 1数据库的操作 VisualFoxPro的数据库 Database 是一种关系型数据库 RDBMS 是VisualFoxPro数据库管理系统的数据中心或数据仓库 数据库包括表 Table 视图 View 触发器 存储过程 等内容 数据库的物理结构参见图3 1 图3 1关系型数据库结构 3 1数据库的操作 VisualFoxPro中的数据库 从文件角度看 是一个扩展名为DBC的文件 但为了储存与数据库相关的其它信息 VFP还会自动地为每个数据库文件建立同基本名但不同扩展名的另两个文件 扩展名为DCT的数据库备注文件和扩展名为DCX的数据库索引文件 VFP中的数据库 从逻辑角度看 由一个或多个表组成 表文件按从属关系可分为两种类型 从属于某一数据库的表和不属于哪一个数据库的自由表 可以将一个自由表文件添加到一个数据库文件中成为属于该数据库的表 也可以将属于数据库的表从数据库中移除而变为自由表 视图是由表建立的便于集中查看特定内容的临时表 存储过程和存储过程用于控制数据库的完整性 3 1 1建立数据库 再点击 新建 N 按钮 屏幕出现 新建数据库 对话框 见图3 3 图3 3新建数据库对话框 3 1 1建立数据库 在对话框中点击大按钮 新建数据库 N 打开 创建 对话框 见图3 4 图3 4 创建 数据库对话框 3 1 1建立数据库 在该对话框中 需要重新为数据库文件命名 例如 CJGL dbc 然后点击 保存 S 按钮 随即打开 数据库设计器 对话框 同时 屏幕上会出现 数据库设计器 浮动工具栏 参见图3 5 图3 5数据库设计器对话框与浮动工具栏 3 1 1建立数据库 经过上面的操作 即创建了一个暂时没有内容的空数据库 该数据库文件属于项目文件 是项目中的一部分 此时 若点击 项目管理器 对话框的关闭按钮 在磁盘的当前路径下会生成一个扩展名为DBT的数据库文件 在一个项目文件中 究竟建立多少个数据库文件 主要取决于研究问题的需要 例如 设计一个应用数据库系统来处理一个学校的学生信息 可按不同的系 专业 年级或班级来分别建立数据库 VisualFoxPro系统对用户数据库文件数目不作限制 3 1 1建立数据库 2 创建独立的数据库创建数据库 也可以不经过项目管理器而单独创建 其方法是 点击 文件 菜单中的 新建 命令项 在打开的 新建 对话框中选择 数据库 单选钮 参见图3 6 图3 6 新建 对话框 3 1 1建立数据库 然后点击 新建 N 大按钮 随即打开 创建 对话框 参见图3 4 再为文件命名并点击 保存 S 按钮 随即打开 数据库设计器 对话框 参见图3 5 这样的方法可以创建一个不属于哪个项目文件的独立的数据库 当然 如果需要的话 可以在项目管理器中将本项目以外的数据库添加到本项目文件中 从而使数据库属于本项目 3 使用命令创建数据库格式 CREATEDATABASE 功能 创建由数据库名指定的数据库 若选 或不带任何参数 执行此命令时打开创建对话框 然后输入数据库名 3 1 2打开数据库 1 通过项目文件打开数据库文件点击 文件 菜单中的 打开 命令 快捷键为 Ctrl O 或点击常用工具栏上的 Open 按钮 启动名为 打开 的对话框 再选择打开已经建立的项目文件 并点击 确定 按钮 在打开的项目管理器中选中已经建立的数据库文件名 最后点击 修改 按钮 即打开数据库设计器2 直接打开数据库文件点击 文件 菜单中的 打开 命令 启动 打开 对话框 在对话框中确定文件类型为 数据库 dbc 参见图3 7 3 1 2打开数据库 图3 7 打开 数据库文件对话框最后 点击 确定 按钮 即可打开数据库设计器 3 1 2打开数据库 3 使用命令打开数据库格式 OPENDATABASE EXCLUSIVE SHARED NOUPDATE VALIDATE 功能 打开由数据库名指定的数据库 说明 1 EXCLUSIVE以独占方式打开数据库 与选打开对话框中复选框独占是等效的 所谓独占方式是指在同一时刻不允许其他用户使用数据库 2 SHARED以共享方式打开与打开对话框中不选独占复选框是等效的 共享方式是指同一时刻允许其他用户使用数据库 3 1 2打开数据库 3 NOUPDATE以只读方式打开 与打开对话框中的选只读复选框等效 选此子句不能对数据库作任何修改 但不影响对此表的存取 若让数据库表也为只读 在用USE打开表时加NOUPDATE参数 4 VALIDATE是检验数据库中的引用对象是否有效 如检查数据库表和索引是否可用 被引用的字段和索引表时是否存于表和索引中 3 1 2关闭数据库 点击数据库设计器对话框窗口右上方的关闭按钮 即可关闭数据库 也可以在命令窗口输入并执行关闭数据库的命令 格式如下 CLOSEDATABASES 关闭数据库文件CLOSEALL 关闭所有已经打开的文件此外 使用命令创建 打开和关闭数据库在命令窗口中使用命令创建 打开和关闭一个数据库的命令格式分别为 CREATEDATABASE数据库文件名 创建一个数据库OPENDATABASE数据库文件名 打开已经创建的数据库MODIFYDATABASE 打开数据库设计器CLOSEDATABASES 关闭数据库 3 1 2删除数据库 如果一个数据库不再使用了 需要将它删除 所采用命令的格式是 DELETEDATABASE 数据库文件名 DELETETABLEs REcYCLE 其中 数据库文件名指定要删除的数据库名 此时要删除的数据库必须处于关闭状态 被删除的数据库中的表成为自由表 如果省略 数据库文件名 或用 代替数据库名 系统会显示 打开 对话框 可从其中选择要删除的数据库文件名 选择RECYCLE选项则将删除的数据库文件和表文件等放入Windows的回收站中 需要时还可以还原它们 3 2建立数据库表 表是VFP基本内容 数据库的管理最终是对表的管理 表能够对数据进行有效的加工 管理 使数据更能显示出它的价值 由于表可以独立于程序 因而表使得数据得以共享 同时使数据得到充分的利用 数据库中表有两个来源 一个来源是在数据库中建表 另一个来源是将自由表添加到数据库中 注意不可以将一个数据库中的表添加到另一个数据库中 在VFP中表的建立方式有多种 本节中只介绍可视化的界面建立表和用命令建立表两种方式 其他几种方式将在后续章节中逐步介绍 建立表的过程一般可分为三步 第一步要确立表的结构 第二步用界面或用命令开始建表 以上步骤实际上就是对表结构的定义 第三步输入表的内容 3 2 1表结构的设计 在创建一个表文件之前 需要对表进行规范化设计 其基本的要求是 一个表内的数据是反映同一群体 不同个体的数据资料 群体的性质和范围根据研究问题的需要而定 一个表内的任何一个字段与其数据 记录 的性质与属性要求相一致 表即是相同结构记录的集合 一个表内可设置一个或多个字段 数据项 一个表内的多个字段用于表示性质相近的数据 一个表内记录存储的先后顺序可以是随意的 一个表内的字段与记录的组织结构形同二维表格 3 2 1表结构的设计 例如对学生管理的相关数据信息进行分析 对一个班级的学生基本数据资料进行筛选并做先期规范化设计 问题分析 反映学生各方面情况的数据资料有 所学专业 所在班级 学号 准考证号 姓名 性别 年龄 出生日期 籍贯 简历 个人相片 兴趣爱好 身高 体重 视力 电话号码 各门课程考试成绩 公共选修课成绩 岗位或社会实践实习成绩 毕业设计 论文 成绩等等 筛选出反映基本情况的 性质相近且相对固定不变的数据构成 基本信息表 筛选出来的数据项为 学号 姓名 性别 出生日期 是否团员 入学成绩 班级名称 简历 个人相片 预先设计学生档案表 XSDA dbf 的形式如表3 1所示 3 2 1表结构的设计 3 2 1表结构的建立 表文件 DBF 用于按关系型结构来组织数据 一个表由表结构和表记录两部分组成 表结构描述了数据存放的结构以及存储的顺序 确定了表的字段就完成了对表结构的定义 表记录是表要保存的数据主体 建立一个表文件先要建立表结构 然后再输入表记录 建立表结构主要可使用命令方式和菜单方式 1 命令方式命令格式为CREATE 其中指定生成的表文件名称 若不指定扩展名 则默认为 DBF 如果使用 或未指定文件名称 系统会弹出 创建 对话框 以便用户输入表名 3 2 1表结构的建立 2 设计器方式伴随 数据库环境设计器 有一个名为 数据库设计器 的浮动工具栏 在上面可见 新建表 按钮 参见图3 8 点击该按钮即可打开 新建表 对话框 参见图3 9 图3 8浮动工具栏上面的新建表命令按钮 3 2 1表结构的建立 图3 9新建表对话框如若要建立本书所用的XSDA DBF表 表内容如表3 1所示 则点击图3 9中的 新建表 N 按钮 即可打开 创建 对话框 参见图3 10 3 2 1表结构的建立 图3 10 创建 对话框 3 2 1表结构的建立 填写表名称 XSDA dbf 学生档案表 确定表文件名之后 点击 保存 S 按钮 即可打开 表设计器 参见图3 11 图3 11表设计器 3 2 1表结构的建立 其中在 字段 选项卡中设置表的字段 字段 选项卡包括6个子项 字段 类型 宽度 小数位数 索引 NULL 1 字段 用于依次输入字段名称 如 学号 姓名 性别 出生日期 团员否 入学成绩 班级 照片 简历等 字段名在表中必须是唯一的 字段名必须以汉字 字母和下划线开头 由汉字 字母 数字和下划线组成 对于数据库表字段名最多为128个字符 自由表字段名最多为10个字符 当数据库表转换为自由表时截去超长部分 字段名不能使用系统的保留字 2 类型 用于设置各个字段的类型 可供选择的类型有 字符型 货币型 数值型 浮点型 日期型 日期时间型 双精度型 整型 逻辑型 备注型 通用型 二进制字符型 二进制备注型 3 宽度 用于设置各个具体字段的宽度 4 小数位数 用于设置数值型 整型 双精度型字段值的小数位数 3 2 1表结构的建立 类型的宽度 小数位数设置参考见表3 1 3 2 3数据库表字段的扩展属性 1 字段的格式 掩码和标题表设计器右方名为 显示 的页框用于设置字段的格式 掩码和标题 参见图3 12 图3 12表设计器上面的 显示 页框 3 2 4输入新记录 1 在记录浏览或编辑窗口输入记录 1 打开记录浏览窗口打开 记录浏览窗口 的方式有以下几种 在 项目管理器 中选择表 然后点击 浏览 B 按钮 在 数据库管理器 中双击表的标题栏 打开记录浏览窗口的命令USE表文件名BROWSE打开后的记录浏览窗口参见图3 16 3 2 4输入新记录 图3 16记录浏览窗口 3 2 4输入新记录 2 打开记录编辑窗口 在打开了记录浏览窗口之后 再点击 显示 V 菜单中的 编辑 E 命令 即可将窗口切换至 编辑 窗口 然后点击 追加方式 即可输入记录 参见图3 17 图3 17记录编辑窗口 3 2 4输入新记录 5 输入General型字段数据输入记录时若遇到General 通用 型数据 如 相片 可用鼠标双击该字段或按 Ctrl Home 组合键 打开通用字段编辑窗口 参见图3 19 图3 19通用字段编辑窗口此时 应点击 编辑 E 菜单中的 插入对象 I 命令 打开 插入对象 对话框 参见图3 20 3 2 4输入新记录 图3 20 插入对象 对话框在对话框中选择 由文件创建 再点击 浏览 B 命令按钮 打开 浏览 对话框选择所需的图片文件后 点击 打开 O 命令按钮 即可将确定插入表中的图片文件 并回到 插入对象 对话框 然后点击 确定 命令按钮 这样就把图片文件插入到了表的 通用 字段中 这种加入图形的方式称为 嵌入 最后还要按 Ctrl W 组合键存盘 插入和图片文件 如相片 最好设置为BMP 二进制图像文件 格式 3 2 1表结构的建立 2 追加输入记录命令应用APPEND命令可以在表文件尾部追加输入记录 1 命令格式APPEND BLANK IN工作区号 别名 2 参数说明BLANK 追加一条空记录工作区号 表文件所在工作区 工作区概念在下一章介绍 目前可不用 别名 表文件的别名 别名的概念在下一章介绍 目前可不用 3 3表的基本操作 本节介绍表文件的基本操作 包括表文件的打开与关闭 表结构的显示和修改 表记录的操作 其他文件操作 表的排序 索引与查询 表的统计与汇总等 是本章的重点内容 本节所涉及的操作均针对于一个表 对于多表操作和工作区的概念 可参见3 6小节 3 3 1表文件的打开与关闭 1 表的打开 1 在项目文件中打开表文件先打开项目文件 如 CJGL pjx 再依次展开 数据 数据库 表 并点击需要打开的表文件 参见图3 21 图3 21在项目管理器中选择表文件 3 3 1表文件的打开与关闭 然后点击 浏览 B 按钮 即可打开该表文件并以浏览方式显示记录 对于新创建的表 记录是空的 此时若点击 修改 M 按钮 即可打开表设计器 对表的结构信息进行修改 2 用界面打开表单击菜单文件 打开 或常用工具拉单击打开按钮 打开了打开对话框如图3 22所示 在文件类型中选类型为表 dbf 选所示打开的表 确定 3 3 1表文件的打开与关闭 图3 22 打开 表文件对话框 在 项目管理器 窗口中选择需要打开的表后单击 修改 或 浏览 按钮时也会自动地打开 表的这种打开是在当前未被使用的最小工作区中打开 且该工作区为当前工作区 3 3 1表文件的打开与关闭 在 项目管理器 窗口中选择需要打开的表后单击 修改 或 浏览 按钮时也会自动地打开 表的这种打开是在当前未被使用的最小工作区中打开 且该工作区为当前工作区 3 使用命令打开表在 命令 窗口或程序中 可以使用USE命令打开一张表 该命令的基本语法格式 USETableName INnWorkArea cTableAlis AGAIN ALIAScTableAlias NOUPDATE IN子句用于指定表在哪个工作区中打开 缺省时为当前工作区 AGAIN用于说明该表再次打开 即表在多个工作区中同时被打开 ALIAS子句用于定义表的别名 缺省时表的别名一般与表名相同 NOUPDATE指定表打开后不允许修改其结构和数据 3 3 1表文件的打开与关闭 可以使用如下命令在当前工作区中打开一个表 USE表文件名如果要在一个未被使用的区号最小的工作区中打开一个表 可以使用如下命令 USE表文件名IN0或者SELECT0USE表文件名在最小未用工作区中打开ZG表 并且不允许修改USEZGIN0NOUPDATE 3 3 1表文件的打开与关闭 2 表的关闭如果在一个工作区中已打开了一个表 当在此工作区中再次打开另一个表时 先前的表将自动被关闭 另外 可以通过界面操作或命令关闭打开的表 1 关闭当前工作区中的表的命令是 USE 2 关闭非当前工作区中的表的命令是 USEIN别名 工作区或者SELECT别名 工作区 3 3 1表文件的打开与关闭 3 关闭所有工作区中的表的命令是 CLOSEALL或者CLOSEDATABASES或者CLOSETABLES 4 在退出VFP系统时 所有的表都将被关闭 3 3 2表结构的显示和修改 1 显示表的结构 1 用界面显示表结构在项目管理器中 展开 数据 表 再选择要打开的表文件名 然后点击菜单显示 表设计器 2 用命令显示表结构格式 LIST DISPLAYSTRUCTURE功能 显示为前一打开的表的结构 参数说明 DISPLAY 以分屏方式显示表结构信息 LIST 以滚屏方式显示表结构信息 TOPRINTER 将表结构信息打印输出 TOFILE文本文件名 将表结构信息存入一个文本文件 3 3 2表结构的显示和修改 2 修改表的结构一个表在建立以后 有时由于实际需要发生了变化 或在建表时标的结构就不对 需要全面对已存在的表结构进行修改 VFP提供了界面与命令两种方式 1 用界面修改表的结构用菜单或工具拉开表设计器修改表结构在表一打开的情况下修改表结构步骤 单击菜单显示 打开表设计器 如图3 24所示 对字段意义进行修改 3 3 2表结构的显示和修改 图3 24表设计器 3 3 2表结构的显示和修改 打开表设计器后 可以对表文件的结构信息进行修改 修改的内容包括 插入新字段 删除原有的字段 修改原有的字段 插入新字段用鼠标点击将要插入字段上 然后点击 插入 I 命令按钮 再输入新的字段信息即可 删除原有的字段点击要删除的字段 再点击 删除 D 命令按钮即可 修改原有的字段信息点击需要修改的字段 直接修改即可 表结构修改完毕 注意点击表设计器上面的 确定 命令按钮 此时会显示一个警告提示对话框 3 3 2表结构的显示和修改 2 用命令修改格式 ALTERTABLEADD ALTER LOLUMN DROP COLNME REMAMETO功能 修改表的结构说明 ADD column 子句用于增加新的字段 ALTER column 子句用于修改原有字段 DROP column 子句用于删除字段 RENAME column 子句用于将字段2指定的字段名改为字段3指定的字段名 3 3 3表记录的操作 1 显示记录表中的记录输入完毕 通常要显示记录 操作方法有 应用选单操作方式 使用BROWSE LIST DISPLAY等命令 1 在 项目管理器 中显示表的内容在 项目管理器 中 展开 数据 选中表文件 再点击 浏览 B 按钮 即可打开浏览窗口显示表的内容 2 在 数据库设计器 中显示表的内容在数据库设计器中 用鼠标双击某个表文件的标题栏 即可打开浏览窗口显示表的内容 3 3 3表记录的操作 3 直接打开表 然后浏览显示内容在未经事先打开项目管理器或数据库设计器的情况下 可以直接打开表文件 然后浏览显示内容 其操作步骤是 点击 文件 菜单中的 打开 O 命令 显示 打开 对话框 在对话框中选择 文件类型 然后选择要打开的表文件名 点击 显示 V 菜单中的 浏览 B 命令 即可打开浏览窗口显示表的内容 3 3 3表记录的操作 3 浏览窗口的分区显示浏览显示窗口的右下角有一个黑色的小方框 用鼠标点击并拖动它向右移动 即可将一个浏览显示窗口分成左右两个区 用鼠标点击其中的一个区上面的记录 然后点击 显示 菜单中的 浏览 B 或 显示 E 命令 即可将选中的页面设置为 浏览 方式或 编辑 方式 左区页面为 浏览 右区页面为 编辑 这样操作有利于浏览与编辑表中的记录 4 表 菜单打开浏览窗口后 在系统主菜单栏上面出现 表 A 菜单 用于对浏览窗口进行操作 3 3 3表记录的操作 5 显示记录的命令浏览显示命令BROWSE 其基本命令格式为 BROWSE FIELDS字段名列表 FONT字体名 字体大小 STYLE字型符 FOR条件表达式1 REST FORMAT FREEZE字段名 KEYeExpression1 eExpression2 LAST NOINIT LOCK字段数 LPARTITION NAME对象名 NOAPPEND NOCAPTIONS NODELETE NOEDIT NOMODIFY NOLGRID NORGRID NOLINK NOMENU NOOPTIMIZE NOREFRESH NORMAL NOWAIT PARTITION列序号 LEDIT REDIT PREFERENCEPreferenceName SAVE TIMEOUTnSeconds TITLEcTitleText VALID F lExpression2 ERRORcMessageText WHENlExpression3 WIDTHnFieldWidth WINDOWWindowName1 IN WINDOW WindowName2 INSCREEN COLORSCHEMEnSchemeNumber 3 3 3表记录的操作 3 删除表中记录删除表中的记录有三种方法 一种为逻辑删除 这种删除只是将记录加了删除标记 第二种删除是物理删除 这种是将具有删除标记的记录真正从表中删除 第三种是物理删除表中所有记录 剩下一个空表 1 逻辑删除与恢复1 用界面为记录加删除标记或去掉删除标记在表打开前提下 显示 浏览打开浏览窗口 如图3 31所示 单击记录左边小方框 使该方框变深色 即加删除标记 若要恢复记录 再次单击神色方框使其变浅即可 3 3 3表记录的操作 3 删除表中记录删除表中的记录有三种方法 一种为逻辑删除 这种删除只是将记录加了删除标记 第二种删除是物理删除 这种是将具有删除标记的记录真正从表中删除 第三种是物理删除表中所有记录 剩下一个空表 1 逻辑删除与恢复1 用界面为记录加删除标记或去掉删除标记在表打开前提下 显示 浏览打开浏览窗口 如图3 31所示 单击记录左边小方框 使该方框变深色 即加删除标记 若要恢复记录 再次单击神色方框使其变浅即可 3 3 3表记录的操作 图3 31添加删除标记 3 3 3表记录的操作 2 用命令为记录加删除标记与去掉删除标记记录逻辑删除命令格式 DELETE 范围 FOR 功能 对满足条件的记录加删除标记 若范围省略 默认范围为当前记录即NEXT1 记录恢复命令格式 RECALL 范围 FOR 功能 为符合条件的记录去掉删除标记 若范围省略 默认范围为当前记录即NEXT1 2 物理删除记录 用界面进行物理删除记录在表打开前提下 单击表菜单 彻底删除 即可 用命令进行物理删除格式 PACK功能 将带有删除标记的记录 从表中真正删除 3 3 3表记录的操作 3 物理删除表中所有记录格式 ZAP功能 将表中所有记录删除 只保留表结构 4 修改记录 1 用界面修改记录在表打开前提下 显示 浏览打开浏览窗口就可以对各条记录进行修改 在命令窗口上用EDIT CHANGE 2 用命令修改记录格式 REPLACE WITH WITH FOR WHILE 功能 在指定范围内将符合条件的记录中的相关字段用相关表达式来替换 若省略范围 默认范围为NEXT1 3 3 3表记录的操作 5 插入记录格式 INSERT BEFORE BLANK 功能 插入一条记录 若无BEFORE子句时 在当前记录后插入一条新记录 当有BEFORE子句时 在当前记录之前插入一条新记录 当有BLANK子句时插入一条空白记录 当时不能编辑 可用REPLACE等命令进行编辑 EDIT CHANGE 3 3 4其他文件操作 1 复制表结构复制表的结构是一种有效的操作方法 对于简单的表文件结构 将其复制一份会生成另一个表文件结构 再将部分内容修改即可快速创建另一个表文件 1 复制表文件结构的命令COPYSTRUCTURETO表文件名EXTENDED FIELDS字段名列表 2 命令说明COPYSTRUCTURETO表文件名 复制表文件结构 生成另一个表文件结构 EXTENDED 使用EXTENDED参数复制表文件结构之后会生成一个结构描述表文件 该表文件的记录是原来表文件的结构信息 FIELDS字段名列表 该选项用于复制表文件结构时选择字段 3 3 4其他文件操作 2 使用AFIELDS 函数获取表结构信息使用AFIELDS 函数可将表结构信息存储为一个二维数组 格式如下 AFIELDS 指定数组名称 工作区 表的别名 3 3 5表的排序 索引与查询 1 排序记录在表文件中是按照录入时的顺序排列的 VisualFoxPro使用记录号予以标识 除非进行了记录的插入或删除 否则已输入记录的记录号是不会改变的 如果希望表文件中的数据记录按照用户所希望的顺序来排列 如按照员工编号由小到大排列 按照年龄由大到小排列等 就需要采取一些有效的方法对文件中的记录重新组织 使其按照用户希望的顺序排列 VisualFoxPro中的排序和索引功能为用户实现经目的提供了方便 表的排序就是把表文件中的记录按照某个字段值的大小顺序重新排列 作为排序的字段称为 关键字 排序的结果将生成一个新的表文件 新表文件的结构和数据可与源文件完全相同 也可取自源文件的一部分字段 排序可以按照关键字值从小到大的顺序进行升序排序 也可以按照关键字值从大到小进行降序排序 3 3 5表的排序 索引与查询 数据大小的比较规则为 如果是数值型 日期型的数据进行比较 则由其本身的大小决定 字符型数据由其ASCII码值确定 汉字则由机内码确定 VFP使用SORT命令实现排序 格式 SORTTOON A D C A D C ASCENDING DESCENDING FOR WHILE FIELDS 功能 对当前表中指定范围内的满足条件的记录按照指定字段升序或降序重新排列 并将排序后的记录按FIELDS子句指定的字段存入新的表文件中 3 3 5表的排序 索引与查询 说明 A 表示按字段值升序排列 为系统默认值 可以省略 D表示按字段值降序排列 C表示按指定的字符型字段排序时不区分字母大小写 此三个参数可以合用 如 AC ASCENDING DESCENDING ASCENDING表示对所有关键字段都按升序方式排列 DESCENDING表示对所有关键字段都按降序方式排列 A D C 优先于 ASCENDING DESCENDING 排序后 源文件仍存在并处于打开状态 且记录顺序和数据内容都没有发生改变 生成的新表文件是关闭的 使用时必须先打开 逻辑型字段和备注型字段不能作为关键字 排在最前面的字段为最大关键字 记录最先按最大关键字进行排序 当记录的最大关键字相同时 再按后面的关键字进行排序 3 3 5表的排序 索引与查询 2 表的索引排序命令已经解决了对已存在表按实际需要 按某一个字段或多个字段排序的问题 由于它使原表不变而又形成了一个新表 这样就在磁盘中造成了很大的冗余 浪费了存储空间 如何解决这样的问题 VFP用建立索引文件来解决 1 索引的概念索引是根据表中的某一个或多个字段建立的一个逻辑顺序的文件 而不生成表文件 它并不改变表的物理位置 人们将这些建立索引的字段称为关键字 索引文件的内容只是关键字与记录号 占用存储空间与排序表相比要小得多 它存储的是索引与表的映射关系 它就像一本书的目录一样 由标题查到在书中的页码 查找的速度很快 当对表记录进行增 删 改操作时 索引文件会随着表而更新 3 3 5表的排序 索引与查询 索引文件主要分为两种 一种是单索引文件 另一种为复合索引文件 单索引文件可分为标准单索引文件和压缩单索引文件 复合索引文件可分为结构化复合索引文件和非结构化复合索引文件 只存储一个索引的索引文件称为单索引文件 它的扩展名为 IDX 能存储多个索引的索引文件称为复合索引 扩展名为 CDX 每个索引都有一个索引标识 复合索引文件名若与表名相同称为结构化复合索引文件 当表打开时 结构化符合索引自动随着打开 反之 复合索引文件名与表名不同称为非结构化复合索引 VFP的索引方式有4种 主索引 候选索引 唯一索引和普通索引 他们的相关说明如表3 8所示 3 3 5表的排序 索引与查询 表3 8VFP的索引方式 3 3 5表的排序 索引与查询 2 建立索引 用界面建立索引单字段索引在表打开的前提下 显示 表设计器 字段选项卡 在字段名列中选中一个字段作为索引字段 索引下拉列表框中选升或降序 此时建立了一个普通索引 索引名与字段名相同 索引表达式就是对应的字段 如图3 34所示 如果想建立其它类型的索引 可继续单击索引选项卡 单击类型下拉列表框 此时出现三种方式类型 即普通索引 候选索引和唯一索引 注意没有主索引类型 因为主索引只有在数据库表中才能建立 可根据需要选一种索引类型 确定 3 3 5表的排序 索引与查询 图3 34单字段索引的设置界面 3 3 5表的排序 索引与查询 复合字段索引在表打开前提下 如建立一个普通索引表达式为性别 入学成绩 则依次点击显示 表设计器 索引选项卡 插入 此时在界面出现一新行 在索引名下输入索引名 在类型下拉列表框中选索引类型 如图3 35所示 然后单击表达式右边的 按钮打开表达式生成器 如图3 36所示在表达式中输入索引表达式 确定 确定 3 3 5表的排序 索引与查询 图3 35建立复合索引 图3 36表达式生成器 3 3 5表的排序 索引与查询 用命令建立索引格式 INDEXONTO TAG OF FOR COMPACT ASCENDING DESCENDING UNIQUE CANDIDATE ADDITIVE 功能 建立索引文件或增加索引标识 说明 索引关键字 可以是单个字段名 或用字段名组成的表达式 TO子句是建立单索引文件 TAG是建立复合索引标识 当不选OF子句建立的是与表同名的结构化复合索引文件 当选OF子句时建立的非结构化复合索引文件 COMPACT用来指定单索引文件是压缩的 复合索引总是压缩的 ASCENDING DESCENDING子句表示升 降序 默认为升序 UNIQUE子句是建立唯一索引 CANIDATE子句建立候选索引 ADDITIVE子句建立该索引文件是不关闭以前打开的索引文件 默认是关闭以前打开的索引文件 新建的索引文件自动打开 并开始起作用 3 3 5表的排序 索引与查询 4 设置主控索引格式 SETORDERTO TAG OF ASCENDING DESCENDING 功能 设置主控索引文件说明 是指定主控索引文件或索引标识编号 先按USE或INDEX出现顺序打开的单索引文件 然后按创建顺序指定结构化复合索引表示的编号 最后按创建顺序指定非结构化复合索引的编号 是指定此索引文件为主控索引 TAG OF 指定结构化 非结构化复合索引文件中的索引标识为主控索引 OF 适用于打开非结构化复合索引文件 无任何选项或SETORDERTO为取消主控索引 ASCENDING DESCENDING用于重新设置主控索引文件升或降序 5 删除索引格式 DELETETAGALL 功能 删除打开的复合索引文件的索引标识 3 3 5表的排序 索引与查询 6 索引的更新在表的记录发生变化时 打开的索引文件会随着表的变化而更新 但未打开的索引文件是不会自动根据表的变化而更新的 要想将这些未打开的索引文件更新 首先打开这些文件 然后再用以下讲的更新索引命令就可以了 格式 REINDEX COMPACT 功能 重建当前打开的索引文件 COMPACT子句可将已打开的 IDX索引文件转为压缩单索引文件 3 3 5表的排序 索引与查询 3 记录的查询在数据资源的管理中 使用最频繁的操作莫过于查询满足一定条件的一系列数据 从而为日常决策提供足够的判断依据 对表记录的查询 系统提供了两类查询命令 顺序查询和索引查询 1 顺序查询 命令方式格式 LOCATEFOR功能 查找符合条件第一个记录的位置 指针指向该记录 若表中无符合条件的记录 指针指向表尾 说明 若符合条件的记录有多条 可用CONTINUE继续查找下一个符合条件的记录 3 3 5表的排序 索引与查询 菜单方式打开表文件后 依次选择显示 浏览 表 转到记录 定位命令 出现如图3 38所示的对话框 在作用范围下拉列表框中选择查询范围 在FOR或WHILE框中输入查询条件 单击 定位 按钮 系统将指针定位于符合条件的第一条记录上 图3 38 定位记录 对话框 3 3 5表的排序 索引与查询 2 索引中的查询命令索引的应用在于对关键字的快速查询 VFP中有两个索引查询命令就是FIND与SEEK FIND命令格式 FIND 功能 在索引关键字中查找与指定的字符串或数值相匹配的第一条记录 若找到 指针指向此记录 否则指针指向表尾 一般用FOUND 函数判断是否查找到 若用字符变量查找必须用 运算符 若要查找下一个匹配记录可用SKIP命令 字符串可不用定界符 但字符串若有前导与尾部空格要加定界符 3 3 6表的统计与汇总 VFP提供了计数 对数值型字段记录求和 求平均值及统计等命令和对数据分组求和生成汇总表的命令 1 计数命令格式 COUNT FOR WHILE TO 功能 计算当前表中指定范围内满足条件的记录个数 且存于中 2 求和命令格式 SUM FOR WHILE TO ARRAY功能 在当前表中在指定范围内对符合条件的数值表达式表中的各表达式求和 且将结果依次存入内存变量表中的变量或数组中 说明 数值表达式表中的表达式可为数值型字段 或由数值型字段组成的表达式 3 3 6表的统计与汇总 3 求平均值命令格式 AVERAGE FOR WHILE TO ARRAY功能 在当前表中 在指定范围内对符合条件的数值表达式表中的各表达式求平均值 且将结果依次存入内存变量表中的变量或数组中 4 计算命令格式 CALCULATE FOR WHILE TO ARRAY功能 在当前表中 在指定范围内 对符合条件的表达式表中的各表达式进行计算 说明 表达式必须包含avg cnt max min sum npv std var 这8个函数中的一个 前5个函数与4 1 3中select中常用系统函数一致 可见表4 1所示 后3个函数详见系统HELP 3 3 6表的统计与汇总 5 分类汇总命令格式 TOTALTOON FIELDS FOR WHILE 功能 对已排序或已索引过的表 在指定范围内符合条件的记录 按指定关键字相同的那些记录进行分组并对数值字段列向求和 对于非数值字段取组内第一个记录中的字段的值 每组形成一个新纪录 将这些记录按原来的顺序形成由文件名指定的新表 说明 选用FIELDS子句时 指出要汇总的字段 3 4数据完整性 在实际应用中多表使用很平常的 VFP实现多表使用是运用的关系机制 当建立关系的相关表关闭 关系取消 若表在打开时 表之间再需要原来的关系就重新建立 永久性关系是在数据库设计环境中建立的 它不随数据库设计器的关闭而消逝 关系一旦建立 数据库设计器每次打开关系都存在 因为永久性关系已存入数据库的数据字典中 3 4 1数据库表间的永久关系 1 准备关系关系分为三种 第一种为一对一 第二种为一对多 第三种为多对多 多对多关系处理起来较为复杂 通常是通过拆表的方法转为一对多关系 在建立关系前要做一些准备 1 确定哪一个表为父表 哪一个表为子表 2 要确定是建立一对一关系 还是一对多关系 3 不管是一对一关系还是一对多关系 父表要对关键字段建立主索引 对于一对一关系 子表要对相关字段作候选索引或主索引 对于一对多关系 子表要对相关字段作普通索引或唯一索引 3 4 1数据库表间的永久关系 2 建立 编辑 删除关系建立学生数据库 确定学生档案表为主表 课程表 成绩表为子表 对学生档案表的学号建立主索引 对成绩表的学号建立普通和课程号建立普通索引 课程表中的课程号建立主索引 准备一对多关系 单击文件 打开 打开数据库设计器 见图3 39 分别选这些表按右键 修改 打开表设计器建立相应的索引 3 4 1数据库表间的永久关系 图3 39成绩管理数据库设计器 3 4 1数据库表间的永久关系 1 建立关系在学生档案 学生成绩表之间建立一对多永久关系 在数据库设计器中将鼠标指向学生档案表中索引下带钥匙标记的学号上 按住左键拖到学生成绩表中索引下的学号上 然后释放鼠标 在两表之间产生一条关系连线 此时永久关系建立完成 用同样的方法可在课程表 学生成绩表之间建立永久关系 见图3 40 3 4 1数据库表间的永久关系 图3 40建立关系 3 4 1数据库表间的永久关系 2 编辑关系选关系连线 此时的关系线变粗 按右键显示出关系快捷菜单 见图3 41 编辑关系 打开编辑关系对话框 见图3 42 在编辑框中选择表 相关表的索引名编辑 2 编辑关系选关系连线 此时的关系线变粗 按右键显示出关系快捷菜单 见图3 41 编辑关系 打开编辑关系对话框 见图3 42 在编辑框中选择表 相关表的索引名编辑 3 4 1数据库表间的永久关系 图3 41关系快捷菜单 图3 42编辑关系对话框 3 4 2参照完整性 在两个表之间建立永久性关系后 存在着相互之间一致性 相互完整性问题 如父表的一条记录与子表有相对应记录 若将父表这条记录删除 或修改了主索引关键字 子表就找不到与父表对应的记录 一致性与完整性就遭到破坏 再有子表增加的记录或修改一个与父表对应的记录的索引关键字 在父表中找不到对应记录这也使得一致性 完整性得到了破坏 为了解决这类问题 VFP提供了参照完整性机制 从而保证了在两表建立关系后保证表之间的关系不被破坏 3 4 2参照完整性 1 建立参照完整性使用下列方法之一 图3 41关系快捷菜单中编辑参照完整性 单击数据库菜单 编辑参照完整性 数据库设计器 快捷菜单 编辑参照完整性 在图3 42编辑关系对话框中 参照完整性打开如图3 43参照完整性对话框 该对话框有更新规则 删除规则 插入规则三个选项卡 VFP通过这三个选项卡的设置实现参照完整性机制 3 4 2参照完整性 图3 43参照完整性生成器 3 4 2参照完整性 1 更新规则用于修改父表关键字时 如何处理子表中的相关记录 它有三个单选按钮 级联 是指当修改父表记录中关键字时 子表中与此记录相关的记录也随之改变 限制 是指当修改父表记录中的关键字时 若子表中与此记录有相关的记录禁止修改父表此相应记录操作 忽略 是指允许父表进行更新 与子表相关记录无关 2 删除规则用于删除父表记录时如何处理子表中的相关记录的规则 级联 是指当删除父表中的记录时 子表中与其相关的记录自动删除 限制 若在删除父表记录时 子表中有与其相关的记录 则禁止父表的删除操作 使删除失败 忽略 当父表的记录删除时 与子表中与其相关的记录无关 3 插入规则用于在子表中作插入 或更新记录时 限制 在子表中插入一个新记录或更新一个已存在的记录时 若父表的记录中没有相匹配的关键字值 则禁止插入 忽略 子表的插入与父表无关 3 5自由表 在VisualFoxPro中 每个表可以有两种存在状态 自由表或数据库表 使用自由表还是数据库表来保存要管理的数据 取决于管理的数据之间是否存在关系以及关系的复杂程度 如果用户要保存的数据关系比较简单 使用自由表就够了 如果要保存的数据需要多个表 表和表之间又存在相互关系 这时就必须建立一个数据库 把这些表添加进数据库 此时可以认为这个数据库拥有添加进来的表 但用户数据仍然存储在数据库表中 数据库表文件与自由表文件一样 其扩展名仍然为 dbf 3 5 1自由表与数据库表的差异 如果当前没有打开数据库 此时创建的表是自由表 自由表有三种创建方法 选择项目管理器 数据 自由表 在没有打开数据库的情况下 文件 新建 表 在没有打开数据库的情况下 使用CREAT命令创建表 自由表无法实现数据完整性 自由表不支持主索引 不能建立字段有效性规则 也不支持在表之间建立永久性联系 数据库表比自由表又有以下特征 数据库表可以使用长表名 在表中可以使用长字段名 可以为数据库表中的字段指定标题和添加注释 可以为数据库表中的字段指定默认值和输入掩码 数据库表中的字段有默认的控件类 可以为数据库表规定字段级规则和记录级规则 数据库表支持主关键字 参照完整性和表之间的联系 数据库表支持INSERT UPDATE和DELETE事件的触发器 3 5 3自由表添加到数据库 1 菜单方法可使用项目管理器 数据 数据库展开至表 单击添加 或者在数据库设计器中点击右键 选择添加表 注意 一个表只能属于一个数据库 当一个自由表添加到某个数据库后就不再是自由表了 一个数据库中的表不能添加到另一个数据库中 2 命令方式打开数据库的情况下 addtable表名name长表名 3 6多个表的操作 前面所有的操作都是针对一个表中的数据 在实际工作中需要收集所有有用的数据并从这些数据中获
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工作中的闲暇时光与高效时间管理艺术
- 工作中的时间管理与时间节约技巧
- 工业设计的创新与实践案例
- 工作满意度与心理资本的关系研究
- 工控系统中的人机界面优化研究
- 工作流程再造与优化实践
- 工程实践中的智能化应用案例
- 工程机械中的智能自卸车应用
- 工厂防火措施与操作规程
- 工程材料与加工技术
- 【课件】新高三启动主题班会:启航高三逐梦未来
- 2024年攀枝花市仁和区向招考社区工作者真题
- BIM在公路工程中的三维可视化应用-洞察阐释
- 公司贵重金属管理制度
- 离散数学考试题及答案
- 安徽省安庆望江县联考2025年七年级英语第二学期期中质量检测模拟试题含答案
- 2025年江苏省苏州吴中、吴江、相城区初三英语一模试题及答案
- 智能化汽车中的专利战略布局-洞察阐释
- 不寐的中医护理常规
- 2024年新疆维吾尔自治区、新疆生产建设兵团中考语文试卷(含答案与解析)
- 2025至2030年中国精致石英砂滤料行业投资前景及策略咨询报告
评论
0/150
提交评论