数据库第三章部分习题答案_第1页
数据库第三章部分习题答案_第2页
数据库第三章部分习题答案_第3页
数据库第三章部分习题答案_第4页
数据库第三章部分习题答案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库第三章部分习题答案数据库第三章部分习题答案数据库第三章部分习题答案数据库第三章部分习题答案编制仅供参考审核批准生效日期地址:电话:传真:邮编:对于教学数据库的三个基本表S(S#,SNAME,AGE,SEX)SC(S#,C#,GRADE)C(C#,CNAME,TEACHER)试用SQL的查询语句表达下列查询:3.2.1检索年龄小于17岁的女学生的学号和姓名selects#,snamefromSwhereage<17andsex=F;3.2.2检索男生所学课程的课程号和课程名selectc#,cnamefromCwherec#in(selectdistinctc#fromSCwheres#in(selects#fromSwheresex=M))3.2.3检索男生所学课程的任课老师的工号和姓名selectt#,tnamefromTwheret#in(selectdistinctt#fromCwherec#in(selectdistinctc#fromSC

wheres#in(selects#fromSwheresex=1)));3.2.4检索至少选修两门课程的学生的学号

selects#fromSCgroupbys#havingcount(c#)>=2;3.2.5检索至少有学号为S2和S4所学的课程和课程名selectc#,cnamefromCwherec#in((selectc#fromscwheres#='S2')intersect(selectc#fromscwheres#='S4'));3.2.6检索‘WANG’同学不学的课程号selectc#fromcexcept(selectdistinctc#fromscwheres#=(selects#fromswheresname='WANG'));3.2.7检索全部学生都选修的课程号和课程名selectc#,cnamefromc

wherenotexists(selects#fromswhere#notin(selectc#fromscwhere#=#));3.2.8检索选修课程包含'LIU'老师所授课程的全部课程的学生的学号和姓名selects#,snamefromswherenotexists((selectc#fromcwheret#=(selectt#fromtwheretname='LIU'))except(selectc#fromscwhere#=#));设有两个基本表R(A,B,C)和S(A,B,C),试用SQL查询语句表达下列关系代数表达式:=1\*GB3①R∪S =2\*GB3②R∩S =3\*GB3③R-S ④ R×S ⑤πA,B(R)πB,C(S)3=3课⑥π1,6(σ3=4(R×S) ⑦π1,2,3(RS) ⑧R÷πC(S)3=3课解:①(SELECT*FROMR) UNION (SELECT*FROMS);②(SELECT*FROMR) INTERSECT (SELECT*FROMS);③(SELECT*FROMR) MINUS (SELECT*FROMS);④SELECT*FROMR,S;⑤SELECT,,FROMR,SWHERE=;⑥SELECT,FROMR,SWHERE=;⑦SELECTR.* (R.*表示R中全部属性)FROMR,SWHERE=;⑧ R÷πC(S)的元组表达式如下:{t|(∃u)(∀v)(∃w)(R(u)∧S(v)∧R(w)∧w[1]=u[1]∧w[2]=u[2]∧w[3]=v[3]∧t[1]=u[1]∧t[2]=u[2])}据此,可写出SELECT语句: SELECTA,BFROMRRXWHERENOTEXISTS(SELECT*FROMSWHERENOTEXISTS(SELECT*FROMRRYWHERE=AND=AND=);试叙述SQL语言的关系代数特点和元组演算特点。答:SQL的关系代数特点如下:有关系代数运算的并、交、差、自然联接等运算符;FROM子句体现了笛卡尔积操作,WHERE子句体现了选择操作,SELECT子句体现了投影操作。SQL的元组演算特点如下:FROM子句中的基本表名应视为“元组变量”,属性名应视为“元组分量”;有存在量词EXISTS符号。试用SQL更新语句表达对题教学数据库中关系S、SC、C的更新操作:=1\*GB3①往关系C中插一个课程元组('C8','VC++','T6')。=2\*GB3②检索所授每门课程平均成绩均大于80分的教师姓名,并把检索到的值送往另一个已存在的表FACULTY(TNAME)。=3\*GB3③在SC中删除尚无成绩的选课元组。=4\*GB3④把选修LIU老师课程的女同学选课元组全部删去。=5\*GB3⑤把MATHS课不及格的成绩全改为60分。=6\*GB3⑥把低于所有课程总平均成绩的女同学成绩提高5%。=7\*GB3⑦在表SC中修改C4课程的成绩,若成绩小于等于70分时提高5%,若成绩大于70 分时提高4%(用两种方法实现,一种方法是用两个UPDATE语句实现,另一种方法是用带CASE操作的一个UPDATE语句实现)。⑧在表SC中,当某个成绩低于全部课程的平均成绩时,提高5%。解:①INSERTINTOCVALUES('C8','VC++','T6');②INSERTINTOFACULTY(TNAME)SELECTDISTINCTTEACHERFROM(SELECTTEACHER,#,AVG(GRADE)FROMS,SCWHERE#=#GROUPBYTEACHER,#)ASRESULT(TEACHER,C#,AVG_GRADE)ASXWHERE80<=ALL(SELECTAVG_GRADEFROMRESULTASYWHERE=;③DELETEFROMSCWHEREGRADEISNULL;④DELETEFROMSCWHERES#IN(SELECTS#FROMSWHERESEX='F')ANDC#IN(SELECTC#FROMCWHERETEACHER='LIU');⑤UPDATESCSETGRADE=60WHEREGRADE<60ANDC#IN(SELECTC#FROMCWHERECNAME='MATHS');⑥UPDATESCSETGRADE=GRADE*WHERES#IN(SELECTS#FROMSWHERESEX='F')ANDGRADE<(SELECTAVG(GRADE)FROMSC);⑦用两个UPDATE语句实现:UPDATESCSETGRADE=GRADE*WHEREC#='C4'ANDGRADE>70;UPDATESCSETGRADE=GRADE*WHEREC#='C4'ANDGRADE<=70;(这两个UPDATE语句的顺序不能颠倒。)用一个UPDATE语句实现:UPDATESCSETGRADE=GRADE*CASEWHENGRADE>70THENELSEENDWHEREC#='C4';⑧UPDATESC SETGRADE=GRADE* WHEREGRADE<(SELECTAVG(GRADE) FROMSC);设数据库中有三个关系: 职工表 EMP(E#,ENAME,AGE,SEX,ECITY),其属性分别表示职工工号、姓名、年龄、性别和籍贯。工作表 WORKS(E#,C#,SALARY),其属性分别表示职工工号、工作的公司编号和工资。公司表 COMP(C#,CNAME,CITY),其属性分别表示公司编号、公司名称和公司所在城市。试用SQL语句写出下列操作:①用CREATETABLE语句创建上述三个表,需指出主键和外键。②检索超过50岁的男职工的工号和姓名。③假设每个职工只能在一个公司工作,检索工资超过1000元的男性职工工号和姓名。④假设每个职工可在多个公司工作,检索在编号为C4和C8公司兼职的职工工号和姓名。⑤检索在“联华公司”工作、工资超过1000元的男性职工的工号和姓名。⑥假设每个职工可在多个公司工作,检索每个职工的兼职公司数目和工资总数.显示(E#,NUM,SUM_SALARY),分别表示工号、公司数目和工资总数。⑦工号为E6的职工在多个公司工作,试检索至少在E6职工兼职的所有公司工作的职工工号。⑧检索联华公司中低于本公司平均工资的职工工号和姓名。⑨在每一公司中为50岁以上职工加薪100元(若职工为多个公司工作,可重复加)。⑩在EMP表和WORKS表中删除年龄大于60岁的职工有关元组。解:① CREATETABLEEMP(E# CHAR(4)NOTNULL,ENAME CHAR(8)NOTNULL,AGE SMALLINT,SEX CHAR(1),ECITY CHAR(20),PRIMARYKEY(E#));CREATETABLECOMP(C# CHAR(4)NOTNULL,CNAME CHAR(20)NOTNULL,CITY CHAR(20),PRIMARYKEY(C#)); CREATETABLEWORKS(E# CHAR(4)NOTNULL,C# CHAR(4)NOTNULL,SALARY SMALLINT,PRIMARYKEY(E#,C#),FOREIGNKEY(E#)REFERENCESEMP(E#),FOREIGNKEY(C#)REFERENCESCOMP(C#));② SELECTE#,ENAMEFROMEMPWHEREAGE>50ANDSEX='M';③ SELECT#,ENAMEFROMEMP,WORKSWHERE#=#ANDSALARY>1000;④ SELECT#,FROMEMPA,WORKSB,WORKSCWHERE#=#AND#=#AND#='C4'AND#='C8';⑤ SELECT#,FROMEMPA,WORKSB,COMPCWHERE#=#AND#=#ANDCNAME='联华公司'ANDSALARY>1000ANDSEX='M';⑥ SELECTE#,COUNT(C#)ASNUM,SUM(SALARY)ASSUM_SALARYFROMWORKSGROUPBYE#;⑦ SELECT#FROMWORKSXWHERENOTEXISTS(SELECT*FROMWORKSYWHEREE#='E6'ANDNOTEXISTS(SELECT*FROMWORKSZWHERE#=#AND#=#));⑧ SELECT#,FROMEMPA,WORKSB,COMPCWHERE#=#AND#=#ANDCN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论