数据库数据查询之嵌套查询与集合查询

一、嵌套查询

【实验内容】

1.返回一个值的子查询
2.返回一组值的子查询

【实验步骤】

1.返回一个值的子查询
(1)查询与刘伟职称相同的教师号、姓名和职称

USE xhjk
GO
SELECT TNO,TN,PROF FROM T
WHERE PROF=(SELECT PROF FROM T WHERE TN='刘伟')
GO

image.png

2.返回一组值的子查询
(1)使用ANY谓词查询讲授课程号为C1的教师姓名

USE xhjk
GO
SELECT TN FROM T
WHERE TNO=ANY(SELECT TNO FROM TC WHERE CNO='C1')
GO
image.png

(2)使用IN谓词查询讲授课程号为C1的教师姓名

USE xhjk
GO
SELECT TN FROM T
WHERE TNO IN(SELECT TNO FROM TC WHERE CNO='C1')
GO
image.png

(3)使用ALL谓词查询其他系中比计算机系所有教师工资都高的教师姓名、工资和所在系

USE xhjk
GO
SELECT TN,SAL,DEPT FROM T
WHERE SAL>ALL(SELECT SAL FROM T WHERE DEPT='计算机')AND (DEPT<>'计算机')
GO
image.png

(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
image.png

(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
image.png

二、集合查询

【实验内容】

查询年龄不大于19岁或者是计算机系的学生

【实验步骤】

(1)查询年龄不大于19岁或者是计算机系的学生

USE xhjk
GO
SELECT * FROM S
WHERE DEPT='计算机'
UNION
SELECT * FROM S WHERE AGE<=19
GO
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容