10) 在查询分析器中完成以下嵌套查询语句
查询与“刘晨”在同一个系学习的学生(使用嵌套查询、自身连接、比较运算符分别完成)
1.嵌套查询
SELECT * FROM Student a WHERE Sdept IN(SELECT Sdept FROM Student b WHERE b.Sname='刘晨' );
2.自身连接
SELECT a.* FROM Student a,Student b WHERE b.Sname='刘晨' AND a.Sdept=b.Sdept ;
3.比较查询
SELECT * FROM Student a WHERE Sdept=(SELECT Sdept FROM Student b WHERE
b.Sname='刘晨' );
查询选修了课程名为“信息系统”的学生学号和姓名(使用嵌套查询、自然连接分别完成)
1.嵌套查询
SELECT Sno,Sname FROM Student WHERE Sno IN(SELECT Sno FROM SC WHERE Cno IN(SELECT Cno FROM Course WHERE Cname='信息系统' ) ) ;
2.自然连接
SELECT a.Sno,Sname FROM Student a,SC b ,Course c WHERE a.Sno=b.Sno AND b.Cno=c.Cno AND Cname='信息系统';
查询其他系中比信息系某一学生年龄小的学生姓名和年龄(使用ANY谓词、集函数分别完成)
1.ANY谓词
SELECT Sname,Sage FROM Student WHERE Sage'IS';
2.聚集函数
SELECT Sname,Sage FROM Student WHERE Sage<(SELECT MAX(Sage) FROM Student WHERE Sdept='IS' )AND Sdept<>'IS';
查询所有选修了1号课程的学生(使用比较运算符、IN、EXISTS分别完成) 1.比较运算符 2.IN
SELECT Sname FROM Student WHERE Sno IN(SELECT Sno FROM SC WHERE Cno='1' );
3.EXISTS
SELECT Sname FROM Student WHERE EXISTS(SELECT * FROM SC WHERE Sno=Student.Sno AND Cno='1' );
查询没有选修1号课程的学生的姓名
查询选修全部课程的学生姓名
SELECT Sname FROM Student WHERE NOT EXISTS(SELECT * FROM Course WHERE NOT EXISTS(SELECT * FROM SC WHERE Sno=Student.Sno AND Cno=Course.Cno) );
查询至少选修了学生95002选修的全部课程的学生号码
SELECT DISTINCT Sno FROM SC a WHERE NOT EXISTS(SELECT * FROM SC b WHERE b.Sno='95002' AND NOT EXISTS(SELECT * FROM SC c WHERE c.Sno=a.Sno AND c.Cno=b.Cno));
11) 在查询分析器中完成以下集合查询语句
查询计算机科学系的学生及年龄不大于19岁的学生并按学号排序(使用单表查询、集合查询分别完成)
单表查询:SELECT * FROM Student WHERE Sdept='CS' OR Sage<=19 ORDER BY Sno;
集合查询:
SELECT * FROM Student WHERE Sdept='CS' UNION SELECT * FROM Student WHERE Sage<=19 ORDER BY Sno;
查询计算机科学系的学生及年龄不大于19岁的学生的差集 SELECT * FROM Student WHERE Sdept='CS' AND Sage>19;
第二:可视化实现结果
1. 查询全体学生的姓名及其出生年份