1、实验六数据库嵌套查询和组合查询实验目的:掌握查询中的嵌套查询和组合查询的操作方法,进一步加深对select语句的理解。实验内容:(1)创建查询窗口,设置查询环境(2)分组查询(3)统计查询(4)嵌套查询实验步骤:新建查询窗口,选择studentcourse为当前数据库,输入如下select查询语句并执行,对数据库进行嵌套查询和组合查询操作。(1)统计选修了【数据库原理】课程的学生人数。代码:SELECT COUNT(SNO) AS 人数FROM SC WHERE CNO IN (SELECT CNO FROM COURSES WHERE CNAME=数据库原理)(2)查询没有选修【数据库原理】
2、课程学生信息。代码:SELECT *FROM STUDENTSWHERE SNO NOT IN (SELECT SNO FROM SC WHERE CNO IN(SELECT CNO FROM COURSES WHERE CNAME=数据库原理) )(3)查询其他系中比计算机系学生年龄都小的学生。加入一行数据0602007李四 男1991-12-2数学 代码:SELECT *FROM STUDENTS WHERE SBIRTHDAYALL(SELECT SBIRTHDAY FROM STUDENTS WHERE SDEPT=计算机)(4)查询被0602001学生或0602002学生所选修的课程
3、的课程号(用union组合查询与in条件查询两种方法实现)代码:SELECT CNO FROM SC WHERE SNO=0602001UNIONSELECT CNO FROM SC WHERE SNO=0602002代码:SELECT DISTINCT(CNO)FROM SC WHERE SNO IN (0602001,0602002)(5)查询0602001学生和0602002学生同时选修的课程号(用intersect组合查询与exists嵌套子查询两种方法实现)代码:SELECT CNO FROM SC WHERE SNO=0602001INTERSECTSELECT CNO FROM
4、SC WHERE SNO=06020022000版本上运行:2008版本运行结果:代码:SELECT CNOFROM SC SC1WHERE EXISTS(SELECT CNO FROM SC SC2 WHERE SC1.CNO=SC1.CNOAND SC2.SNO=0602002)AND SNO=0602001(6)查询被0602001学生选修但没有被0602002同学选秀的课程的课程号(用excpt组合查询与not exists嵌套子查询两种方法实现)代码:SELECT CNO FROM SC WHERE SNO=0602001EXCEPTSELECT CNO FROM SC WHERE SNO=06020022000版本:2008版本运行结果: