SQL查询练习:使用SELECT语句操作学生与课程数据

需积分: 18 10 下载量 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语言的基本语法和实际应用。