分组查询实验

一、实验目的

1. 掌握库函数及汇总查询的使用方法。

2. 掌握分组查询的使用方法。

3. 掌握查询的排序方法。

4. 掌握前几项的查询方法。

二、实验硬、软件环境

开发环境: Windows XP 操作系统及以上版本

数据库管理系统:SQL Server 2012

运行环境:Windows XP 操作系统及以上版本

三、实验内容及步骤

在学生成绩管理数据库EDUC的三个关系模式下,进行以下的数据查询,关系模式如下:

学生表Student(学号sno,姓名sname,性别sex,年龄age,专业班级special)

课程表Course(课程号cno,课程名cname,学时period,任课教师teacher)

成绩表Sc(学号sno,课程号cno,成绩grade)

1.查询所有学生的学号和姓名。

代码及运行结果如下:

SELECT sno,sname

FROM Student

2.查询姓王的学生的学号、姓名和专业班级。  

代码及运行结果如下:

SELECT sno,sname,special

FROM Student

WHERE  sname LIKE '王%'

 

3.查询没有成绩的学号和课程号。

代码及运行结果如下:

SELECT sno,cno

FROM SC

WHERE grade IS NULL

4.查询年龄在18-22之间的学生姓名和专业班级。

代码及运行结果如下:

SELECT sname,special

FROM Student

WHERE age BETWEEN 18 AND 22

5.查询学号为0538的学生的总成绩。

代码及运行结果如下:

SELECT  sum (grade) AS Totalgrade

FROM Sc

WHERE sno= '0538'

6.查询学生表中前10%条记录的信息。

代码及运行结果如下:

SELECT TOP 10 PERCENT*

FROM Student

 

 7.查询选修了K002号课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。

代码及运行结果如下:

SELECT sno,grade

FROM Sc

WHERE EXISTS ( SELECT sno,grade,cno 

               FROM Sc

               WHERE cno = 'K002')

 ORDER BY grade,sno ASC

8.查询选修三门以上(含三门)课程的学生的学号和成绩平均分。

代码及运行结果如下:

SELECT sno,COUNT(*) AS SC_Num

FROM SC

GROUP BY sno

HAVING (COUNT(*)>=3)

 9. 查询出各课程号及相应的选课人数,并按选课人数的升序进行排序。

代码及运行结果如下:

SELECT cno,COUNT(成绩表Sc.sno) as 选课人数

FROM 成绩表Sc

GROUP BY cno

 ORDER  BY 选课人数 ASC

 

 四、实验结果及分析

通过此次实验我了解到库函数及汇总查询和分组查询的使用方法,在此过程中要严格遵循相应的语法格式,否则易会出错;在创建数据表之前,需要为表中的每一个属性设置一种数据类型,其对应的数据类型需根据其数据范围和内容选取;库函数COUNT( *)用来统计元组的个数,不消除重复,不允许使用 DISTINCT关键字;GROUP BY子句可以将查询结果按属性列或属性列组合在行的方向上进行分组,毎组在或属性列组合上具有相同的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值