资源描述
实验六数据库嵌套查询和组合查询
实验目的:掌握查询中的嵌套查询和组合查询的操作方法,进一步加深对select语句的理解。
实验内容:
(1)创建查询窗口,设置查询环境
(2)分组查询
(3)统计查询
(4)嵌套查询
实验步骤:
新建查询窗口,选择studentcourse为当前数据库,输入如下select查询语句并执行,对数据库进行嵌套查询和组合查询操作。
(1)统计选修了【数据库原理】课程的学生人数。
代码:SELECT COUNT(SNO) AS 人数
FROM SC
WHERE CNO IN (SELECT CNO FROM COURSES WHERE CNAME='数据库原理')
(2)查询没有选修【数据库原理】课程学生信息。
代码:SELECT *
FROM STUDENTS
WHERE 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 SBIRTHDAY>ALL(SELECT SBIRTHDAY FROM STUDENTS WHERE SDEPT='计算机')
(4)查询被0602001学生或0602002学生所选修的课程的课程号(用union组合查询与in条件查询两种方法实现)
代码:SELECT CNO FROM SC WHERE SNO='0602001'
UNION
SELECT 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='0602001'
INTERSECT
SELECT CNO FROM SC WHERE SNO='0602002'
2000版本上运行:
2008版本运行结果:
代码:SELECT CNO
FROM SC SC1
WHERE EXISTS(SELECT CNO
FROM SC SC2
WHERE SC1.CNO=SC1.CNO
AND SC2.SNO='0602002')AND SNO='0602001'
(6)查询被0602001学生选修但没有被0602002同学选秀的课程的课程号(用excpt组合查询与not exists嵌套子查询两种方法实现)
代码:SELECT CNO FROM SC WHERE SNO='0602001'
EXCEPT
SELECT CNO FROM SC WHERE SNO='0602002'
2000版本:
2008版本运行结果:
展开阅读全文