sql题目,搞不清楚,弄晕了,求大神?

3个表即学生表S、课程表C和学生选课表SC,它们的结构如下:S(S#,SN,SEX,AGE,DEPT)C(C#,CN)SC(S#,C#,GRADE)其中:S#为学号,SN... 3个表即学生表S、课程表C和学生选课表SC,它们的结构如下:
  S(S#,SN,SEX,AGE,DEPT)
  C(C#,CN)
  SC(S#,C#,GRADE)
其中:S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C#为课程号,CN为课程名,GRADE成绩
查询所有没有被学生选过的课程的名称,正确的SELECT语句是(BD)。
 A. SELECT C.CN FROM C JOIN SC ON SC.C#=C.C# WHERE C.C# IS NULL
 B. SELECT C.CN FROM C LEFT JOIN SC ON SC.C#=C.C# WHERE SC.C# IS NULL
 C. SELECT C.CN FROM SC LEFT JOIN C ON SC.C#=C.C# WHERE SC.C# IS NULL
 D. SELECT C.CN FROM SC RIGHT JOIN C ON SC.C#=C.C# WHERE SC.C# IS NULL
怎么答案是bd,我感觉都是对的
展开
 我来答
x403879785
2015-07-01 · TA获得超过3839个赞
知道大有可为答主
回答量:1299
采纳率:100%
帮助的人:1178万
展开全部
C.
SC LEFT JOIN C 返回的结果是SC 和 C C#相同的值以及 SC剩余的行(元组值,这里肯定没有,因为SC 里的所有C#值都被包含在C的C#里了)
A.
JOIN 的结果,还是全部 SC.C#=C.C#. 没有剩余的C里不在SC里的C#值,所以C剩余C#对应的CN也查不出来。
抄友灵70
推荐于2016-10-05 · TA获得超过183个赞
知道小有建树答主
回答量:441
采纳率:50%
帮助的人:189万
展开全部
课程表是主表,左联结选课表的时候,条件是课程号相同,如果有课程未被选中则选课表的结果中就会出现NULL
A内联,NULL这种情况根本出不来
C选课表为主表,如果有的话就是说有课程根本不存在

B,D写法不一样,一个左联一个右联,结果是一样的
追问
晕,你好厉害阿,我理解不了,脑子笨吧。能有具体例子,在sql运行一下吗
追答
举个例子
C 两条记录
(C#,CN)
1,a
2, b
-------------------------------
SC 两条记录
(S#,C#,GRADE)

1,1,100
2,1,50
A的结果为空,因为这两个表结合后不存在NULL的数据
B和D的结果就是2,因为没人选2的课程
C的结果也为空,所选的课程1是存在的

手头没数据库,没法给你实际操作
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
这么多闲人A
2015-07-01
知道答主
回答量:2
采纳率:0%
帮助的人:1933
展开全部
你想知道什么额,答案很明显嘛。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式