数据库基本知识第五章课后答案解析.docx
- 文档编号:22997781
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:10
- 大小:87.63KB
数据库基本知识第五章课后答案解析.docx
《数据库基本知识第五章课后答案解析.docx》由会员分享,可在线阅读,更多相关《数据库基本知识第五章课后答案解析.docx(10页珍藏版)》请在冰豆网上搜索。
数据库基本知识第五章课后答案解析
5.4对于教学数据库的三个基本表
学生S(S#,SNAME,AGE,SEX)
学习SC(S#,,GRADE)
课程C(C#,CNAME,TEACHER)
试用SQL的查询语句表达下列查询:
SELECTC#,CNAME
FROMC
WHERETEACHER=‘LIU'
SELECTS#,SNAME
FROMS
WHERE(AGE>23)AND(SEX=
(3)
检索至少选修LIU老师所授课程中一门课程的女学生姓名。
SELECTSNAME
FROMS
WHERESEX=‘F'ANDS#IN
(SELECTS#
FROMSC
WHEREC#IN
(SELECTC#
FROMC
WHERETEACHER=‘LIU')
FROMS,SC,C
ANDSC.C#=C.C#
ANDTEACHER='LIU'
但上一种写法更好一些。
(4)检索WANG同学不学的课程的课程号。
SELECTC#
FROMC
WHEREC#NOTIN
(SELECTC#
FROMSC
WHERES#IN
(SELECTS#
FROMS
WHERESNAME='WANG'))
(5)检索至少选修两门课程的学生学号。
SELECTDISTINCTX.SNO
FROMSCX,SCY
WHEREX.SNO=Y.SNOANDX.CNO<>Y.CNO
Notice:
对表SC进行自连接,X,Y是SC的两个别名。
(6)检索全部学生都选修的课程的课程号与课程名。
SELECTC#,CNAME
FROMC
WHERENOTEXISTS
(SELECT*
FROMS
WHERES#NOTIN
(SELECT*
FROMSC
WHERESC.C#=C.C#))
要从语义上分解:
(1)选择课程的课程号与课程名,不存在不选这门课的同学。
其中,“不选这门课的同学”可以表示为:
或者
SELECT*
SELECT*
FROMS
SC.C#=C.C#)
SELECTDISTINCTS#
FROMSC
WHEREC#IN
(SELECTC#
FROMC
WHERETEACHER='LIU'))
SELECTCOUNT(DISTINCTC#)FROMSC
(9)
求选修C4课程的学生的平均年龄。
SELECTAVG(AGE)
FROMS
WHERES#IN
(SELECTS#
FROMSC
WHEREC#='C4')
或者,
SELECTAVG(AGE)
FROMS,SC
(10)求LIU老师所授课程的每门课程的学生平均成绩。
SELECTCNAME,AVG(GRADE)
FROMSC,C
WHERESC.C#=C.C#ANDTEACHER='LIU'
GROUPBYC#
(11)统计每门课程的学生选修人数(超过10人的课程才统计)。
要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
SELECTDISTINCTC#,COUNT(S#)
FROMSC
GROUPBYC#
HAVINGCOUNT(S#)>10
ORDERBY2DESC,C#ASC
(12)检索学号比WANG同学大,而年龄比他小的学生姓名。
SELECTX.SNAME
FROMSASX,SASY
WHEREY.SNAME='WANG'ANDX.S#>Y.S#ANDX.AGE (13)检索姓名以WANG打头的所有学生的姓名和年龄。 FROMS WHERESNAMELIKE'WANG%' (14)在SC中检索成绩为空值的学生学号和课程号。 SELECTS#,C# FROMSC WHEREGRADEISNULL (15)求年龄大于女同学平均年龄的男学生姓名和年龄。 SELECTSNAME,AGE FROMSASX WHEREX.SEX='男'ANDX.AGE>(SELECTAVG(AGE)FROMSASY WHEREY.SEX='女') (16)求年龄大于所有女同学年龄的男学生姓名和年龄。 SELECTSNAME,AGE FROMSASX WHEREX.SEX='男'ANDX.AGE>ALL(SELECTAGEFROMSASYWHERE Y.SEX='女') 5.6试用SQL更新语句表达对教学数据库中三个基本表S、SC、C的各个更 新操作: (1)往基本表S中插入一个学生元组(’S9'‘WU'18)。 INSERTINTOS(S#,SNAME,AGE)VALUES('59','WU',18) 送往另一个已存在的基本表STUDENT(8#,SANME,SEX)。 INSERTINTOSTUDENT(S#,SNAME,SEX) SELECTS#,SNAME,SEX (SELECT*FROMSCWHERE GRADE<80ANDS.S#=SC.S#) DELETEFROMSC WHEREGRADEISNULL DELETEFROMSC WHERES#IN (SELECTS# FROMS WHERESNAME='WANG') 把选修MATHS课不及格的成绩全改为空值。 UPDATESC SETGRADE=NULL WHEREGRADE<60ANDC#IN (SELECTC# FROMC WHERECNAME='MATHS') (6)把低于总平均成绩的女同学成绩提高5%。 UPDATESC SETGRADE=GRADE*1.05 WHEREGRADE<(SELECTAVG(GRADE)FROMSC)ANDS#IN(SELECTS# FROMSWHERESEX='F') (7)在基本表SC中修改C4课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高 4%(用两个UPDATE语句实现)。 UPDATESC SETGRADE=GRADE*1.05 WHEREC#='C4'ANDGRADE<=75 UPDATESC SETGRADE=GRADE*1.04 WHEREC#='C4'ANDGRADE>75 5.7在第1章例1.4中提到“仓库管理”关系模型有五个关系模式: 零件PART(P#,PNAME,COLOR,WEIGHT) 项目PROJECT(J#,JNAME,DATE) 供应商SUPPLIER(S#,SNAME,SADDR) CREATETABLEPART (P#CHAR(4)NOTNULL,PNAMECHAR(12)NOTNULL, COLORCHAR(10),WEIGHTREAL, PRIMARYKEY(P#)) CREATETABLEPROJECT(J#CHAR(4)NOTNULLJNAMECHAR(12)NOTNULL, DATEDATE, PRIMARYKEY(J#)) CREATETABLESUPLIER (S#CHAR(4)NOTNULL,SNAMECHAR(12),SADDRVARCHAR(20), PRIMARYKEY(S#)) CREATETABLEP_P(J#CHAR(4),P#CHAR(4),TOTALINTEGER, PRIMARYKEY(J#,P#), FOREIGNKEY(J#)REFERENCEPROJECT(J#), FOREIGNKEY(P#)REFERENCEPART(P#)) CREATETABLEP_S(P#CHAR(4),S#CHAR(4),QUANTITYINTEGER, PRIMARYKEY(P#,S#), FOREIGNKEY(P#)REFERENCEPART(P#), FOREIGNKEY(S#)REFERENCESUPLIER(S#)) (2)试将PROGECT、P—P、PART三个基本表的自然联接定义为一个视图VIEW1,PART、P—S、 VIEW2。 SUPPLIER三个基本表的自然联接定义为一个视图 CREATEVIEWVIEW1(J#,JNAME,DATE,P#,PNAME,COLOR,WEIGHT,TOTAL) PROJECT.J#,JNAME,DATE,PART.P#,PNAME,COLOR,WEIGHT,TOTAL FROMPROJECT,PART,P_P WHEREPART.P#=PP.P#ANDPP.J#=PROJECT」# VIEW CREATE VIEW2(P#,PNAME,COLOR,WEIGHT,S#,SNAME,SADDR,QUANTITY) PART.P#,PNAME,COLOR,WEIGHT,SUPPLIER.S#,SNAME,SADDR,QUANTITY FROMPART,P_S,SUPPLIER WHEREPART.P#=P_S.P#ANDP_S.S#=SUPPLIER.S# (3)试在上述两个视图的基础上进行数据查询: 1)检索上海的供应商所供应的零件的编号和名字。 SELECTP#,PNAMEFROMVIEW2WHERESADDR='SHANGHAI' SELECTS#,SNAMEFROMVIEW2WHEREP#IN(SELECTP#FROMVIEW1 WHEREJ#='J4') FROMS—GRADE 允许 SELECTS#,COUNT(C#),AVG(GRADE)FROMSCGROUPBYS# (2)SELECTS#,C—NUM FROMS—GRADE WHEREAVG—GRADE>80 允许 SELECTS#,COUNT(C#)FROMSCWHEREAVG(GRADE)>80 FROMS—GRADE WHERES#='S4' 允许 SELECTS#,AVG(GRADE) FROMSCASX WHERECOUNT(X.C#)>(SELECTCOUNT(Y.C#)FROMSCASYWHERE Y.S#='S4') GROUPBYS# (4)UPDATES—GRADE SETC—NUM=C—NUM+1 WHERES#='S4' 不允许 (5)DELETEFROMS—GRADE WHEREC—NUM>4 不允许
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 基本知识 第五 课后 答案 解析