《实验五复杂数据查询.doc》由会员分享,可在线阅读,更多相关《实验五复杂数据查询.doc(4页珍藏版)》请在金锄头文库上搜索。
1、数据库系统原理实验 任课教师:实验五 复杂数据查询年级:信管1107专业:信息管理与信息系统 学号:1130130382姓名:耿楠实验日期:2013年4月17日一、实验目的熟练掌握SQL查询语句的使用,能够熟练进行单表和多表的查询。掌握嵌套查询、掌握集函数的使用、掌握外连接的方法、掌握分组运算及并、交、差运算。二、实验内容访问教学管理数据库,用SQL语句实现下列基本查询:1 查询计算机系学生的选课人数。 SELECT count(Cno) FROM Student,SC WHERE Student.Sno=SC.Sno AND Sdept=CS;2 计算选修2号课程的平均成绩。 SELECT
2、AVG(Greade)FROM SC WHERE Cno=2; 3 计算选修高等数学课程的平均成绩。 SELECT AVG(Greade) FROM Course,SC WHERE Course.Cno=SC.Cno AND Cname=高等数学; 4 查询选修4号课程的学生学号。 SELECT Sno FROM SC WHERE Cno=4; 5 查询仅选修4号课程的学生学号。select snofrom sc where cno=4and sno in (select sno from sc group by snohaving count(cno)=1 );6 查询未选修4号课程的学生学
3、号。SELECT DISTINCT Sno FROM SC WHERE sno not in (select sno from sc where cno=4 ); 7 查询计算机系所有学生的选课情况。 SELECT * FROM Student LEFT OUTER JOIN SC ON (Student.Sno=SC.Sno ) WHERE Sdept=CS; 8 统计学生选课表中各个课程的选课人数。 SELECT Cno,count(Cno) FROM SC group by Cno; 9 统计学生选课表中各个课程的选课人数(无成绩的学生不在其中)及平均成绩。 SELECT Cno,cou
4、nt(Cno),AVG(Grade) FROM SCwhere grade is not nullgroup by cno;10 查询选修了三门课程以上(三门课程)的学生学号。 SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*)=3;11 查询选修了全部课程的学生。 select snamefrom studentwhere sno in(select snofrom scgroup by snohaving count(*)=(select count(*) from course);12 查询选修1或2号课程的学生(并运算) 。 SELECT S
5、no FROM SC WHERE Cno=1 UNION SELECT Sno FROM SC WHERE Cno=2;13 查询选修2而没选修1号课程的学生(差运算) 。 SELECT Sno FROM SC WHERE Cno=2 EXCEPT SELECT Sno FROM SC WHERE Cno=1;14 查询(同时)选修了3和2号课程的学生 (交运算)。 SELECT Sno FROM SC WHERE Cno=3 INTERSECT SELECT Sno FROM SC WHERE Cno=2;三、实验结果写出每个查询或计算的SQL语句并将执行结果界面图附上。四、回答问题简述外连接查询和连接查询的区别。答:连接查询同时涉及两个以上的表,连接查询是关系库中最主要的查询,包括外连接查询,而外连接查询只能是两个表的连接,不是多个。共4页 第1页