数据库实验报告四.docx
- 文档编号:7077782
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:17
- 大小:616.32KB
数据库实验报告四.docx
《数据库实验报告四.docx》由会员分享,可在线阅读,更多相关《数据库实验报告四.docx(17页珍藏版)》请在冰豆网上搜索。
数据库实验报告四
北京邮电大学
实验报告
课程名称数据处理与数据库
实验内容实验四
数据查询
班级08212103学号08212297姓名刘洋
班级08212103学号08212301姓名蒲亚梅
2009年11月02日
实验目的:
数据库关系表查询:
(1)简单的查询操作,包括单表的查询、选择条件、结果排序等的练习;
(2)多表的连接查询,包括等值连接、自然连接等;
(3)复杂的查询操作,包括使用分组函数等库函数的查询操作;
(4)练习带有IN、比较符的嵌套查询。
实验平台及环境:
WINDOWSVISTA,OFFICE2007
实验内容:
略(步骤中有)
实验步骤
根据实验内容,完成每个要求的步骤,对于导航式的完成要求,要写步骤和截图;对于SQL操作,要有SQL语句和结果。
1.创建设计视图和SQL语句两种方式完成简单查询:
(1)查询班号为g00401班的学生的学号和姓名;
SQL语句:
SELECTstudent.student_id,student.student_name,student.class_id
FROMstudent
WHERE(((student.class_id)="g00401"));
因为该班级不存在,所以查询结果为空。
如下图
同时设计视图方式如下:
(2)查询“数据库开发技术”课程的学分;
SQL语句:
SELECTcourse_name,credit
Fromcourse
WHEREcourse_name=”数据库开发技术”;
试验结果如下(由于记录缺失,本记录为自己添加的)
设计视图方式为:
(3)查询选修了课程编号为“dep04_s003”的学生的学号和成绩,并将成绩按降序输出;
SQL语句:
SELECTstudent_course.grade,student_course.course_id,student_course.student_id
FROMstudent_course
WHERE(((student_course.course_id)="dep04_s003"))
ORDERBYstudent_course.gradeDESC;
;
设计视图方式:
运行结果:
(4)查询学号为“g9940205”的学生选修的课程编号和成绩;
(5)查询选修了课程编号为“dep04_s001”且成绩高于85分的学生的学号和成绩。
2.创建设计视图和SQL语句两种方式完成多表连接的查询实验:
(1)查询选修了课程编号为“dep04_s002”且成绩高于85分的学生的学号、姓名和成绩;
设计视图方式:
新建一个查询,选择student_course和student两张表,将course_id,student_id,student_name,grade写入字段并且设置为显示。
条件一栏将student_course值设置为“dep04_s002”,grade条件设置为“>85”。
设置完成后保存。
打开查询即可执行。
其设置面板如下图01,运行结果见图02。
图1(设置面板)
图2
执行查询后的结果显示面板
SQL语句方式:
SELECTstudent_course.course_id,student_course.student_id,student.student_name,student_course.grade
FROMstudent_courseINNERJOINstudentONstudent_course.student_id=student.student_id
WHERE(((student_course.course_id)="dep04_s002")AND((student_course.grade)>85));
其执行结果同上图2.
(2)查询所有学生的学号、姓名、选修的课程名称和成绩;
设计视图方式:
新建查询,显示student_course和student两张表,填入需要查询的字段,将student的排序设置为升序。
图3
设置面板如上图。
图4
执行结果如上图(以上只显示了部分结果)。
SQL语句方式:
SELECTstudent.student_id,student.student_name,student_course.course_id,student_course.grade
FROMstudent_course,student
WHEREstudent_course.student_id=student.student_id
ORDERBYstudent.student_name;
(3)查询计算机科学系林红同学选修的课程名称、学分和成绩。
(考试成绩>=60 有学分,否则无学分。
)
设计制图方式:
新建查询,打开student,department,student_course,course四张表,查询条件中将学生姓名设置为“林红”,部门设置为“计算机科学”如下图。
图5
SQL语句方式:
SELECTs.student_id,s.student_name,c.course_name,c.credit,sc.grade
FROMstudentASsINNERJOIN(student_courseASscINNERJOINcourseAScONsc.course_id=c.course_id)ONs.student_id=sc.student_id
WHERE(((s.student_name)="林红"));
3.在复杂查询实验中,用SQL语句完成以下查询操作:
(1)查询至少选修了三门课程的学生的学号和姓名;
SQL:
Selects.student_id,s.student_name
Fromstudent_courseASsc,studentASs
WHEREsc.student_id=s.student_id
GROUPBYs.student_name,s.student_id
HAVING(((COUNT(sc.course_id))>=3));
结果:
(2)查询选修课程号为“dep04_b001”的学生的平均成绩;
SQL:
SELECTcourse_id,Avg(grade)ASavg_grade
FROMstudent_course
GROUPBYstudent_course.course_id
HAVING(((student_course.course_id)="dep04_b001"));
运行结果:
图6
(3)查询所有学生的学号和他选修课程的最高成绩,要求他的选修课程中没有成绩为空的。
SELECTstudent_course.student_id,max(grade)
FROMstudent_course
WHEREgradein(selectgrade
fromstudent_course,student
wherestudent.student_id=student_course.student_id)
andgradeisnotnull
GROUPBYstudent_id
HAVINGmax(grade);
其执行结果为:
(4)查询严为老师2001/2002学年教的软件开发技术课程的最高成绩及此学生的学号、姓名、班级。
SELECTstudent.student_id,student.student_name,student.class_id,Max(student_course.grade)ASgrade之最大值
FROMteacherINNERJOIN(studentINNERJOIN((courseINNERJOINstudent_courseONcourse.course_id=student_course.course_id)INNERJOINteacher_course_classONcourse.course_id=teacher_course_class.course_id)ONstudent.student_id=student_course.student_id)ONteacher.teacher_id=teacher_course_class.teacher_id
WHERE(((course.course_name)="软件开发技术")AND((teacher.teacher_name)="严为")AND((teacher_course_class.school_year)="2001/2002")AND((student_course.grade)>=All(selectgrade
FROMstudent_course,course
WHEREcourse.course_name="软件开发技术"andcourse.course_id=student_course.course_id)))
GROUPBYstudent.student_id,student.student_name,student.class_id,student.student_id;
查询结果:
(5)查询数据库开发技术课程用过的教材名称,作者和出版社。
SELECTBook1.book_name,course.course_name,Book1.author,Book1.publish_company
FROMBook1INNERJOINcourseONBook1.book_id=course.book_id
WHERE(((course.course_name)="SQLServer数据库开发技术"));
查询结果:
(6)查询计算机科学系讲授过数据库开发技术的老师姓名和职称。
SQL语句:
SELECTteacher.teacher_name,teacher.profession,department.[department+name],course.course_name
FROMcourse,departmentINNERJOINteacherONdepartment.department_id=teacher.department_id
WHERE(((department.[department+name])="计算机科学")AND((course.course_name)="SQLServer数据库开发技术"));
执行结果如下:
4.用SQL语句完成在嵌套查询实验
(1)查询选修了电磁波工程的学生的学号和姓名;
SQL语句:
SELECTstudent.student_id,student.student_name
FROMstudent
WHEREstudent.student_idin
(selectstudent_id
fromstudent_course,course
where
course.course_name="电磁波工程"andstudent_course.course_id=course.course_id);
运行结果:
(2)查询没有选修电磁波工程的学生的学号和姓名;
SQL语句:
SELECTstudent.student_id,student.student_name
FROMstudent
WHEREstudent.student_idnotin
(selectstudent_id
fromstudent_course,course
where
course.course_name="电磁波工程"andstudent_course.course_id=course.course_id);
运行结果:
(3)查询至少选修了学号为“g9940201”的学生所选修的所有课程的学生的学号和姓名。
SQL语句:
SELECTstudent.student_id,student.student_name
FROMstudent
WHEREstudent.student_idin
(selectstudent_id
fromstudent_course,course
where
course.course_id="g9940201"andstudent_course.course_id=course.course_id);
执行结果如下(没有符合条件的记录):
5.建立如下查询:
学生选修课程信息查询,包括以下内容:
1)学生学号、姓名、所在系、授课老师姓名、课程名称、课程教材名称、出版社、学分、选课成绩
保存为表“选课查询”
(2)
设计视图:
结果:
设计视图:
部分结果:
设计视图:
部分结果:
6.创建设计视图:
设置参数:
☞
输入参数:
得到结果:
7.设计视图:
生成表查询
保存为表“选修“SQLSERVER数据库开发技术””
结果为:
8.创建更新查询
设计视图:
运行后:
表选修“SQLSERVER数据库开发技术”变为:
9.创建追加查询:
设计视图:
运行后表“选修“SQLSERVER数据库开发技术””变为:
10.创建删除查询
设计视图:
运行后表“选修“SQLSERVER数据库开发技术””变为:
实验中遇到的问题:
1.一开始使用SQL语句的时候经常出现提示“不能在语句中出现和”这一提示,最后是把COUNT、MAX这类的函数调整位置来实现查询。
2.查询过程中关于参数的设置存在一些问题;
3.更新查询和删除查询的过程中对设计视图的运用不很连贯。
实验小结:
通过这次的试验我们能够熟练掌握简单的查询操作,包括单表的查询、选择条件、结果排序等的练习等;复杂的查询操作,包括使用分组函数等库函数的查询操作;带有IN、比较符的嵌套查询。
然而对于SQL语句的编写仍然存在不少问题。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 报告