分组查询实验 | 您所在的位置:网站首页 › 连接查询的实验结果和分析 › 分组查询实验 |
一、实验目的 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子句可以将查询结果按属性列或属性列组合在行的方向上进行分组,毎组在或属性列组合上具有相同的值。 |
CopyRight 2018-2019 实验室设备网 版权所有 |