8.4.4 子查询与聚集函数

2025-06-07 09:33:00 更新

1.子查询

子查询也称嵌套查询。嵌套查询是指一个SELECT-FROM-WHERE查询块可以嵌入另一个查询块之中。在SQL中允许多重嵌套。

SELECT Sno,Sname

FROM 8

WHERE Sno IN (SELECT Sn FROM SC

WHERE Cno IN (SELECT Cno FROM C WHERE Cnaine= TMSf))

2.聚集函数

聚集函数是一个值的集合为输入,返回单个值的函数。SQL提供了 5个预定义集函数:平均值avg,最小值min,最大值max,求和sum以及计数count

使用ANY和ALL谓词必须同时使用比较运算符,其含义及等价的转换关系如表8-4所示。用聚集函数实现子查询通常比直接用ALL或ANY查询效率要高。

查询课程C1的最高分和最低分以及高低分之间的差距。

SELECT MAX (Grade) , MIN (Grade) , MAX (Grade) -MIN (Grade)

FROM SC

WHERE Cno='Cl'


查询其他系比计算机系CS所有学生年龄都要小的学生姓名及年龄。

方法1:(用ALL谓词)

SELECT Sname, Sage

FROM 8

WHERE Sage< ALL (SELECT Sage

FROM S

WHERE SD=iCS[)

AND SDO'CS'

方法2:(用MIN集函数)从等价的转换关系表8-4中可见,<ALL可用<MIN代换。

SELECT 5name, Sage

FROM S

WHERE Sage< (SELECT MIN (Sage)

FROM S

WHERE SD=,CST )

AND SDOrCST