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