一、嵌套查询
【实验内容】
1.返回一个值的子查询
2.返回一组值的子查询
【实验步骤】
1.返回一个值的子查询
(1)查询与刘伟职称相同的教师号、姓名和职称
USE xhjk
GO
SELECT TNO,TN,PROF FROM T
WHERE PROF=(SELECT PROF FROM T WHERE TN='刘伟')
GO
2.返回一组值的子查询
(1)使用ANY谓词查询讲授课程号为C1的教师姓名
USE xhjk
GO
SELECT TN FROM T
WHERE TNO=ANY(SELECT TNO FROM TC WHERE CNO='C1')
GO
(2)使用IN谓词查询讲授课程号为C1的教师姓名
USE xhjk
GO
SELECT TN FROM T
WHERE TNO IN(SELECT TNO FROM TC WHERE CNO='C1')
GO
(3)使用ALL谓词查询其他系中比计算机系所有教师工资都高的教师姓名、工资和所在系
USE xhjk
GO
SELECT TN,SAL,DEPT FROM T
WHERE SAL>ALL(SELECT SAL FROM T WHERE DEPT='计算机')AND (DEPT<>'计算机')
GO
(4)使用EXISTS谓词查询没有讲授C1课程的教师姓名、所在系
USE xhjk
GO
SELECT TN,DEPT FROM T
WHERE NOT EXISTS(SELECT * FROM TC WHERE TNO=T.TNO AND CNO='C5')
GO
(5)使用NOT EXISTS谓词查询至少选修了学生S2选修的全部课程的学生学号
USE xhjk
GO
SELECT DISTINCT SNO FROM SC SCX
WHERE NOT EXISTS(SELECT * FROM SC SCY
WHERE SCY.SNO='S2'AND NOT EXISTS
(SELECT *FROM SC SCZ
WHERE SCZ.SNO=SCX.SNO AND SCZ.CNO=SCY.CNO))
GO
二、集合查询
【实验内容】
查询年龄不大于19岁或者是计算机系的学生
【实验步骤】
(1)查询年龄不大于19岁或者是计算机系的学生
USE xhjk
GO
SELECT * FROM S
WHERE DEPT='计算机'
UNION
SELECT * FROM S WHERE AGE<=19
GO