学姐们倾情奉献~跪安吧少年少女们!北京邮电大学实验报告课程名称数据库系统原理实验内容实验(三)数据查询实验班级姓名指导老师成绩_________XXXX年XX月XX日实验三数据查询实验实验目的通过对实验二中建立的数据库关系表和视图的各种查询的操作,加深对SQL语言和Transact SQL查询语言的了解,掌握相关查询语句的语法和使用方法。
实验内容数据库关系表查询:(1)简单的查询操作,包括单表的查询、选择条件、结果排序等的练习;(2)多表的连接查询,包括等值连接、自然连接等;(3)复杂的查询操作,包括使用分组函数等库函数的查询操作;(4)练习带有IN、比较符的嵌套查询。
具体内容包括:1.简单查询:(1) 查询班号为g00401班的学生的学号和姓名;(2) 查询“数据库开发技术”课程的学分;(3) 查询选修了课程编号为“dep04_s003”的学生的学号和成绩,并将成绩按降序输出;(4) 查询学号为“g9940205”的学生选修的课程编号和成绩;(5) 查询选修了课程编号为“dep04_s001”且成绩高于85分的学生的学号和成绩。
2.在多表连接的查询实验中,在SQL SERVER提供的交互式语言环境下用Transact SQL 语句完成以下查询操作:(1)查询选修了课程编号为“dep04_s002”且成绩高于85分的学生的学号、姓名和成绩;(2)查询所有学生的学号、姓名、选修的课程名称和成绩;(3)查询计算机科学系林红同学选修的课程名称、学分和成绩。
(考试成绩>=60有学分,否则无学分。
)3.在复杂查询实验中,在SQL SERVER提供的交互式语言环境下用Transact SQL语句完成以下查询操作:(1)查询至少选修了三门课程的学生的学号和姓名;(2)查询选修课程号为“dep04_b001”的学生的平均成绩;(3)查询所有学生的学号和他选修课程的最高成绩,要求他的选修课程中没有成绩为空的。
(4)查询严为老师2001/2002学年教的软件开发技术课程的最高成绩及此学生的学号、姓名、班级。
(5)查询数据库开发技术课程用过的教材名称,作者和出版社。
(6)查询计算机科学系讲授过数据库开发技术的老师姓名和职称。
4.在嵌套查询实验中,在SQL SERVER提供的交互式语言环境下用Transact SQL语句完成以下查询操作,要求写嵌套查询语句:(1)查询选修了电磁波工程的学生的学号和姓名;(2)查询没有选修电磁波工程的学生的学号和姓名;(3)查询至少选修了学号为“g9940201”的学生所选修的所有课程的学生的学号和姓名。
5.建立如下视图:学生选修课程信息视图,包括以下内容:1)学生学号、姓名、所在系、授课老师姓名、课程名称、课程教材名称、出版社、学分、选课成绩2)修改以上视图,增加学生所在班级信息。
3)对以上视图进行相关的查询操作:(1) 查询选修了计算机基础的学生的学号和成绩;(2) 查询所有学生的学号、姓名、选修的课程名称和成绩;(3) 查询选修了乔红老师课程的学生的学号和姓名、课程名称。
实验要求(1)分别用Enterprise Manager和Transact_SQL语句完成以上操作(2)要求学生独立完成以上内容。
(3)实验完成后完成要求的实验报告内容。
实验步骤1.简单查询:(1) 查询班号为g00401班的学生的学号和姓名;实验结果及代码如下;(2) 查询“数据库开发技术”课程的学分;实验结果及代码如下;(3) 查询选修了课程编号为“dep04_s003”的学生的学号和成绩,并将成绩按降序输出;实验结果及代码如下;(4) 查询学号为“g9940205”的学生选修的课程编号和成绩;实验结果及代码如下;(5) 查询选修了课程编号为“dep04_s001”且成绩高于85分的学生的学号和成绩。
实验结果及代码如下;2.在多表连接的查询实验中,在SQL SERVER提供的交互式语言环境下用Transact SQL语句完成以下查询操作:(1)查询选修了课程编号为“dep04_s002”且成绩高于85分的学生的学号、姓名和成绩;实验结果及代码如下;(2)查询所有学生的学号、姓名、选修的课程名称和成绩;实验结果及代码如下;(3)查询计算机科学系林红同学选修的课程名称、学分和成绩。
(考试成绩>=60有学分,否则无学分。
)实验结果及代码如下;3.在复杂查询实验中,在SQL SERVER提供的交互式语言环境下用Transact SQL语句完成以下查询操作:(1)查询至少选修了三门课程的学生的学号和姓名;实验结果及代码如下;(2)查询选修课程号为“dep04_b001”的学生的平均成绩;实验结果及代码如下;(3)查询所有学生的学号和他选修课程的最高成绩,要求他的选修课程中没有成绩为空的。
实验结果及代码如下;(4)查询严为老师2001/2002学年教的软件开发技术课程的最高成绩及此学生的学号、姓名、班级。
实验结果及代码如下;(5)查询数据库开发技术课程用过的教材名称,作者和出版社。
实验结果及代码如下;(6)查询计算机科学系讲授过数据库开发技术的老师姓名和职称。
实验结果及代码如下;4.在嵌套查询实验中,在SQL SERVER提供的交互式语言环境下用Transact SQL语句完成以下查询操作,要求写嵌套查询语句:(1)查询选修了电磁波工程的学生的学号和姓名;实验结果及代码如下;(2)查询没有选修电磁波工程的学生的学号和姓名;实验结果及代码如下;(3)查询至少选修了学号为“g9940201”的学生所选修的所有课程的学生的学号和姓名。
实验结果及代码如下;5.建立如下视图:学生选修课程信息视图,包括以下内容:1)学生学号、姓名、所在系、授课老师姓名、课程名称、课程教材名称、出版社、学分、选课成绩在对象资源管理器完成以下内容:使用T-SQL语言操作,代码如下:Createview view2(student_id,student_name,department_name,teacher_n ame,course_name,book_name,publish_company,credit,grade)asselectdistinct student.student_id,student.student_name,departmen t_name,teacher_name,course_name,book_name,publish_company,student_course.credit,stude nt_course.gradefrom student,course,department,student_course,teacher,teacher_cour se_class,book,classwherestudent.student_id=student_course.student_idand student.class_id=class.class_idand class.department_id=department.department_id and student_course.course_id=course.course_idand course.book_id=book.book_idand teacher.teacher_id=teacher_course_class.teacher_idand teacher_course_class.course_id=course.course_id视图如下:2)修改以上视图,增加学生所在班级信息。
代码如下:alterview view2(student_id,student_name,department_name,teacher_na me,course_name,book_name,publish_company,credit,grade,class_id) ASSELECTDISTINCT student.student_id,student_name,department_name,teache r_name,course_name,book_name,publish_company,student_course.credi t,student_course.grade,student.class_idFROMstudent,student_course,course,teacher,teacher_course_class,book,d epartment,classWHERE student.student_id=student_course.student_idand student.class_id=class.class_idand class.department_id=department.department_idand student_course.course_id=course.course_idand course.book_id=book.book_idand teacher.teacher_id=teacher_course_class.teacher_idand teacher_course_class.course_id=course.course_id3)对以上视图进行相关的查询操作:(1) 查询选修了计算机基础的学生的学号和成绩;(2) 查询所有学生的学号、姓名、选修的课程名称和成绩;使用TSQL语言代码如下:select student_id,student_name,course_name,gradefrom view2结果如下:(3) 查询选修了乔红老师课程的学生的学号和姓名、课程名称。
代码如下:selectstudent_id,student_name,course_namefrom st_course1where teacher_name = '乔红';查询结果为空使用对象资源管理器结果如下:实验总结()在本次实验中,主要是使用SQL查询语言对数据库关系表进行了一系列查询操作,其中包括简单的查询操作,多表的连接查询,复杂的查询操作以及有IN和比较符的嵌套查询。
在实验中发现的问题有:1.复杂查询实验中,一开始由于没有熟悉group by的用法导致查询结果不正确。
2.嵌套查询由于所属的表的关系没有梳理正确,而导致查询结果不正确。
从实验中我学到了相关查询语句的正确使用方法。
除此之外,还练习了视图的建立,查询,删除以及修改,对数据库的掌握又多了一分。
实验总结()本次实验中,实践了数据库的各种查询,主要是使用了TSQL语言,也用对象资源管理器进行了查询。