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

下载本文档

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

文档简介

数据库原理第五章课后答案数据库原理第五章课后答案数据库原理第五章课后答案数据库原理第五章课后答案编制仅供参考审核批准生效日期地址:电话:传真:邮编:对于教学数据库的三个基本表

学生S(S#,SNAME,AGE,SEX)

学习SC(S#,,GRADE)

课程C(C#,CNAME,TEACHER)

试用SQL的查询语句表达下列查询:

(1)检索LIU老师所授课程的课程号和课程名。

SELECTC#,CNAME

FROMC

WHERETEACHER=‘LIU’

(2)检索年龄大于23岁的男学生的学号和姓名。

SELECTS#,SNAME

FROMS

WHERE(AGE>23)AND(SEX=‘M’)

(3)检索至少选修LIU老师所授课程中一门课程的女学生姓名。

SELECTSNAME

FROMS

WHERESEX=‘F’ANDS#IN

(SELECTS#

FROMSC

WHEREC#IN

(SELECTC#

FROMC

WHERETEACHER=‘LIU’)

NOTICE:有多种写法,比如联接查询写法:

SELECTSNAME

FROMS,SC,C

WHERESEX=‘F’AND#=#AND#=#ANDTEACHER='LIU'但上一种写法更好一些。

(4)检索WANG同学不学的课程的课程号。

SELECTC#

FROMC

WHEREC#NOTIN

(SELECTC#

FROMSC

WHERES#IN

(SELECTS#

FROMS

WHERESNAME='WANG'))

(5)检索至少选修两门课程的学生学号。

SELECTDISTINCT

FROMSCX,SCY

WHERE=AND<>

Notice:对表SC进行自连接,X,Y是SC的两个别名。

(6)检索全部学生都选修的课程的课程号与课程名。SELECTC#,CNAMEFROMCWHERENOTEXISTS(SELECT*FROMSWHERES#NOTIN(SELECT*FROMSCWHERE#=#))要从语义上分解:(1)选择课程的课程号与课程名,不存在不选这门课的同学。

其中,“不选这门课的同学”可以表示为:SELECT*FROMSWHERES#NOTIN(SELECT*FROMSCWHERE#=#)或者SELECT*FROMSWHERENOTEXISTS(SELECT*FROMSCWHERE#=#AND#=#)

(7)检索选修课程包含LIU老师所授课的学生学号。

SELECTDISTINCTS#

FROMSC

WHEREC#IN

(SELECTC#

FROMC

WHERETEACHER='LIU'))

(8)统计有学生选修的课程门数。

SELECTCOUNT(DISTINCTC#)FROMSC

(9)求选修C4课程的学生的平均年龄。

SELECTAVG(AGE)

FROMS

WHERES#IN

(SELECTS#

FROMSC

WHEREC#='C4')

或者,

SELECTAVG(AGE)

FROMS,SC

WHERE#=#ANDC#='004'

(10)求LIU老师所授课程的每门课程的学生平均成绩。

SELECTCNAME,AVG(GRADE)

FROMSC,C

WHERE#=#ANDTEACHER='LIU'

GROUPBYC#

(11)统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。

SELECTDISTINCTC#,COUNT(S#)

FROMSC

GROUPBYC#

HAVINGCOUNT(S#)>10

ORDERBY2DESC,C#ASC

(12)检索学号比WANG同学大,而年龄比他小的学生姓名。

SELECT

FROMSASX,SASY

WHERE='WANG'AND#>#AND<

(13)检索姓名以WANG打头的所有学生的姓名和年龄。

SELECTSNAME,AGE

FROMS

WHERESNAMELIKE'WANG%'

(14)在SC中检索成绩为空值的学生学号和课程号。

SELECTS#,C#

FROMSC

WHEREGRADEISNULL

(15)求年龄大于女同学平均年龄的男学生姓名和年龄。

SELECTSNAME,AGE

FROMSASX

WHERE='男'AND>(SELECTAVG(AGE)FROMSASYWHERE='女')

(16)求年龄大于所有女同学年龄的男学生姓名和年龄。

SELECTSNAME,AGE

FROMSASX

WHERE='男'AND>ALL(SELECTAGEFROMSASYWHERE='女')

试用SQL更新语句表达对教学数据库中三个基本表S、SC、C的各个更新操作:

(1)往基本表S中插入一个学生元组(‘S9’,‘WU’,18)。

INSERTINTOS(S#,SNAME,AGE)VALUES('59','WU',18)

(2)在基本表S中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把检索到的值送往另一个已存在的基本表STUDENT(S#,SANME,SEX)。

INSERTINTOSTUDENT(S#,SNAME,SEX)

SELECTS#,SNAME,SEX

FROMSWHERENOTEXISTS

(SELECT*FROMSCWHERE

GRADE<80AND#=#)

(3)在基本表SC中删除尚无成绩的选课元组。

DELETEFROMSC

WHEREGRADEISNULL

(4)把WANG同学的学习选课和成绩全部删去。

DELETEFROMSC

WHERES#IN

(SELECTS#

FROMS

WHERESNAME='WANG')

(5)把选修MATHS课不及格的成绩全改为空值。

UPDATESC

SETGRADE=NULL

WHEREGRADE<60ANDC#IN

(SELECTC#

FROMC

WHERECNAME='MATHS')

(6)把低于总平均成绩的女同学成绩提高5%。

UPDATESC

SETGRADE=GRADE*

WHEREGRADE<(SELECTAVG(GRADE)FROMSC)ANDS#IN(SELECTS#FROMSWHERESEX='F')

(7)在基本表SC中修改C4课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%(用两个UPDATE语句实现)。

UPDATESC

SETGRADE=GRADE*

WHEREC#='C4'ANDGRADE<=75

UPDATESC

SETGRADE=GRADE*

WHEREC#='C4'ANDGRADE>75

在第1章例中提到“仓库管理”关系模型有五个关系模式:

零件PART(P#,PNAME,COLOR,WEIGHT)

项目PROJECT(J#,JNAME,DATE)

供应商SUPPLIER(S#,SNAME,SADDR)

供应P_P(J#,P#,TOTOAL)

采购P_S(P#,S#,QUANTITY)

(1)试用SQLDDL语句定义上述五个基本表,并说明主键和外键。

CREATETABLEPART

(P#CHAR(4)NOTNULL,PNAMECHAR(12)NOTNULL,

COLORCHAR(10),WEIGHTREAL,

PRIMARYKEY(P#))

CREATETABLEPROJECT

(J#CHAR(4)NOTNULL,JNAMECHAR(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、SUPPLIER三个基本表的自然联接定义为一个视图VIEW2。

CREATEVIEWVIEW1(J#,JNAME,DATE,P#,PNAME,COLOR,WEIGHT,TOTAL)

ASSELECT#,JNAME,DATE,#,PNAME,COLOR,WEIGHT,TOTAL

FROMPROJECT,PART,P_P

WHERE#=#AND#=#

CREATEVIEWVIEW2(P#,PNAME,COLOR,WEIGHT,S#,SNAME,SADDR,QUANTITY)

ASSELECT#,PNAME,COLOR,WEIGHT,#,SNAME,SADDR,QUANTITY

FROMPART,P_S,SUPPLIER

WHERE#=#AND#=#

(3)试在上述两个视图的基础上进行数据查询:1)检索上海的供应商所供应的零件的编号和名字。SELECTP#,PNAMEFROMVIEW2WHERESADDR='SHANGHAI'2)检索项目J4所用零件的供应商编号和名字。SELECTS#,SNAMEFROMVIEW2WHEREP#IN(SELECTP#FROMVIEW1WHEREJ#='J4')对于教学数据库中基本表SC,已建立下列视图:

CREATEVIEWS_GRADE(S#,C_NUM,AVG_GRADE)

ASSELECTS#,COUNT(C#),AVG(GRADE)

FROMSC

GROUPBYS#

试判断下列查询和更新是否允许执行。若允许,写出转换到基本表SC上的相应操作。

(1)SELECT*

温馨提示

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

评论

0/150

提交评论