实验七 带函数查询和综合查询(2)

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 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.请总结经验和教训。

多思考,举一反三
查漏补缺,细心审题

备注:如果有不同的答案或上面有有问题,可以在评论区讨论

你可能感兴趣的:(mysql,数据库)