




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库原理第五章课后答案数据库原理第五章课后答案数据库原理第五章课后答案数据库原理第五章课后答案编制仅供参考审核批准生效日期地址:电话:传真:邮编:对于教学数据库的三个基本表
学生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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代理买社保合同范本
- 亚克力盒制作合同范本
- 劳务合同范本无固定
- 公寓购买讲价合同范本
- 医院物业采购合同范本
- 加梯安装合同范本
- 公司做假雇佣合同范本
- 公司与政府合同范本
- 企业合同范本牛厂
- 交定金认购合同范本
- 上海市建设工程施工图设计文件勘察设计质量疑难问题汇编(2024 版)
- 2025四川宜宾市高县县属国企业第一次招聘3人易考易错模拟试题(共500题)试卷后附参考答案
- 2024年全国职业院校技能大赛中职组(母婴照护赛项)考试题库(含答案)
- 2025年全国道路运输企业安全管理人员考试题库(含答案)
- SF-36生活质量调查表(SF-36-含评分细则)
- 作文纸(网格600字A4)
- DLT-5293-2013 电气装置安装工程 电气设备交接试验报告统一格式
- 苏教版四年级下册数学第二单元认识多位数测试卷(含答案)
- 塑料齿轮强度校核方法(共15页)
- 幼儿园语言教育活动的特点
- 危险源辨识和控制措施..
评论
0/150
提交评论