《SQL语言章节练习答案》由会员分享,可在线阅读,更多相关《SQL语言章节练习答案(13页珍藏版)》请在金锄头文库上搜索。
1、SQL语言章节练习答案一、设有如下关系模式:student(SNO, SNAME , SEX ,BIRTHDAY, CLASS) teacher(TNO,TNAME,SEX,BIRTHDAY,PROF,DEPART) PROF 为职称,DEPART 为系别course(CNO, CNAME, TNO)score(SNO,CNO,DEGREE)DEGREE为成绩写出实现以下各题功能的SQL语句:1. 查询至少有2名男生的班号;(难)SELECT CLASSFROM studentWHERE SEX=男GROUP BY CLASSHAVING COUNT(*)=2;Having语句用来对结果集进行
2、附加筛选,通 常与group by语句一起使用。2. 查询不姓“王”的同学记录;(易)SELECT *FROM studentWHERE NAME NOT LIKE 王%3. 查询每个学生的姓名和年龄;(难)SELECT NAME,2007-year(BIRTHDAY)FROM student4查询学生中最大和最小的birthday日期值;(中)SELECT MAX(BIRTHDAY), MIN(BIRTHDAY)FROM student5. 查询学生表的全部记录并按班号和年龄从大到小的顺序;(中)SELECT *FROM studentORDER BY CLASS,BIRTHDAY DESC
3、6. 查询男教师及其所上的课程;(中)SELECT ,FROM teacher , courseWHERE = and =男7. 查询最高分同学的学号,课程号和成绩;(中)SELECT *FROM scoreWHERE degree=(SELECT max(degree)FROM score)满足嵌套子查询的条件(最后投影的属性列*888. 查询和“李军”同性别并同班的所有同学的姓名;(中)SELECT NAMEFROM studentWHEREsex=(SELECT sexFROM studentWHERE name二李军)andclass二(SELECT classFROM student
4、WHERE name二李军)要习惯用多重条件的复合运算来做题9. 查询选修“数据库系统概论”课程的男同学的成绩表;(中)SELECT *no IN(SELECT noFROM studentWHERE sex二男)andcno=(SELECT cnoFROM courseWHERE cname二数据库系统概论)10 查询所有未讲课的教师的姓名和所在系别;(难)SELECT name, departFROM teacherWHERE NOT EXISTS(SELECT *FROM courseWHERE 二)11.查询“计算机系”教师所教课程的成绩表;(难)SELECT *FROM scoreF
5、ROM score , teacher , course13. 查询最低分大于70,最高分小于90的学WHERE =计算机系and =and =思路:涉及到三个表格,教师信息表,课程信息表,以及成绩表teacher -计算机系教师教授的课程代码(teacher,course) =score- 此 课 程 的 成 绩 表(course,score)=+ 限制条件 =计算机系缺一不可!12.查询选修“5623”课程,且成绩高于“001” 号同学成绩的所有同学的记录;(难)SELECT *FROM student , scoreWHERE =and cno=5623and degree(SELECT
6、 degreeFROM scoreWHERE no=001and cno=5623生的学号;(中)SELECT noFROM scoreGROUP BY noHAVING min(degree)70and max(degree)9014. 查询成绩在60到100之间的所有记录; (中)SELECT *FROM scoreWHERE degree BETWEEN 60 AND 10015. 查询成绩比该课程平均成绩低的同学的 成绩表;(相关子查询(难)SELECT *FROM score aWHERE degree (SELECT avg(degree)FROM score bWHERE =gr
7、oup by)16. 查询所有女教师和女同学的姓名、性别和生日;中)SELECT name, sex, birthdayFROM teacherWHERE sex二女UNIONSELECT name, sex, birthdayFROM studentWHERE sex=女17. 查询“计算机系”和“无线电系”的教师的姓名和职称;(中)SELECT name, profFROM teacherWHERE depart二 计算机系 OR depart二无线电系18. 建立一个学生课程成绩视图V-SSC(NO,NAME, CNO, CNAME, DEGREE);CREATE VIEW V-SSCA
8、SSELECT , cno, cname, degreeFROM student,course,scoreWHERE 二 AND 二19从视图V-SSC上查询平均成绩在80分以上的同学的NAME, CNAME和DEGREE。SELECT NAME, CNAME, DEGREEFROM V-SSCGROUP BY NO二、设有如下关系模式: (中)图书关系B (图书编号B#,图书名T, 作者A,出版社P);读者关系R (借书证号C#,读者名N, 读者地址D);借阅关系L(C#,B#,借书日期E,还 书标志BZ);BZ二NULL表示未还;写出实现以下各题功能的SQL语句:1. 查询“工业出版社”出
9、版的图书名,用关 系代数表达式描述关系查询,并写出查询语言。n 9(b)T P=工业出版社Select Tfrom BWhere P 二工业出版社2将书号为B5的图书的出版社改为“工业 出版社”Update BSet P二工业出版社Where B# 二B53.查询2007年以前借书的读者名字Select N , TFrom R , LWhere E 804. 将读者“孙祥”的借书信息从L表中删除。Where N= 孙Delete from L Where C# = ( Select C#From R 祥);三、设有关系模式:SB( SN , SNAME, CITY)其中SB表示供应商,SN为供
10、应商号,SNAME为供应商名字,CITY为供应商所在城市;SNSNAMECITY0101李明上海0102张丽广州0103张小杰深圳0104王刚厦门PB(PN, PNAME, COLOR, WEIGHT)其中PB表示零件,PN为零件代号,PANME为零件名字,COLOR为零件颜色,WEIGHT为零件重量;PNPNAMECOLORWEIGHTP01钉子黑色/lit 11P02螺丝棕色2P03轴承灰色50103P02J02200104P03J03350101J040103P01J0530写出实现以下各题功能的SQL语句:1.取出所有工程的全部细节;(易)5. 取出为工程J01提供零件P01的供应商代
11、SELECT *FROM JB号;(易)SELECT SN2. 取出所在城市为上海的所有工程的全部细节;(易)SELECT *FROM JBWHERE JCITY二上海3. 取出重量最轻的零件代号;(难)SELECT PNFROM PBWHERE WEIGHT二(SELECT MIN(WEIGHT)FROM PB)4. 取出为工程J01提供零件的供应商代号;(易)SELECT SNFROM SPJBFROM SPJBWHERE JN=J01AND PN=P016. 取出由供应商0101提供零件的工程名称;(易)SELECT JNAMEFROM JB,SPJBWHERE SN二0101AND 二
12、7. 取出供应商0101提供的零件的颜色;(易)SELECT COLORFROM PB,SPJBWHERE SN二0101AND 二8. 取出为工程J01或J02提供零件的供应商代号;(中)SELECT SNWHERE JN=J01FROM SPJBWHERE JN=J01 OR JN=J029. 取出为工程J01提供黑色零件的供应商代号;(易)SELECT SNFROM SPJB,PBWHERE COLOR二黑色AND JN=J01AND 二10. 取出为所在城市为上海的工程提供零件的供应商代号;(易)SELECT SNFROM SPJB,JBWHERE JCITY二上海AND 二11. 取
13、出为所在城市为上海或北京的工程提 供黑色零件的供应商代号;(中) SELECT SNFROM PB, JB, SPJBWHERE COLOR二黑色AND JCITY IN (上海,北京)AND 二AND 二涉及到城市,颜色,供应商,需要的表有三个PB, JB, SPJB (两个连接条件)+两个限制条件COLOR二黑色+ JCITY IN12. 取出供应商与工程所在城市相同的供应 商提供的零件代号;(中)SELECT PNFROM SB, JB , SPJBWHERE 二AND 二AND 二SB-SPJBJB13. 取出上海的供应商提供给上海的任一工程的零件的代号;(难)SELECT PNFROM SB, SPJB, JBWHERE 二上海AND 二上海AND 二AND 二多表连接选择条件 二 连接条件 + 限制条 件14. 取出上海供应商不提供任何零件的工程的代号;(难)SELECT JNFROM SPJBWHERE JN NOT IN(SELECTFROM SB,SPJB(上海,北京)WHERE 二 AND 二上海)SELECT