1一、选择题1、SQL语言是()语言。——(SQL特点)(易)A)层次数据库B)网络数据库C)关系数据库D)非数据库答案:C2、SQL语言具有两种使用方式,分别称为交互式SQL和()。——(SQL语言使用方式)(易)A)提示式SQLB)多用户SQLC)嵌入式SQLD)解释式SQL答案:C3、()包括数据库模式定义和数据库存储结构与存取方法定义。()实现对DB的操作,包括查询、插入、删除、修改数据库中的数据。()用于数据保护,包括数据的安全性,完整性,并发控制和恢复等。——(数据库语言DDLDMLDCL)(中)A)数据控制子语言B)数据定义子语言C)数据操纵子语言D)数据库语言答案:BCA4、下列SQL语句中,实现数据检索的语句是(),修改表结构的是(),修改属性值的是(),删除表结构的是(),删除表记录的是()。——(DROPTABLE,ALTERTABLE,UPDATE,DELETE,SELECT语句)(难)A)SELECTB)DROPC)UPDATED)ALTERE)DELETE答案:ADCBE二、用关系代数表达式及SQL语句描述关系查询1、设有如下关系表R、S和T:——(易)R(BH,XM,XB,DWH)S(DWH,DWM)T(BH,XM,XB,DWH)写出实现下列关系代数的SQL语句:1))('100'RDWH2)XBXMR,)(3)DWHXMXBR,''))((女4)SR5)DWHXBXMXBSR,,''))((男解:1)SELECT*FROMRWHEREDWH=’100’;2)SELECTXM,XBFROMR;3)SELECTXM,DWHFROMRWHEREXB=’女’;4)SELECTR.*,S.DWMFROMR,SWHERER.DWH=S.DWH;5)SELECTXM,XB,DWHFROMR,SWHERER.DWH=S.DWHANDXB=’男’;22、设有如下关系模式:student(NO,NAME,SEX,BIRTHDAY,CLASS)teacher(NO,NAME,SEX,BIRTHDAY,PROF,DEPART)PROF为职称,DEPART为系别course(CNO,CNAME,TNO)score(NO,CNO,DEGREE)DEGREE为成绩写出实现以下各题功能的SQL语句:(1)查询至少有2名男生的班号;——(难)SelectCLASSfromstudentwhereSEX=’男’GroupbySEXHavingCount(*)=2(2)查询不姓“王”的同学记录;——(易)Select*fromstudentwhereNAMENOTLike‘王%’(3)查询每个学生的姓名和年龄;——(难)SelectNAMEyear(date())-year(BIRTHDAY)asageFromstudent(4)查询学生中最大和最小的birthday日期值;——(中)Selectmax(BIRTHDAY),min(BIRTHDAY)Fromstudent(5)查询学生表的全部记录并按班号和年龄从大到小的顺序;——(中)Select*fromstudentorderbyCLASSDESC,BIRTHDAYDESC(6)查询男教师及其所上的课程;——(中)SelectNO,NAME,CNAMEFromteacher,coursewhereteacher.NO=course.TNOandSEX=’男’(7)查询最高分同学的学号,课程号和成绩;——(中)Select*fromscorewhereDEGREE=(selectmax(DEGREE)fromscore)(8)查询和“李军”同性别并同班的所有同学的姓名;——(中)SelectNAMEfromstudentwhereSEX=(selectSEXfromstudentwhereNAME=’李军’)ANDCLAEE=(selectCLASSfromstudentwhereNAME=’李军’)(9)查询选修“数据库系统概论”课程的男同学的成绩表;——(中)①SelectNO,NAME,CNO,CNAMEDEGREEfromstudent,course,scoreWherestudent.NO=score.NOandcourse.CNO=score.CNOandCNAME=’数据库系统概论’andSEX=’男’②Select*fromscorewhereNOin(selectNOfromstudentwhereSex=’男’)ANDCNO=(selectCNOfromcoursewhereCNAME=’数据库系统概论’)(10)查询所有未讲课的教师的姓名和所在系别;——(难)SelectNAMEDEPARTfromteacherwhereNOTEXISTS(select*fromscorewhereteacher.NO=score.TNO)(11)查询“计算机系”教师所教课程的成绩表;——(难)①Select*fromscorewhereCNOIN(selectCNOfromcoursewhereTNOin(selectTNOfromteacherwhereDEPART=’计算机系’))②SelectStudent.NO,Student.NAME,score.CNO,course.CNAME,Teacher.NO,Teacher.NAME,fromstudent,3teacher,course,scorewherestudent.NO=score.NOandCourse.CNO=score.CNOandTeacher.NO=Course.TNOandDEPART=’计算机系’(12)查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录;——(难)Selectstudent.NO,NAME,score.CNO,CNAME,DEGREEwherescore.CNO=’3-105’andDEGREE(selectDEGREEfromscorewhereNO=’109’andCNO=’3-105’)andstudent.NO=score.NOandscore.CNO=course.CNO(13)查询最低分大于70,最高分小于90的学生的学号;——(中)SelectNOfromscoreGroupbyNOhavingmin(DEGREE)70andmax(DEGREE)90(14)查询成绩在60到80之间的所有记录;——(中)Select*fromscorewhereDEGREEBETWEEN60AND80(15)查询成绩比该课程平均成绩低的同学的成绩表;——(相关子查询)(难)Select*fromscorexwhereDEGREE(selectAVE(DEGREE)fromscoreywherex.CNO=y.CNOGroupbyy.CNO)(16)查询所有女教师和女同学的姓名、性别和生日;——(中)SelectNAME,SEX,BIRTHDAYfromstudentwhereSEX=’女’UNIONSelectNAME,SEX,BIRTHDAYfromteacherwhereSEX=’女’(17)查询“计算机系”和“无线电系”不同职称的教师的姓名和职称;——(中)SelectNAME,PROFfromteacherwhereDEPART=’计算机系’ORDEPART=’无线电系’orderbyPROF;(以上是我自己做的答案)参考答案:解:(1)SELECTCLASSFROMstudentWHERESEX=‘男’GROUPBYCLASSHAVINGCOUNT(*)=2;(2)SELECT*FROMstudentWHERENAMENOTLIKE‘王*’;(3)SELECTNAME,year(date())-year(birthday)asageFROMstudent;(4)SELECTMAX(BIRTHDAY),MIN(BIRTHDAY)FROMstudent;(5)SELECT*FROMstudentORDERBYCLASS,BIRTHDAYDESC;(6)SELECTx.name,y.cnameFROMteacherx,courseyWHEREx.no=y.tnoandx.sex=’男’;(7)SELECT*FROMscoreWHEREdegree=(SELECTmax(degree)FROMscore);(8)SELECTnameFROMstudentWHEREsex=(SELECTsexFROMstudentWHEREname=’李军’)andclass=(SELECTclassFROMstudentWHEREname=’李军’);(9)SELECT*FROMscoreWHEREnoIN(SELECTnoFROMstudentWHEREsex=‘男’)andcno=(SELECTcnoFROMcourseWHEREcname=‘数据库系统概论’);(10)SELECTname,departFROMteachertWHERENOTEXIST(SELECT*FROMcoursecWHEREc.tno=t.no);(11)SELECT*FROMscores,teachert,coursecWHEREt.depart=’计算机系’andt.no=c.tnoandc.cno=score.cno;(12)SELECT*FROMstudents,scorescWHEREs.no=sc.noandcno=’3-105’anddegree(SELECTdegreeFROMscWHEREno=’109’andcno=’3-105’);4(13)SELECTnoFROMscoreGROUPBYnoHAVINGmin(degree)70andmax(degree)90;(14)SELECT*FROMscoreWHEREdegreeBETWEEN60AND80;(15)SELECT*FROMscoreaWHEREdegree(SELECTavg(degree)FROMscorebWHEREb.cno=a.cnogroupbyb.cno);(16)SELECTname,sex,birthdayFROMteacherWHEREsex=‘女’UNIONSELECTname,sex,birthdayFROMstudentWHEREsex=‘女’;(17)SELECTname,profFROMteacherWHEREdepart=’计算机系’ORdepart=’无线电系’orderbyprof;