SQL数据库查询实验:数据挖掘与分析

需积分: 9 1 下载量 83 浏览量 更新于2024-09-17 收藏 255KB DOCX 举报
"本次实验是关于数据库的数据查询操作,基于school数据库进行,使用的是Microsoft SQL Server 2005作为数据库管理系统。实验中涉及四张主要的表格:STUDENT(学生信息),TEACHERS(教师信息),COURSES(课程信息),以及CHOICES(选课记录)。实验的主要目标是熟悉SQL查询语言,包括对数据的筛选、排序、计算、聚合以及关联查询。" 在实验内容中,我们执行了以下几个关键的SQL查询: 1. 查询年级为2001的所有学生的名称并按编号升序排列: ```sql select sid, sname from STUDENTS order by sid ``` 这个查询返回了STUDENT表中所有年级为2001的学生的sid(学生编号)和sname(学生姓名),结果按照sid的升序排列。 2. 将学生的选课成绩转换为积点,积点计算规则是60分为1,每超过1分增加0.1的积点: ```sql SELECT (score - 60) * 0.1 + 1 FROM CHOICES WHERE score >= 60 ``` 这个查询从CHOICES表中选择了所有分数大于等于60的记录,并根据分数计算积点。 3. 查询课时为48或64的课程名称: ```sql select cname from COURSES where hour = 64 or hour = 48 ``` 这个查询返回了COURSES表中小时数为48或64的课程名称。 4. 查找课程名称中包含"data"的课程编号: ```sql select cid from COURSES where cname like '%data%' ``` 这个查询利用LIKE操作符匹配了COURSES表中课程名称含有"data"的记录,返回这些课程的cid。 5. 获取所有选课记录中不同的课程号: ```sql select distinct cid from CHOICES ``` 使用DISTINCT关键字去重,返回了CHOICES表中所有不同的课程编号。 6. 计算所有教师的平均工资: ```sql select avg(distinct salary) from TEACHERS ``` 这个查询计算了TEACHERS表中所有教师(去除重复值后的)平均工资。 7. 查询每个教师的编号以及其教授课程的学生平均成绩,按平均成绩降序排列: ```sql select tid, avg(score) from CHOICES group by tid order by avg(score) desc ``` 这个查询首先按照tid分组,计算每个教师的平均成绩,然后按平均成绩的降序排列。 8. 统计每个课程的选课人数和平均成绩: ```sql select cid, count(sid), avg(score) from CHOICES group by cid ``` 这个查询统计了CHOICES表中每个课程的选课人数(通过COUNT函数计算sid的数量)和平均成绩。 9. 找出至少选修了三门课程的学生编号: ```sql select sid from CHOICES GROUP BY SID HAVING COUNT(*) >= 3 ``` 使用HAVING子句在分组后过滤出选修课程数大于等于3的学生编号。 10. 查询编号为800009026的学生所选的全部课程的课程名和成绩: ```sql select cname, score from CHOICES WHERE sid = '800009026' ``` 这个查询返回了CHOICES表中学生编号为800009026的所有选课记录,包括课程名称和对应的分数。 以上就是本次数据库实验中涉及的主要SQL查询及其功能。这些查询体现了SQL在数据检索、分析和处理中的强大能力。通过这些操作,我们可以获取到各种有用的信息,为决策和数据分析提供支持。