2个回答
展开全部
首先题目给出表格内容:
成绩表:学号,课程号,成绩。
学生表:学号,姓名。
课程表:课程号,课程名。
其表相关联需要使用序列键, 学生表(学号)<--成绩表(学号,成绩号)-->课程表(课程号)
关联表的方法:select [列名] from [表名][,表名] where [条件]
当数据来自多个表时,条件要对表与表之间的数据进行关联,学生.学号 = 成绩.学号。
从语法上讲 A,C,D语法正确。
下面看题目数据要求:
查询出没有选择"西方经济学"的学生学号和名字。
我觉得是考察数据范围的问题。
A答案使用的条件是IN,所以最后结果实际是成绩表中所有没有选择"西方经济学"的学生学号和名字。考虑到可能还有学生没有拿这门课,所以排除。因为他不是学生总集中的结果。
C答案使用的条件是not IN, 是使用学生总集中的所有学生学号和名字,所以正确。
D答案和A答案类似,涉及一点表关联的语法。D答案中的写法实际是 join all,即满足所有表的条件进行选择。所以跟A答案一样,结果集实际来自成绩表,而非学生表。
以上是我的答案,希望使您明白。
成绩表:学号,课程号,成绩。
学生表:学号,姓名。
课程表:课程号,课程名。
其表相关联需要使用序列键, 学生表(学号)<--成绩表(学号,成绩号)-->课程表(课程号)
关联表的方法:select [列名] from [表名][,表名] where [条件]
当数据来自多个表时,条件要对表与表之间的数据进行关联,学生.学号 = 成绩.学号。
从语法上讲 A,C,D语法正确。
下面看题目数据要求:
查询出没有选择"西方经济学"的学生学号和名字。
我觉得是考察数据范围的问题。
A答案使用的条件是IN,所以最后结果实际是成绩表中所有没有选择"西方经济学"的学生学号和名字。考虑到可能还有学生没有拿这门课,所以排除。因为他不是学生总集中的结果。
C答案使用的条件是not IN, 是使用学生总集中的所有学生学号和名字,所以正确。
D答案和A答案类似,涉及一点表关联的语法。D答案中的写法实际是 join all,即满足所有表的条件进行选择。所以跟A答案一样,结果集实际来自成绩表,而非学生表。
以上是我的答案,希望使您明白。
展开全部
选择是正确的,选C。
A.没说一个学生可以选几门课,如果一个学生要选择两门,甚至更多的课,那么选择不等于西方经济学,那么你可能在其他科目选择到选西方经济学学生的学号。(比如,学生A的学号为01,他选择了西方经济学和数学,那么不等于西方经济学,可是你在数学上还是能够取到他的学号01)
B。这个没什么说的,连关联条件都没有的笛卡儿积不考虑
C。只要选了西方经济学,那么就排除,剩下的就是没选西方经济学的(即使一个人选两科,但是只要他的学号出现在西方经济学中,那么就排除他,那么就没有问题的)
D。与A问题相同
A.没说一个学生可以选几门课,如果一个学生要选择两门,甚至更多的课,那么选择不等于西方经济学,那么你可能在其他科目选择到选西方经济学学生的学号。(比如,学生A的学号为01,他选择了西方经济学和数学,那么不等于西方经济学,可是你在数学上还是能够取到他的学号01)
B。这个没什么说的,连关联条件都没有的笛卡儿积不考虑
C。只要选了西方经济学,那么就排除,剩下的就是没选西方经济学的(即使一个人选两科,但是只要他的学号出现在西方经济学中,那么就排除他,那么就没有问题的)
D。与A问题相同
追问
懂了~谢谢啦。再问一下~A和D表达的是完全相同的意思吗?
追答
是一个意思
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询