First get failing student ids:SELECT SNO FROM SC WHERE GRADE<60;
Then filter for non-failing ids in Computer department as the second step.
So option B is correct, which uses this subquery method to find qualifying students.
正确答案是:B:SELECT Sno, Sname FROM S WHERE Sdept='Computer’ and Sno not in (SELECT SNO FROM SC WHERE GRADE<60);
### 专业分析:
#### 选项A:
```sql
SELECT Sno, Sname FROM S WHERE Sdept='Computer’
INTERSECT
SELECT Sno, Sname FROM SC WHERE GRADE>=60;
```
- 该查询试图使用 `INTERSECT` 操作符,来获取在两个子查询中都出现的学生。然而,`SC` 表中并没有 `Sname` 字段,因此这个查询是无效的。
#### 选项B:
```sql
SELECT Sno, Sname FROM S WHERE Sdept='Computer’
and Sno not in (SELECT SNO FROM SC WHERE GRADE<60);
```
- 该查询首先从 `S` 表中选出计算机系的所有学生,然后通过子查询排除在 `SC` 表中有任意一门课程成绩低于60分的学生。
- 这个查询确保选出的学生没有任何不及格的课程成绩,因此是正确的。
#### 选项C:
```sql
SELECT Sno, Sname FROM S WHERE Sdept='Computer’
EXCEPT
SELECT SNO FROM SC WHERE GRADE<60;
```
- 该查询试图使用 `EXCEPT` 操作符,来排除在 `SC` 表中有不及格成绩的学生。然而,`EXCEPT` 操作符通常用于在两个结果集中排除匹配的行,但这里的两个子查询返回的字段不同(第一个子查询返回 `Sno, Sname`,第二个子查询只返回 `SNO`),因此这个查询也是无效的。
#### 选项D:
```sql
SELECT Sno, Sname FROM S WHERE Sdept='Computer’
and SNO in (SELECT SNO FROM SC WHERE GRADE>=60);
```
- 该查询从 `S` 表中选出计算机系的所有学生,然后通过子查询确保这些学生至少有一门课程成绩不低于60分。
- 这个查询没有排除那些有不及格成绩的学生,因此不符合题意。
综上所述,选项B是唯一正确的答案。