SQL选择题求解答

图看得清吗……要选择哪一项?为什么?

首先题目给出表格内容:
成绩表:学号,课程号,成绩。

学生表:学号,姓名。
课程表:课程号,课程名。

其表相关联需要使用序列键, 学生表(学号)<--成绩表(学号,成绩号)-->课程表(课程号)
关联表的方法:select [列名] from [表名][,表名] where [条件]
当数据来自多个表时,条件要对表与表之间的数据进行关联,学生.学号 = 成绩.学号。

从语法上讲 A,C,D语法正确。

下面看题目数据要求:
查询出没有选择"西方经济学"的学生学号和名字。
我觉得是考察数据范围的问题。
A答案使用的条件是IN,所以最后结果实际是成绩表中所有没有选择"西方经济学"的学生学号和名字。考虑到可能还有学生没有拿这门课,所以排除。因为他不是学生总集中的结果。

C答案使用的条件是not IN, 是使用学生总集中的所有学生学号和名字,所以正确。

D答案和A答案类似,涉及一点表关联的语法。D答案中的写法实际是 join all,即满足所有表的条件进行选择。所以跟A答案一样,结果集实际来自成绩表,而非学生表。

以上是我的答案,希望使您明白。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-03-24
选择是正确的,选C。
A.没说一个学生可以选几门课,如果一个学生要选择两门,甚至更多的课,那么选择不等于西方经济学,那么你可能在其他科目选择到选西方经济学学生的学号。(比如,学生A的学号为01,他选择了西方经济学和数学,那么不等于西方经济学,可是你在数学上还是能够取到他的学号01)
B。这个没什么说的,连关联条件都没有的笛卡儿积不考虑
C。只要选了西方经济学,那么就排除,剩下的就是没选西方经济学的(即使一个人选两科,但是只要他的学号出现在西方经济学中,那么就排除他,那么就没有问题的)
D。与A问题相同追问

懂了~谢谢啦。再问一下~A和D表达的是完全相同的意思吗?

追答

是一个意思

本回答被提问者和网友采纳
相似回答