帮我解答下数据库原理与SQL SERVER题目

设学生选课数据库中有3个关系:
s(sno,class,sname,sex)
c(cno,cname,tname)
sc(sno,cno,score)
sno表示学号,class表示班级,sname表示学生姓名,sex表示学生性别,cno表示课程编号,cname表示课程名称,tname表示教师姓名,score表示选修课程的成绩。
1.张三老是所讲授课程的课程编号.课程名称。
2.信息501班的所有男生的学号和姓名。
3.学号为1003的学生所选修课程的课程名称和教师姓名。
4.至少选修张三老师所讲授课程中的一门课程的女生姓名。
5.学生王五没有选修的课程的课程编号。
6.同时选修课程编号为c001和c002的课程的学生的学号。
7.全部学生都选修的课程的课程编号。
8.选修张三老师讲授的所有课程的学生的学号。

会的大哥大姐们 请帮忙一下 ,小弟先谢了

第1个回答  2010-01-16
1、select cno,cname from c where tname='张三';

2、select sno,sname from s where class='信息502班'
and sex='男';

3、select c.cname,c.tname from c where cno in ( select cno from sc where sno='1003');

4、select sname
from s
where sex='女'
and sno in
(select sno
from sc
where cno in
( select cno
from c
where tname='张三'
)
);

5、select cno
from c
where cno not in
( select cno
from sc
where sno in
(select sno
from s
where sname='王五'
)
);

6、select sno
from sc
where cno in ('c001','c002')
group by sno
having count(*)>1;

7、select cno from sc group by cno having count(*) in (select count(*) from s);
【不确定用 ‘=’ 是否正确,所以用 ‘in’,你可以自己试试‘=’!!】

8、select sno from sc where not exists (sc.cno not in (select cno from c where t.name='张三'));
【也就是不存在(课程不是张三讲授)的学生学号】
第2个回答  2010-01-14
1,select cno,cname from c where tname='张三'
2,select sno,sname from s where class='502'
and sex='男'
3,select c.cname,c.tname from c ,sc where c.cno=sc.cno and sc.sno='1003'
4, select distinct s.sname from s inner join sc on sc.sno=s.sno inner join c on sc.cno=c.cno where s.sex='女' and c.tname='张三'
5,select cno from c where cno not in( select sc.cno from s,sc where s.sno=sc.sno and s.name='王五' )
6,select sno from sc where cno in ('c001','c002')
7,select cno from sc where sno in (select sno from s)
8,select sno from sc where cno in (select cno from c where t.name='张三')本回答被提问者和网友采纳
相似回答