数据库技术 试题库(附答案) 联系客服

发布时间 : 星期日 文章数据库技术 试题库(附答案)更新完毕开始阅读26e2fa24aaea998fcc220e41

5.设有如下关系表R:

R(No,NAME,SEX,AGE,CLASS) 主码是NO

其中NO为学号,NAME为姓名,SEX为性别,AGE为年龄,CLASS为班号。 写出实现下列功能的SQL语句。 ①插入一个记录(25,“李明”,“男”,21,“95031”); 。

②插入“95031”班学号为30、姓名为“郑和”的学生记录; 。 ③将学号为10的学生姓名改为“王华”; 。 ④将所有“95101”班号改为“95091”; 。 ⑤删除学号为20的学生记录; 。 ⑥删除姓“王”的学生记录; 。

答案:

①INSERT INTO R VALUES(25,“李明”,“男”,21,“95031”) ②INSERT INTO R(NO,NAME,CLASS) VALUES(30,“郑和”,“95031”) ③UPDATE R SET NAME=“王华”WHERE NO=10

④UPDATE R SET CLASS=“95091”WHERE CLASS=“95101” ⑤DELETE FROM R WHERE NO=20

⑥DELETE FROMR WHERE NAME LIKE“王%” 三.简述与应用题

1.叙述使用SQL语言实现各种关系运算的方法。

答: SQL语言没有提供关系的笛卡尔积、交和差运算。其他关系运算对应的SQL语句格式是:

R∪S SELECT语句(生成R) UNION

SELECT语句(生成S) 选择 SELECT*

FROM <表>

WHERE <指定选择的条件> 投影 SELECT <投影字段列表> FROM <表>

连接 SELECT <连接的字段列表> FROM <连接的两个表名> WHERE <连接条件>

2.设有如下所示的三个关系,并假定这三个关系框架组成的数据模型就是用户子模式。 其中各个属性的含义如下:A#(商店代号)、ANAME(商店名)、WQTY(店员人数)、CITY(所在城市)、B#(商品号)、BNAME(商品名称)、PRICE(价格)、QTY(商品数量)。 试用SQL语言写出下列查询,并给出执行结果:

(1).找出店员人数不超过100人或者在长沙市的所有商店的代号和商店名。

SELECT A#,ANAME FROM A;

WHERE WQTY<=100 OR CITY=“长沙” (2).找出供应书包的商店名。

SELECT A.ANAME FROM A,B,AB;

WHERE A.A#=AB.A# AND B.B#=AB.B# AND B.BNAME=“书包”

(3).找出至少供应代号为256的商店所供应的全部商品的商店名和所在城市。

SELECT A.ANAME,A.CITY FROM A,B;

WHERE A.A#=AB.A# AND AB.B# IN

(SELECT AB.B#; FROM AB

WHERE A#=“256”)

A# ANAME A WQTY 15 89 500 76 412 B B# 1 2 3 4

A# 101 101 101 101 204 256 256 345 345 345 620 AB B# QTY 1 2 3 4 3 1 2 1 2 4 4 105 42 25 104 61 241 91 141 18 74 125 BNAME 钢笔 羽毛球 复读机 书包 PRICE 21 5 300 76 CITY 长沙 北京 北京 长沙 上海 101 百货商店 204 长安商场 256 西单商场 345 铁道商店 620 太平洋百货

3.设有图书登记表TS,具有属性:BNO(图书编号),BC(图书类别),BNA(书名),AU(著者),PUB(出版社)。按下列要求用SQL语言进行设计: (1).按图书馆编号BNO建立TS表的索引ITS。 (2).查询,按出版社统计其出版图书总数。 (3).删除索引ITS。 解:

(1). USE TS

INDEX ON BNO TO ITS (2). SELECT PUB,COUNT(BNO) FROM TS

GROUP BY PUB

(3). DELETE FILE ITS.IDX

4.己知三个关系R(A,B,C)、S(A,D,E)和T(D,F),其中,名称相同的属性为关联属性,C、E为数值型属性。

试用SQL语句实现如下操作:

(1).将R、S和T三个关系按关联属性建立一个视图R-S-T; (2).对视图R-S-T按属性A分组后,求属性C和E的平均值。 解:

(1).CREATE VIEW R-S-T

AS SELECT R.A,B,C,S.D,E,F FROM R,S,T

WHERE R.A=S.A AND S.D=T.D (2).SELECT AVG(C),AVG(E) FROM R-S-T GROUP BY A

5.设有关系R(A,B)和S(A,C),A为相同属性。 试用SQL语句实现:

(1).查询属性C>50时,R中相关联的属性B之值。

(2).当属性C=40时,将R中与之相关连的属性B值修改为b4。 解:

(1).SELECT B FROM R,S

WHERE R.A=S.A AND C>50 (2).UPDATE R

SET B=‘b4’ WHERE A IN (SELECT A FROM S

WHERE C=40)

6.已知R(A,B,C)和S(C,D,E)两个关系,如下图所示。 执行如下SQL语句:

(1).CREATE VIEW H(A,BC,C,D,E) AS SELECT A,B,R.C,D,E FROM R,S

WHERE R.C=S.C; (2).SELECT B,D,E FROM H

WHERE C=‘C2’ 试给出: (1).视图H;

(2).对视图H的查询结果。

R S

A B C C D E

a1 b1 c1 c1 d1 e1

a2 b2 c2 c2 d2 e2

a3 b3 c3 c3 d3 e3

解:

本题的结果如图所示。 视图H 对H的查询结果

A B C D E B D E a1 b1 c1 d1 e1 b1 d2 e2 a2 b2 c2 d2 e2 b2 d2 e2

a3 b3 c3 d3 e3

7.已知关系R如图所示。

A B C

97 b1 84 97 b2 92

97 b3 98

98 b1 72

98 b2 84

98 b3 95

99 b1 88 99 b2 94

试用SQL语句实现下列操作:

(1).按属性A分组,求出每组中在属性C上的最大值和最小值,且将它们置于视图RVE中。 (2).在视图RVE中查询属性A=‘98’的记录。 解:

(1).CREATE VIEW RVE(A,CMAX,CMIN) AS SELECT A,MAX(C),MIN(C) FROMR

GROUP BY A; (2).SELECT * FROM RVE

WHERE A=‘98’

8.已知学生表S和学生选课表SC。其关系模式如下: S(SNo,SN,SD,PROV) SC(SNO,CN,GR)

其中,SNO为学号,SN为姓名,SD为系名,PROV为省区,CN为课程名,GR为分数。 试用SQL语言实现下列操作:

(1).查询“信息系”的学生来自哪些省区。

(2).按分数降序排序,输出“英语系”学生选修了“计算机”课程的学生的姓名和分数。 解:

(1).SELECT DISTINCT PROV FROM S

WHERE SD=“信息系” (2).SELECT SN,GR FROM S,SC

WHERE SD=“英语系”AND CN=“计算机”AND S.SNO=SC.SNO ORDER BY GR DESC;

9.设有学生表S(SNO,SN)(SNO为学号,SN为姓名)和学生选课表SC(SNO,CNO,CN,G)