【难】mysql练习题2

根据给定的S、C、SC三张表,题目要求找出未选过黎明老师课程的学生,平均成绩低于60分且修了2门以上课程的学生,以及同时学过1号和2号课程的学生。解决方案涉及多步SQL查询,包括临时表的使用和联接操作。

题目:

有3个表S(学生表),C(课程表),SC(学生选课表)
S(SNO,SNAME)代表(学号,姓名)  
C(CNO,CNAME,CTEACHER)代表(课号,课名,教师)
SC(SNO,CNO,SCGRADE)代表(学号,课号,成绩)
请先建立这三张表,然后回答问题:
1,找出没选过“黎明”老师的所有学生姓名。
2,列出2门以上(含2门)不及格学生姓名及平均成绩。
3,既学过1号课程又学过2号课所有学生的姓名。
 


建表:

create table S(
    sno int(4) primary key auto_increment,
    sname varchar(25)
);
create table C(
    cno int(4) primary key auto_increment,
    cname varchar(25),
    ctracher varchar(25)
);
create table SC(
    sno int(4),
    cno int(4),
    scgrade double(3,1),
    constraint sc_sno_cno_pk primary key(sno,cno),
    constraint sc_sno_fk foreign key(sno) references s(sno),
    constraint sc_cno_fk foreign key(cno) references c(cno)
);

1、首先找黎明老师所授课程号,然后再找选了此课程号的学号,最后从学生表中排除掉这些学号

select sno from s 
where sno not in 
(select sno from sc 
where cno = (select cno from c where cteacher = '黎明'))
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值