VFP课件09版数据库、表和索引6学时3.ppt_第1页
VFP课件09版数据库、表和索引6学时3.ppt_第2页
VFP课件09版数据库、表和索引6学时3.ppt_第3页
VFP课件09版数据库、表和索引6学时3.ppt_第4页
VFP课件09版数据库、表和索引6学时3.ppt_第5页
已阅读5页,还剩198页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章 数据库、表和索引,2-1 基本概念和操作,2- 数据库和表,2- 创建数据表,2- 数据表的基本操作,2- 查询与统计操作,2-6 多工作区操作,2-7 小结,第2章 Visual FoxPro的基本操作,第四节 数据表的基本操作,本节目录,2.4.1 数据库的命令操作方法 2.4.2 命令操作数据表 2.4.3 VFP文件的复制,2.4.1 数据库的 命令操作方法,2.4.1 数据库的命令操作方法,操作数据库和数据表,可以用系统菜单,更多的是用系统命令。直接在命令窗口输入系统命令,可以立刻看到表的运行结果。,数据库操作 = 制作书包 表操作 = 制作账本 文件操作 = 复制账本 表记录操作 = 登记数字,1、创建数据库 格式:CREATE DATABASE 数据库名|? 执行该命令后, 从界面上看不出任何反映, 但数据库文件已径建立。除非在数据库名前指定路径, 否则创建的数据库文件存放在当前默认文件夹中。 默认文件夹可通过SET DEFAULT TO 命令设定。,1、创建数据库 格式:CREATE DATABASE 数据库名|?,如果省略数据库名,或代之以问号,将显示“打开”对话框,从中可以选择现有的数据库,或输入所要创建或打开的新数据库名。,例1用命令创建一个数据库gz.dbc SET DEFA TO d:张大民 crea data gz modi data,2、打开数据库 格式:OPEN DATA 数据库名| ? open data G:实验gz modi data gz,如果省略数据库名,或代之以问号,将显示“打开”对话框,从中可以选择现有的数据库,或输入所要创建或打开的新数据库名。,例打开任意数据库 open data ?,3、修改数据库 格式:MODIFY DATABASE 数据库名 MODI DATA ?,4、关闭数据库 格式:CLOSE DATABASE CLOS DATA,5、删除数据库(文件) 格式:DELETE DATABASE 数据库名 RECYCLE 带RECYCLE项, 则将删除数据库文件放入回收站中,可在回收站中进行还原操作恢复删除的数据库(文件)。,【例】创建人员信息数据库, 数据库名为RY。 CREA DATA RY (查看文件RY.DBC, RY.DCT, RY.DCX) OPEN DATA RY &重新打开RY数据库 MODI DATA RY (数据库设计器-RY) CLOS DATA,作业12 用表单显示和关闭数据库,在项目管理器“学生选课系统”中制作如下一个表单,设置三个命令按钮,使其能打开、显示、修改指定的数据库或退出运行状态。,在项目管理器“学生选课系统”中新建一个表单,控件设置如下图:,2、设置控件属性:,3、设置命令按钮1的click事件方法代码: OPEN DATA 学生选课库.dbc modi data,设置命令按钮3的click事件方法代码:,CLOS DATA ? “数据库已关闭! “,设置命令按钮2的click事件方法代码:,4、保存并运行本表单,将整个项目管理器文件夹发送到服务器中指定的文件夹中,等待教师的评分,本作业完成。,2.4.2 命令操作 数据表,2.4.2 命令操作数据表,数据库和数据表是两个不同的概念。 数据库只是个容器,里面装着各种对象;而数据表则是账本,里面装着所有的数据。 操作数据库和数据表的命令格式大体相似,稍有不同。,1、创建数据表 格式:USE 数据表名| ? crea gz brow,2、打开数据表 格式:USE 数据表名| ? USE ?,3、修改数据表 格式:modify structure 数据库名 USE ? MODI STRU *注意,修改数据表时要先打开它。,4、关闭数据表 格式:USE USE,【例】在人员信息数据库(数据库名为RY)创建“基本情况”表结构。 OPEN DATABASE RY CREATE 基本情况 (在表设计器中交互输入表结构),作业13 用表单和命令显示数据表,在项目管理器“学生选课系统”中制作如下一个表单,设置七个命令按钮,使其能分别打开和显示指定的数据表或退出运行状态。,在项目管理器“学生选课系统”中新建一个表单,控件设置如下图:,2、设置控件属性:,3、设置命令按钮的click事件方法代码: USE 学生.dbf BROW,4、保存并运行本表单,将整个项目管理器文件夹发送到服务器中指定的文件夹中,等待教师的评分,本作业完成。,2.4.3 VFP文件的复制,1复制任何类型的文件,【格式】COPY FILE TO ,2.4.3 VFP文件的复制,COPY FILE 创建文件 FileName1 的一个备份。可使用 COPY FILE 复制任何类型的文件。要复制的文件不能打开。源文件名1和目标文件名2都要包含扩展名。 若使用 COPY FILE 复制含有备注字段、结构索引或两者兼有的表,则必须同时复制 .FPT 和 .CDX 文件。,【格式】COPY TO FIELDS FOR WHILE ,2复制当前打开的表文件,文件名:指定 COPY TO 要创建的新文件名。 FIELDS 字段名表:指定要复制到新文件的字段。若省略 此项,则将所有字段复制到新文件。 FOR 条件:指定只复制逻辑条件 lExpression1 为“真”(.T.) 的记录到文件中。 WHILE 条件:指定一个条件,只有当该条件的逻辑表达式为“真”(.T.) 时才复制记录。,【格式】COPY STRU TO FIELDS,3复制当前打开的表的结构,文件名:指定要创建的表的名称。 在 Visual FoxPro 中,新表中每一个字段的默认值和 null 值支持与当前选定表的设置是相同的。 FIELDS FieldList 只将 FieldList 指定的字段复制到新表。若省略 FIELDS FieldList,则把所有字段复制到新表。,COPY FILE 命令,COPY FILE FileName1 TO FileName2 COPY FILE 创建文件 FileName1 的一个备份。可使用 COPY FILE 复制任何类型的文件。要复制的文件不能打开。源文件名 FileName1 和目标文件名 FileName2 都要包含扩展名。 若使用 COPY FILE 复制含有备注字段、结构索引或两者兼有的表,则必须同时复制 .FPT 和 .CDX 文件。,copy to 命令,COPY TO FileName 用当前选定表的内容创建新文件。 FileName 指定 COPY TO 要创建的新文件名。若文件名中不包含扩展名,则指定扩展名为文件类型的默认扩展名。若不指定文件类型,则 COPY TO 创建一个新的 Visual FoxPro 表,并且用默认扩展名 .DBF 指定表文件名。,作业14 VFP文件的复制,在项目管理器“学生选课系统”中制作如下一个表单,设置7个命令按钮,使其执行和显示指定命令的运行结果。,1、将“老师”表复制为表“老师表2”。 USE 老师.dbf COPY TO 老师2.DBF USE 老师2.DBF BROW,2、复制“老师”表的结构为“老师表1”,将复制后的新表的结构显示出来。 USE 老师.dbf COPY STRU TO 老师1.DBF USE 老师1.DBF MODI STRU,3、复制并显示一个仅有教师编号、教师姓名、性别、职称4个字段的表“教师表3”。 USE 老师.dbf COPY TO 老师3.DBF FIEL 教师编号,教师姓名,性别,职称 USE 老师3.DBF BROW,4、将从第2个记录到第5个记录中职称为“副教授”的记录复制到表“老师表4”中。 GOTO 2 COPY TO 老师4.DBF FOR 职称=“副教授“ NEXT 4 USE 老师4.DBF BROW,5、将“老师“表复制为“老师表5.TXT“ USE 老师.dbf COPY TO 老师5.TXT SDF MODI FILE 老师5.TXT,6、将“老师“表复制为“老师表6.XLS“ USE 老师.dbf COPY TO 老师6.XLS XLS MODI COMM ?,4、保存并运行本表单,将整个项目管理器文件夹发送到服务器中指定的文件夹中,等待教师的评分,本作业完成。,2.4.4 表记录的操作,数据库操作 = 制作书包 表操作 = 制作账本 文件操作 = 复制账本 表记录操作 = 登记数字,表记录操作 1. 打开表 2. 追加新空记录 3. 浏览表记录 4. 显示表记录 5. 交互修改记录 6. 自动修改记录 7. 删除和恢复记录 8. 转到记录 9. 记录定位 10. 条件记录过滤 11. 追加记录,1. 打开表 格式: USE 数据库名!表名 | ? “ ”中的内容表示可选择; “|”表示或者的意思。 “?”表示执行该命令时会出现一个对话框,表示打开表的文件名可通过对话框进行选择。,2. 追加新空记录 格式: APPEND BLANK 选BLANK项,则直接在表的末尾加一条空记录。否则,系统就会以窗口形式让用户以交互方式输入记录数据。一个字段一行。,3. 浏览表记录 格式: BROWSE FIELDS 字段名表 FOR 条件 REST FIELDS 字段名表项指定浏览窗口中出现字段名表。字段名之间用“,”分隔。 FOR 条件 REST指定浏览窗口中出现的记录条件,同时还可用REST指定范围。,4. 显示表记录 格式1:LIST OFF 字段名表 范围 FOR 条件 WHILE条件 TO PRINTER PROMPT | TO FILE 文件名 格式2:DISPLAY OFF 字段名表 范围 FOR 条件 WHILE条件 TO PRINTER PROMPT | TO FILE 文件名,不选任选项, LIST为显示所有记录,DISPLAY为显示当前记录。DISPLAY ALL满一屏暂停显示,按任意键继续。 TO PRINTER:显示记录送打印机打印。带PROMPT项,打印前打开打印对话框,用户可在该对话框中对打印机进行设置。 TO FILE 文件名:显示记录送到指定的文件中保存。,两条显示表结构的命令: 格式1:LIST STRUCTURE TO PRINTER PROMPT | TO FILE 文件名 格式2:DISPLAY STRUCTURE TO PRINTER PROMPT | TO FILE 文件名,5. 交互修改记录 格式: EDIT 字段名表 范围 FOR 条件 WHILE条件 例Ex_Edit】交互修改记录。 OPEN DATABASE TO RY USE基本情况 EDIT RECORD 1 USE,6. 自动修改记录 格式: REPLACE 字段名 WITH 内容范围 FOR 条件 WHILE条件 【例Ex_Replace】替换字段。 USE基本情况 &基本情况为数据库RY的表,所以打开表 &就自动打开了RY数据库 REPLACE工资 WITH 工资+100 FOR 职称=”工程师” BROWSE FIELDS 编号,姓名,工资 FOR 职称=”工程师” USE 注:&为注释。,7. 删除恢复记录 (1) 删除记录 格式: DELETE 范围 FOR 条件 WHILE条件 (2) 恢复删除 格式: RECALL 范围 FOR 条件 WHILE条件,7. 删除恢复记录 (3) 彻底删除 格式: PACK,【例Ex_Delete】删除记录。 USE基本情况 DELETE FOR 编号”01006” BROWSE &观察到01006记录最前面栏有黑块,这是删除标记 SET DELETE ON BROWSE &观察不到01006记录行,因为该状态不显示有删除 &标记的记录 RECALL FOR 编号”01006” BROWSE &观察到01006记录最前面栏删除标记没有了 SET DELETE OFF DELETE FOR 编号”01006” PACK BROWSE &观察不到01006记录行, 因为该记录已彻底删除了 USE,8. 转到记录 格式1: GO TOP | BOTTOM |n 格式2: SKIP n 格式1为绝对记录定位。TOP为表中最前面的一条记录; BOTTOM为表中最后一条记录; “n”为定位的记录号。 格式2为相对记录定位。相对记录定位是相对于当前记录移动n条记录。0为向下移, n 0为向上移。省略n, 则默认为1。,【例Ex_Go】记录定位。 USE 基本情况 ? RECNO() &显示1,“?”为显示命令,RECNO()为得到当前记录号的函数 SKIP ? RECNO() GO BOTTOM ? RECNO() SKIP ? EOF() &显示.T., EOF()为判断是否超过表的最后一条记录的函数,9. 记录定位 格式1: LOCATE 范围 FOR 条件 格式2: COUNTINUE LOCATE命令定位到符合条件的第一条记录, 如果定位不到, EOF()为.T.。CONTINUE命令按LOCATE条件定位下一个。 【例Ex_Locate】定位符合条件记录。 USE 基本情况 LOCATE FOR 姓名=”杨” DISPLAY CONTINUE DISPLAY USE,10. 条件记录过滤 格式: SET FILTER TO 过滤条件 设置记录过滤后, 只有满足过滤条件的记录才会显示。但是这里设置的记录过滤在SQL语句操作表时不产生作用。该命令不带任选项,则清除过滤条件,不再对记录过滤。,【例Ex_Filter】记录过滤。 USE RY!基本情况 SET FILTER TO 性别=”女” BROWSE & 只有性别=”女”的记录显示 SET FILTER TO BROWSE & 浏览所有记录 USE,11. 追加记录 (1) 从其他文件中追加记录 格式: APPEND FROM 文件名 | ? FIELDS 字段名表 FOR 条件 DELIMITED WITH 限定符 | 文件格式 AS 代码页,说明:加入当前表记录的字段由FIELDS 字段名表指定,FOR选项指定加入的记录符合的条件。后面分别用于描述加入文件的格式。限定符可为Delimiter或BLANK 或TAB或 具体符号。 通过AS代码页指定被加入的文件的编码系统。在VFP中,不同的编码系统用代码页表示。通过代码页,就可实现跨平台数据共享。用?GETCP()可打进代码页对话框。,(2) 向备注型字段中追加 格式:APPEND MEMO FROM OVERWRITE AS 代码页 【例Ex_AMemo】备注型字段中追加。 USE 基本情况 LOCATE FOR 姓名=”肖文红” ?基本情况.备注 APPEND MEMO 备注FROM肖文红.TXT OVERWRITE ? 基本情况.备注 USE,(3) 向通用型字段中追加 格式: APPEND GENERAL FROM DATA 字符串 LINK CLASS OLE类名,【例Ex_AGen】追加通用型字段。 USE 基本情况 LOCATE FOR 姓名=”肖文红” APPE GENERAL 照片 FROM肖文红.BMP BROWSE USE,(4) 从数组中追加记录 格式: APPEND FROM ARRAY 数组名 FOR 条件 FIELDS 字段名表,12. 记录计算 (1) 记录统计 格式: COUNT 范围 FOR 条件 WHILE 条件 TO 变量名 说明:统计符合条件的记录数。无任选项,统计当前表的所有记录。 例如: SET TALK OFF &统计的过程不显示 USE RY!工资情况 COUNT TO n ? “人数”, n (2) 数据累加 格式: SUM 表达式表 TO 变量名表 | TO ARRAY 数组名 范围 FOR 条件 WHILE 条件 说明:累加符合条件的表达式表值。无表达式表项,累加所有数值型字段;无任选项,累加当前表的所有记录。,例如: SET TALK ON USE RY!工资情况 SUM SUM 技能工资, (岗位工资+浮动工资)*1.2 运行结果: (3) 数据求均值 格式: AVERAGE 表达式表 TO 变量名表 | TO ARRAY 数组名 范围 FOR 条件 WHILE 条件 说明:对符合条件的表达式表值求均值。无表达式表项,对所有数值型字段求均值;无任选项,当前表的所有记录求均值。 例如: USE RY!工资情况 SET TALK OFF AVERAGE 技能工资, (岗位工资+浮动工资)*1.2 TO JN, GWFD ? JN, GWFD,(4) 统计计算 CALCULATE 表达式表 TO 变量名表 | TO ARRAY 数组名 范围 FOR 条件 WHILE 条件 说明:该命令需计算的表达式表进行统计计算。 【例Ex_Cal】统计计算。 OPEN DATABASE RY USE工资情况 SET TALK ON CLEAR CALCULATE AVG(技能工资), MIN(技能工资), MAX(技能工资),STD(技能工资) 计算结果: 统计函数的功能如下: MIN(): 求最小值。 MAX(): 求最大值。 AVG(): 求均值。 STD(): 计算标准偏差。 另外,还有CNT()、NPV()等统计函数的功能请查手册。,(5) 数据汇总 TOTAL TO 表名 ON 分组字段名 FIELDS字段名表 范围 FOR 条件 WHILE 条件 说明:对当前表中数值字段进行汇总,汇总分组字段名值相同的汇总在一起,表名指定汇总的结果的存放表。FIELDS字段名表项为存放结果的表包含的字段,不选该项,则与当前表所有字段。 【例Ex_Total】汇总分组字段。 USE RY!工资情况 TOTAL ON LEFT(编号,2) TO MYGZ USE MYGZ BROWSE,13. 记录排序 格式:SORT TO表名 ON字段1 /A | /D /C ,字段2 /A | /D /C . ASCENDING | DESCENDING 范围 FOR 条件 WHILE 条件 FIELDS字段名表 | FIELDS LIKE 字段名框架 | FIELDS EXCEPT字段名框架 说明:按当前表中的字段1、字段2、进行排序,将排序结果放在表名指定的表中。包含多个排序字段,则先按第一个字段,在第一个字段的值相同时再按第二个字段排,以此类推。选/A(默认)升序,选/D降序。均未选/A和/D,则选ASCENDING整个升序,选DESCENDING 整个降序。 【例Ex_Sort】记录排序。 USE RY!基本情况 SORT TO MYGZ1 ON 职称, 工资/D USE MYGZ1 BROWSE,表记录操作 (1) 追加新记录 在表的末尾追加一条空记录,并使该记录变成当前记录。用户即可向该空记录中填入数据。 还有一个追加记录菜单项,其作用是将别的表(文件)中的记录加入当前表中。 (2) 转到记录 用于改变当前记录。 “第一个”记录、“最后一个”记录、“上一个”记录、“下一个”记录外, 选“记录号”项,就会出现一个小对话框让用户选择要转到的记录号。 选“定位记录”项,可按用户指定的条件进行记录定位。,2.3.1 通过菜单操作表,定位记录,2.3.1 通过菜单操作表,作用范围 All:在表的所有记录中定位 Next n:在当前记录向后的n条记录中定位。的值在后面的第二个框中指定。 Record n:在n号记录定位 Rest:从当前记录开始到文件的末尾。 在命名格式中用范围来表示。 FOR 条件 定位的条件。定位的条件的描述必须符合逻辑表达式的规则。选其后的“”按钮由系统帮助生成。 在命名格式中用FOR 条件来表示按这种方法定位记录。,2.3.1 通过菜单操作表,WHILE条件 它与For的区别是, 当在作用范围内只要遇到一条不符合条件的记录就不再向下定位,而For在作用范围内都要定位。举例来说,作用范围为All, 如For 编号=”01003”, 则只要表中存在这条记录, 则一定能定位到该记录。但如换成While编号=”01003”, 则一定查不到。 在命名格式中用WHILE 条件来表示按这种方法定位记录。 删除记录 用于删除表中不需要的记录。 VFP删除记录分两步: 这里的删除记录仅是在库中作删除标记, 作过删除标记的记录在“浏览”窗口最前面一个小栏会显示一个小黑方块。要使作过删除标记的记录不显示,可在命令窗口输入SET DELETE ON命令。要从表中彻底删除具有“删除标记”的记录,选“彻底删除”菜单项。 恢复记录 恢复作过删除标记的记录。也就是将具有删除标记的记录中符合恢复条件的记录的删除标记去掉。,2.3.1 通过菜单操作表,5. 替换字段数据,2.3.1 通过菜单操作表,6. 追加记录,2.3.2 命令方式操作表,2.3.2 命令方式操作表,【例Ex_Browse】浏览表记录。 USE RY!基本情况 BROWSE (见图2.9所示) USE,2.3.2 命令方式操作表,说明: 输入数据首先要菜单(按Ctrl+Y)或命令方式追加空记录,然后在空记录中填入数据,通用字段(照片)输入可用鼠标双击照片字段区域中的 “gen“,打开通用字段的编辑窗口,此时可以插入图像、波形声音、MIDI音乐、视频剪辑等多媒体数据。 插入图像数据有两种方法。 (1) 先激活通用字段的编辑窗口,选择“编辑”菜单中的“插入对象”打开“插入对象”对话框,选择对象类型为“BMP图像”单击“确定”按钮。 (2) 可先把要插入的图像数据在图像编辑程序中(如Windows的画图程序)复制到剪贴板上, 然后将图片数据粘贴进来。 单击窗口“关闭”按钮,退出编辑状态。此时可以看到字段中的“gen”变成了“Gen”。第一个字母大写表示通用字段中已包含内容。,2.3.2 命令方式操作表,2.3.2 命令方式操作表,说明:备注字段输入用鼠标双击字段中的“memo”,打开备注字段的编辑窗口,输完后单击该窗口的“关闭”按钮。此时,备注字段中的“memo”变为Memo”,表示备注字段中已包含内容。,2.3.2 命令方式操作表,2.3.2 命令方式操作表,2.3.2 命令方式操作表,2.3.2 命令方式操作表,2.3.2 命令方式操作表,2.3.2 命令方式操作表,图2.11 代码页,2.3.2 命令方式操作表,2.3.2 命令方式操作表,2.3.2 命令方式操作表,(5) 复制表记录 与此相反也可将当前数据表的记录复制出去,并转换成指定的文件格式。 格式: COPY TO 文件名 DATABASE 数据库名 NAME 表名 FIELDS 字段名表 | LIKE字段名描述框架 | EXCEPT 字段名描述框架 范围 FOR 条件 WHILE 条件 TYPE 文件格式 | DELIMITED WITH 限定符 AS 代码页 说明:复制的目的地可以是数据库或TYPE指定格式的文件,被复制出去的记录须指定的范围内符合FOR和WHILE指定的条件,复制出去的字段由FIELDS或LIKE或EXCEPT描述框架指定。DATABASE 数据库名 NAME 表名项表示复制得到的表放到的数据库同时给理起别名,2.3.2 命令方式操作表,(6) 复制表结构 COPY STRUCTURE TO 表名 FIELDS 字段名表 WITH CDX DATABASE 数据库名 NAME 表名 说明:该命令仅复制表结构,选WITH CDX,则同时复制复合索引。 【例Ex_CExcel】用EXCEL修改表数据。 OPEN DATABASE RY USE 基本情况 COPY STRUCTURE TO backup COPY TO JBQK.XLS TYPE XLS (用EXCEL修改JBQK.XLS) USE backup APPEND FROM JBQK.XLS TYPE XLS BROWSE USE,2.3.2 命令方式操作表,2.3.2 命令方式操作表,2.3.2 命令方式操作表,2.3.2 命令方式操作表,2.3.2 命令方式操作表,图2.12 汇总的结果,2.3.2 命令方式操作表,2.3.2 命令方式操作表,图2.13 BROWSE窗口,2.4 表的索引,表中数据记录在表文件中的存储顺序称为物理顺序,记录号就是物理顺序号。在表中查找满足某个条件的记录时,必须从头开始在整个表记录中进行查找。对于经常查找的数据项,如果事先进行排序并将排序结果和对应物理顺序的记录号的对照表保存到相应的文件。 在对这个数据项查找时仅需在索引文件中进行,因为索引文件是按该数据项的大小顺序存放,所以很快就能定位。然后,系统通过索引文件中对照表就可得到该数据项在表文件中的实现位置,这就是索引技术,这个过程称为索引。 索引的数据项是经常进行查询的字段或由字段组成的表达式,称为索引关键字。一个表可建多个索引,为了区分它们,每一个索引都要起一个名称,称为索引标识。 在VFP中,如果一个索引存放在一个索引文件中,这种索引文件为独立索引文件,扩展名为IDX。如果若干个索引存放在同一个索引文件中,这种索引文件为复合索引文件,扩展名为CDX。 复合索引文件又分为结构化复合索引和非结构化复合索引,结构化复合索引文件的主文件名与表的主文件名相同。,2.4 表的索引,VFP中,索引可分为下列几种类型: (1) 主索引 作为主索引的索引关键字,其表中所有记录的值必须唯一。只有数据库表才可建立主索引,一个数据库表只能建立一个主索引。 (2) 候选索引 作为候选索引的索引关键字,其表中所有记录的值必须唯一。一个表可以建立多个候选索引,数据库表和自由表均可建立候选索引。 (3) 普通索引 作为普通索引的索引关键字,其表中记录的值可重复。一个表可以建立多个普通索引,数据库表和自由表均可建立普通索引。 (4) 唯一索引 作为唯一索引的索引关键字,其表中记录的值可重复。但在索引文件中仅保存重复值记录的第一个。一个表可以建立多个唯一索引,数据库表和自由表均可建立唯一索引。,2.4 表的索引,表设计器建立索引 打开表设计器选“索引”页。 图2.14 表设计器“索引”页,2.4 表的索引,一行描述一个索引,一个索引描述包含下列几项: (1) 排序:指定索引中的排列顺序。向上箭头为从小到大排,向下箭头为从大到小排。排序时根据表达式(索引关键字)值的类型确定大小: l 数值型:按其数值论大小。 l 字符型:西文字符按其ASCII值论大小;汉字按其内码论大小,汉字内码从小到大的顺序一般与国标GB2312.80的排列顺序一致。在国标GB2312.80中的汉字, 常用的一级汉字按汉语拼音从前到后排列, 排在一级汉字后面的二级汉字按部首边旁笔画多少排列。也就是说就汉字内码而言,“陈”小于“王”。汉字与ASCII码比较,汉字大于ASCII码。 l 日期型:按其日期论大小,在当前的日期之前的越早,日期值越小。 l 逻辑型:假(F)小于真(T)。 (2) 索引名:索引标识名,即引用该索引的名字。 (3) 类型:可选上述介绍的四种索引类型之一。注意,只可在一行中选择主索引,因为一个数据库表只能建一个主索引。,2.4 表的索引,(4) 表达式:索引关键字。多个字段组合时要求描述的表达式要符合VFP表达式规则。注意,备注型、通用型不能作为索引关键字。 (5) 筛选:索引中包含符合条件记录的条件表达式。筛选条件的描述必须符合VFP逻辑表达式的规则。不包含筛选,则对所有记录进行索引。 一个表可建多个索引,用多行表示。索引在行中顺序就是后面引用索引的序号。另外,在这里建立的索引一定是结构化的复合索引,所以建立索引后,系统生成一个主文件名相同、扩展名为CDX的文件。 2. 命令建立和删除索引文件 可用下列命令建立索引: 格式: INDEX ON 索引表达式 TAG索引标识名OF CDX文件名 | TO 索引文件名 FOR 条件 ASCENDING | DESCENDING UNIQE | CANDIDATE,2.4 表的索引,ON 索引表达式:指定索引关键字。 TAG索引标识名: 指定索引标识名。选OF CDX文件名, 表示创建非结构化复合索引, OF后指定的是存放该索引的文件名。不选OF CDX文件名,表示创建结构化复合索引。选TO 索引文件名,则创建独立的索引文件。 FOR条件:指定索引过滤条件。 ASCENDING:索引顺序为升序。 DESCENDING:索引顺序为降序。 UNIQE:指定唯一索引。 CANDIDATE:指定候选索引。 已经建立的复合索引可用下列命令删除: 格式1:DELETE TAG 索引标识名 OF CDX文件名 格式2:DELETE TAG ALL OF CDX文件名 说明:DELETE TAG命令删除复合索引文件中的索引, DELETE TAG ALL命令删除复合索引文件中的所有索引。用DELETE TAG命令删除了所有的复合索引后, 复合索引文件自动被删除。 对于结构化复合索引,当在表设计器中删除所有索引后,结构化复合索引文件也就不存在了。 独立索引文件用删除文件的方法删除。,2.4 表的索引,3. 打开索引 在打开表的同时自动地打开结构化复合索引。要使索引产生作用,必须指定主控索引。主控索引就是控制当前显示顺序的索引。例如,执行下列命令后, 浏览窗口看到的记录顺序仍是物理顺序。 USE 基本情况 BROWSE 要指定主控索引,可有下列几种方法: (1) 打开表的同时打开索引并指定主控索引 格式:USE 数据库名!表名 | ? INDEX 索引文件表 | ? ORDER 顺序号| TAG 索引标识名 OF CDX文件名 ASCENDING | DESCENDING 其中, INDEX项用于指定打开独立索引文件名。ORDER指定主控索引,顺序号对于复合索引是对应加入复合索引文件的先后顺序索引。结构复合索引就是表设计器在“索引页”中看到的对应索引的先后顺序。对于独立索引,就是INDEX 索引文件表项中的排列顺序,略顺序号,则索引文件表中的第一个作为主控索引。,2.4 表的索引,略ORDER项, 则在没有INDEX项时, 系统虽然也打开了复合索引, 但确没有指定主控索引。显示的顺序仍为物理顺序。 例如: USE 基本情况 ORDER TAG 工资 BROWSE & 窗口记录按工资从大到小排列 (2) 打开表后打开索引 格式: SET INDEX TO INDEX 索引文件表 | ? | TAG 索引标识名 OF CDX文件名 ASCENDING | DESCENDING ORDER 顺序号 | 索引文件名 ADDITIVE 【例Ex_SIndex】打开表后打开索引。 USE 基本情况 BROWSE & 显示物理顺序 SET ORDER TO TAG姓别 BROWSE & 显示按姓名排列, 姓名相同再按性别 SET ORDER TO 1 BROWSE & 按编号顺序显示 USE,2.4 表的索引,4. 索引查找 建立索引的目的是为了进行快速查找。快速查找命令如下: 格式:SEEK 表达式 ORDER 顺序号 | 索引文件名 | TAG 索引标识名 OF CDX文件名 ASCENDING | DESCENDING 说明:SEEK命令按表达式的值进行查找。在索引查找前应打开相应的表和索引,查找内容就是与其后指定的索引标识的关键字匹配的内容。如SEEK命令无任选项, 则此前必须指定主控索引, SEEK查找的是与主控索引关键字相匹配的第一个位置。 如果SEEK查找到相匹配的内容, 则FOUND()为.T., EOF()为.F.。如找不到,则FOUND()为.F., EOF()为.T.。 SEEK命令只能查找相匹配的第一个记录, 如有相同内容的值, 则一定是紧跟在其后。 系统的SEEK()函数功能相当于执行SEEK命令后再将FOUND()值返回。 【例Ex_Seek】索引查找。 USE 基本情况 ORDER 姓别 SEEK “杨 华” DISPLAY & 显示杨华记录 USE,2.5 工作区,1. 工作区的概念 工作区就是表可打开的区域。每个工作区有一个编号,在工作区中打开的表都有一个别名。一个工作区任何时候只能打开一个表,如果工作区中已经打开了一个表,则在该工作区中打开另一个表时先前打开的表被自动关闭。系统启动后用户如果没有选择工作区,则默认的当前工作区为号工作区。可以先选择工作区, 然后打开表, 也可以在打开表的同时选择工作区。 格式:USE 数据库名!表名 IN工作区 在工作区中打开的表的文件名就是表的别名, 但也可以在打开表的同时命名表别名。在工作区中打开了表后, 表的别名可用于选择工作区。 格式:USE 数据库名!表名 ALIAS 别名 2. 工作区选择 格式:SELECT 别名 | 工作区号 工作区号可以是A-J,W11-W255数值。如果工作区号为0, 则系统自动选择一个当前未用的最小工作区。,2.5 工作区,【例Ex_Sele】工作区选择。 SELECT A USE基本情况ALIAS JB SELECT B USE工资情况ALIAS GZ SELECT JB BROWSE SELECT 工资情况 BROWSE CLOSE DATABASES,2.5 工作区,有很多命令中包含选择工作区的选项,例如: l USE 数据库名.表名 IN 别名 | 工作区号 l APPEND BLANK 别名 | 工作区号 l DELETE 范围 FOR 条件 WHILE 条件 别名 | 工作区号 l RECALL 范围 FOR 条件 WHILE 条件 别名 | 工作区号 l SEEK 表达式 ORDER 顺序号 | 索引文件名 | TAG 索引标识名 OF CDX文件名 ASCENDING | DESCENDING 别名 | 工作区号 它们的差别是: 命令中包含选择工作区的选项,命令执行后当前工作区并没有变化。,2.6表的关系,VFP中, 每张表既相互独立, 同时互相之间又存在联系。 表与表之间有下列关系。 (1) 一对一关系 有两张表A表和B表, A表中的一条记录在B表中有一条记录与之对应。反过来,B表中的一条记录在A表中仅有一条记录与之对应。具有这种关系的两张表存在一对一的关系。 (2) 一对多关系 有两张表A表和B表, A表中的一条记录在B表中有多条记录与之对应。反过来,B表中的一条记录在A表中仅有一条记录与之对应。具有这种关系的两张表存在一对多的关系。 (3) 多对多关系 有两张表A表和B表, A表中的一条记录在B表中有多条记录与之对应。反过来,B表中的一条记录在A表中也有多条记录与之对应。但是A表和B表之间的这种多对多关系必须通过中间表C表来连接方可实现。 表之间的关系可通过界面和命令两种方式建立。表之间可建立永久关系,也可建立临时关系。但仅有数据库表可建立永久关系。在建立表之间的关系时,被关联的表为子表,发起关联的表为主表。,2.6.1永久关系,打开数据库设计器,该数据库中的数据库表就会被可视化的显示出来。数据库中的可视化数据库表除了显示字段名外,还显示它的结构化复合索引的索引标识名。 索引是建立永久关系的前提。下面以在数据库设计器中创建人员信息数据库的永久关系为例加以说明。 基本情况表与工资情况表之间的一对一关系:拖动基本情况表的“编号”索引标识到工资情况表的“编号”索引上,这时在数据库设计器的基本情况表与工资情况表的编号标识上就会出现一条连线,表示在它们之间建立了一对一的关系。 部门工资表分别与基本情况表和工资情况表之间的一对多关系:先拖动部门工资表的“部门编号”索引标识到基本情况表“部门编号”(索引关键字为LEFT(编号,2)索引上,再拖动部门工资表的“部门编号”索引标识到工资情况表“部门编号”索引(索引关键字为LEFT(编号,2)上。,2.6.1永久关系,在数据库设计器中部门工资表与基本情况表、部门工资表与工资情况表的部门编号标识上分别出现一条连线。连线与一对一关系不同的是,一对一关系两头均为单线,而一对多关系在基本情况和工资情况这一头连线出现了三个分叉线,表示在它们之间建立了一对多关系,三个分叉线这一头对应的表为多方。 图2.15 数据库设计器建立永久关系,2.6.1永久关系,已经建立的永久关系可进行编辑。先选择要编辑关系的连线,按右键在快捷菜单中选“编辑关系”。 在建立关系的表中选择已经建立的索引标识。 要删除已经建立的永久关系。先选择要编辑关系的连线,按Delete键或按右键在快捷菜单中选“删除关系”。 图2.16 编辑关系对话框,2.6.2 临时关系,(1) 用命令创建临时关系 格式: SET RELATION TO 字段表达式 INTO 工作区 | 表别名 ADDITIVE 在当前表中, 以字段表达式与INTO指定的工作区中的主控索引建立关联。 (2) 在数据环境中创建临时关系 用表单设计界面时,可在表单中加入数据环境对象。在数据环境中可可视化的建立临时关系。先向数据环境中加入有关的数据库表或临时表。再在数据环境中建立表之间的临时关系。建立临时关系的方法还可以在主表的字段与子表的主控索引之间建立。 表单启动时,数据环境中的临时关系被建立。表单释放时,数据环境中的临时关系被撤消。 在用表单设计界面时可在表单中加入数据环境对象, 系统将永久关系预置为临时关系。用户可根据情况修改成自已所需要的临时关系。,2.6.2 临时关系,【例Ex_ Relation】人员信息数据库三表联动流览。 SET DEFAULT TO D:RY_MIS OPEN DATABASE RY USE 基本情况 IN 0 ORDER 1 USE 工资情况 IN 0 ORDER 1 USE 部门工资 IN 0 ORDER 1 SELECT 基本情况 SET RELATION TO 编号 INTO 工资情况 SET RELATION TO LEFT(编号,2) INTO 部门工资 ADDITIVE BROWSE FIELD 基本情况.姓名,部门工资.部门名称,工资情况.实发工资 CLOSE DATABASE (3) 解除临时关系 解除临时关系命令如下: 格式1: SET RELATION TO 格式2: SET RELATION OFF 使用此命令前先要进入建立关联时主表所在的工作区。另外,在关闭数据库和关闭表时表临时关系同时解除。,2.7.1数据库的属性,数据库是一个容器,在数据库容器中存放数据库对象的信息,这些对象包括数据表、结构化复合索引、永久关系、存储过程等。数据库设计器中可可视化的显示有关的对象。,2.7.1数据库的属性,要操作数据库,可选择主菜单中“数据库”中的菜单项,或数据库设计器的工具栏进行。要改变当前数据库设计器中显示的对象,只要选数据库的“属性”项。 要操作哪一个对象,只要单击该对象,然后按右键,然后选择相应的操作菜单。,2.7.2数据库表的属性,数据库表的字段属性 在表设计器设计表结构时, 如果是数据库表则在字段名列表的下方还有若干项, 用于控制字段的属性。例如,产品销售数据库的产品销售表如图所示。,2.7.2数据库表的属性,字段的属性包含下列几个方面: 字段的显示属性 格式:控制字段在浏览窗口、表单、报表等显示时大小写和样式。,字段的显示属性格式字符,2.7.2数据库表的属性,输入掩码:控制向字段输入数据的格式。 标题: 浏览表时字段显示列标题,没有标题则用字段名。,字段的显示属性掩码字符,2.7.2数据库表的属性,字段有效性 规则: 指定字段数据的有效范围。 信息:当企图向字段输入不符合“规则”的数据时,显示给用户的提示内容。 默认值:在向表中添加记录而未向该字段输入数据前,系统向该字段预置的值。 字段注释: 对本字段的说明。 匹配字段类型到类 将字段与用户定义的类库中的类联系起来。,2.7.2数据库表的属性,数据库表的记录属性 字段属性用于控制字段的输入和显示, 此外系统还可通过数据库表的记录属性对数据库表的记录数据进行控制。在表设计器设计表结构时, 选“表”页即可设置数据库表的记录属性。,2.7.2数据库表的属性,记录有效性 规则: 指定数据记录的有效条件。 信息:当不符合记录有效性“规则”时,显示给用户的提示内容。 触发器 触发器是系统提供的记录级事件。事件触发时可执行的条件表达式或用户自定义函数在相应的触发器框中设定。函数返回值为.T., 操作被认可, 否则操作将被拒绝。 插入触发器:当向该表插入或追加记录时触发, 执行插入触发器框中指定的条件表达式或用户自定义函数。 格式:CREATE TRIGGER ON 表名 FOR INSERT AS 触发条件表达式 更新触发器:当修改表记录时产生。执行更新触发器框中指定的条件表达式或用户自定义函数。 格式:CREATE TRIGGER ON 表名 FOR UPDATE AS 触发条件表达式,2.7.2数据库表的属性,删除触发器:当删除表记录时产生。执行删除触发器框中 指定的条件表达式或用户自定义函数。 格式:CREATE TRIGGER ON 表名 FOR DETELE AS 触发 条件表达式 例如: OPEN DATABASE RY CREATE TRIGGER ON 基本情况 FOR UPDATE AS UF_UPDATE() 用户可在用户自定义函数UF_UPDATE中按排判别允许更新 记录的程序。条件满足函数返回真(.T.), 否则返回假(.F.)。 已经建立的触发器用下列命令删除。 格式:DELETE TRIGGER ON 表名 FOR INSET | UPDATE | DELETE,2.7.2数据库表的属性,表名 表名是数据库表在打开和操作时的名称,也可认为是表的别名。 例如, 我们将上述工资表的表名命名为GZ,这样: OPEN DATABASE RY USE GZ 表注释 对该数据库表的附加说明。,2.7.2数据库表的属性,命令查看和设置数据库的属性 查看数据库的属性 格式:DBGETPROP(名称, 类型, 属性) 设置数据库的属性 格式:DBSETPROP(名称, 类型, 属性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论