提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
1.掌握Management Studio的使用。
2.掌握带函数查询和综合查询的使用。
1.检索至少选修课程“数据结构”和“C语言”的学生学号。
-- 1
select Stu_id
from StudentGrade,Course
where StudentGrade.Course_id=Course.Course_id and Course_name='数据结构'
intersect
select Stu_id
from StudentGrade,Course
where StudentGrade.Course_id=Course.Course_id and Course_name='C语言'
2.列出所有班名、班主任、班长、系名。(请使用连接查询;进一步考虑使用外连接,因为很多班级可能是没有班长的,考虑需要显示所有班级的信息)
-- 怎么显示班主任和班长的名字,有些班长的名字无法显示出来因为是null
select class_name,director,monitor,depar_name
from class left join Deparment
on class.Depar_id=Deparment.Depar_id
3.没有选修以“01”开头的课程的学生学号,姓名,选课的课程号。(用子查询完成,提示not in或not exists。需考虑没选课的学生,仔细对比实验六第5题)
select Student.Stu_id,Stu_name,Course_id
from StudentGrade,Student
where Student.Stu_id=StudentGrade.Stu_id and Course_id not in(
select Course_id
from StudentGrade
where Course_id like '01%'
)
4 . 统计各门课程的选修人数,并按人数降序排列,找出排名前三位的课程。(提示:可以使用TOP 3)
select TOP 3 Course_id,count(*) 选修人数
from StudentGrade
group by Course_id
order by count(*) desc
5
. 统计各门课程的选修人数,并按人数降序排列,找出排名前三位的课程。(上述使用TOP 3,却不能处理人数并列的情况。试考虑一种方法能处理人数并列的情况。)
select Course_id, count(*) 选修人数
from StudentGrade
group by Course_id
having count(*) in(
select distinct TOP 3 count(*) 选修人数
from StudentGrade
group by Course_id
order by count(*) desc
)
order by count(*) desc
6
. 检索选修了‘0103’和‘0105’两门课程,并且‘0103’这门课程成绩高于‘0105’的学生的学号。
select a.Stu_id
from StudentGrade a , StudentGrade b
where a.Stu_id=b.Stu_id and a.Course_id='0103' and b.Course_id='0105' and
a.grade>b.grade
7 . 检索选修了课程“数据结构”和“C语言”两门课程并且“数据结构”分数高于“C语言”的学生学号和姓名。
select a.Stu_id
from StudentGrade a , StudentGrade b
where a.Stu_id=b.Stu_id
and a.Course_id=(select Course_id
from Course
where Course_name='数据结构')
and b.Course_id=(select Course_id
from Course
where Course_name='C语言')
and a.grade>b.grade
1.请总结经验和教训。
多思考,举一反三
查漏补缺,细心审题
备注:如果有不同的答案或上面有有问题,可以在评论区讨论