SQL查询练习:使用SELECT语句操作学生与课程数据
需积分: 18 149 浏览量
更新于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 上传
2012-02-15 上传
2011-12-12 上传
2021-07-04 上传
2019-07-09 上传
2012-05-05 上传
2024-07-15 上传
lehuage
- 粉丝: 0
- 资源: 3
最新资源
- 全新PHP网址缩短防封短网址生成系统
- Almayce Video Handler-开源
- NotaFiscalNet:.NET电子发票生成
- 武汉医保读卡DLL动态库.rar
- Ziplyne Player prod-crx插件
- RestWithSpringBootMath
- ZoomTest.rar_FlashMX/Flex源码_FlashMX_
- Weinview触摸屏-OMRON_CJ1CS1PLC连接说明书
- quantcs-impl:量化类约束的实现
- Luiz_Henrique_Souza_JAMStackAlura
- paixu.rar_汇编语言_Asm_
- Learn-wp-cli:命令行,WP-CLI和自定义WP-CLI命令入门
- Ledavio Image Importer-crx插件
- The-ABM-in-Archaeology-Bibliography:有关考古中基于代理的模型(ABM)的文献的完整列表。 由Iza Romanowska和Lennart Linde维护和创建
- HubCollections.3okat1n89t.gaJP44e
- flexx:用纯Python编写桌面和Web应用程序