SQL数据库面试题以及答案(50例题)

本文提供了50道SQL数据库面试题目,涵盖学生、课程、教师、成绩等表的查询,包括平均成绩、课程对比、特定教师课程、成绩排名、课程选修人数等多个方面的问题,旨在测试SQL查询能力。
摘要由CSDN通过智能技术生成

Student(Sid,Sname,Sage,Ssex)学生表

  • Sid:学号

  • Sname:学生姓名

  • Sage:学生年龄

  • Ssex:学生性别

Course(Cid,Cname,T#)课程表

  • Cid:课程编号

  • Cname:课程名称

  • Tid:教师编号

SC(Sid,Cid,score)成绩表

  • Sid:学号

  • Cid:课程编号

  • score:成绩

Teacher(Tid,Tname)教师表

  • Tid:教师编号:

  • Tname:教师名字

问题:

1、查询“001”课程比“002”课程成绩高的所有学生的学号

select a.sid from 
(select sid,score from sc where cid='001')a,
(select sid,score from sc where cid='002')b 
where a.sid = b.sid and a.score>b.score;

2、查询平均成绩大于60分的同学的学号和平均成绩

select sid,avg(score) from sc
group by sid 
having avg(score)>60;

3、查询所有同学的学号、姓名、选课数、总成绩

select s.sid,s.sname,count_cid as 选课数, 
sum_score  as 总成绩
from student s
left join 
(select sid,count(cid) as count_cid,sum(score) as sum_score 
from sc group by sid )sc
on s.sid = sc.sid;

4、查询姓‘李’的老师的个数:

select count(tname)
from teacher 
where tname like '李%';

5、查询没有学过“叶平”老师可的同学的学号、姓名:

select s.sid,s.sname 
from student as s 
where s.sid not in (
    select DISTINCT sid 
    from sc as sc 
    where sc.cid in (
        select cid 
        from course as c 
        left join teacher as t on c.tid = t.tid 
        where t.tname = '叶平')
);

6、查询学过“叶平”老师所教的所有课的同学的学号、姓名:

select s.sid,s.sname 
from student as s 
where s.sid in (
    select distinct sc.sid 
  from sc as sc 
  where sc.cid in (
    select cid 
    from course as c 
    left join teacher as t on c.tid = t.tid 
    where t.tname = '叶平')
        group by sc.sid 
    HAVING count(cid)=
    (select count(cid) 
     from course as c left join teacher as t on c.tid = t.tid 
     where t.tname = '叶平')
);

7、查询学过“011”并且也学过编号“002”课程的同学的学号、姓名:

SELECT s.sid,s.sname 
from student as s 
left join sc as sc on s.sid = sc.sid
where sc.cid = '001'
and EXISTS(
  select * from sc as sc_2 
  where sc.sid = sc_2.sid 
  and sc_2.cid='002');

select s.sid,s.sname
from student as s 
left join sc as sc 
on sc.sid = s.sid
where sc.cid = '001'
and s.sid in (
  select sid from sc as sc_2 
  • 1
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值