第3章 数据库与表的创建及使用.docx
- 文档编号:9267901
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:24
- 大小:65.78KB
第3章 数据库与表的创建及使用.docx
《第3章 数据库与表的创建及使用.docx》由会员分享,可在线阅读,更多相关《第3章 数据库与表的创建及使用.docx(24页珍藏版)》请在冰豆网上搜索。
第3章数据库与表的创建及使用
第3章数据库与表的创建及使用
3.1学习目标
●掌握数据库的创建、打开及关闭。
●掌握数据库的组成。
●掌握表结构的创建及修改。
●掌握字段的基本属性(字段名、数据类型、宽度、小数位数和空值支持等)以及字段的扩展属性(标题、格式、输入掩码、字段的有效性规则和默认值等)。
●掌握表中记录的操作(追加、修改、定位、筛选和删除等)。
●掌握表的使用(打开、关闭以及工作区、表的别名、表的独占与共享等概念)。
●掌握表的索引的创建和使用。
●掌握数据库表表属性的设置(长表名、记录的有效性规则和触发器等)。
●掌握表之间永久关系的概念、作用及创建方法。
●掌握相关表之间的参照完整性。
●掌握DBGETPROP()和DBSETPROP()函数的使用。
3.2例题解析
一、选择题解析
1.当数据库表移出数据库成为自由表之后,仍然有效的是________。
A.字段的默认值B.表的记录的有效性规则
C.结构复合索引D.表的触发器
【解析】答案为C。
当数据库表移出数据库成为自由表后,字段的扩展属性和数据库表的表属性都消失,因为这些信息是数据库表所特有的,如字段的标题、格式、字段有效性规则、默认值等以及表的长表名、记录的有效性规则、触发器等都消失。
只有结构复合索引还保留着,结构复合索引文件中的主索引变成候选索引。
2.下列________操作不会损坏相关表之间数据的一致性。
A.删除了子表中的记录而没有删除主表中的相关记录
B.删除了主表中的记录而没有删除子表中的相关记录
C.在子表中插入记录的外部关键字的值是主表关键字中没有的
D.在主表中修改了主关键字的值而没有同时修改子表中相关记录的外部关键字的值
【解析】答案为A。
相关表之间数据的一致性指的是相关表之间的主关键字和外部关键字之间数据的一致性。
B、C、D选项的操作都会引起两张表的主关键字的值和外部关键字的值不一致。
3.在命令窗口中执行下列命令:
CREATEPROJECTTSGL
CREATEDATABASETSK
CREATETS&&打开表设计器创建表结构
CREATEC:
\DZ
执行上述命令后,下列说法正确的是________。
A.数据库TSK被包含在TSGL项目中
B.只有TS表一张表与数据库TSK有引用关系
C.TS表和DZ表与数据库TSK都有引用关系
D.以上说法均不正确
【解析】答案为C。
用命令创建的数据库不会自动添加到项目中,但是TSK是当前数据库。
在命令窗口中创建的表自动属于当前数据库。
4.依次执行下列命令后,浏览窗口中显示的表的别名及当前工作区区号分别是_______。
CLOSETABLESALL
USETS
USETSAGAININ5
SELECT0
USETSAGAIN
BROWSE
A.B、2B.TS、2C.B、5D.E、2
【解析】答案为A。
该段命令的功能是:
首先关闭所有的表,此时没有工作区被使用。
USETS是在1号工作区打开TS表,此时1号工作区为当前工作区,别名就为表文件名TS。
USETSAGAININ5是在5号工作区再次打开TS表,但是5号工作区未作为当前工作区,表的别名为E。
SELECT0选择未被使用的工作区区号最小的工作区即2号工作区作为当前工作区。
如果一张表在多个工作区被打开而未指定别名,则第一次打开的工作区中表的别名与表名同,其他工作区用A~J及W11~W32767表示,因此USETSAGAIN是再次打开TS表,此时TS表的别名为B。
5.TS表(图书表)中有备注型字段BZ,使用________命令直接浏览或输出所有记录的BZ字段的具体内容(即备注中的信息)。
A.USETS
LISTOFFBZ
B.SELECTBZFROMTS
C.USETS
BROWSEFIELDBZ
D.USETS
?
BZ
【解析】答案为A。
B选项的含义是查找出TS表中的BZ字段,没有直接显示内容;C选项的含义是浏览TS表中BZ字段,也没有直接显示内容;D选项仅仅显示的是第一条记录的BZ字段的内容而不是所有的。
6.首先执行了CLOSETABLESALL命令,然后执行________命令,可以实现逻辑删除DZ表(读者表)中年龄超过25岁的所有记录(注:
DZ表中含有CSRQ字段,日期型,为出生日期)。
A.DELETEFORYEAR(DATE())-YEAR(CSRQ)>25
B.DELETEFROMDZWHEREYEAR(DATE())-YEAR(CSRQ)>25
C.DELETEFROMDZFORYEAR(DATE())-YEAR(CSRQ)>25
D.DELETEFROMDZWHILEYEAR(DATE())-YEAR(CSRQ)>25
【解析】答案为B。
主要掌握DELETE命令和DELETE-SQL命令的功能。
A选项能够实现逻辑删除,但是XS表必须事先打开且为当前工作区的表。
C、D选项都是语法错误。
7.已知DZ表的结构为:
读者编号(DZBHC(8))、姓名(XMC(8))等,并且按照DZBH设置了结构复合索引,索引标识为DZBH,如果DZ表不是当前工作区的表,则下列________命令不能实现查找读者编号为“96010101”的记录。
A.SELECTDZ
LOCATEFORDZBH="96010101"
B.SEEK"960101"ORDERDZBHINDZ
C.SELECTDZ
SETFILTERTODZBH="96010101"
D.SELECTDZ
SEEK"96010101"
【解析】答案为D。
LOCATEFOR命令是条件定位,根据给定的条件将记录指针定位到指定的记录。
SETFILTERTO命令是记录的筛选,在当前工作区的表中筛选出满足条件的记录。
SEEK命令可以实现查找的功能,但是必须要设置主控索引。
8.已知表中已经建立了多个索引,则无论是否设置主控索引,都定位到同一条记录的命令是________。
A.GOTOPB.GOBOTTOMC.GO5D.SKIP-1
【解析】答案为C。
GOTOP、GOBOTTOM、SKIP命令都是相对定位命令,它们受记录的逻辑顺序的影响。
而GO5指的是跳转到5号记录,无论是否设置主控索引,记录的记录号是不会改变的。
9.下列关于记录的删除的叙述,不正确的是________。
A.DELETE命令和DELETE-SQL命令都要求表以独占方式打开
B.PACK命令和ZAP命令要求表必须以独占方式打开
C.PACK命令和ZAP命令可以实现彻底删除表中带有删除标记的记录的功能
D.RECCOUNT()函数的返回值不受SETDELETEDON|OFF命令的影响
【解析】答案为A。
主要掌握表中记录删除的相关内容。
DELETE命令要求表必须事先打开,而DELETE-SQL命令不必,且无论表是独占方式还是共享方式打开,都不影响删除标记的设置。
PACK和ZAP命令要求表必须以独占方式打开,PACK彻底删除带有删除标记的记录,ZAP删除表中所有记录,仅保留表结构。
RECCOUNT()函数返回表中的记录数,不受删除标记的影响。
10.已知TS表中有DJ字段(单价,数值型),如果DJ不低于100,则设置BZ(备注,备注型)内容为“高档图书”,则下面哪条命令不能完成该功能________。
A.USETS
REPLACEBZWITH"高档图书"FORDJ>=100
B.UPDATETSSETBZ="高档图书"WHEREDJ>=100
C.UPDATETSSETBZ="高档图书"FORDJ>=100
D.UPDATETSSETBZ=IIF(DJ>=100,"高档图书","")
【解析】答案为C。
主要掌握UPDATE命令和REPLACE命令。
前者的语法格式为:
UPDATE表文件名SET字段名=值WHERE逻辑条件表达式。
REPLACE命令的语法格式为:
REPLACE字段名1WITH值1,字段名2WITH值2,…FOR逻辑条件表达式,REPLACE命令要求表必须事先打开,而且是当前工作区的表。
二、填空题解析
1.下列程序段用来实现显示DZ表中所有的字符型的字段名,并且将字符型的字段名开头字母改为“D”。
USEDZ
FORN=1TO____________
IFTYPE(FIELD(N))=____________
S=FIELD(N)
SS=”D”+SUBSTR(S,2)
____________TABLEDZRENAMECOLUMN&STO&SS
ENDIF
ENDFOR
CLOSETABLEALL
【解析】答案为FCOUNT()、"C"、ALTER。
掌握有关表的函数的使用,FCOUNT()函数返回已打开表的字段数,FIELD(N)返回第N个字段的字段名。
修改表结构的命令是ALTERTABLE命令。
第一空填写FCOUNT(),表示循环执行的次数为字段数。
第二空填写"C",表示测试第N个字段的字段类型是否为字符型。
第三空填写ALTER,本例用该命令更改表的字段名。
2.已知表TSFL(图书分类表)中有22条记录,执行下列程序段后,M、N的值为分别为__________、__________。
USETSFL
DELETENEXT4
SETDELETEDON
M=RECCOUNT()
COUNTTON
?
M,N
【解析】答案为22、18。
打开TSFL表,指针指向第一条记录,执行DELETENEXT4命令,第一条到第四条记录做了删除标记。
SETDELETEDON命令指忽略带有删除标记的记录,该命令对RECCOUNT()函数不起作用,但是对COUNT命令有效果,因此M为22,N为18。
3.TS表里有SM(书名,字符型)和CBRQ(出版日期,日期型)字段,现创建一个名为ABCD的普通索引,要求先按SM排序,书名相同的再根据CBRQ排序。
请完善下列空格:
USETS
INDEXON________________________TAGABCD
【解析】答案为SM+DTOC(CBRQ,1)。
当索引表达式为字符型值相加时,表示先按第一个表达式排序,在第一个表达式值相同时再按照第二个表达式的值排序。
4.已知TS表属于数据库TSK,如果不小心删除了TSK的相关文件,则要将TS表添加到其他数据库中,必须释放____________,释放的命令是___________________。
【解析】答案为后链、FREETABLETS。
数据库表和数据库之间通过双向链接相关联。
一张数据库表只能属于一个数据库,如果意外损害了数据库文件,则必须释放后链才能添加到其他数据库中。
5.已知成绩表(cj.dbf)的结构如下图,请完善下列各项命令。
字段名
类型
宽度
字段含义
是否主键
XH
C
6
学号
是
KCDH
C
2
课程代号
是
CJ
N
3,0
成绩
(1)创建表结构的命令
CREATETABLECJ(XHC(6),KCDHC
(2),CJN(3,0))
(2)给CJ表添加一个备注型字段BZ
ALTERTABLECJADDCOLUMNBZM
(3)将BZ字段的字段名改为CJBZ
ALTERTABLECJRENAMECOLUMNBZTOCJBZ
(4)为CJ表添加一条记录:
08010101,02,60
INSERTINTOCJ(XH,KCDH,CJ)VALUES("08010101","02",60)
(5)将所有CJ不及格的记录的CJBZ字段内容设置为“需要补考”
UPDATECJSETCJBZ="需要补考"WHERECJ<60
(6)根据KCDH字段升序排序,当KCDH相同时按照CJ升序排序,索引标识名为KCCJ
INDEXONKCDH+STR(CJ,3)TAGKCCJ
(7)将成绩表所有08级的考生的考试记录做删除标记(XH的前两位表示年级)。
DELETEFROMCJWHERELEFT(XH,2)="08"
【解析】该类题目主要要求掌握表的一些相关命令。
因此要熟悉每一种命令的功能以及命令格式。
6.已知qm表(期末成绩表)中的记录如下:
Xh(学号,字符型)
Yw(语文成绩,数值型)
Sx(数学成绩,数值型)
08010101
76
67
08010102
66
87
08010105
69
78
08010104
86
92
08010103
66
78
Qm表创建了两个索引,如下表所示:
索引顺序
索引标识
索引表达式
降序
QmA
Yw+Sx
升序
QmB
Str(Yw)+Str(Sx)
如果在命令窗口中执行如下命令:
USEQMORDERTAGQmA
BROWSE
则在浏览窗口中,学号为"08010103"的记录显示在第__________行。
如果在窗口中再执行如下命令:
SETORDERTOQmB
BROWSE
则浏览窗口中学号为____________的记录显示在第一行。
【解析】答案为4,"08010103"。
主要掌握主控索引的概念以及数值型索引表达式和字符型索引表达式的含义。
第一段命令表示设置索引QmA为主控索引,这时QmA索引起作用,此时表中记录按照索引表达式Yw+Sx排序,Yw和Sx都是数值型,两个数值型值相加,索引按照和的结果排序。
第二段命令表示设置索引QmB为主控索引,这时QmB索引起作用,此时表中记录按照索引表达式Str(Yw)+Str(Sx)排序,表示先按照Yw的值排序,在Yw值相同的情况下再按照Sx排序。
7.已知TS表和JY表的结构如下,
TS表结构
JY表结构
字段名
类型
宽度
字段含义
字段名
类型
宽度
字段含义
sh
C
20
书号
dzbh
C
8
读者编号
sm
C
50
书名
sh
C
20
书号
zz
C
40
作者
jsrq
D
8
借书日期
dj
N
5,1
单价
hsrq
D
8
还书日期
图书表TS的记录如下:
记录号
书号
书名
作者
单价
1
I247.5/8888P
女奴:
天命之择
林政
48
2
I247.5/8880P
支离破碎
石康
43.6
3
C912.1-49/129P
卡耐基经典小故事全集
(美)戴尔·卡耐基
39.8
4
K891.26-49/2P
礼仪是一种资本:
日常礼仪的300个细节
李洁
39.8
5
H1/104P
中国语文
杜纯梓
98
6
F239.22/14P
中国审计体系研究
《中国审计体系研究》课题组编著
48
借阅表JY的记录如下:
记录号
读者编号
书号
借书日期
还书日期
1
05030815
I247.5/8888P
2008-05-01
2008-05-23
2
05030815
I247.5/8880P
2008-06-12
2008-06-17
3
06030828
I247.5/8888P
2008-12-11
2009-01-24
4
06030828
C912.1-49/129P
2008-11-01
2008-11-21
5
06030828
I247.5/8880P
2008-08-01
2008-09-01
6
A030013
I247.5/8888P
2008-11-08
2008-12-01
7
A030013
C912.1-49/129P
2008-05-12
2008-05-19
8
A030013
K891.26-49/2P
2009-05-01
2009-05-11
9
A030013
I247.5/8880P
2008-09-11
2008-09-21
TS表的候选关键字是SH,JY表的候选关键字是DZBH+SH,若JY表中所有的SH值都来自TS表,则两张表之间是一对多关系。
其中主表是TS表,子表是JY表。
如果在两张表之间建立永久关系,则必须设置主表TS表中以SH字段为索引关键字建立主索引或候选索引,在子表中以SH字段建立普通索引。
两张表的记录如上表所示,如果两张表之间创建了参照完整性:
更新级联、删除限制和插入限制。
就两张表的已知数据而言,如果把TS表的第3号记录的书号改为“C912.1-49/110P”,则JY表中有2条记录被更改,如果把JY表中的第8号记录的书号改为“F252/265P”,则TS表中有0条记录被更改。
如果要删除TS表中的第5号记录,则允许吗?
允许
如果要求只有登记入库的书才能被借阅,则设置TS表和JY表之间的参照完整性规则为插入限制。
【解析】掌握数据库表之间的关系,以及永久关系的建立和参照完整性的设置。
3.3复习自测题
一、选择题
1.在表的浏览窗口中,给一个允许NULL值的字段输入NULL值的方法是________。
A.直接输入“NULL”各个字母B.按组合键[ctrl]+[0]
C.按组合键[ctrl]+[N]D.按组合键[ctrl]+[L]
2.在VFP系统中,数据库表的字段的有效性规则保存在________。
A.项目文件中B.数据库表文件中
C.数据库文件中D.数据库表的备注文件中
3.下列关于数据库和数据库表的叙述错误的是________。
A.数据库是一个容器,是许多相关表及其关系的集合
B.数据库表和数据库之间的相关性是通过数据库表文件与数据库文件之间的双向链接实现的
C.一个数据库可以包含多个数据库表,同样一张数据库表也可以属于多个数据库
D.数据库表随着其所在的数据库的关闭而关闭,但是不随着其所在数据库的打开而打开
4.如果一个数据库表的删除触发器的表达式设置为.F.,则不允许对该表进行________操作。
A.修改记录B.添加记录C.删除记录D.浏览记录
5.数据库表的参照完整性规则包括更新规则、删除规则和插入规则,其中插入规则可以设置为________。
A.级联、限制或忽略B.级联或忽略C.级联或限制D.限制或忽略
6.在设计数据库的时候,可以使用纽带表来处理表之间的________关系。
A.多对多关系B.永久关系C.继承关系D.参照关系
7.在定义表结构时,下列________数据类型的宽度都是固定的。
A.字符型、数据型和逻辑型B.逻辑型、日期型和备注型
C.通用型、日期时间型和字符型D.整型、数值型和逻辑型
8.建立索引时,________字段不能建立索引。
A.整型B.字符型C.备注型D.日期型
9.对于自由表而言,不能创建的索引类型是________。
A.主索引B.候选索引C.普通索引D.唯一索引
10.用户在创建某张表的结构时,设置了通用型字段,并且为该表建立了普通索引,则保存完该表结构后,系统会在磁盘上生成________个文件。
A.1B.2C.3D.4
11.执行以下程序后,3个SELECT()函数的输出值分别为________。
CLOSETABLESALL
SELECT3
USETS
SELECTDZBH,XMFROMDZINTOCURSORT
?
SELECT(“DZ”)
?
SELECT(“T”)
?
SELECT(0)
A.144B.122
C.244D.124
12.设某数据库中的图书表(TS.DBF)已经在3号工作区打开,且当前工作区为5号工作区,则下列命令中不能将TS表关闭的是________。
A.CLOSETABLESALLB.CLOSETABLE
C.USEIN3D.USE
13.在VFP系统中,使用DELETE-SQL命令给表中记录做删除标记时,如果没有WHERE条件子句,则默认将________记录做了删除标记。
A.第一条B.当前记录C.全部记录D.当前记录后的所有记录
14.在VFP系统中,使用DELETE命令给表中记录做删除标记时,如果没有FOR条件子句,则默认将________记录做了删除标记。
A.第一条B.当前记录C.全部记录D.当前记录后的所有记录
15.关于项目、数据库和表的叙述中,不正确的是________。
A.一个数据库可以属于多个项目B.一个项目可以包含多个数据库
C.一个数据库可以包含多张表D.一张表可以属于多个数据库
16.关于数据库、表和视图的叙述中,错误的是________。
A.打开数据库表,则自动打开该表所属的数据库
B.关闭一个数据库,则自动关闭该数据库中所有已打开的表
C.关闭一个视图,则不会自动关闭该视图对应的基表
D.关闭一个数据库表,则自动关闭该表所属的数据库
17.在VFP中,如果指定两个表的参照完整性的删除规则为“限制”,则当删除父表中的记录时,________。
A.系统自动备份父表中被删除的记录到一张新表中
B.如果子表中有相关的记录,则禁止删除父表中的记录
C.自动删除子表中所有的相关记录
D.不做参照完整性检查,删除父表记录与子表无关
18.表是VFP中存储数据的容器,下列关于表的叙述,错误的是________。
A.每张表最多包含256个字段
B.新建一张表后,一般会生成1~3个文件
C.自由表添加到数据库后成为数据库表,而数据库表移出数据库则成为自由表
D.自由表的字段名最多10个字符
19.下列关于VFP中表的索引的叙述中,错误的是________。
A.表的唯一索引不能控制数据输入时的重复
B.通过创建表的索引,不仅可以对表中的记录数据进行排序,而且可以实现记录的筛选
C.在打开表的时候,系统会自动将默认的第一个索引设置为主控索引
D.一张数据库表最多只能创建一个主索引
20.数据库表可以设置字段的有效性规则,字段有效性规则属于________。
A.实体完整性B.参照完整性C.数据一致性D.域完整性
21.下列说法中,错误的是________。
A.一个数据库表只能创建一个主索引
B.一个表可以有多个外部关键字
C.在数据库中,可以借助纽带表将两个具有多对多关系的表连接起来
D.建立了数据库中两张表之间的永久关系,则子表的记录指针跟着主表记录指针的移动而移动
22.打开一个数据库,执行________命令。
A.OPENDATABASEB.USEC.LOCATED.SELECT
23.假设TSK(图书库)中包含TS表,如果不允许删除kczs(库存总数)大于0的记录,应该设置________表达式为kczs=0。
A.TS表的记录的有效性规则B.TS表的删除触发器
C.TSK的有效性规则D.TS表的字段的有效性规则
24.当要控制相关表之间数据的一致性时,可以设置相关表之间的参照完整性,要求________。
A.是不同数据库中的两张表B.一个必须是数据库表,另一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 数据库与表的创建及使用 数据库 创建 使用