实验四 数据库的查询实验.docx
- 文档编号:5099803
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:22
- 大小:795.98KB
实验四 数据库的查询实验.docx
《实验四 数据库的查询实验.docx》由会员分享,可在线阅读,更多相关《实验四 数据库的查询实验.docx(22页珍藏版)》请在冰豆网上搜索。
实验四数据库的查询实验
实验四数据库的查询实验(两次内容)
一、实验要求
1.简单查询:
(1)查询班号为g*****班的学生的学号和姓名;
(2)查询“数据库开发技术”课程的学分;
(3)查询选修了课程编号为“dep04_s003”的学生的学号和成绩,并将成绩按降序输出;
(4)查询学号为“g*******”的学生选修的课程编号和成绩;
(5)查询选修了课程编号为“dep04_s001”且成绩高于85分的学生的学号和成绩。
2.在多表连接的查询实验中,用TransactSQL语句完成以下查询操作:
(1)查询选修了课程编号为“dep04_s002”且成绩高于85分的学生的学号、姓名和成绩;
(2)查询所有学生的学号、姓名、选修的课程名称和成绩;
(3)查询计算机科学系林红同学选修的课程名称、学分和成绩。
(考试成绩>=60 有学分,否则无学分。
)
3.在复杂查询实验中,用TransactSQL语句完成以下查询操作:
(1)查询至少选修了三门课程的学生的学号和姓名;
(2)查询选修课程号为“dep04_b001”的学生的平均成绩;
(3)查询所有学生的学号和他选修课程的最高成绩,要求他的选修课程中没有成绩为空的。
(4)查询严为老师2001/2002学年教的软件开发技术课程的最高成绩及此学生的学号、姓名、班级。
(5)查询数据库开发技术课程用过的教材名称,作者和出版社。
(6)查询计算机科学系讲授过数据库开发技术的老师姓名和职称。
4.在嵌套查询实验中,用TransactSQL语句完成以下查询操作,要求写嵌套查询语句:
(1)查询选修了电磁波工程的学生的学号和姓名;
(2)查询没有选修电磁波工程的学生的学号和姓名;
(3)查询至少选修了学号为“g*******”的学生所选修的所有课程的学生的学号和姓名。
5.建立如下视图:
学生选修课程信息视图,包括以下内容:
1)学生学号、姓名、所在系、授课老师姓名、课程名称、课程教材名称、出版社、学分、选课成绩
2)修改以上视图,增加学生所在班级信息。
对以上内容用企业管理器和SQL语句方式分别完成。
3)对以上视图进行相关的查询操作:
(1)查询选修了计算机基础的学生的学号和成绩;
(2)查询所有学生的学号、姓名、选修的课程名称和成绩;
(3)查询选修了乔红老师课程的学生的学号和姓名、课程名称。
6完成实验报告,包括实验内容、SQL语句、实验结果等。
二、实验步骤
1、简单查询
(1)查询班号为g00401班的学生的学号和姓名;
代码如下:
selectstudent_id,student_name
fromstudent
whereclass_id='g00401';
运行结果如下:
查询结果为空,即不存在班号为g00401的学生
(2)查询“数据库开发技术”课程的学分;
代码如下:
selectcredit
fromcourse
wherecourse_name='SQLServer数据库开发';
运行结果如下:
注:
本题给出的课程名与关系表中的属性名不一致,也可以直接用模糊查询
代码如下:
selectcredit
fromcourse
wherecourse_namelike'%数据库开发';
运行结果如下:
(3)查询选修了课程编号为“dep04_s003”的学生的学号和成绩,并将成绩按降序输出;
代码如下:
selectstudent_id,grade
fromstudent_course
wherecourse_id='dep04_s003'
orderbygradedesc;
运行结果如下:
(4)查询学号为“g9940205”的学生选修的课程编号和成绩;
代码如下:
selectcourse_id,grade
fromstudent_course
wherestudent_id='g9940205';
运行结果如下:
(5)查询选修了课程编号为“dep04_s001”且成绩高于85分的学生的学号和成绩。
代码如下:
selectstudent_id,grade
fromstudent_course
wherecourse_id='dep04_s001'andgrade>'85';
运行结果如下:
2、在多表连接的查询实验中,用TransactSQL语句完成以下查询操作:
(1)、查询选修了课程编号为“dep04_s002”且成绩高于85分的学生的学号、姓名和成绩;
代码如下:
selectstudent.student_id,student_name,grade
fromstudent,student_course
wherestudent.student_id=student_course.student_id
andstudent_course.course_id='dep04_s002'
andstudent_course.grade>'85';
运行结果如下:
(2)、查询所有学生的学号、姓名、选修的课程名称和成绩;
代码如下:
selectstudent.student_id,student_name,course_name,grade
fromstudent,course,student_course
wherestudent.student_id=student_course.student_id
andstudent_course.course_id=course.course_id;
运行结果如下:
(3)、查询计算机科学系林红同学选修的课程名称、学分和成绩。
(考试成绩>=60 有学分,否则无学分。
)
代码如下:
selectcourse_name,student_course.credit,grade
fromstudent,student_course,course
wherestudent_name='林红'
andstudent.student_id=student_course.student_id
andstudent_course.course_id=course.course_id;
运行结果如下:
3、在复杂查询实验中,用TransactSQL语句完成以下查询操作:
(1)查询至少选修了三门课程的学生的学号和姓名;
代码如下:
selectstudent.student_id,student_name
fromstudent,student_course
wherestudent.student_id=student_course.student_id
groupbystudent.student_id,student_name
havingcount(student_course.course_id)>=3;
运行结果如下:
(2)、查询选修课程号为“dep04_b001”的学生的平均成绩;
代码如下:
selectavg(grade)
fromstudent_course
wherecourse_id='dep04_b001';
运行结果:
(3)、查询所有学生的学号和他选修课程的最高成绩,要求他的选修课程中没有成绩为空的。
代码如下:
selectstudent_id,max(grade)
fromstudent_course
whereexists(selectgrade
fromstudent_course)
groupbystudent_id;
运行结果如下:
(4)查询严为老师2001/2002学年教的软件开发技术课程的最高成绩及此学生的学号、姓名、班级。
代码如下:
selectstudent.student_id,student_name,student.class_id,grade
fromteacher_course_class,teacher,course,student,student_course
whereteacher_course_class.teacher_id=teacher.teacher_idand
teacher.teacher_name='严为'and
teacher_course_class.course_id=course.course_idand
course.course_name='软件开发技术'and
teacher_course_class.course_id=student_course.course_idand
student_course.student_id=student.student_idand
teacher_course_class.school_year='2001/2002'and
student_course.grade>=all(selectgrade
fromstudent_course,course
wherestudent_course.course_id=course.course_idand
course.course_name='软件开发技术');
运行结果如下:
(5)、查询数据库开发技术课程用过的教材名称,作者和出版社。
代码如下:
selectbook_name,author,publish_name
frombook,course
wherecourse.book_id=book.book_id
andcourse_name='SQLSERVER数据库开发';
运行结果如下:
(6)、查询计算机科学系讲授过数据库开发技术的老师姓名和职称。
代码如下:
selectteacher_name,profession
fromteacher,course,teacher_course_class,department
whereteacher.teacher_id=teacher_course_class.teacher_idand
course.course_id=teacher_course_class.course_idand
department.department_id=teacher.department_idand
department.department_name='计算机科学'and
course.course_name='SQLServer数据库开发';
运行结果如下:
4、在嵌套查询实验中,用TransactSQL语句完成以下查询操作,要求写嵌套查询语句:
(1)、查询选修了电磁波工程的学生的学号和姓名;
代码如下:
selectstudent_id,student_name
fromstudent
wherestudent_id=(selectstudent_id
fromstudent_course
wherecourse_id=(selectcourse_id
fromcourse
wherecourse_name='电磁波工程'));
运行结果如下:
即查询结果为空。
(2)、查询没有选修电磁波工程的学生的学号和姓名;
代码如下:
selectstudent_id,student_name
fromstudent
wherenotexists(selectstudent_id
fromstudent_course
wherecourse_id=(selectcourse_id
fromcourse
wherecourse_name='电磁波工程'));
运行结果如下:
(3)、查询至少选修了学号为“g9940201”的学生所选修的所有课程的学生的学号和姓名。
代码如下:
selectstudent_id,student_name
fromstudent
wherenotexists
(select*
fromstudent_coursestudent_course1
wherestudent_course1.student_id='g9940201'
andnotexists
(select*
fromstudent_coursestudent_course2
wherestudent.student_id=student_course2.student_id
andstudent_course2.course_id=student_course1.course_id));
运行结果如下:
5、建立如下视图:
学生选修课程信息视图,包括以下内容:
1)学生学号、姓名、所在系、授课老师姓名、课程名称、课程教材名称、出版社、学分、选课成绩
2)修改以上视图,增加学生所在班级信息。
对以上内容用企业管理器和SQL语句方式分别完成。
(1)用企业管理器创建视图
具体操作步骤如下:
点击完成后的创建结果如下:
打开创建的视图如下:
其行数和student_course表一致,均为44行。
(2)用企业管理器修改以上视图,增加学生所在班级信息。
具体操作步骤如下:
如上图所示,在class_id前打勾。
修改结果如下:
(3)用SQL语句创建视图
代码如下;
Createviewst_course1(student_id,student_name,department_name,teacher_name,course_name,
book_name,publish_name,credit,grade)
asselectdistinctstudent.student_id,student.student_name,department_name,teacher_name,
course_name,book_name,publish_name,student_course.credit,student_course.grade
fromstudent,course,department,student_course,teacher,teacher_course_class,book,class
where
student.student_id=student_course.student_id
andstudent.class_id=class.class_id
andclass.department_id=department.department_id
andstudent_course.course_id=course.course_id
andcourse.book_id=book.book_id
andteacher.teacher_id=teacher_course_class.teacher_id
andteacher_course_class.course_id=course.course_id
运行结果与用企业管理器法相同:
(区别于企业管理器法创建的视图,此处将视图名定为st_course1)
打开视图st_course1,如下:
(4)用SQL语句修改视图
代码如下:
alterviewst_course1(student_id,student_name,department_name,teacher_name,course_name,book_name,publish_name,credit,grade,class_id)
ASSELECTDISTINCTstudent.student_id,student_name,department_name,teacher_name,course_name,book_name,publish_name,student_course.credit,student_course.grade,student.class_id
FROM
student,student_course,course,teacher,teacher_course_class,book,department,class
WHEREstudent.student_id=student_course.student_id
andstudent.class_id=class.class_id
andclass.department_id=department.department_id
andstudent_course.course_id=course.course_id
andcourse.book_id=book.book_id
andteacher.teacher_id=teacher_course_class.teacher_id
andteacher_course_class.course_id=course.course_id
运行结果如下:
与企业管理法相比,两者得到的结果完全相同
(6)对以上视图进行相关的查询操作:
A、查询选修了计算机基础的学生的学号和成绩;
代码如下:
selectstudent_id,grade
fromst_course1
wherecourse_name='计算机基础';
运行结果如下:
B、查询所有学生的学号、姓名、选修的课程名称和成绩;
代码入下:
selectstudent_id,student_name,course_name,grade
fromst_course1
运行结果;
C、查询选修了乔红老师课程的学生的学号和姓名、课程名称。
代码如下:
selectstudent_id,student_name,course_name
fromst_course1
whereteacher_name='乔红';
查询结果为空
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验四 数据库的查询实验 实验 数据库 查询
![提示](https://static.bdocx.com/images/bang_tan.gif)