- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)