数据库及其操作精.docx
《数据库及其操作精.docx》由会员分享,可在线阅读,更多相关《数据库及其操作精.docx(17页珍藏版)》请在冰豆网上搜索。
数据库及其操作精
第四章数据库及其操作
一、考试大纲要求:
1、了解
(1)数据表文件的复制
(2)数据完整性
2、掌握
(1)数据库文件的创建,向数据库添加表或从数据库删除表
(2)数据表在不同工作区的打开与关闭
(3)表的联接JOIN
(4)表的排序
(5)数据表的精确检索与模糊检索
3、重点掌握
(1)对数据表结构的操作:
包括建立表结构、修改表结构、显示结构
(2)对数据表记录的操作:
包括表记录指针的定位,表记录的浏览、修改、删除与恢复、添加与插入
(3)建立表之间的关联
(4)表的索引:
主、候选、普通、唯一索引
(5)数据的统计与运算(记录个数的统计、数值求和、计算平均值、汇总分类等)
二、知识要点
(一)可以通过以下几种方式创建数据库:
(1)在“项目管理器”中创建数据库
打开“项目管理器”,选择“数据”选项卡中的“数据库”然后单击“新建”按钮,在弹出的“创建”对话框中输入数据库名,单击“保存”。
(2)由文件菜单创建数据库
在系统菜单中,选择“文件”下拉菜单中的“新建”,在“新建”对话框中选择数据库文件类型,然后单击“新建文件”按钮,此时系统会弹出“创建”对话框,在弹出的“创建”对话框中输入数据库名,并单击“保存”按钮。
(3)通过命令建立数据库
CREATEDATABASE[数据库文件名/?
]
(4)打开数据库
OPENDATA[数据库文件名/?
]
(5)修改数据库
MODIDATA[数据库文件名/?
]
(6)删除数据库
DELEDATA[数据库文件名/?
]
(7)关闭数据库
CLOSDATA
【例题】
1.VisualFoxPro在建立数据库时建立了扩展名分别为____的文件。
A..dbcB..dct
C..dcxD.A,B,C
[解析]本题考查的知识点是创建数据库文件时出现的三个不同类型的文件。
VisualFoxPro在建立数据库时建立了扩展名分别为dbc、dct、dcx的三个文件,这三个文件是供VisualFoxPro数据库管理系统管理数据库使用的、用户一般不能直接修改这些文件。
因此正确答案为D。
[答案]D
2.在VisualFoxPro中,删除数据库的命令是____。
A.QUITDATABASE
B.CREATEDATABASE
C.DELETEDATABASE
D.CLEARDATABASE
[解析]本题考查的知识点是删除数据库的命令。
执行选项A命今后,将会退出VisualFoxPro;选项B中的命令用于创建数据库;选项C中的命令用于删除数据库;选项D中的命令错误。
[答案]C
3.在表设计器的____选项卡中,可以设置记录验证规则,有效性出错信息,还可以指定记录插入更新及删除的规则。
[解析]本题考查的知识点是表设计器的应用。
表设计器中有三个选项卡,在“字段”选项卡中可以设置字段名、类型、宽度、显示格式等属性。
“索引”选项卡用来设置有关索引的属性:
“表”选项卡用来设置表名,查看表文件的属性,记录有效性规则,指定记录插入、更新及删除的规则。
题目中的属性设置都是在“表”选项卡中进行。
[答案]表
(二)增加表记录
(1).APPEND命令
包括两种格式:
APPEND和APPENDBLANK。
APPEND命令需要立刻输入新记录;APPENDBLANK命令是在表的尾部增加一条空白记录。
(2).INSERT命令
格式为:
INSERT[BEFORE][BLANK]。
不指定BEFORE则在当前记录之后插入一条新记录。
不指定BLANK则直接输入新记录。
(三)删除表记录
表记录的删除也是表维护的一项经常性的工作,因为删除意味着数据的消失,所以对记录的删除操作比较慎重,删除可分为逻辑删除和物理删除两种操作。
逻辑删除还可以恢复,而物理删除则不可恢复。
(1).逻辑删除
逻辑删除就是给指定的记录作删除标记“*”。
【格式】DELETE[<范围>][FOR<条件>][WHILE<条件>]
【功能】对当前表中指定范围内满足条件的记录作删除标记“*”。
【说明】DELETE命令仅仅是在要删除的记录前加上一个删除标记“*”,并不是真正地从表文件中将该记录删除掉。
可以用LIST或DISP命令显示带删除标记的记录。
发现添加了删除标记的记录前面会显示竖黑条.
恢复逻辑删除的记录的命令是RECALL。
(2).物理删除
是真正从表中删除记录,方法是:
单击“表”菜单中的“彻底删除”命令。
物理删除带删除标记的记录命令是PACK。
物理删除表中全部记录的命令是ZAP。
(四)显示记录
【格式】LIST|DISPLAY[FIELDS<字段名表>][<范围>][FOR<条件表达式>][WHILE<条件表达式>]
【功能】将当前表文件的记录按照指定的选项进行显示。
【说明】DISPLAY命令与LIST命令的功能相似,当表文件的数据记录较多时,用DISPLAY命令较为方便。
还有一点不同之处就是,如果同时缺省<范围>和<条件>子句,DISPLAY命令只显示当前的一条记录,而LIST命令则是取默认值ALL而显示全部记录。
FIELDS<字段名表>:
用来指定显示的字段。
<范围>:
用来指定显示哪些记录。
“范围”有以下四种表示方法:
ALL:
所有记录。
NEXTN:
从当前记录开始,后面的N条记录(包括当前记录)
RECORDN:
第N条记录。
REST:
当前记录后的全部记录(包括当前记录)。
FOR<条件表达式>:
指定对表文件中指定范围内满足条件的记录进行操作。
WHILE<条件表达式>:
也是指定对表文件中指定范围内满足条件的记录进行操作,但是,当第一次遇到不满足条件的记录时,停止继续往后搜索。
WHILE<条件表达式>若与FOR<条件表达式>同时使用,则WHILE项优先;若两者都不选用,则显示<范围>中指定的全部记录。
OFF:
表示不显示记录号;若不选此项,则在各记录前显示记录号。
(五)修改表记录
(1).EDIT和CHANGE命令用于交互式地修改、编辑表记录。
【格式】EDIT/CHANGE[FIELDS<字段名表>][<范围>][FOR<逻辑表达式1>][WHILE<逻辑表达式2>]
(2).REPLACE命令用指定表达式的值替换当前表中满足条件记录的指定字段的值。
【格式】REPLACE<字段名1>WITH<表达式1>[,<字段名2>WITH<表达式2>]...[<范围>][FOR<逻辑表达式1>][WHILE<逻辑表达式2>]
【例】修改职工.DBF中的“工资”字段数据,每个职工工资均涨10%。
USE职工
REPLACE工资WITH工资*1.1ALL
2.要为当前表所有职工增加2年工龄,应使用的命令___。
A.CHANGE工龄WITH工龄+2
B.REPLACE工龄WITH工龄+2
C.CHANGEALL工龄WITH工龄+2
D.REPLACEALL工龄WITH工龄+2
[解析]本题考查的知识点是VisualFoxPro中修改记录的命令的使用。
在VisualFoxPro中,修改记录的命令是REPLACE。
CHANGE命令和EDIT命令等同,均为打开当前表的编辑界面,BROWSE命令打开当前表的浏览界面。
REPLACE命令才是修改当前表记录的命令,操作范围ALL不能省略。
[答案]D
(六)查询定位
记录号用于标识数据记录在表文件中的物理顺序。
记录指针是一个指示器,它始终指向当前表中正在操作处理的那条记录,此记录被称为当前记录。
如果要对某条记录进行处理,必须移动记录指针,使其指向该记录。
在任意时刻指针只能指向唯一的一条记录。
记录指针定位有绝对定位、相对定位和查询定位三种。
在这里暂时只讲前二种,查询定位在讲到查询时再详细介绍。
(1).绝对定位
【格式】[GO|GOTO]<数值表达式1>
【功能】将记录指针绝对定位到<数值表达式1>指定的记录上。
(2)相对定位skip
(七).表的索引
(1).索引及索引文件的概述
索引是以索引文件的形式存在的,它根据指定的索引关键字表达式建立的。
索引文件可以看成索引关键字的值与记录号之间的对照表,关键字可以是一个字段,也可以是几个字段的组合。
在建立索引文件时,把表所有记录的索引关键字表达式的值按指定顺序排序,并把每个索引关键字表达式值与该值在表中所对应的记录对应起来,保存在索引文件中。
索引文件必须与原表一起使用,查询时根据索引关键字表达式的值先在索引文件中找到某字段所在的记录号,然后再到表里直接定位。
这样的查找方式使顺序查找和随机查找都有较高的效率。
打开索引文件时,将改变表中记录的逻辑顺序,但并不改变表中记录的物理顺序。
一个表文件可建立多个索引文件,也可同时打开多个索引文件,但在同一时间内只有一个索引起作用,这个索引称为主控索引。
VisualFoxPro系统中支持两种不同的索引文件类型,即单索引文件和复合索引文件。
单索引文件是根据一个索引关键字建立的索引文件,文件扩展名为.IDX,它可用INDEX命令的各种形式建立。
单索引文件分为标准和压缩两种类型。
复合索引文件是指索引文件中可以包含多个索引标识的扩展名为.CDX。
每个索引标识与单索引文件类似,也可以根据一个索引关键字表达式(或关健字)建立。
每一个索引标识均有一个特殊的标识名(TAG)。
标识名由字母或下划线开头,由字母、数字或下划线组成,长度不超过10个字符。
用户可以利用标识名来使用标识,向复合索引文件中追加标识。
复合文件中标识的数目,仅受内存和磁盘空间的限制。
复合索引文件又有两种:
一种是独立复合索引文件;另一种是结构复合索引文件。
结构复合索引文件是由VisualFoxPro自动命名的,与相应的表文件同名,扩展名为.CDX。
当VisualFoxPro打开一个表时,便自动查找一个结构复合索引文件,如果找到便自动打开,该索引文件随表文件同时打开和同时关闭。
独立复合索引文件不与表文件同名,扩展名为.CDX。
在打开表时不会自动打开此索引文件,由命令指定打开。
索引可分为下列四种类型:
1)主索引
主索引是一个永远不允许在指定字段和表达式中出现重复值的索引。
它也是在数据库表的永久关联中创建参照完整性时主表和被引用表使用的索引。
每一个表只能建立一个主索引,只有数据库表才能建立主索引。
2)侯选索引
侯选索引也是一个不允许在指定字段和表达式中出现重复值的索引。
数据库表和自由表都可以建立侯选索引,一个表可以建立多个侯选索引。
主索引和侯选索引都存储在.CDX结构复合索引文件中,不能存储在于独立复合索引文件和单索引文件中,因为主索引和侯选索引都必须与表文件同时打开和同时关闭。
3)唯一索引
系统只在索引文件中保留第一次出现的索引关键字值。
数据库表和自由表都可以建立唯一索引
4)普通索引
是一个最简单的索引,允许关键字值的重复出现,适合用来进行表中记录的排序和查询,也适合于一对多永久关联中“多”的一边(子表)的索引。
数据库表和自由表都可以建立普通索引。
普通索引和唯一索引可以存储在.CDX独立复合索引文件和.IDX单索引文件中。
(2).索引文件的建立
1)命令方式
【格式】INDEXON<索引关键字表达式>TO<单索引文件>|TAG<标识名>[OF<独立复合索引文件名>]
[FOR<逻辑表达式>][COMPACT]
[ASCENDING|DESCENDING][UNIQUE][ADDITIVE]
(p99)
【功能】对当前表文件按指定的关键字建立索引文件。
【说明】<索引关键字表达式>:
指定建立索引文件的关键字表达式,可以是单一字段名,也可以是多个字段组成的字符型表达式,表达式中各字段的类型只能是数值型、字符型和日期型和逻辑型。
当表达式是单个字段名时,字段类型不用转换;应转换成同一类型的表达式。
TAG<标识名>:
此选项只对建立复合索引文件时有效,指定建立或追加索引标识的标识名。
OF<独立复合索引文件>:
指定独立复合索引文件名。
若有此选项,表示在指定的独立复合索引文件中追加一个索引标识,若指定的独立复合索引文件不存在,系统将自动建立指定的文件。
若没有此选项,表示在结构复合文件中追加一个索引标识,若结构复合索引文件不存在,系统将自动建立结构复合索引文件。
FOR<逻辑表达式>:
表示只对满足条件的记录建立索引。
【例3】在表文件STUD.DBF的结构复合索引文件中,按学号追加一个标识。
USESTUD
INDEXON学号TAG学号
【例4】在表文件STUD.DBF的结构复合索引文件中,先按性别再按学号追加一个标识XBXH。
USESTUD
INDEXON性别+学号TAGXBXH
【例5】在表文件STUD.DBF中,先按性别再按是否团员建立一个独立复合索引文件SXBTY.CDX。
USESTUD
INDEXON性别+IIF(是否团员,’团员’,’非团员’)TAG性别团员OFSXBTY
2)菜单方式
①打开表文件。
②选择【显示】|【表设计器】命令,打开表设计器对话框,选择“索引”标签。
③在索引名中输入索引标识名,在类型的下拉列表框中确定一种索引类型,在表达式中输入索引关键字表达式,在筛选中输入确定参加索引的记录条件,在排序序列下默认的是升序按钮,单击可改变为降序按钮。
④确定好各项后,选择“确定”,关闭表设计器,同时索引建立完成。
⑤同样的方法也可以将以前建立的索引调出,利用表设计器上的“插入”或“删除”按钮进行插入或删除。
注意:
用表设计器建立的索引都是结构复合索引文件。
(3).索引文件的打开
【格式1】USE<文件名>[INDEX<索引文件名表|?
>][ORDER<数值表达式2>|<单索引文件>|[TAG]<标识名>[OF<复合索引文件名>][ASCENDING|DESCENDING]]
【功能】打开指定的表文件及相关的索引文件
【说明】:
INDEX<索引文件名表>|?
:
表示打开的索引文件;如果选择“?
”,则系统将出现“打开”对话框,供用户选择索引文件名;如果<索引文件名表>中的第一个索引文件是单索引文件,则它是主索引文件,若第一个索引文件是复合索引文件,则表文件的记录将以物理顺序被访问。
<索引文件名表>:
指定要打开的索引文件,索引文件中的文件扩展名可以省略,但如果存在同名的单索引文件和复合索引文件,必须带扩展名。
<索引文件名表>中的单索引文件和复合索引文件的标识有一个唯一的编号,编号最小值为1,编号规则为:
先将单索引文件按它们在<索引文件名表>中的顺序编号,再将结构复合索引文件按标识产生的顺序连续编号,最后将独立复合索引文件中的标识先按它在<索引文件名表>中的顺序,再按标识产生的顺序连续编号。
[ORDER]子句:
指定主索引。
选择此选项时,主索引文件将不是<索引文件名表>中的第一个单索引文件,而是此选项指定的单索引文件或标识。
[ORDER]子句中各选项的含义如下:
¡ñ<数值表达式2>指定主索引的编号,若<数值表达式2>的值为0,表示不设主索引。
¡ñ<单索引文件>指定的单索引文件设置为主索引。
¡ñ[TAG]<标识名>[OF<复合索引文件名>]:
表示将<复合索引文件名>中的指定标识作为主索引。
[OF<复合索引文件名>]缺省表示为结构复合索引文件。
¡ñASCENDING|DESCENDING:
表示主索引被强制以升序或降序索引;缺省此选项,主索引按原有顺序打开。
(4).索引文件的关闭
【格式1】USE
【功能】关闭当前工作区中打开的表文件及所有索引文件。
【格式2】SETINDEXTO
【功能】关闭当前工作区中打开的所有单索引文件和独立复合索引文件。
【格式3】CLOSEINDEXS
【功能】关闭当前工作区中打开的所有单索引文件和独立复合索引文件。
注意:
结构复合索引文件不能用以上命令关闭,它随表文件的打开而打开,随表文件的关闭而关闭。
(5).索引的删除
1)标识的删除
【格式】DELETETAG<标识名1>[OF<复合索引文件名1>][,<标识名2>[OF<复合索引文件名2>]]...
或:
DELETETAGALL[OF<复合索引文件名>]
【功能】从指定的复合文件中删除标识
【说明】OF<复合索引文件名>:
指定复合索引文件名,若缺省,则为结构复合索引文件。
(6).索引查询(FIND、SEEK)
1).菜单方式
①首先打开表文件
②选择【显示】|【浏览】命令。
③选择【表】|【转到记录】|【定位】命令,打开定位记录对话框。
④在“作用范围”下拉列表框中选择查询范围,在FOR或WHILE框中输入查询条件,选择定位按钮。
系统将指针定位于符合条件的第一条记录上。
2).索引查询(FIND、SEEK)
LOCATE命令用于按条件进行顺序定位,无论索引文件是否打开都可使用。
在打开索引文件后,还可以用FIND、SEEK命令进行快速检索。
a.FIND命令
【格式】FIND<字符串>/<数值常量>
【功能】在表文件的主控索引中查找关键字值与<字符串>或<数值常量>相匹配的第一个记录。
【说明】
1)必须打开相应的库文件、主索引文件。
2)查询字符串,字符串可以不用定界符括起来,但前后有空格的,则必须要括进来。
3)查询常数,必须使用索引关键字的完整值。
4)允许查询字符型内存变量,但必须使用宏替换函数。
5)由于索引文件中关键字表达式值相同的记录总是排在一起的,可用SKIP、DISP命令来逐个查询。
6)查询完满足条件的记录后,不能自然给出提示,常借助于EOF()函数来判断查询是否完成。
7)多关键字查询,建立索引时STR函数若没有指定小数位,则应补齐不足10位的空格。
【例题】打开表文件STUD.DBF,查找姓“赵”的记录。
USESTUD
SETORDERTO姓名
FIND赵
5)表达式为字符串时,必须用定界符括起来。
日期常量也必须用大括号括起来。
6)表达式可以为一复杂的表达式,计算机先计算表达式的值,然后用其值进行查询。
7)由于索引文件中关键字表达式值相同的记录总是排在一起的,可用SKIP、DISP命令来逐个查询。
【例】用SEEK命令在STUD.DBF中查找记录。
USESTUD
INDEXON是否团员TAG是否团员
SETORDERTO姓名
SEEK"孙"
8.在VisualFoxPro中,SKIP命令是按___定位,即如果使用索引时,是按___的顺序定位。
[解析]本题考查的知识点是SKIP命令的使用。
在VisualFoxPro中。
SKIP命令是按逻辑顺序定位,即如果使用索引时,是按索引项的顺序定位的。
[答案]逻辑顺序,索引项
9.在VisualFoxPro中,创建索引的命令是____。
[解析]本题考查的知识点是创建索引的命令。
在VisualFoxPro中,创建索引的命令是INDEX。
[答案]INDEX
10.在VisualFoxPro中,用命令可以创建____索引,但不可以创建____索引。
[解析]本题考查的知识点是利用命令创建索引。
在VisualFoxPro中,利用命令可以创建普通索引、惟一索引和候选索引。
这是因为表设计器中指定一个主索引实际就是指定了一个主关键字
[答案]普通索引、惟一索引、候选索引,主索引
13.多表的操作
迄今所讲述的对表的操作都是在一个工作区进行的,每个工作区最多只能打开一个表文件,用USE命令打开一个新的表,同时也就关闭了前面已打开的表。
在实际应用中,用户常常需要同时打开多个表文件,以便对多个表文件的数据进行操作。
为了解决这一问题,VisualFoxPro引入了工作区的概念。
VisualFoxPro允许用户在表间建立临时关系和永久关系。
14.工作区与多个表
(1).工作区和当前工作区
VisualFoxPro能同时提供32767个工作区。
系统默认值为1区。
在任意时刻,只有一个工作区是当前工作区,用户只能在当前工作区对打开的当前库进行操作。
每一个工作区都可以并且只能打开一个数据库文件。
同一个数据库文件不允许同时在多个工作区打开,但在其它工作区中被关闭之后,可以在任意一个工作区中被打开。
各工作区中打开的数据库彼此相互独立(指针不受影响)。
(2).选择当前工作区
每一个工作区用工作区号或别名来标识
1)工作区号
利用数字1~32767来标识32767个不同的工作区
2)别名
前10工作区用A~J10个字母来标识。
采用该工作区中已打开的数据库的库名来作别名
用户自己定义
【命令格式】:
USE〈数据库名〉[ALIAS〈别名〉]
【功能】:
打开数据库文件并为该数据库起一个别名。
【说明】给数据库起了别名后,数据库名就不是默认的别名了。
3)工作区的选择
当系统启动时,1号工作区是当前工作区,若想改变当前工作区,则可使用SELECT命令来转换当前工作区。
【命令格式】:
SELECT<工作区号>/<工作区别名>
【功能】:
选择一个工作区作为当前工作区。
【说明】:
⏹<工作区号>|<工作区别名>:
指定当前工作区。
选择工作区时,可以直接指定区号,也可以通过别名指定工作区,二者是等效的。
⏹别名可以是系统规定的别名,也可以是用户规定的别名,甚至可以用已打开的表名替代工作区别名。
此命令允许选用“0”号工作区。
如果指定“0”,则表示选用当前未使用过的编号最小的工作区作为当前工作区。
⏹执行该命令后,对任何工作区中的表及记录指针均不发生影响,仅实现各个工作区之间切换。
【例1】在1号和2号工作区内分别打开ST.DBF和SE.DBF表文件,并选择1号工作区为当前工作区。
SELECT1&&或SELECTA
USEST
SELECT2
USESE
SELECT1
15.表的关联
(1).关联的概述
所谓表文件的关联是把当前工作区中打开的表与另一个工作区中打开的表进行逻辑连接,而不生成新的表。
当前工作区的表和另一工作区中的打开表建立关联后,当前工作区是表的记录指针移动时,被关联工作区的表记录指针也将自动相应移动,以实现对多个表的同时操作。
在多个表中,必须有一个表为关联表,此表常称为父表,而其他的表则称为被关联表,常称为子表。
在两个表之间建立关联,必须以某一个字段为标准,该字段称为关键字段。
表文件的关联可分为一对一关联、一对多关联和多对多关联。
(2).表文件关联的建立
1)一对一关联的建立
1)命令方式
【格式】SETRELATIONTO[<关键字段表达式>|<数值表达式>][INTO<别名>|<工作区号>][ADDITIVE]
【功能】将当前工作区的表文件与<别名>(或工作区号)指定的工作区中的表文件按<关键字段表达式>或<数值表达式>建立关联。
【说明】
⏹当用<关键字段表达式>建立关联时,关键字必须是两个表文件共有字段,且别名表文件已按关键字段建立了索引文件,并已指定关键字段为主索引。
⏹当父表文件的记录