R=∏供应商号(σ地址=“北京“(供应商)) **北京的供应商号 ∏工资(职工??( ∏职工号,供应商号(订购单)÷R))
(7).检索至少和职工E1、E4、E7都有联系的供应商名称。 解:
关系代数表示:
设临时关系R = 职工号 E1
E4
E7
∏供应商名称((∏供应商号,职工号(订购单)÷R)?? 供应商) ALPHA表示:
13.用关系代数完成下面各项操作(各个关系模式及关系如后所示)。
供应商(SNO,SNAME,CITY)
零件(PNO,PNAME,COLOR,WEIGHT) 工程(JNO,JNAME,CITY) 供应(SNO,PNO,JNO,QTY)
(1).求供应工程J1零件的单位号码SNO (2).求供应工程J1零件P1的单位号码SNO (3).求供应工程J1零件为红色的单位号码SNO
(4).求没有使用天津供应商的红色零件的工程号JNO
(5).求至少用了单位S1所供应的全部零件的工程号JNO. 解:
(1). ∏SNO(σJNO=‘J1’(SPJ))
(2). ∏SNO(σJNO=‘J1’∧ PNO=‘P1’(SPJ)) (3). ∏PNO(σCOLOR=‘红’(P)) ①
∏SNO(σJNO=‘J1’(SPJ) ?? ①) ∏SNO(σJNO=‘J1’(SPJ) ?? ∏PNO(σCOLOR=‘红’(P)))
(4).
? ? ? ?
1) ∏SNO(σCITY=‘天津’(S)) : ①天津供应商号 2) ∏PNO(σCOLOR=‘红’(P)) : ②红色零件号
3) ∏JNO(① ?? SPJ?? ② ) : ③使用了天津供应商红色零件的工程号 4) ∏JNO(J)- ③ : 未使用天津供应商的红色零件的工程号 ∏JNO,PNO (SPJ)÷ ∏PNO (σSNO=‘S1’(SPJ)) :至少用了单位S1所供应的全部
零件的工程号JNO
第三部分 关系数据库标准语言SQL
(5). ∏PNO(σSNO=‘S1’(SPJ)) :S1供应的全部零件号
一、单项选择题
1.SQL语言是 的语言,易学习。
A.过程化 B.非过程化 C.格式化 D.导航式 答案:B
2.SQL语言是 语言。 A.层次数据库 B.网络数据库 C.关系数据库 D.非数据库 答案:C
3.SQL语言具有 的功能。 A.关系规范化、数据操纵、数据控制 B.数据定义、数据操纵、数据控制 C.数据定义、关系规范化、数据控制 D.数据定义、关系规范化、数据操纵 答案:B
4.SQL语言的数据操纵语句包括SELECT,INSERT,UPDATE和DELETE等。其中最重要的,也是使用最频繁的语句是 。
A.SELECT B.INSERT C.UPDATE D.DELETE 答案:A
5.SQL语言具有两种使用方式,分别称为交互式SQL和 。 A.提示式SQL B.多用户SQL C.嵌入式SQL D.解释式SQL 答案:C
6.SQL语言中,实现数据检索的语句是 。 A.SELECT B.INSERT C.UPDATE D.DELETE 答案:A
7.下列SQL语句中,修改表结构的是 。 A.ALTER B.CREATE C.UPDATE D.INSERT 答案:A
第8到第11题基于这样的三个表即学生表S、课程表C和学生选课表SC,它们的结构如下:
S(S#,SN,SEX,AGE,DEPT) C(C#,CN)
SC(S#,C#,GRADE)
其中:S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C#为课程号,CN为课程名,GRADE为成绩。 8.检索所有比“王华”年龄大的学生姓名、年龄和性别。正确的SELECT语句是 。 A.SELECT SN,AGE,SEX FROM S WHERE AGE>(SELECT AGE FROM S WHERE SN=“王华”) B.SELECT SN,AGE,SEX FROM S
WHERE SN=“王华”
C.SELECT SN,AGE,SEX FROM S
WHERE AGE>(SELECT AGE
WHERE SN=“王华”)
D.SELECT SN,AGE,SEX FROM S WHERE AGE>王华.AGE 答案:A 9.检索选修课程“C2”的学生中成绩最高的学生的学号。正确的SELECT语句是 。 A.SELECT S# FORM SC WHERE C#=“C2” AND GRAD>= (SELECT GRADE FORM SC
WHERE C#=“C2”) B.SELECT S# FORM SC
WHERE C#=“C2” AND GRADE IN (SELECT GRADE FORM SC WHERE C#=“C2”) C.SELECT S# FORM SC
WHERE C#=“C2” AND GRADE NOT IN (SELECT GRADE FORM SC WHERE C#=“C2”) D.SELECT S# FORM SC
WHERE C#=“C2” AND GRADE>=ALL (SELECT GRADE FORM SC WHERE C#=“C2”) 答案:D
10.检索学生姓名及其所选修课程的课程号和成绩。正确的SELECT语句是 。 A.SELECT S.SN,SC.C#,SC.GRADE FROM S
WHERE S.S#=SC.S#
B.SELECT S.SN,SC.C#,SC.GRADE FROM SC
WHERE S.S#=SC.GRADE
C.SELECT S.SN,SC.C#,SC.GRADE FROM S,SC
WHERE S.S#=SC.S#
D.SELECT S.SN,SC.C#,SC.GRADE FROM S.SC 答案:C 11.检索选修四门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。正确的SELECT语句是 。
A.SELECT S#,SUM(GRADE)FROM SC WHERE GRADE>=60 GROUP BY S#
ORDER BY 2 DESC
HAVING COUNT(*)>=4 WHERE C#=“C2” AND GRADE>= (SELECT GRADE FORM SC WHERE C#=“C2”) B.SELECT S# FORM SC
WHERE C#=“C2” AND GRADE IN (SELECT GRADE FORM SC WHERE C#=“C2”) C.SELECT S# FORM SC
WHERE C#=“C2” AND GRADE NOT IN (SELECT GRADE FORM SC WHERE C#=“C2”) D.SELECT S# FORM SC
WHERE C#=“C2” AND GRADE>=ALL (SELECT GRADE FORM SC WHERE C#=“C2”) 答案:D
12.假定学生关系是S(S#,SNAME,SEX,AGE),课程关系是C(C#,CNAME,TEACHER),学生
选课关系是SC(S#,C#,GRADE)。
要查找选修“COMPUTER”课程的“女”学生姓名,将涉及到关系 。 A.S B.SC,C C.S,SC D.S,C,SC 答案:D
13.如下面的数据库的表中,若职工表的主码是职工号,部门表的主码是部门号,SQL操作 不能执行。
A.从职工表中删除行(‘025’,‘王芳’,‘03’,720) B.将行(‘005,’,‘乔兴’,‘04’,750)插入到职工表中 C.将职工号为,‘001’的工资改为700 D.将职工号为,’038’的部门号改为‘03’
答案:B
14.若用如下的SQL语句创建一个student表: CREATE TABLE student(NO C(4) NOT NULL, NAME C(8) NOT NULL, SEX C(2), AGE N(2))
可以插入到student表中的是 。 A.(‘1031’,‘曾华’,男,23) B.(‘1031’,‘曾华’,NULL,NULL) C.(NULL,‘曾华’,‘男’,‘23’) D.(‘1031’,NULL,‘男’,23)
答案:B 二、填空题
1.SQL是 。 答案:结构化查询语言
2.SQL语言的数据定义功能包括 ① 、 ② 、 ③ 和 ④ 。
答案:①定义数据库 ②定义基本表 ③定义视图 ④定义索引 3.视图是一个虚表,它是从 ① 中导出的表。在数据库中,只存放视图的 ② ,不存放视图的 ③ 。
答案:①一个或几个基本表 ②定义 ③视图对应的数据 4.设有如下关系表R、S和T: 以BH,XM,XB,DWH) S(DWH,DWM)
T(BH,XM,XB,DWH)
①实现R∪T的SQL语句是 。
②实现?DWH=‘100’(R)的SQL语句是 。 ③实现∏XM,XB(R)的SQL语句是 。
④实现∏XM,DWH(?XB=‘女’(R))的SQL语句是 。 ⑤实现R?? S的SQL语句是 。 ⑥实现∏XM,XB,DWM(?XB=‘男’(R?? S))的SQL语句是 。 答案:①SELECT * FROM R UNION SELECT * FROM T ②SELECT * FROM R WHERE DWH=‘100’ ③SELECT XM,XB FROM R
④SELECT XM,DWH FROM R WHERE XB=“女”
⑤SELECT R.BH,R.XM,R.XB,R.DWH, S.DWM FROM R,S
WHERE R.DWH=S.DWH
⑥SELECT R.XM,R.XB,S.DWM FROM R,S
WHERE R.DWH=S.DWH AND R.XB=“男”
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的商店所供应的全部商品的商店名和所在城市。