1 / 53

第 4 章 表与数据库的基本操作

第 4 章 表与数据库的基本操作. [ 主要内容 ] 表的基本操作和索引;数据库和数据库表的基本操作;多表操作及表的常用操作命令。 [ 教学重点 ] 数据库文件及其中的数据库表文件之间的关系;数据库表及自由表;记录指针的概念及定位;表的操作命令;索引及索引文件的建立;字段及记录级约束规则的概念与设置;数据完整性的概念及完整性规则的定义。 [ 教学难点 ] 字段及记录级约束规则的概念与设置;触发器的概念与设置;索引、索引文件的概念与建立,索引文件的打开与主控索引的设置;数据完整性的概念及完整性规则的定义;多表操作特别是关联操作。 [ 教学要求 ]

lula
Download Presentation

第 4 章 表与数据库的基本操作

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第4章 表与数据库的基本操作

  2. [主要内容] 表的基本操作和索引;数据库和数据库表的基本操作;多表操作及表的常用操作命令。 [教学重点] 数据库文件及其中的数据库表文件之间的关系;数据库表及自由表;记录指针的概念及定位;表的操作命令;索引及索引文件的建立;字段及记录级约束规则的概念与设置;数据完整性的概念及完整性规则的定义。 [教学难点] 字段及记录级约束规则的概念与设置;触发器的概念与设置;索引、索引文件的概念与建立,索引文件的打开与主控索引的设置;数据完整性的概念及完整性规则的定义;多表操作特别是关联操作。 [教学要求] 掌握数据库和表的概念、构成、建立、打开、关闭的方法,数据库表和自由表的区别及相互转化,表的基本操作命令,表的排序与索引及对表的统计命令,数据完整性规则的概念与定义,多表操作的概念及操作的方法。

  3. 在Visual FoxPro中,数据存储在表(Table)中,表是数据库中最基本的文件。数据库系统的大部分操作与命令都离不开对表中数据的处理。而数据库是包含有表、索引、视图、规则、关系和触发器等信息的存储容器。 在本章中,我们将学习如何创建表和数据库,如何使用表设计器和数据库设计器,如何设置数据库表的属性和表间关系,使它们更有效地协同工作。另外还要介绍表与数据库的操作命令,为下一步的程序设计奠定基础。

  4. 4.1 表的基本操作 由于VFP采用关系型数据模型,故能方便地将现实中的二维表以关系“表(table)”的形式存储或处理。在关系表中,表中的每一列称为表的字段,表的每一行称为表的记录。 要将现实中的一张二维表变成数据库系统能够处理的表,就要利用DBMS所提供的功能,对表进行定义和创建。

  5. 4.1.1 表的设计过程 在Visual FoxPro数据库管理系统中,设计(或定义)一个表分为三个步骤: 1.定义表名 定义表名就是给表文件命名,表名是表文件的唯一标识。表名可以用英文或中文。 2.定义表的字段属性 表的名称和表的字段属性构成了表的结构。定义表的字段属性包括定义字段名、字段类型、字段宽度和小数位等,还要考虑是否建立索引。 3.向表中输入数据 表结构定义好后,表中并没有记录,这时的表称为空表。向表输入数据就是为表中记录的每一个字段赋值。

  6. 4.1.2 表的创建 使用Visual FoxPro提供的”表设计器”工具,可完成表的创建。 1.自由表和数据库表 VFP中有两种类型的表:属于数据库的表和自由表。 自由表:是一个独立的表,它独立存在于任何数据库 之外,不属于任何数据库。 数据库表:依赖于数据库的表,属于某个数据库。具有许多自由表没有的属性。 注:1)自由表和数据库表可以相互转换; 2)一个表不能同时属于一个以上的数据库。

  7. 2.表结构的创建 (1)打开项目管理器,选择”数据”选项卡中的自由表;或数据库中的数据库表(图1) ,按“新建”按钮,之后(图2)按“新建表”按钮。 (2)在创建对话框中输入表名,按“保存”按钮。 (3)在“表设计器”窗口(图3)中依次输入各字段的字段名、类型、宽度或小数位等属性。 (4)字段属性设定完成后单击“确定”按钮,即出现如图4所示的对话框,询问现在是否要输入数据。

  8. 图1 在项目管理器中可新建数据库 表和自由表 图2 新建表对话框

  9. 图4 输入记录询问对话框 图3 用表设计器定义Student表的字段属性

  10. 4.1.3 表记录的输入 1.创建表结构后立即输入数据 进入表“编辑”窗口,如图5所示。此时窗口中各字段均按表结构字段顺序列出,可逐个记录地输入各字段的内容。 图5 在表的”编辑”窗口中追加记录

  11. 2.备注型字段和通用型字段的输入 当编辑备注型(memo)字段时,双击它或按Ctrl+ Home键就可进入memo字段的输入窗口,输入或修改完成后,单击窗口上的关闭按钮或按”Ctrl+ W”保存并关闭窗口。如不想保存,则按Esc键或按“Ctrl+ Q”退出。   进入通用型(gen)字段与备注型字段的方法相同。进入通用型字段编辑窗口后,打开“编辑”菜单,选择“插入对象”选项,进入插入对象窗口。选择“新建”可以创建多种格式的图像。选择“由文件创建”,可在“文件”框中输入对象的文件名。

  12. 4.1.4 表结构的修改 修改表结构主要是增加或删除字段、修改字段的类型或宽度等。 修改表结构的方法是在“项目管理器”中选择要修改的表名,然后单击“修改”按钮,进入到“表设计器”窗口中对表进行修改。当修改完成后,单击“表设计器”的“确定”按钮,系统提示“结构更改为永久性更改”,点击“是”,即完成修改表结构的操作。

  13. 4.1.5 表中数据的浏览和编辑 用户可以用表“浏览”和表“编辑”两种操作方式对表中的数据进行显示和修改。 选择表,按”浏览”按钮,可在表“浏览”窗口中查看表中的数据。若想编辑数据,选择”显示”菜单中的“编辑”选项,即进入表的编辑状态。 在“浏览”窗口的左下角有一个小黑竖条(称为窗口拆分条),把它拖到一个适当的位置,就可以把“浏览”窗口拆分成两个窗口,将其改变成有“浏览”和“编辑”两种方式显示的窗口。在这两种显示窗口中,如果当前窗口中光标在不同的记录上移动时,另一个窗口中的显示内容也与其同步。

  14. 4.1.6 表中记录的定位 1、在浏览窗口中直接定位 2、打开浏览窗口,利用菜单命令定位。 “表”/“转到记录”

  15. 4.1.7 删除表中的数据 1.逻辑删除表中的记录 逻辑删除就是给记录加一个删除标记。打开要进行逻辑删除操作的表,进入表“浏览”窗口,把鼠标对准删除标记栏,单击左键,这时被逻辑删除的记录就加上了删除标记. 对记录加逻辑删除标记

  16. 2.恢复表中逻辑删除的记录 对加上逻辑删除标记的记录,可对其进行恢复记录的操作。在表“浏览”窗口,把鼠标移到要进行恢复的记录上,对准其删除标记栏,单击左键除去删除标记。 3.物理删除表中的记录 物理删除就是把无效的记录彻底从磁盘中删除掉。打开表“浏览”窗口,先对要删除的记录做逻辑删除,然后选择“表”菜单,再选择“彻底删除”。在“系统”窗口,当选择“是”时,数据表中所有带有删除标记的记录将被彻底删除掉。

  17. 4.2 表的索引 表的索引与书目的索引相类似。 书目的索引:是一份关键词对页码的列表并按关键词排序,可帮助用户快速地找到对应的页。 表的索引:是索引表达式与记录号的一种对应关系,并可按索引表达式排序查找相应的记录。其中索引表达式可以是表中的一个字段,也可以是由多个字段组成的字段表达式。

  18. 4.2.1 索引文件的类型 VFP有两种基本类型的索引文件:复合索引文件或独立索引文件。 复合索引文件是指包含一个或多个索引关键字的索引文件,以.CDX作为文件扩展名。复合索引文件又可分为结构化复合索引文件和为非结构化复合索引文件。当复合索引文件使用与表文件名相同的名称时,称为结构化复合索引文件,否则称为非结构化复合索引。结构化复合索引文件的好处是,不论用何种方式打开一个表,VFP自动打开该表的结构化索引.CDX文件,以反映表的更新。 独立索引文件的文件扩展名为.IDX,它存放了单独关键字表达式的索引信息。独立索引文件的名称由用户定义。一个表文件可以创建任意多个独立索引文件。在对一个已创建有独立索引文件的表进行数据操作时,若未指定打开相应的独立索引文件,则该索引将不会准确地反映表中内容的更新。 在使用索引文件时,建议最好采用结构化的复合索引文件,这样会给用户带来很多方便。

  19. 4.2.2 索引的类型 1、主索引 主索引的索引关键字必须是表的主码,即不允许主索引值出现重复。 一个表只能建立一个主索引。主索引只适用于数据库表。 2、候选索引 候选索引也要求必须用表的主码来建立,即要求候选索引值不能重复。一个表可以建立多个候选索引。 3、普通索引 普通索引允许索引值重复。一个表可以建立多个普通索引。 4、唯一索引 唯一索引也允许索引值重复,但索引值相同的记录只有第一个是有效的。一个表可以建立多个唯一索引。

  20. 4.2.3 在表设计器中创建索引 索引名:用来与其他索引作区别的标志。类似于字段名。 一般是根据表达式中用到的字段名来确定。 类 型:选择索引的类型。 表达式:即索引关键字表达式,是建立索引的依据。由 一个字段或多个字段构成。 筛 选:用来限定参与索引的记录。

  21. 4.2.4索引关键字表达式的确定 1、根据一个字段建立索引 这种索引的关键字表达式很简单,直接由该字段名构成。如:奖学金、专业、出生日期等。 2、根据多个字段建立索引 这种相对比较复杂,索引关键字表达式要由多个字段名构成一个字符型的表达式。如:先按照“专业”字段的升序索引,当“专业”字段的值相同时,再按照“学号”的升序索引,那么该索引的关键字表达式应该是 ,专业+学号( “专业”和“学号”都是字符型);若当“专业”字段的值相同时,再按“出生日期”的升序索引,那么该索引的关键字表达式就应该是,专业+dtoc(出生日期)(“专业”和“出生日期”的类型不一样,应把“出生日期”转换为字符型)。

  22. 4.2.5 筛选记录 用来限定参与索引的记录,即控制哪些记录可以包含在索引中 4.2.6 查看索引结果 首先打开表的浏览窗口,然后选择“表”/“属性”,在“索引顺序”框中,选择要用索引,最后“确定”。

  23. 4.3 数据库的基本操作 VFP数据库提供了许多功能:存储一系列的表或视图;设置属性和数据验证规则;在表间建立关系;多表关联协同工作等,使数据库中的数据被充分地利用。

  24. 4.3.1 创建数据库 1、项目管理器 2、“文件”/“新建” 3、常用工具栏中的“新建”工具按钮 4、命令 注:利用项目管理器创建的数据库在项目文件;而利用后三种方法创建的数据库单独存在于磁盘上,不属于任何项目文件。

  25. 添加表 新建表 移去表 新的远程视图 新的本地视图 修改表 连接 编辑存储过程 浏览表 4.3.2 数据库设计器 新建数据库后,系统自动进入“数据库设计器”。“数据库设计器”是VFP创建、修改、管理数据库的一个工具,可用来管理数据库中的表、关系和视图等。

  26. 4.3.3 在数据库中加入、移去、查找表 1.向数据库添加数据表 单击“数据库设计器”工具栏的“添加表”按钮,在“打开”窗口中,选择要添加的表。 2. 向数据库中添加新表 单击“数据库设计器”工具栏的“新建表”按钮 ,进入“创建”窗口。 3.从数据库中移去表 选定要移出的表,单击“数据库设计器”工具栏的“移去表”按钮,在对话框中选择“移去”。

  27. 4.3.4 创建数据库表间的关系 1.什么是永久关系 在数据库表之间建立的关系被作为数据库的一部分保存了起来,所以称为永久关系。 在Visual FoxPro中建立的关系分为两种类型:一对一关系和一对多关系。 2.建立表间的一对一关系 建立两个表之间的“一对一”关系,首先,要使两个表都具有同一属性的字段,并且要求两个表中的同一属性的字段值是一对一的关系。然后,定义其中一个表中的字段为主索引字段,定义另一个表中与其同名字段的索引为主索引或候选索引。

  28. 3.在表间建立一对多关系 建立两个表之间的“一对多”关系,首先,要使两个表都具有相同属性的字段,并且要求两个表中的相同属性的字段值有一对多的关系。一对多关系中的“一方”称为父表,“多方”则称为子表。定义父表中关键字段为主索引字段或候选索引(其字段值是唯一的,作为“一对多”关系中的一方),子表中与其同名字段的索引应是普通索引字段(字段值是重复的,作为”一对多”关系中的多方)。 建立永久关系的方法: 1.两表必须在同一数据库中并且具有公共属性。 2.两表分别按公共属性建立了相应的索引 。 3.在数据库设计器中使用鼠标拖拉连线。

  29. 4.编辑表间的关系   表间的关系创建后还可以编辑它。单击关系连线,连线将会变粗,按Delete键可删除该关系。双击表间的关系线显示“编辑关系”对话框,可进行“参照完整性”设置。

  30. 4.4 数据库表设计器的基本操作 当选择一个数据库表打开的表设计器就是数据库表设计器,它与自由表的表设计器是有较大区别的,在数据库表设计器中能够完成一些在自由表设计器中所不能进行的操作,这些操作给数据库表增加了许多新的属性。这些属性将作为数据库表的一部分保存起来,当表从数据库中移去后,这些属性当然也就不再存在了。 数据库表设计器包括字段、索引和表三个选项卡。

  31. 4.4.1 字段选项卡中表属性的设置 1.设置字段有效性 字段有效性设置包括如下内容: 规则:指定实施数据字段有效性检查的规则; 消息:指定当输入违反字段有效性规则时,显示的错误信息。 默认值:指定字段的默认值。 2.设置显示格式 显示设置内容包括: 格式:指定表达式,使得在“浏览”窗口、表单或报表中,确定字段显示时的大小写、字体大小和样式。 输入掩码:指定字段中输入数值的格式。 标题:指定在“浏览”窗口、表单或报表中代表字段的标签。表单或报表中的属性设置可覆盖此设置。 3.设置表中字段的注释 为了提高数据表的使用效率及它的共享性,在建立数据表结构时,可以对字段加以注释,提醒自己或其他用户,清楚地掌握字段的属性、意义及特殊用途等。

  32. 4.4.2 表选项卡 “数据库表设计器”中的“表”选项卡中包含了一些表的信息,设置记录有效性规则的区域,触发器和注释。而在自由表中没有这些设置。 规则:指定实施数据记录级有效性检查的规则。 信息:指定当输入不符合记录级有效性规则的值时,显示的错误信息。 触发器:用于指定更新、插入、删除的规则。例如更新触发器指定一个规则,每次更新表中记录时,触发该规则。单击对话按钮显示“表达式生成器”。 表注释:用于提供键入表注释的区域。在“项目管理器”中选定一个表时,将在“项目管理器”的底部把键入的文本作为该表注释显示。

  33. 4.5 多表操作 1. 工作区的概念 工作区是一个内存的独立存储区域,一个工作区只能打开一个表,要使用多个表,就得使用多个工作区。 2. 利用数据工作期建立表的关联 多表操作与工作区选择离不开“数据工作期” , “数据工作期”窗口可反映出当前使用的工作区中的表、表的索引和关系等状态。

  34. 选择数据库和表 以建立Student表和Grade表的一对多临时关系为例,说明如何使用”数据工作期”建立多表间的关联。 先选择“窗口”菜单中的“数据工作期”选项,弹出“数据工作期”窗口。选择数据库和数据库的表。 在“数据工作期”窗口中选择要建立关系的父表Student.dbf,按“关系”按钮,然后选择要关联的表Grade.dbf,先打开”设置索引顺序”对话框,又弹出“表达式生成器”窗口 输入关联字段。 确定子表中的关键字

  35. 图1建立两表的临时关系 此时数据工作期窗口将出现如图1。表明Student表与Grade表按“学号”字段建立了关系。当两个表建立关系后,就会使得子表Grade的记录指针自动随着父表的记录指针而移动,如图2。 图2 在父表(student)与子表(Grade)间建立关联

  36. 4.6 表的操作命令 在VFP中,对数据的操作既可用菜单方式也可用命令方式,菜单方式简便,但只能做一些常用操作,命令方式具有快捷的特点。

  37. 4.6.1 Visual FoxPro命令的一般结构 <命令动词>[<范围>] [[<FIELDS> <字段名表>] [FOR<条件>][WHILE<条件>] [OFF] [TO PRINT] 1.命令动词 表示命令执行的操作,是命令中必不可少的部分。如:USE,LIST,DISPLAY,COPY等。 2.常使用的短语 (1)<范围>:表示记录的执行范围,可以是下面几项其中之一: ALL 表示全部记录; NEXT<n> 表示从当前记录开始的以下n条记录; RECORD<n> 表示第n号记录; REST 表示从当前记录到最后一条记录。 (2)FIELDS<字段名表> 用于指定参加操作的字段,多个字段时用逗号分隔。

  38. (3)FOR<条件>:对满足条件的记录进行操作。 WHILE<条件>:当遇到第一个不满足条件的记录时,停止命令执行。 (4) TO PRINT:表示操作结果输出到打印机。 (5) OFF:不显示记录号。 4.注释 在书写命令格式时,还用到一些符号,这些符号只是在书写时使用,实际操作时并不输入。这些符号以及它们所表示的意义如下。 < >:表示其中内容为必选项; [ ]:表示其中内容为可选项; | :表示其两侧项目任选一项;

  39. 4.6.2 表操作命令 1.创建表文件结构 格式:CREATE <表文件名> 功能:建立指定的表文件结构。 说明: 默认后缀.DBF可省略 2. 表的打开或关闭 命令格式:USE [<文件名>] 功能:在当前工作区中打开或关闭表,表打开时,若该表有备注型或通用型字段,将自动打开同名的.FPT文件。 说明: 1.<文件名>表示被打开的表的名字;缺省<文件名>表示关闭当前工作区的表。 2.打开一个表时,该工作区中原来打开的表自动关闭 3.表刚打开时,记录指针指向第一个记录。 4.表操作结束后应及时关闭,以便将内存的数据保存到表中。

  40. 4.6.3 表数据输入命令 1.追加新记录 格式:APPEND [BLANK] 功能:向表中增添新记录 说明: 使用BLANK子句能在表尾追加一条空白记录,留待以后填入数据。若缺省则出现记录的编辑窗口,等待用户输入数据。 2.插入新记录 格式:INSERT [BLANK] [BEFORE] 功能:在指定的位置插入新记录。 说明: 1.使用BEFORE子句能在当前记录之前插入新记录,缺省该子句则在当前记录之后插入记录。 2.使用BLANK子句在当前记录之后插入一条空白记录,缺省时则出现编辑窗口,等待用户输入记录。

  41. 4.6.4 表记录显示命令 1.表记录连续显示 格式:LIST [FIELDS] <字段名表>][范围][FOR <条件>]|[WHILE<条件>][OFF][TO PRINT [PROMPT]|TO 文件<文件>] 说明: 1.<范围> 若不选,则表示所有记录;否则仅显示指定范围内的记录。 2.<字段表> 若不选,则显示所有字段,但不包括备注型字段;否则仅按指定字段的内容和顺序显示。备注型字段的显示必须指定字段名。 3.FOR <条件> 若选择,显示所有符合条件的记录。 4.WHILE <条件> 若选择,从当前记录开始显示符合条件的记录,遇到条件不成立的记录就停止显示,且指针指向该记录。

  42. 2.表记录分屏显示 格式:DISPLAY [<范围>] [[FIELDS] <字段表>] [FOR|WHILE <条件>][OFF] [TO PRINT] 功能:分屏显示当前数据库中的记录内容。 说明:DISPLAY与LIST命令的区别: DISPLAY命令不选<范围>时,仅显示当前记录,而LIST命令则显示所有记录。 DISPLAY命令满屏时停顿,而LIST命令则不停顿。其他可选项的含义同LIST命令。 例:USE TEACHER DISPLAY &&仅显示当前记录1,与LIST RECO RECN()等效 DISPLAY ALL &&只有选择范围ALL时才显示所有记录,与LIST等效

  43. 4.6.5 表记录修改命令 1.编辑修改 格式:EDIT [<范围>][FIELDS <字段名表>] [FOR <条件>] 功能:在编辑窗口中修改表的记录 说明: 1.缺省限制短语,则以当前记录为入口修改各个记录 2.指定范围和条件时,修改的入口记录是指定范围内满足条件的第一个 2.窗口浏览修改 格式:BROWSE [FIELDS<字段名表>] 功能:以窗口方式浏览表的内容,并可对窗口内的数据进行修改。 说明: 1.字段表项缺省,则显示全部字段 2.BROWSE命令具有显示、修改、逻辑删除、追加记录等功能

  44. 3.自动替换修改 格式:REPLACE [<范围>] <字段名1> WITH <表达式1> [,<字段名2> WITH <表达式2>]…[FOR|WHILE <条件>] 功能:在指定范围内, 对满足条件的所有记录按表达式的结果替换指定字段的值 说明: 1.替换内容是一个表达式, 数据类型与相应字段类型一致 2.若有条件项, 范围项缺省, 是对满足条件的所有记录作替换. 3.可选项均缺省, 只对当前记录作替换 例:将Student表中每位同学的奖学金增加100.00元 REPLACE ALL 奖学金 WITH 奖学金+100

  45. 4.6.6 记录删除命令 1.逻辑删除记录 格式:DELETE [<范围>] [FOR |WHILE<条件>] 功能:对指定范围内符合条件的记录作删除标记”*”, 但并不真正删除记录。若可选项都缺省,只对当前记录有效。 示例:逻辑删除所有非计算机专业的同学记录 DELETE ALL FOR 专业<>”计算机” LIST &&被逻辑删除的记录前将会出现“*”号。 2.物理删除记录 格式:PACK 功能:从物理上真正删除带有删除标记的记录。

  46. 3. 逻辑删除记录的恢复 格式:RECALL [<范围>] [FOR|WHILE <条件>] 功能:对当前表在指定<范围>内满足<条件>的记录去掉删除标记,缺省参数则恢复当前记录。 4.删除所有记录 格式:ZAP 功能:物理清除当前表中所有记录,但保留表结构。 说明: 该命令与以下两条命令等效: DELE ALL PACK

  47. 4.6.7 表记录的定位命令 1.绝对定位 格式: GO[TO] <记录号> 功能:把记录指针直接指向给定记录号 说明: GOTO可以简写为GO 记录号必须是一个正整数(或变量,数值表达式) GO命令还有如下形式: GO TOP &&指针指向首记录 GO BOTTOM &&指针指向末记录 记录号为常数时,GO可以省略,只写记录号。

  48. 示例:USE STUDENT ? RECNO() &&显示当前记录号为1 5 &&将记录指针指向5号记录 ? RECNO() &&显示当前记录号为5 GO TOP &&记录指针指向首记录 ? RECNO() &&显示当前记录号为1 2.相对定位 格式:SKIP [+|-]<数值表达式> 功能:在当前记录位置上进行记录指针的相对移动. 说明:1.”+” 号(可以省略)表示当前记录向后(数据库尾部)移动,2.” -” 号(不能省略)表示当前记录向前(数据库头部)移动。

  49. 3.数值表达式代表记录移动的距离,向后移动一个记录可以省略移动距离”1”。 示例: USE STUDENT SKIP &&向后移动1个记录的距离 ? RECNO() &&当前记录号为2 SKIP 3 &&向后移动3个记录的距离 ? RECNO() &&当前记录号为5 SKIP –2 &&向前移动2个记录的距离 ? RECNO() &&当前记录号为3

  50. 4.6.8 表记录的索引 1.建立索引 格式:INDEX ON <关键字段表达式> TO <独立索引文件名>[.IDX]|TAG<索引标记>[OF<复合索引文件名[.CDX]][FOR <条件>][ASCENDING|DESCENDING] 功能:对当前表按指定的“<关键字表达式>”的逻辑顺序建立单索引文件或复合索引文件。 说明: 关键字段只能是字符型、数值型、日期型、货币型,不能是逻辑型、备注型和通用型。 当关键字段表达式由多个索引字段组成时,必须把N、D、Y型的字段转换成C型,用‘+’号连在一起。

More Related