数据库基本知识第五章课后答案解析文档格式.docx
- 文档编号:752193
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:10
- 大小:87.63KB
数据库基本知识第五章课后答案解析文档格式.docx
《数据库基本知识第五章课后答案解析文档格式.docx》由会员分享,可在线阅读,更多相关《数据库基本知识第五章课后答案解析文档格式.docx(10页珍藏版)》请在冰点文库上搜索。
WHEREC#IN
(SELECTC#
)
FROMS,SC,C
ANDSC.C#=C.C#
ANDTEACHER='
LIU'
但上一种写法更好一些。
(4)检索WANG同学不学的课程的课程号。
SELECTC#
WHEREC#NOTIN
WHERES#IN
WHERESNAME='
WANG'
))
(5)检索至少选修两门课程的学生学号。
SELECTDISTINCTX.SNO
FROMSCX,SCY
WHEREX.SNO=Y.SNOANDX.CNO<
>
Y.CNO
Notice:
对表SC进行自连接,X,Y是SC的两个别名。
(6)检索全部学生都选修的课程的课程号与课程名。
SELECTC#,CNAME
WHERENOTEXISTS
(SELECT*
WHERES#NOTIN
WHERESC.C#=C.C#))
要从语义上分解:
(1)选择课程的课程号与课程名,不存在不选这门课的同学。
其中,“不选这门课的同学”可以表示为:
或者
SELECT*
SC.C#=C.C#)
SELECTDISTINCTS#
WHERETEACHER='
SELECTCOUNT(DISTINCTC#)FROMSC
(9)
求选修C4课程的学生的平均年龄。
SELECTAVG(AGE)
WHEREC#='
C4'
或者,
FROMS,SC
(10)求LIU老师所授课程的每门课程的学生平均成绩。
SELECTCNAME,AVG(GRADE)
FROMSC,C
WHERESC.C#=C.C#ANDTEACHER='
GROUPBYC#
(11)统计每门课程的学生选修人数(超过10人的课程才统计)。
要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
SELECTDISTINCTC#,COUNT(S#)
GROUPBYC#
HAVINGCOUNT(S#)>
10
ORDERBY2DESC,C#ASC
(12)检索学号比WANG同学大,而年龄比他小的学生姓名。
SELECTX.SNAME
FROMSASX,SASY
WHEREY.SNAME='
ANDX.S#>
Y.S#ANDX.AGE<
Y.AGE
(13)检索姓名以WANG打头的所有学生的姓名和年龄。
WHERESNAMELIKE'
WANG%'
(14)在SC中检索成绩为空值的学生学号和课程号。
SELECTS#,C#
WHEREGRADEISNULL
(15)求年龄大于女同学平均年龄的男学生姓名和年龄。
SELECTSNAME,AGE
FROMSASX
WHEREX.SEX='
男'
ANDX.AGE>
(SELECTAVG(AGE)FROMSASY
WHEREY.SEX='
女'
(16)求年龄大于所有女同学年龄的男学生姓名和年龄。
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
把选修MATHS课不及格的成绩全改为空值。
UPDATESC
SETGRADE=NULL
WHEREGRADE<
60ANDC#IN
WHERECNAME='
MATHS'
(6)把低于总平均成绩的女同学成绩提高5%。
SETGRADE=GRADE*1.05
(SELECTAVG(GRADE)FROMSC)ANDS#IN(SELECTS#
FROMSWHERESEX='
F'
(7)在基本表SC中修改C4课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高
4%(用两个UPDATE语句实现)。
ANDGRADE<
=75
SETGRADE=GRADE*1.04
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
WHEREAVG—GRADE>
80
SELECTS#,COUNT(C#)FROMSCWHEREAVG(GRADE)>
80
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
不允许
(5)DELETEFROMS—GRADE
WHEREC—NUM>
4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 基本知识 第五 课后 答案 解析