数据库原理例题及解答.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、实验目的: 1、认识SQL语言的特色和基本观点。 2、能够针对某种详细的DBMS(本实验采纳Access2003),娴熟地运用单表查问、连结查问、嵌套查问、集 合查问等各样SQL查问语句对数据库中的表进行操作。 3、对同样的查问要求,能够采纳多种查问方法实现,并能剖析各样方法的好坏,从中选择适合的方法。 二、实验过程: 1、Printthenamesofprofessorswhoworkindepartmentsthathavefewerthan50PhDstudents. 解:(1)剖析:本题是查问在博士生人数少于50个人的系工作的教师名字。查问教授名字能够经过 表,而所查问的教授名字是有限制条件的, 他所工作的系名要属于特定的会合(全部系名的一个子集),明显这个子集能够经过查问 dept表获取,所以带有谓词in的嵌套子查问能够实现题目要求。  prof (2)语句实现: SELECTProf.字段  1 FROMProf WHEREProf.字段2IN(SELECTDept.字段1FROMDeptWHEREDept.字段250); ****************************************************; (3)查问结果: 2  Printthename(s)ofstudent(s)withthelowestgpa 解:(1)剖析:本题是查问成绩点最低的学生的名字。最低的成绩点能够在 获取,而所查问学生的名字的限制为成绩点等于min(gpa), (2)语句实现: SELECTStudent.字段2  student表中经过函数min(gpa) 所以可用以下嵌套子查问实现。 FROMStudent WHEREStudent.字段6IN(SELECTmin(Student.字段6)FROMStudent); ****************************************************; 优选文档 (3)查问结果: 3、ForeachComputerSciencesclass,printthecno,sectno,andtheaveragegpaofthestudentenrolledintheclass. 解:(1)剖析:本题是查问计算机科学系的全部班的课程号、分班号、班上学生的均匀绩点。计算机科学 系的全部班能够经过section表获取,而经过enroll表能够由section表中的dname,cno, sectno获取班上全部学生的sid,而经过sid能够在student表中查得学生成绩点,最后由cno, sectno进行分组,并用函数avg(gpa),获取每组的均匀成绩。所以可用三个表的连结查问, 并适合分组实现查问要求。 (2)语句实现: SELECTSection.字段2,Section.字段3,avg(Student.字段6)ASavStudent字段6FROM[Section],Enroll,Student WHERE((Section.字段1=ComputerSciences)and(Section.字段2=Enroll.字段 4)and(Enroll.ID=Student.ID)) GROUPBYSection.字段2,Section.字段3; ****************************************************; (3)查问结果: —2 优选文档 4、Printthecoursenames,coursenumbersandsectionnumbersofallclasseswithlessthansixstudentsenrolledin them. 解:(1)剖析:本题是查问全部班级人数少于6的课程名,课程号,分班号。经过section表能够查问出所 有的班,此中的课程名可由查问所得的dname,cno在course表中确立,由于与班级人数有 关,还需将section表和enroll表做连结,并按section.cno,section.dname,section.sectno分组以获取全部班的人数。所以可用连结查问、嵌套查问,并适合分组来实现查问要求。 (2)语句实现: SELECT(SELECTCourse.字段2fromCourse whereCourse.字段1=Section.字段2andCourse.字段3=Section.字段1) ASCourse字段2,Section.字段2,Section.字段3 FROM[Section],Enroll WHERE(Section.字段2=Enroll.字段4 ANDsection.字段1=enroll.字段3ANDsection.字段3=enro

文档评论(0)

178****2826 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档