当前位置:首页 > 数据库技术 试题库(附答案)
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)
共分享92篇相关文档