考虑以下关系模式:
STUDENT(SNO, SNAME, DEPT)
ENROLL(CNO, SNO, GRADE)
COURSE(CNO, DEPT)
PREREQ(CNO, PNO)
带下划线的键。列ENROLL(SNO)是引用STUDENT(SNO)的外键。除了COURSE中的一列外,所有CNO和PNO列的出现都是引用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)这些都不是。答案: (A)
说明:给定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)是正确的。这个问题的测验