SQL查询练习:使用SELECT语句操作学生与课程数据
需积分: 18 159 浏览量
更新于2024-09-25
收藏 16KB DOCX 举报
"这个资源提供了一个关于SQL SELECT查询语句的练习环境,通过创建和填充学生、课程和选课关系的数据库表,然后进行查询操作。主要涉及的标签包括SELECT查询和查询练习。"
在数据库管理系统中,SELECT查询是用于从表中检索数据的核心语句。在这个练习中,我们首先看到了三个表的创建:`Students`(学生)、`Courses`(课程)和`Enrollment`(选课关系)。`Students`表存储学生的学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)和所在院系(Sdept);`Courses`表包含课程编号(Cno)、课程名称(Cname)、先修课程(PreCno)和学分(Credits);`Enrollment`表记录学生选课的信息,包括学生学号、课程编号和成绩。
接下来,一些示例数据被插入到这些表中。例如,有五位学生分别选择了不同的课程,而课程之间也有依赖关系,如课程c2需要先完成课程c5。`Enrollment`表中的外键约束确保了学生只能选择已存在的课程,且每个学生和课程的组合是唯一的。
在进行SELECT查询练习时,可以尝试以下几种常见的查询:
1. **基础查询**:选择所有学生的信息,如`SELECT * FROM Students`。
2. **条件查询**:根据特定条件选择数据,如选择所有年龄大于19岁的学生,`SELECT * FROM Students WHERE Sage > 19`。
3. **连接查询**:结合多个表获取信息,如查询所有选修数学课程的学生信息,`SELECT Students.* FROM Students, Enrollment WHERE Enrollment.Cno = 'c2' AND Students.Sno = Enrollment.Sno`。
4. **聚合函数**:使用COUNT, SUM, AVG, MAX, MIN等计算结果,如统计每门课程的平均成绩,`SELECT Cname, AVG(Grade) AS AvgGrade FROM Enrollment GROUP BY Cno`。
5. **排序与分组**:用ORDER BY对结果进行排序,GROUP BY进行分组,如按照年龄降序排列学生,`SELECT * FROM Students ORDER BY Sage DESC`。
6. **子查询**:在查询中嵌套查询,如找出成绩最高的学生,`SELECT Sname FROM Students WHERE Sno IN (SELECT Sno FROM Enrollment WHERE Grade = (SELECT MAX(Grade) FROM Enrollment))`。
通过这些练习,可以加深对SQL SELECT查询的理解,掌握如何从数据库中提取所需信息,并逐步提高查询效率和准确性。对于初学者来说,这是一个很好的实践平台,能够帮助他们熟悉SQL语言的基本语法和实际应用。
2011-03-23 上传
2022-08-03 上传
2013-08-29 上传
2011-12-12 上传
2019-07-09 上传
2021-07-04 上传
2012-05-05 上传
2023-05-27 上传
lehuage
- 粉丝: 0
- 资源: 3
最新资源
- JHU荣誉单变量微积分课程教案介绍
- Naruto爱好者必备CLI测试应用
- Android应用显示Ignaz-Taschner-Gymnasium取消课程概览
- ASP学生信息档案管理系统毕业设计及完整源码
- Java商城源码解析:酒店管理系统快速开发指南
- 构建可解析文本框:.NET 3.5中实现文本解析与验证
- Java语言打造任天堂红白机模拟器—nes4j解析
- 基于Hadoop和Hive的网络流量分析工具介绍
- Unity实现帝国象棋:从游戏到复刻
- WordPress文档嵌入插件:无需浏览器插件即可上传和显示文档
- Android开源项目精选:优秀项目篇
- 黑色设计商务酷站模板 - 网站构建新选择
- Rollup插件去除JS文件横幅:横扫许可证头
- AngularDart中Hammock服务的使用与REST API集成
- 开源AVR编程器:高效、低成本的微控制器编程解决方案
- Anya Keller 图片组合的开发部署记录