在MySchool数据库中有俩个表:Student和Score(相关例题)

本文展示了如何使用SQL查询MySchool数据库中关于Student和Score表的数据,包括查询年龄超过20岁的学生信息,所有参加考试和未参加考试的学生详情,及格学生名单,以及所有学生的状态(是否报考、是否合格)。通过内连接和外连接操作,对不同场景进行数据筛选和展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Student:

Score


1.查询年龄超过20岁的姓名\年龄\所在班级
 select
   sName,
   sAge,
   cName
   from Student as TS
   inner join Class TC
   on TC.clsId=TS.sClassId
   where sAge>20

------------------------------------------------------------------------------------------------------------------------

2.查询出所有参加考试的同学的学生编号,姓名,考试成绩。
select 
sId,
sName,
english,
math
from Student
inner join Score on Score.studentId=Student.sId

------------------------------------------------------------------------------------------------------------------------

3.查询出所有没有参加考试的同学的学生编号,姓名,考试成绩。
select 
sId,
sName
from Student
 where sId not in(select studentId from Score)

------------------------------------------------------------------------------------------------------------------------

4使用联接重做:查询出所有没有参加考试的同学的学生编号,姓名。
--(1)
select sId,sName
from (
select sId,sName,sAge,score.*
from Student left outer join Score 
on Score.studentId=Student.sId) as TB1
where scoreId is null

--(2)
select sId,sName
from (
select sId,sName,sAge,score.*
from Score  right outer join Student
on Score.studentId=Student.sId) as TB1
where scoreId is null

------------------------------------------------------------------------------------------------------------------------

5、查询所有英语及格的学生姓名、年龄及成绩
select 
sName,
sAge,
english
from Student
inner join Score
on Score.studentId=Student.sId
where english>=60

------------------------------------------------------------------------------------------------------------------------

6、查询所有参加考试的(english分数不为null)学生姓名、年龄及成绩
select
sName,
sAge,
english,
math
from Student
inner join Score
on Student.sId=Score.studentId
where english is not null

------------------------------------------------------------------------------------------------------------------------

7、查询所有学生(报考的和未报考的)的学生姓名、年龄、成绩,如果报考了,但是没有参加考试显示缺考,如果小于english&math小于60分显示不及格,如果没有报考显示没有报考(添加两列 ,“是否报考”,“是否合格”)
select
 sName,
 sAge,
 case
   when english IS null then '缺考'
   else CONVERT(varchar(50),math)
   end,
   是否报考=
      case
       when scoreId IS null then '未报考'
       else '已报考'
      end,
   是否合格=
      case
        when english>=60 and math>=60 then '合格'
        else '不合格'
      end
    from Student
    left join Score
    on Score.studentId=Student.sId       


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值