MySQL 笔试题

表和表间关系图:

题目及答案:(未完,待续。。。)

-- 1、课程1成绩大于课程2成绩的学生学号
select S,score from sc where c=1;
select S,score from sc where c=2;

select a.s
from 
(select S,score from sc where c=1) a,
(select S,score from sc where c=2) b
where a.score > b.score and a.s=b.s;
-- 2、查询平均成绩大于80 学生学号和平均成绩
select S,Avg(score) 
from SC 
group by S
having Avg(score) > 60 ;
-- 3、查询所有同学的学号、姓名、选课数、总成绩; 
select student.S,student.Sname,count(sc.C),sum(score)
from student
left JOIN sc on student.S=sc.S
group by student.s;
-- 4、查询姓“李”的老师的个数; 
select count(distinct(Tname))
from teacher
where Tname like '%李%';
-- 5、查询没学过“陈”老师课的同学的学号、姓名; 
select SC.s from teacher,course,sc where Tname like '%陈%' and teacher.T=course.T and course.c=sc.c;

select student.s,student.sname
from student
where student.s not in (select distinct(SC.s) from teacher,course,sc where Tname like '%陈%' and teacher.T=course.T and course.c=sc.c);

-- 6、查询学过“1”并且也学过编号“3”课程的同学的学号、姓名; 
-- 方法1
select student.s,student.sname
from student
where student.s in (
select sc_2.s as SSS
from sc,(select s from sc where sc.C=3) sc_2
where sc.s=sc_2.s and sc.c=1);
-- 方法2
select Student.S,Student.Sname 
from Student,SC 
where Student.S=SC.S and SC.C=1 and exists( select * from SC as SC_2 where SC_2.S=SC.S and SC_2.C=3);
-- exists 在乎的是是否有结果集返回
--  not exists


-- 7、查询学过“4宁老师”老师所教的所有课的同学的学号、姓名; 
select sc.s from sc,teacher,course where teacher.Tname='4宁老师' and course.T=teacher.T and sc.C=course.c;
-- 方法1
select student.s,student.sname
from student
where student.s in (select sc.s from sc,teacher,course where teacher.Tname='4宁老师' and course.T=teacher.T and sc.C=course.c);
-- 方法2
select S,Sname from Student where S in (select S from SC ,Course ,Teacher where SC.C=Course.C and Teacher.T=Course.T and Teacher.Tname='4宁老师' group by S having count(SC.C)=(select count(C) from Course,Teacher where Teacher.T=Course.T and Tname='4宁老师'));

-- 8、查询课程编号“2”的成绩比课程编号“1”课程低的所有同学的学号、姓名; 
select s,score from sc where sc.c=1;
select s,score from sc where sc.c=2;
-- 方法1
select s,sname
from student
where student.s in(
select s1.s
from (select s,score from sc where sc.c=1) s1,(select s,score from sc where sc.c=2) s2
where s1.s=s2.s and s1.score > s2.score );

-- 方法2
select S,Sname 
from (select Student.S,Student.Sname,score,(select score from SC SC_2 where SC_2.S=Student.S and SC_2.C=2) score2 from Student,SC where Student.S=SC.S and C=1) s_2 
where score2 < score;

-- 9、查询所有课程成绩小于60分的同学的学号、姓名; 
select distinct(s) from sc where score <= 60; 

select S,Sname
from student
where student.S in (select distinct(S) from sc where score < 60);


-- 10、查询没有学全所有课的同学的学号、姓名; 
select count(c) from course ;
select s from sc GROUP BY s having count(c) < (select count(c) from course );
-- 方法1
select s,sname
from student
where student.s in (select s from sc GROUP BY s having count(c) < (select count(c) from course ));
-- 方法2
select Student.S,Student.Sname 
from Student,SC 
where Student.S=SC.S 
group by Student.S,Student.Sname having count(C) <(select count(C) from Course);

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值