您好,欢迎访问三七文档
任课教师:《数据库原理及应用》实验报告学号:姓名:班级:实验二数据库的简单查询和高级查询一、实验目的:本实验的目的是使学生掌握SQLServer查询分析器的使用方法,加深对SQL和SQL语言的查询语句的理解。熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法,加深SQL语言的嵌套查询语句的理解,熟练掌握数据查询中的分组、统计、计算和集合的操作方法。二、实验内容(一)简单查询操作。该实验包括投影、选择条件表达,数据排序,使用临时表等。具体完成以下题目,将它们转换为SQL语句表示,在学生选课数据库中实现其数据查询操作。1.求数学系学生的学号和姓名2.求选修了课程的学生学号3.求选修课程号为‘1’的学生号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同按学号的升序排列。4.求选修课程号为‘1’且成绩在80~90之间的学生学号和成绩,并将成绩乘以0.8输出。5.求数学系或计算机系姓张的学生的信息。6.求缺少了成绩的学生的学号和课程号(二)连接查询操作。该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。1.查询每个学生的情况以及他所选修的课程2.求学生的学号、姓名、选修的课程及成绩3.求选修课程号为‘1’且成绩在90以上的学生学号、姓名和成绩4.查询每一门课程的间接先行课(即先行课的先行课)(三)嵌套查询操作:在SQLServer查询分析器中使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。具体完成以下各题。将它们用SQL语句表示,在学生选课中实现其数据嵌套查询操作。1.求选修了高等数学的学号和姓名2.求‘1’课程的成绩高于刘晨的学生学号和成绩3.求其他系中比计算机系某一学生年龄小的学生(即年龄小于计算机系年龄最大者的学生)4.求其他系中比计算机系学生年龄都小的学生5.求选修了‘2’课程的学生姓名6.求没有选修‘2’课程的学生姓名7.查询选修了全部课程的学生姓名8.求至少选修了学号为“95002”的学生所选修全部课程的学生学号和姓名(四)集合查询和统计查询:1)分组查询实验。该实验包括分组条件表达、选择组条件表达的方法。2)使用函数查询的实验。该实验包括统计函数和分组统计函数的使用方法。3)集合查询实验。该实验并操作UNION、交操作INTERSECT和差操作MINUS的实现方法。具体完成以下例题,将它们用SQL语句表示,在学生选课中实现其数据查询操作。1.求学生的总人数2.求选修了课程的学生人数3.求课程和选修了该课程的学生人数4.求选修超过3门课的学生学号5.查询计算机科学系的学生及年龄不大于19岁的学生6.查询计算机科学系的学生与年龄不大于19岁的学生的交集7.查询计算机科学系的学生与年龄不大于19岁的学生的差集8.查询选修课程‘1’的学生集合与选修课程‘2’的学生集合的交集9.查询选修课程‘1’的学生集合与选修课程‘2’的学生集合的差集三、实验方法将查询需求用SQL语言表示;在SQLServer查询分析器的输入区中输入SQL查询语句;设置查询分析器的结果区为StandardExecute(标准执行)或ExecutetoGrid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。所使用的学生管理库中的三张表为:(1)STUDENT(学生信息表)SNO(学号)SNAME(姓名)SEX(性别)SAGE(年龄)SDEPT(所在系)95001李勇男20CS95002刘晨女19IS95003王名女18MA95004张立男19IS95005李明男22CS95006张小梅女23IS95007封晓文女20MA(2)COURSE(课程表)CNO(课程号)CNAME(课程名)CPNO(先行课)CCREDIT(学分)1数据库542数学23信息系统144操作系统635数据结构746数据处理27PASCAL语言64(3)SC(选修表)SNO(学号)CNO(课程号)Grade(成绩)95001192950012859500138895002290950023809500317895003280950041909500446095005180950053899500638095007465四、实验结果与分析(SQL代码及查询结果截图)源代码:1.1SELECTSNO,SNAMEFROMSTUDENTWHERESDEPT='MA';1.2SELECTDISTINCTSNOFROMSC;1.3SELECTSNO,GradeFROMSCWHERECNO='1'ORDERBYGradeDESC,SNO;1.4SELECTSNO,Grade*0.8FROMSCWHERECNO='1'ANDGradeBETWEEN80AND901.5SELECT*FROMSTUDENTWHERESDEPTIN('CS','MA')ANDSNAMELIKE'张%';1.6SELECTSNO,CNOFROMSCWHEREGradeISNULL;2.1SELECTSTUDENT.*,SC.*FROMSTUDENT,SCWHERESTUDENT.SNO=SC.SNO;2.2SELECTSTUDENT.SNO,SNAME,SC.CNO,GradeFROMSTUDENT,SCWHERESTUDENT.SNO=SC.SNO;2.3SELECTSTUDENT.SNO,SNAME,GradeFROMSTUDENT,SCWHERESTUDENT.SNO=SC.SNOANDSC.CNO='1'ANDSC.Grade90;2.4SELECTFIRST.CNO,SECOND.CPNOFROMCOURSEFIRST,COURSESECONDWHEREFIRST.CPNO=SECOND.CNO;3.1SELECTSTUDENT.SNO,SNAMEFROMSTUDENT,SC,COURSEWHERESTUDENT.SNO=SC.SNOANDSC.CNO=COURSE.CNOANDCOURSE.CNAME='数学';3.3SELECTSNAME,SAGEFROMSTUDENTWHERESAGEANY(SELECTSAGEFROMSTUDENTWHERESDEPT='CS')ANDSDEPT'CS';3.4SELECTSNAME,SAGEFROMSTUDENTWHERESAGEALL(SELECTSAGEFROMSTUDENTWHERESDEPT='CS')ANDSDEPT'CS';3.5SELECTSNAMEFROMSTUDENTWHEREEXISTS(SELECT*FROMSCWHERESNO=STUDENT.SNOANDCNO=2);3.6SELECTSNAMEFROMSTUDENTWHERENOTEXISTS(SELECT*FROMSCWHERESNO=STUDENT.SNOANDCNO=2);3.7SELECTSNAMEFROMSTUDENTWHERENOTEXISTS(SELECT*FROMCOURSEWHERENOTEXISTS(SELECT*FROMSCWHERESNO=STUDENT.SNOANDCNO=COURSE.CNO));截图:
本文标题:数据库实验二
链接地址:https://www.777doc.com/doc-7032436 .html