《数据库及其应用》练习答案.docx
《《数据库及其应用》练习答案.docx》由会员分享,可在线阅读,更多相关《《数据库及其应用》练习答案.docx(30页珍藏版)》请在冰豆网上搜索。
《数据库及其应用》练习答案
《数据库及其应用》习题参考答案
第1章:
习题一
一、选择题
1.D2.C3.B4.A5.B6.C7.D8.B9.B
二、填空题
1.手工管理、文件系统、数据库系统
2.系统调查与分析、逻辑设计、物理设计、实施与测试、运行维护
3.一对一、一对多、多对多
4.矩形框、椭圆框、菱形框
5.元组、属性
6.候选码
7.外码
三、简答题(略)
四、设计题
1.E-R模型
见右图。
2.关系模型:
读者(借书证号,姓名,性别,生日,单位,电话,身份证号)
图书(图书编号,书名,作者,出版社,出版日期,价格,馆藏数)
借阅(借阅日期,图书编号,借书证号,归还日期)
3.(略)
4.(选做)E-R模型
见右图。
5.(选做)关系模型:
球队(编号,名称,地址,电话,
法人代表,主教练)
比赛(比赛日期,主队编号,客队编号,球场,主裁判,比分)
第2章:
习题二
一、选择题
1.A2.C3.D4.A5.D
二、填空题
1.选择、投影、连接
2.实体完整性规则、参照完整性规则、用户定义完整性规则
3.完全函数依赖、部分函数依赖、传递函数依赖
4.概念模式、内模式、外模式
5.查询、插入、修改、删除
6.层次模型、网状模型、关系模型
三、简答题
1.关系运算的结果:
表3:
R-S
A
B
C
1
1
c1
2
2
c1
表2:
R∩S
A
B
C
2
3
c2
表1:
R∪S
A
B
C
1
1
c1
2
3
c2
2
2
c1
2
1
c2
1
2
c2
(1).R∪S(表1)R∩S(表2)R-S(表3)
表4:
A
C
2
c2
1
c1
(2).σA>B(R)为空集
(3).πA,C(S)(表4)
表5:
R.A
B
C
P.A
D
E
1
1
c1
2
d2
e1
1
1
c1
3
d3
e1
1
1
c1
4
d1
e2
2
3
c2
3
d3
e1
2
3
c2
4
d1
e2
2
2
c1
3
d3
e1
2
2
c1
4
d1
e2
⑷.
(表5)
表6:
A
C
D
E
2
c2
d2
e1
⑸.πA,C(S)
P(表5)
2.用关系运算完成:
(1).π姓名,性别,职务(员工)
(2).π姓名,性别,生日(σ工资<1000(员工))
(3).σ日期≥2002.05.01AND日期≤2002.05.31(销售)
(4).π姓名,电话(σ商品编号>“400000”AND商品编号<“400999”(商品)
σ日期≥2002.07.01AND日期≤2002.07.31(销售)
顾客)
(5).π商品名、型号、数量、金额、姓名(σ日期≤2002.06.30(销售)
商品
员工)
3.~11.(略)
12.该关系是全码,即所有属性都是主属性,属于第三范式。
13.主码:
商品号、顾客编号、购买日期
主属性:
商品号、顾客编号、购买日期
完全函数依赖:
商品号、顾客编号、购买日期→购买数量
部分函数依赖:
商品号→商品名、型号、生产厂家、厂家地址、单价
顾客编号→顾客名、地址、电话
传递函数依赖:
商品号、顾客编号、购买日期→单价、购买数量→金额
14.通过关系分解的方法来提高关系的范式级别。
即对较低范式的关系进行投影运算,消去关系中的部分函数依赖和传递函数依赖。
通过对第13题的关系进行分解,得到如下符合3NF要求的关系:
商品(商品号,商品名,型号,生产厂家,厂家地址,单价)
客户(客户编号,客户名,地址,电话)
销售(商品号,客户编号,购买日期,购买数量,金额)
15.(选做)E-R模型:
16.关系模型:
证券交易所(交易所编号,名称,地址)
证券公司(证券公司代码,公司名,地址,电话,法人)
上市公司(上市公司编码,公司名,只管行业,法人,电话)
股民(身份证号,姓名,性别,单位,电话)
上市(股票代码,股票名,股本数,上市公司编码,交易所编号)
登记(席位号,证券公司代码,交易所编号)
投资(股东代码,身份证号,交易所编号)
开户(资金账号,股东类别,身份证号,证券公司代码)
购买(购买日期,价格,数量,身份证号,上市公司编码)
第3章:
习题三
一、选择题
1.B2.C3.A4.C5.C6.D7.B8.D9.C
10.A11.D12.B13.C14.C15.C16.C17.D18.B
二、填空题
1.2003年09月30日
2.个人电子计算机
3.XS6.DBF
4.1222
5.101.00、Z=X^2、100.00
三、简答题(略)
第4章:
习题四
一、选择题
1.D2.D3.C4.D5.B6.C7.D8.A9.B
10.B11.D12.D13.A14.A15.D16.B17.A
二、填空题
1.逻辑型表达式
2.APPENDFROM
3.表、表
4..CDX、结构复合
5.32767
6.主或候选、唯一或普通
7.更新、级联
8.关联
9.Ctrl+0
三、写出下列操作命令
1.USE基本档案
LISTFOR民族<>”汉”
2.USEyg
REPLACEyggzWITHyggz+yggz*0.1FORygzw=”营业员”
REPLACEyggzWITHyggz+yggz*0.15FORygzw<>”营业员”
3.USExs
SUMxsjeFORxsrq>={^2002-05-01}ANDxsrq<={^2002-07-31}TOa
4.USExs
COPYSTRUCTURETOxs1.dbf
5.USExs
INDEXONygh+STR(xsje,10,2)TAGygje
第5章:
习题五
一、选择题
1.C2.A3.C4.D5.B6.D7.C
二、填空题
1.数据定义、数据操纵和数据控制。
2.独立使用方式、嵌入使用方式。
3.SHARED
4.10
5.254
6.DELETETABLES
7.Having
三、简答题
1.SQL具有以下特点:
⑴.高度非过程化,是面向问题的描述性语言;
⑵.面向集合(即面向表);
⑶.表达简洁、优雅,使用词汇少,便于学习;
⑷.交互式和嵌入式的使用方式,方便灵活;
⑸.功能完善和强大,集数据定义、数据操纵和数据控制功能于一身;
⑹.所有关系数据库都支持,具有较好的移植性。
2.SQL在进行多表连接查询时,有内连接、左外连接、右外连接和全外连接。
所谓内连接就是查询的结果记录涉及的原表记录必须严格满足连接条件。
左外连接的结果包括所有满足连接条件的记录,以及左表所有不满足条件的其它记录。
右外连接结果包括左、右表全部满足连接条件的记录,以及右表所有不满足条件的其它记录。
、全外连接结果包括左、右表全部满足连接条件的记录,以及左、右表所有不满足条件的其它记录。
3.非相关子查询的方式是:
首先进行子查询,获得一个结果集合,然后再进行外部查询中的记录与子查询结果的比较。
这是先内后外的方式。
相关子查询的方式是:
对于外部查询中与EXISTS子查询有关的表的记录,逐条带入子查询中进行运算,如果结果不为空,这条记录就符合查询要求;如果子查询结果为空,则该条记录不符合查询要求。
子查询的结果与外部查询的表有关,这是从外到内的过程。
4.一个表进行自己与自己的连接运算叫自连接。
由于在一个查询中同一个表同时作为两个表使用,因此,这个表必须以不同的名字参与查询,这样在命令中必须有改名的选项。
同时在条件表达式和输出列的地方都使用别名前缀。
5.所谓的“交叉表”,就是对于查询结果是三个字段的表,对三个字段进行重新布置,得到符合用户要求的一种格式。
查询结果的第一字段作为交叉表的第一列,第二字段的所有值作为交叉表的表头,第三字段的值填在交叉表中对应位置上。
6.所谓视图,是从一个或多个表中按照一个查询的规定抽取的数据组成的表。
视图这个表并不真正存在,它的数据依然放在各自的表中,因此视图只是逻辑上存在的表,是一个“虚表”。
视图实际上是对查询命名,然后保存查询的定义。
视图的数据来源表称为“基本表”,简称“基表”。
视图具有如下特点:
⑴.视图对应的表并不真正存在,数据库中只是保存了视图的定义;
⑵.对视图可以象对表一样进行操作。
如对视图可以进行查询、插入、删除和修改。
在对视图进行操作时,DBMS把这些操作转变成为对组成视图的基表的操作。
但是,视图定义实际上是SELECT命令,由于SELECT命令的多样性,因而不是所有的对视图的操作都可以转化为对基表的操作(主要是对视图的更新操作);
⑶.使用视图可以隐蔽数据库结构的复杂性,使用户只专注于与自己有关的数据,增加了程序与数据库的独立性,同时视图极大地提高了对数据库操作的灵活性和方便性;
⑷.由于视图是“虚表”,因此使用视图提高了数据库的安全性。
根据基表位置的不同,VFP6.0中将视图分为本地视图和远程视图。
四、用SQL命令操作学生数据库,写出各题的操作命令
1.CREATEDATABASE教学管理.DBC
2.CREATETABLE学生.DBF;
(学号C(10)PRIMARYKEY,;
姓名C(8),性别C
(2)CHECK性别="男"OR性别="女",所在学院C(16))
CREATETABLE课表.DBF;
(课号C(4)PRIMARYKEY,课名C(20),先修课号C(4),学分N
(2))
CREATETABLE选课.DBF;
(学号C(10)REFERENCES学生,;
课号C(4)REFERENCES课表,成绩N(3))
3.INSERTINTO学生(学号,姓名,性别,所在学院);
VALUES("01307010","张宁","女","信息学院")
……
4.ALTERTABLE学生ADD生日D
5.UPDATE学生SET生日={^1983/04/03}WHERE学号="01307010"
……
6.、7.(略)
8.SELECT*FROM学生WHERE(DATE()-生日)/365<20AND性别="男"
9.SELECT*FROM学生WHERE所在学院=“信息学院”;
INTOTABLEXXXY
10.SELECTDISTINCT学号FROM选课
或:
SELECT学号FROM选课GROUPBY学号
11.SELECT学生.学号,姓名,课表.课号,课名,所在学院;
FROM学生,课表,选课;
WHERE学生.学号=选课.学号AND课表.课号=选课.课号;
AND选课.课号="C101"
12.SELECT所在学院,COUNT(*);
FROM学生;
WHERE性别="女";
GROUPBY所在学院
13.SELECTAVG(成绩);
FROM学生,选课;
WHERE学生.学号=选课.学号AND所在学院="信息学院"
14.SELECT课表.课号,课名,AVG(成绩);
FROM课表,选课;
WHERE课表.课号=选课.课号;
GROUPBY选课.课号
15.SELECT学生.学号,姓名,COUNT(课号),AVG(成绩);
FROM学生,选课;
WHERE学生.学号=选课.学号;
GROUPBY选课.学号
16.SELECTA.课名;
FROM课表ASA,课表ASB;
WHEREA.课号=B.先修课号ANDB.课号="C001"
17.SELECT学生.学号,姓名,所在学院,成绩;
FROM学生,选课;
WHERE课号="C004"AND学生.学号=选课.学号AND成绩<(;
SELECTMIN(成绩)FROM学生,选课;
WHERE学生.学号=选课.学号AND所在学院="信息学院"AND课号="C004")
18.SELECT*;
FROM学生;
WHERE学生.学号IN(;
SELECT学号FROM选课WHERE课号="C002")
19.SELECTCOUNT(*);
FROM选课;
WHERE课号="C004"AND成绩>(;
SELECTAVG(成绩)FROM选课)
20.SELECT所在学院,COUNT(DIST学生.学号),COUNT(课号);
FROM学生LEFTJOIN选课;
ON学生.学号=选课.学号GROUPBY所在学院
21.SELECT姓名,所在学院;
FROM学生;
WHERE学生.学号NOTIN(;
SELECT学号FROM选课WHERE成绩<80)
22.SELECTA.课名;
FROM课表ASA,课表ASB;
WHEREA.先修课号=B.课号ANDB.课名="计算机原理"
23.SELECT课名,MAX(成绩),MIN(成绩);
FROM课表,选课;
WHERE课表.课号=选课.课号;
GROUPBY选课.课号
24.SELECT学号;
FROM学生;
WHERE学生.学号NOTIN(;
SELECT学号FROM选课WHERE课号="C001")
25.SELECT学号;
FROM选课;
WHERE课号="C002"AND学号IN(;
SELECT学号FROM选课WHERE课号="C001")
26.UPDATE选课;
SET成绩=成绩+10;
WHERE课号="C001"AND学号IN(;
SELECT学号FROM学生WHERE所在学院="信息学院")
五、
1.SELECTYGXM,SPM,XSRQ,XSSL,XSJE;
FROMYG,SP,XS;
WHEREYG.YGH=XS.YGHANDSP.SPH=XS.SPHANDYGXM="李名"
2.SELECTSUM(XSJE)FROMXS
3.SELECTXSRQ,SPM,XSJE;
FROMSP,XS;
WHERESP.SPH=XS.SPHANDXSJE>1000
4.SELECTYGBM,XS.*;
FROMYG,XS;
WHEREYG.YGH=XS.YGHANDYGBM="空调部"
5.SELECTDISTINCTSP.SPH,SPM,SPXH,SPDJ;
FROMSP,XS;
WHERESP.SPH=XS.SPHANDXSRQBETWEEN{^2002/01/01}AND{^2002/12/31}
6.SELECTYGXM,YGBM,SUM(XSJE)ASS1TOP1;
FROMYG,XS;
WHEREYG.YGH=XS.YGH;
GROUPBYXS.YGHORDERBYS1DESC
7.SELECTYGXM,YGBM,SUM(XSJE)ASS1;
FROMYG,XS;
WHEREYG.YGH=XS.YGHGROUPBYXS.YGHORDERBYS1DESC
8.SELECT*;
FROMSP;
WHERESPHNOTIN(SELECTSPHFROMXSGROUPBYSPH)
9.SELECTGK.*,SUM(XSSL)ASC1TOP1;
FROMGK,XS;
WHEREGK.GKH=XS.GKH;
GROUPBYXS.GKHORDERBYC1DESC
10.(选做)分两步完成:
第一步求出一季度的销售数据保存在临时文件(YJDXS)中,第二步将SP、YJDXS、YG进行三个表的全外连接。
SELECT*FROMXS;
WHEREXSRQBETWEEN{^2002/10/01}AND{^2002/12/31};
INTOCURSORYJDXS
SELECTXSRQ,SP.*,XSSL,XSJE,YG.*;
FROMSPFULLJOINYGDXSFULLJOINYG;
ONSP.SPH=YGDXS.SPHONYGDXS.YGH=YG.YGH
11.(选做)分两步完成:
第一步定义求出按月份的销售数据的视图(YXS),第二步在视图中对月份进行分类汇总统计。
CREATESQLVIEWYXS;
ASSELECTSUBSTR(DTOC(XSRQ),4)ASYF,XSJEFROMXS
SELECTYF,SUM(XSJE)FROMYXSGROUPBYYF
六、
1.第一步:
打开销售数据库(XSGL.DBC)
第二步:
启动查询设计器;将YG,XS,SP表添加入查询设计器;
第三步:
在“字段”卡片中选择YGXM、SPM、XSJE添加;
第四步:
在“杂项”卡片中选择“交叉表”复选框;
第五步:
命名保存查询,然后运行查询。
2.第一步:
打开销售数据库(XSGL.DBC)
第二步:
启动视图设计器;将XS,SP,YG表添加入查询设计器;
第三步:
选择XSRQ、SPM、SPXH、SPDW、SPDJ、SPCJ、XSSL、XSJE、YGXM添加到“选定字段列表”中;
第四步:
在“筛选”卡片中加入表达式“XSRQ>={^2002/01/01}ANDXSRQ<={^2002/03/031}”;
第五步:
命名保存,得到第一季度的视图。
其它季度用类似的步骤产生。
3.(选做)
第一步:
打开销售数据库(XSGL.DBC)
第二步:
启动视图设计器;将XS,SP表添加入查询设计器;
第三步:
在“字段”卡片中单击“函数和表达式”项下的按钮,进入表达式生成器;
第四步:
在“表达式生成器”中定义表达式“LEFT(DTOC(XSRQ),5)ASYF”,(日期格式必须是YY/MM/DD);然后添加到“选定字段列表”中;
第五步:
选择SPH、SPM、XSJE添加;
第六步:
命名(YXS)保存视图,这样得到按月存放的销售数据。
第七步:
制作按月汇总视图:
启动视图设计器,将视图YXS加入;选中全部字段添加,在“分组依据”卡中选中“YF”项,命名(YHZ)保存;
制作按商品汇总视图:
启动视图设计器,将视图YXS加入;选中YF,SPM,XSJE字段添加,在“分组依据”卡中选中“SPH”项,命名(SPHZ)保存;
七、1.
2.PLAYACTOR(PNO,NAME,SEX,BIRTHDAY,ADDRESS)
MOVIE(MNO,TITLE,DATE,LENGTH,TYPE,PRODUCT)
PLAYACT(MNO,PNO,CNAME,CASTING)
3.CREATEDATABASEmovieinf.dbc
CREATETABLEPLAYACTOR;
(PNOC(8)PRIMARYKEY,;
NAMEC(8),SEXC
(2),BIRTHDAYD,ADDRESSC(20))
CREATETABLEMOVIE
(MNOC(8)PRIMARYKEY,;
TITLEC(30),MDATED,LENGTHN(4.1),MTYPEC(8),PRODUCTC(30))
CREATETABLEPLAYACT;
(MNOC(8)REFERENCESMOVIE,;
PNOC(8)REFERENCESPLAYACTOR,;
CNAMEC(20),CASTINGC(8))
4.
(1).SELECT*FROMMOVIEWHEREPRODUCT=”长春电影制片厂”
(2).SELECTTILTE,MDATE,MTYPE,PRODUCT,CASTING;
FROMMOIVE,PLAYACTOR,PLAYACT;
WHEREMOVIE.MNO=PLAYACT.MNOANDPLAYACT.PNO=PLAYACTOR.PNO;
ANDNAME=”王露”
(3).SELECTTILTE,MDATE,MTYPE,PRODUCT;
FROMMOIVE,PLAYACTOR,PLAYACT;
WHEREMOVIE.MNO=PLAYACT.MNOANDPLAYACT.PNO=PLAYACTOR.PNO;
ANDNAME=”王露”ANDCASTING=”主角”
(4).SELECT*;
FROMPLAYACTOR;
WHEREPNONOTIN(SELECTDISTINCTPNOFROMPLAYACT)
(5).SELECTTILTE,MDATE,PRODUCT;
FROMMOIVE,PLAYACTOR,PLAYACT;
WHEREMOVIE.MNO=PLAYACT.MNOANDPLAYACT.PNO=PLAYACTOR.PNO;
ANDNAME=”CHENGLONG”ANDMTYPE=”武打”ANDCASTING=”主角”
(6).SELECTNAME,SEX,BIRTHDAY,CASTING;
FROMMOIVE,PLAYACTOR,PLAYACT;
WHEREMOVIE.MNO=PLAYACT.MNOANDPLAYACT.PNO=PLAYACTOR.PNO;
ANDTITLE=”英雄儿女”
(7).SELECT“巩利”,COUNT(MNO);
FROMPLAYACTOR,PLAYACT;
WHEREPLAYACT.PNO=PLAYACTOR.PNOANDNAME=”巩利”
(8).SELECTNAME,COUNT(MNO);
FROMPLAYACTOR,PLAYACT;
WHEREPLAYACT.PNO=PLAYACTOR.PNOANDNAME=”巩利”ANDCASTING=”主角”
第6章:
练习答案
一、选择题
1.D2.C3.D4.B5.C6.A7.B8.D9.C10.C
二、填空题
1.顺序、分支、循环
2.形式参数、实际参数、传值、传址
3.本地、本程序、全局、所有程序
4.I<=9、MAX
5.I=1、I<=100、I=I+1
6.&NAME、C=1、GON
7.NOTEOF()、ZP>=90、ZP>=80、ZP>=60、等级WITHDJ、SKIP
三、读程序,写结果
1.S=66
2.12
234
3456
45678
56789