数据库原理第五章课后答案_第1页
数据库原理第五章课后答案_第2页
数据库原理第五章课后答案_第3页
数据库原理第五章课后答案_第4页
已阅读5页,还剩2页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、对于教学数据库的三个基本表学生 S(S#,SNAME,AGE,SEX)学习 SC(S#,GRADE)课程 C(C#,CNAME,TEACHER)试用 SQL的查询语句表达下列查询:(1)检索 LIU 老师所授课程的课程号和课程名。SELECT C#,CNAMEFROM CWHERE TEACHER=LIU(2)检索年龄大于23 岁的男学生的学号和姓名。SELECT S#,SNAMEFROM SWHERE (AGE23) AND (SEX=M)(3)检索至少选修LIU 老师所授课程中一门课程的女学生姓名。SELECT SNAMEFROM SWHERE SEX=F AND S# IN(SELECT

2、 S#FROM SCWHERE C# IN(SELECT C#FROM CWHERE TEACHER=LIU)NOTICE:有多种写法,比如联接查询写法:SELECT SNAMEFROM S,SC,CWHERE SEX=F AND #=#AND #=#AND TEACHER=LIU但上一种写法更好一些。( 4)检索 WANG同学不学的课程的课程号。SELECT C# FROM C WHERE C# NOT IN(SELECT C#FROM SC WHERE S# IN(SELECT S#FROM SWHERE SNAME=WANG)( 5)检索至少选修两门课程的学生学号。SELECT DIST

3、INCT FROM SC X,SC Y WHERE = AND Notice : 对表 SC进行自连接,X, Y 是 SC的两个别名。( 6)检索全部学生都选修的课程的课程号与课程名。SELECT C#,CNAME FROM CWHERE NOT EXISTS (SELECT *FROM SWHERE S# NOT IN (SELECT *FROM SCWHERE #=#)要从语义上分解: ( 1)选择课程的课程号与课程名,不存在不选这门课的同学。其中,“不选这门课的同学”可以表示为:或者SELECT *SELECT *FROM SFROM SWHERENOT EXISTSWHERE S# N

4、OT IN(SELECT *( SELECT *FROM SCFROM SCWHERE #=# ANDW HERE #=#)#=# )( 7)检索选修课程包含 LIU 老师所授课的学生学号。SELECT DISTINCT S# FROM SCWHERE C# IN (SELECT C#FROM CWHERE TEACHER=LIU)( 8)统计有学生选修的课程门数。SELECT COUNT(DISTINCT C#) FROM SC( 9)求选修C4课程的学生的平均年龄。SELECT AVG(AGE)FROM SWHERE S# IN(SELECT S#FROM SCWHERE C#=C4)或者

5、,SELECT AVG(AGE)FROM S, SCWHERE #=# AND C#=004( 10)求 LIU 老师所授课程的每门课程的学生平均成绩。SELECT CNAME,AVG(GRADE)FROM SC ,CWHERE #=# AND TEACHER=LIUGROUP BY C#( 11)统计每门课程的学生选修人数(超过10人的课程才统计) 。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。SELECT DISTINCT C#,COUNT(S#)FROM SCGROUP BY C#HAVING COUNT(S#)10ORDER BY 2 DESC, C

6、# ASC( 12)检索学号比WANG同学大,而年龄比他小的学生姓名。SELECTFROMSASX,SASYWHERE =WANG AND # AND (SELECT AVG(AGE) FROM S AS Y WHERE = 女 )( 16)求年龄大于所有女同学年龄的男学生姓名和年龄。SELECT SNAME,AGEFROM S AS XWHERE =男 AND ALL (SELECT AGE FROM S AS Y WHERE = 女 )试用 SQL更新语句表达对教学数据库中三个基本表 S、SC、C的各个更新操作:( 1)往基本表S 中插入一个学生元组(S9, WU,18)。INSERT I

7、NTO S(S#,SNAME,AGE) VALUES(59,WU,18)( 2)在基本表S 中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把检索到的值送往另一个已存在的基本表STUDENT(S, SANME,SEX)。INSERT INTO STUDENT(S#,SNAME,SEX)SELECT S#,SNAME,SEXFROM S WHERE NOT EXISTS(SELECT * FROM SC WHEREGRADE80 AND #=#)( 3)在基本表SC中删除尚无成绩的选课元组。DELETE FROM SCWHERE GRADE IS NULL( 4)把 WANG同学的

8、学习选课和成绩全部删去。DELETE FROM SCWHERE S# IN(SELECT S#FROM SWHERE SNAME=WANG)( 5)把选修MATHS课不及格的成绩全改为空值。UPDATE SCSET GRADE=NULLWHERE GRADE60 AND C# IN(SELECT C#FROM CWHERE CNAME=MATHS)( 6)把低于总平均成绩的女同学成绩提高5%。UPDATE SCSET GRADE=GRADE*WHEREGRADE(SELECTAVG(GRADE)FROMSC) ANDS# IN (SELECT S# FROMS WHERESEX=F)( 7)在

9、基本表 SC 中修改 C4课程的成绩,若成绩小于等于 75分时提高 5%, 若成绩大于 75分时提高 4% (用两个 UPDATE语句实现)。UPDATE SCSET GRADE=GRADE*WHERE C#=C4 AND GRADE75在第 1章例中提到“仓库管理”关系模型有五个关系模式:零件PART( P, PNAME, COLOR, WEIGHT)项目PROJECT(J, JNAME,DATE)供应商SUPPLIER( S, SNAME, SADDR)供应PP( J, P, TOTOAL)采购PS( P, S, QUANTITY)( 1)试用 SQLDDL语句定义上述五个基本表,并说明主

10、键和外键。CREATE TABLE PART(P# CHAR(4) NOT NULL,PNAME CHAR(12) NOT NULL,COLOR CHAR(10),WEIGHT REAL,PRIMARY KEY(P#)CREATE TABLE PROJECT(J# CHAR(4) NOT NULL,JNAME CHAR(12) NOT NULL,DATE DATE,PRIMARY KEY(J#)CREATE TABLE SUPLIER(S# CHAR(4) NOT NULL,SNAME CHAR(12),SADDR VARCHAR(20), PRIMARY KEY(S#)CREATE TABL

11、E P_P(J# CHAR(4),P# CHAR(4),TOTAL INTEGER,PRIMARY KEY(J#,P#),FOREIGN KEY(J#) REFERENCE PROJECT(J#),FOREIGN KEY(P#) REFERENCE PART(P#)CREATE TABLE P_S(P# CHAR(4),S# CHAR(4),QUANTITY INTEGER,PRIMARY KEY(P#,S#),FOREIGN KEY(P#) REFERENCE PART(P#),FOREIGN KEY(S#) REFERENCE SUPLIER(S#)( 2)试将 PROGECT、P P、P

12、ART三个基本表的自然联接定义为一个视图VIEW1,PART、P S、SUPPLIER三个基本表的自然联接定义为一个视图VIEW2。CREATE VIEW VIEW1(J#,JNAME,DATE,P#,PNAME,COLOR,WEIGHT,TOTAL) AS SELECT #,JNAME,DATE,#,PNAME,COLOR,WEIGHT,TOTALFROM PROJECT,PART,P_PWHERE #=# AND #=#CREATE VIEW VIEW2(P#,PNAME,COLOR,WEIGHT,S#,SNAME,SADDR,QUANTITY)AS SELECT #,PNAME,COLO

13、R,WEIGHT,#,SNAME,SADDR,QUANTITY FROM PART,P_S,SUPPLIERWHERE #=# AND #=#( 3)试在上述两个视图的基础上进行数据查询:1)检索上海的供应商所供应的零件的编号和名字。SELECT P#,PNAME FROM VIEW2 WHERE SADDR=SHANGHAI2)检索项目J4所用零件的供应商编号和名字。SELECTS#,SNAMEFROMVIEW2 WHEREP# IN(SELECT P# FROMVIEW1 WHEREJ#=J4)对于教学数据库中基本表SC,已建立下列视图:CREATE VIEWS GRADE(S, CNUM

14、, AVG GRADE)ASSELECT S, COUNT(C) , AVG(GRADE)FROM SCGROUP BYS试判断下列查询和更新是否允许执行。若允许,写出转换到基本表SC上的相应操作。( 1) SELECT *FROM SGRADE允许SELECT S#,COUNT(C#),AVG(GRADE) FROM SC GROUP BY S#( 2) SELECT S, CNUM FROM S GRADEWHERE AVG GRADE 80允许SELECT S#,COUNT(C#) FROM SC WHERE AVG(GRADE)80( 3) SELECT S, AVG GRADE FROM SGRADEWHERE CNU

温馨提示

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

评论

0/150

提交评论