1、1,第三章 SQL语言 习题,2,1、查询选修3门以上课程的学生总成绩(不统计不 及格的课程),并要求按总成绩的降序排列。 正确的SELECT语句是 。,B,SELECT SNO,SUM(SCORE) FROM Score WHERE SCORE=60 GROUP BY SNO ORDER BY 2 DESC HAVING COUNT(*)=3,SELECT SNO,SUM(SCORE) FROM Score WHERE SCORE=60 ORDER BY 2 DESC GROUP BY SNO HAVING COUNT(*)=3,SELECT SNO,SUM(SCORE) FROM Scor
2、e WHERE SCORE=60 HAVING COUNT(*)=3 GROUP BY SNO ORDER BY 2 DESC,SELECT SNO,SUM(SCORE) FROM Score WHERE SCORE=60 GROUP BY SNO HAVING COUNT(*)=3 ORDER BY 2 DESC,A,B,D,C,3,2、查询选修课程“3-105”的学生中成绩最高的 学生学号。正确的SELECT语句是 。,D,SELECT SNO FROM Score WHERE CNO=3-105 AND SCORE=(SELECT SCOREFROM Score WHERE CNO=3-
3、105),SELECT SNO FROM Score WHERE CNO=3-105 AND SCORE=ALL(SELECT SCOREFROM Score WHERE CNO=3-105),SELECT SNO FROM Score WHERE CNO=3-105 AND SCORE NOT IN(SELECT SCOREFROM Score WHERE CNO=3-105),SELECT SNO FROM Score WHERE CNO=3-105 AND SCORE IN(SELECT SCOREFROM Score WHERE CNO=3-105),A,B,D,C,4,3、设有职工关
4、系模式如下: people(pno,pname,sex,job,wage,dptno),职工 (职工号, 职工姓名, 性别, 职业, 工资, 所在部门号), 请写出下列查询使用的SQL语句: (1)查询工资比所在部门平均工资高的所有职工信息。 (2)查询工资高于“张三”工资的所有职工信息。,SELECT * FROM People x WHERE wage (SELECT AVG(wage)FROM People yWHERE x.dptno=y.dptno),SELECT * FROM People WHERE wage (SELECT wageFROM PeopleWHERE pname=
5、张三),5,4、以下SQL操作, 不能执行。(其中职工号和部门号为主码),A、从职工表中删除行(025, 王芳, 03, 720) B、将行(005, 乔星, 04, 750)插入到职工表中 C、将职工号为“001”的工资改为700 D、将职工号为“038”的部门改为03 E、将职工号为“001”的部门改为05,B E,6,5、若用如下的SQL语句创建一个表student:,则可以插入到student 表中的是 。 A、(1031, 王海, 男, 20) B、(1031, 王海, NULL, NULL) C、(NULL, 王海, 男, 20) D、(1031, NULL, 男, 23),B,C
6、REATE TABLE Student(Sno CHAR(4) NOT Null,Sname CHAR(8) NOT Null,Ssex CHAR(2),Sage INT),7,(1)实现RT的SQL语句是 。 (2)实现DWH=100(R)的SQL语句是 。 (3)实现XM,XB(R)的SQL语句是 。 (4)实现XM,XB (XB=女(R)的SQL语句是 。 (5)实现R S的SQL语句是 。 (6)实现XM,XB,DWM (XB=男(R S)的SQL语句 是 。,6、设有如下关系表R,S和T:R(BH,XM,XB,DWH)S(DWH,DWM)T(BH,XM,XB,DWH),8,(1)SE
7、LECT * FROM R UNION SELECT * FROM T (2)SELECT * FROM R WHERE DWH=100 (3)SELECT XM, XB FROM R (4)SELECT XM, DWH FROM R WHERE XB=女 (5)SELECT R.BH, R.XM, R.XB, R.DWH, S.DWM FROM R, S WHERE R.DWH=S.DWH (6)SELECT R.XM, R.XB, S.DWM FROM R, S WHERE R.DWH=S.DWH AND R.XB=男,5.假设选课关系如下图所示,执行以下SQL语句: SELECT COU
8、NT(DISTINCT 学号) FROM 选课 WHERE 成绩70 查询结果中包含的元组数目是( )。 A)1 B)2 C)3 D)4 选课,9,9. SQL的SELECT语句中,“HAVING条件表达式”用来筛选满足条件的( )。A)列 B)行 C)关系 D)分组,10,12.在嵌入式SQL中,为了把集合操作转换成单记录处理方式,引进了以下哪个概念( )。 A)宿主语言 B)游标 C)DDL语言 D)DML语言,11,14.下列SQL语句中,能够实现“收回用户LI 对学生表(STUD)中学号(Sno)的修改权”这一功能的是( )。 A)REVOKE UPDATE(Sno) ON TABLE
9、 FROM LI B)REVOKE UPDATE(Sno) ON TABLE FROM PUBLIC C)REVOKE UPDATE(Sno) ON STUD FROM LI D)REVOKE UPDATE(Sno) ON STUD FROM PUBLIC,12,1.SQL以同一种语法格式,提供_和_两种使用方式。,13,五、综合题(共20分,每小题4分)假设有如下学生-教师-课程信息数据库(其中加下划线的是主码),试完成下列各小题: Student(Sno,Sname,Sage,Ssex,Sclass) (学生信息表) 各属性分别代表学号、姓名、年龄、性别、所在班级 Course(Cno,C
10、name,Tno) (课程信息表) 各属性分别代表课程号、课程名、授课教师编号 SC(Sno,Cno,Grade) (选课表) 各属性分别代表学号、课程号、成绩 1) 试用关系代数表示下列查询语句: (1)查询所有男生的姓名和学号; (2)查询学号为012091001选修的所有课程的课程号; 2)试为下列查询要求写出SQL表达式: (3)试用SQL语句统计女生的人数; (4)查询 012092班学生的学号、姓名、年龄、性别; (5)查询选修了“数据库原理”课程且成绩高于90分的学生学号和成绩。,14,(1)查询所有男生的姓名和学号; 答:(1)Sname, Sno (Ssex=男 (Stude
11、nt) (2)查询学号为012091001选修的所有课程号; 答:(2)Cno (Sno=012091001 (SC) (3)试用SQL语句统计女生的人数; SELECT COUNT(*) FROM Student WHERE Ssex = 女 (4)查询 012092班学生的学号、姓名、年龄、性别; SELECT Sno,Sname,Sage,Ssex FROM Student WHERE Sclass = 012092 (5)查询选修了“数据库原理”课程且成绩高于90分的学生学号和成绩。 SELECT Sno,Grade FROM SC,Course WHERE SC. Cno= Cour
12、se.Cno and Cname = 数据库原理 and Grade=90,15,三、问答题(每题6分,共30分),4.简述视图的作用。,16,17,书P127 第5题,设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式: S(SNO,SNAME,STATUS,CITY) P(PNO,PNAME,COLOR,WEIGHT) J(JNO,JNAME,CITY) SPJ(SNO,PNO,JNO,QTY) 关系中的具体数据见书P75四个表。 试用SQL语言完成下列各项操作。,18,1、找出所有供应商的姓名和所在城市。 2、找出所有零件的名称、颜色、重量。3、找出使用供应商S1所供应零件的工程号
13、码。4、找出工程项目J2使用的各种零件的名称及其数量。5、找出上海厂商供应的所有零件号码。6、找出使用上海产的零件的工程名称。7、找出没有使用天津产的零件的工程号码。8、把全部红色零件的颜色改成蓝色。9、由S5供给J4的零件P6改为由S3供应,请作必要的 修改。 10、从供应商关系中删除S2的记录,并从供应情况关系 中删除相应的记录。 11、请将(S2,J6,P4,200)插入供应情况关系。,19,1、找出所有供应商的姓名和所在城市。 SELECT SNAME, CITY FROM S 2、找出所有零件的名称、颜色、重量。SELECT PNAME, COLOR, WEIGHTFROM P 3、
14、找出使用供应商S1所供应零件的工程号码。SELECT JNOFROM SPJWHERE SNO=S1,20,4、找出工程项目J2使用的各种零件的名称及其数量。SELECT P.PNAME, SPJ.QTYFROM P, SPJWHERE P.PNO=SPJ.PNO AND SPJ.JNO=J2 5、找出上海厂商供应的所有零件号码。SELECT DISTINCT PNO FROM SPJWHERE SNO IN ( SELECT SNOFROM SWHERE CITY=上海 ),21,6、找出使用上海产的零件的工程名称。SELECT JNAMEFROM J, SPJ, SWHERE J.JNO=
15、SPJ.JNO AND SPJ.SNO=S.SNOAND S.CITY=上海SELECT JNAMEFROM JWHERE JNO IN ( SELECT JNOFROM SPJ, SWHERE SPJ.SNO=S.SNOAND S.CITY=上海 ),22,7、找出没有使用天津产的零件的工程号码。,SELECT JNO FROM J WHERE NOT EXISTS(SELECT *FROM SPJWHERE SPJ.JNO=J.JNOAND SNO IN(SELECT SNOFROM SWHERE CITY=天津),SELECT JNO FROM J WHERE NOT EXISTS(SE
16、LECT *FROM SPJ, SWHERE SPJ.JNO=J.JNOAND SPJ.SNO=S.SNO AND S.CITY=天津),23,7、找出没有使用天津产的零件的工程号码。,SELECT JNO FROM J WHERE JNO NOT IN(SELECT JNOFROM SPJ, SWHERE SPJ.SNO=S.SNOAND S.CITY=天津),SELECT JNO FROM J WHERE NOT EXISTS(SELECT *FROM SPJ, SWHERE SPJ.JNO=J.JNOAND SPJ.SNO=S.SNO AND S.CITY=天津),24,8、把全部红色零
17、件的颜色改成蓝色。UPDATE PSET COLOR=蓝WHERE COLOR=红 9、由S5供给J4的零件P6改为由S3供应,请作必要的 修改。UPDATE SPJSET SNO=S3WHERE SNO=S5 AND JNO=J4 AND PNO=P6,25,10、从供应商关系中删除S2的记录,并从供应情况关系 中删除相应的记录。DELETE DELETE FROM SPJ FROM SWHERE SNO=S2 WHERE SNO=S2 11、请将(S2,J6,P4,200)插入供应情况关系。 INSERT INTO SPJ(SNO, JNO, PNO, QTY)VALUES(S2, J6, P4, 200)INSERT INTOVALUES(S2, P4, J6, 200),