考虑以下关系模式:
STUDENT(SNO, SNAME, DEPT)
ENROLL(CNO, SNO, GRADE)
COURSE(CNO, DEPT)
PREREQ(CNO, PNO)
键有下划线。 ENROLL(SNO) 列是引用 STUDENT(SNO) 的外键。所有出现的列 CNO 和 PNO,除了 COURSE 中的那个,都是引用 COURSE(CNO) 的外键。
SELECT E1.CNO, S.SNAME
FROM ENROLL E1, STUDENT S
WHERE E1.SNO = S.SNO
AND NOT EXISTS ( SELECT * FROM ENROLL E2
WHERE E2.CNO = E1.CNO
AND E2.GRADE > E1.GRADE )
查询的输出是什么?
(A)对于每门课程,返回得分最高的学生的姓名。
(B)对于每个学生,返回课程名称。
(C)对于每门课程,返回从未获得最高分的学生的姓名。
(D)这些都没有。答案:(一)
说明:给定 SQL 查询,
SELECT E1.CNO, S.SNAME
FROM ENROLL E1, STUDENT S
WHERE E1.SNO = S.SNO
AND NOT EXISTS ( SELECT * FROM ENROLL E2
WHERE E2.CNO = E1.CNO
AND E2.GRADE > E1.GRADE )
它返回每门课程得分最高的学生的姓名。
选项(A)是正确的。这个问题的测验