use master
go
restore database [studentdb] from disk=‘d:\studentdb.bak’
go
use studentdb
go
– 自己还原 studentdb 数据库,并完成以下查询
– 1所有学生的基本信息,并按学号排序
select *
from 学生
order by 学号
– 2所有女生的信息和女生的人数
select *
from 学生
where 性别=‘女’
go
select count(*) as 女生人数
from 学生
where 性别=‘女’
go
– 3所有男生的 姓名,进校时间和 通常的年龄 ,并让两个字的名字对齐三个字的名字,中间加入空格
select
case
when len(rtrim(姓名))=2 then left(姓名,1)+’ '+ right(rtrim(姓名),1)
else 姓名
end as 姓名
,进校时间
,18 as 通常的年龄
from 学生
– 4所有学生的姓名和总评成绩
select
姓名,总评成绩
from
学生 join 成绩 on 学生.学号=成绩.学号
– 5所有课程名称和总评成绩
select
课程名称,总评成绩
from
课程 join 成绩 on 课程.课程代码=成绩.课程代码
– 6所有学生的姓名,课程名称和总评成绩
– 7查询学号为 2005023029 的学生的 选课门数
select count(*) as 选课门数
from 成绩
where
学号=‘2005023029’
– 8查询学号为2005023029的学生的 学号,姓名,选课门数
select
学生.学号,姓名,count() as 选课门数
from
成绩
join 学生 on 学生.学号=成绩.学号
where
学生.学号=‘2005023029’
group by
学生.学号,姓名
–查询学生的 学号,姓名,选课门数
select
学生.学号,姓名,count() as 选课门数
from
成绩
join 学生 on 学生.学号=成绩.学号
– where
– 学生.学号=‘2005023029’
group by
学生.学号,姓名
– 9查询所有不及格学生的学号,姓名
select
学生.学号,姓名
from
成绩
join 学生 on 学生.学号=成绩.学号
where
考试成绩<60
– 9查询所有不及格学生的学号,姓名
select * from 学生
–去重
select distinct
学生.学号,姓名
from
成绩
join 学生 on 学生.学号=成绩.学号
where
考试成绩<60
– 10查询所 有总评成绩 有不及格成绩 的 学生的 学号,姓名,课程名称,总评成绩
select
学生.学号,姓名,课程名称,总评成绩
from
学生
join 成绩 on 学生.学号=成绩.学号
join 课程 on 成绩.课程代码=课程.课程代码
where
总评成绩<60
– 11查询所 有总评成绩有不及格成绩的 学生的学号,姓名,选课门数,并按选课门数多少降序排序
select
学生.学号,姓名,count(*) as 选课门数
from
学生
join 成绩 on 学生.学号=成绩.学号
– join 课程 on 成绩.课程代码=课程.课程代码
where
学生.学号
in (
select 学号 from 成绩 where 总评成绩<60
)
group by
学生.学号,姓名
order by 3 desc
– 12查询所有总评成绩有不及格成绩的学生的学号,姓名, 挂课门数 ,并按挂课门数多少降序排序
select top 10
学生.学号,姓名,count(*) as 挂课门数
from
学生
join 成绩 on 学生.学号=成绩.学号
join 课程 on 成绩.课程代码=课程.课程代码
where
总评成绩<60
group by
学生.学号,姓名
order by 3 desc
– --看看是哪一位神人挂科最多呀
博客主要介绍了studentdb数据库的还原操作,随后给出了一系列数据库查询需求及对应的SQL语句,包括查询学生基本信息、按性别查询、查询成绩相关信息、统计选课门数、筛选不及格学生等,涵盖多种条件和统计要求。
1万+

被折叠的 条评论
为什么被折叠?



