2021HFUT数据库实验八 使用聚集函数的 SELECT 语句

一、实验目的

  1. 熟练掌握数据查询中的分组、统计、计算和组合的操作方法;
  2. 进一步掌握 SQL Server 查询分析器的使用,加深对 SQL 语言的嵌套查询语句的理解。

二、实验准备

  1. 了解 SELECT 语句的 GROUP BY 和 ORDER BY 子句的作用;
  2. 了解统计函数和分组统计函数的使用方法;
  3. 熟悉查询分析器的运行环境。

三、实验要求

  1. 在实验之前做好准备;
  2. 注意操作结果的截图与保存,供撰写实验报告使用。

四、实验内容
在数据库 EDUC 中用 SQL 语句实现如下查询:

  1. 查询学生的总人数;
  2. 查询选修了课程的学生人数;
  3. 查询课程的课程号和选修该课程的人数;
  4. 查询选修课程超过 2 门课的学生学号和姓名;
  5. 查询没有选修“0001”号课程的学生姓名;
  6. 查询选修了全部课程的学生姓名;
  7. 查询至少选修了学号为“20170102”的学生选修的全部课程的学生学号;
  8. 查询“王军”和“李杰”都选修的课程编号。

五、实验步骤

--查询学生的总人数
select count(*) from student

--查询选修了课程的学生人数
select count(distinct Sno) from sc

--查询课程的课程号和选修该课程的人数
select Cno,count(Sno) from sc group by Cno

--查询选修课程超过 2 门课的学生学号和姓名
select student.sno,sname
from student
where sno in(
select sno
from sc
group by sno
having count(cno)>2)

--查询没有选修“0001”号课程的学生姓名
select distinct Sname from student,sc where student.Sno=sc.Sno and Cno!='0001'

--查询选修了全部课程的学生姓名
select Sname
from Student
where not exists(
   select *
   from course
   where not exists(
      select *
      from sc
      where sc.Sno = student.Sno and sC.Cno = course.Cno
   )
)

--查询至少选修了学号为“20170102”的学生选修的全部课程的学生学号
select distinct Sno
from sc scx
where not exists
(
	select *
	from sc scy
	where scy.Sno='20170102' and not exists
	(
		select *
		from sc scz
		where scz.Sno=scx.Sno and 
		scz.Cno=scy.Cno
	)
)

--查询“王军”和“李杰”都选修的课程编号
select cno from student,sc
where student.Sno = sc.Sno and Sname = '王军'
intersect
select cno from student,sc
where student.Sno = sc.Sno and Sname = '李杰';
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值