第一步先查詢成績不及格的學(xué)生學(xué)號:SELECT SNO FROM SC WHERE GRADE<60;將第一步的查詢結(jié)果作為篩選條件,第二步再查詢滿足條件的記錄,即“計(jì)算機(jī)”系且成績及格的學(xué)生學(xué)號和姓名,因此正確答案為B選項(xiàng)。
在給出的選項(xiàng)中,我們需要選擇一個(gè)能夠查詢出“計(jì)算機(jī)”系的沒有不及格成績的學(xué)生學(xué)號和姓名的SQL語句。以下是對每個(gè)選項(xiàng)的分析:
A.
```sql
SELECT SNO, SNAME FROM S
WHERE SDEPT='計(jì)算機(jī)'
INTERSECT
SELECT SNO, SNAME FROM SC
WHERE GRADE>=60;
```
分析:這個(gè)查詢會選出“計(jì)算機(jī)”系的學(xué)生與成績大于等于60分的學(xué)生的交集,然而這并不能確保學(xué)生沒有不及格的成績,因?yàn)橐粋€(gè)學(xué)生可能有部分成績不及格,但仍然會出現(xiàn)在成績大于等于60分的結(jié)果集中。
B.
```sql
SELECT SNO, SNAME FROM S
WHERE SDEPT='計(jì)算機(jī)' AND SNO NOT IN
(SELECT SNO FROM SC WHERE GRADE<60);
```
分析:這個(gè)查詢首先選出“計(jì)算機(jī)”系的學(xué)生,然后排除掉那些有不及格成績(成績小于60)的學(xué)生。這意味著選出的學(xué)生沒有任何不及格的成績。這個(gè)查詢是正確的。
C.
```sql
SELECT SNO, SNAME FROM S
WHERE SDEPT='計(jì)算機(jī)'
EXCEPT
SELECT SNO FROM SC
WHERE GRADE<60;
```
分析:這個(gè)查詢有語法錯(cuò)誤,因?yàn)閌EXCEPT`操作符的兩邊需要有相同的列數(shù)和列名。這里左邊的查詢有兩列(SNO, SNAME),而右邊的查詢只有一列(SNO)。因此,這個(gè)查詢是錯(cuò)誤的。
D.
```sql
SELECT SNO, SNAME FROM S
WHERE SDEPT='計(jì)算機(jī)' AND SNO IN
(SELECT SNO FROM SC WHERE GRADE>=60);
```
分析:這個(gè)查詢選出“計(jì)算機(jī)”系且至少有一門課成績大于等于60分的學(xué)生,但這并不能保證學(xué)生沒有不及格的成績。
綜上所述,正確的答案是B:
```sql
SELECT SNO, SNAME FROM S
WHERE SDEPT='計(jì)算機(jī)' AND SNO NOT IN
(SELECT SNO FROM SC WHERE GRADE<60);
```