SQL查询教育数据库:计算机系学生信息与课程选择
需积分: 18 180 浏览量
更新于2024-08-11
1
收藏 44KB DOC 举报
"该文档是关于数据库中SQL查询语句的练习题目及解答,涵盖了对关系型数据库中数据检索的基本操作。"
在SQL查询中,我们通常会涉及到多个数据库表的联接操作来获取所需信息。在这个教育数据库Education中,有三个主要的关系:学生关系S(包括学号SNO、姓名SNAME、年龄AGE、性别SEX和所属部门SDEPT)、学习关系SC(学号SNO、课程号CNO和成绩GRADE)以及课程关系C(课程号CNO、课程名称CNAME、所属部门CDEPT和教师姓名TNAME)。
以下是题目中给出的一些SQL查询语句及其解释:
1. 检索计算机系的全体学生的学号,姓名和性别:
```sql
SELECT Sno, Sname, Sex
FROM S
WHERE Sdept = 'CS';
```
此查询从S表中选取Sdept字段值为'CS'的记录,即计算机系的学生信息。
2. 检索学习课程号为C2的学生学号与姓名:
```sql
SELECT Sno, Sname
FROM S
WHERE Sno IN (
SELECT Sno
FROM SC
WHERE Cno = 'C2'
);
```
这通过子查询首先在SC表中找到学习课程C2的学生学号,然后在S表中选取对应的学号和姓名。
3. 检索选修课程名为“DS”的学生学号与姓名:
```sql
SELECT Sno, Sname
FROM S
WHERE Sno IN (
SELECT Sno
FROM SC
WHERE Cno IN (
SELECT Cno
FROM C
WHERE Cname = 'DS'
)
);
```
这里需要先从C表找出课程名为"DS"的课程号,再根据这些课程号在SC表中找出对应的学生学号,最后在S表中获取学号和姓名。
4. 检索选修课程号为C2或C4的学生学号:
```sql
SELECT Sno
FROM SC
WHERE Cno = 'C2' OR Cno = 'C4';
```
简单地通过OR条件筛选出学习C2或C4课程的学生学号。
5. 检索至少选修课程号为C2和C4的学生学号:
```sql
SELECT Sno
FROM SC X, SC Y
WHERE X.Sno = Y.Sno AND X.Cno = 'C2' AND Y.Cno = 'C4';
```
这个查询要求找到同时选修了C2和C4课程的学生,通过两个SC表的自我连接实现。
6. 检索不学C2课的学生姓名和年龄:
```sql
SELECT Sname, Age
FROM S
WHERE Sno NOT IN (
SELECT Sno
FROM SC
WHERE Cno = 'C2'
);
```
选择S表中Sno不在SC表中学习C2课程的学生,从而得到不学C2课程的学生姓名和年龄。
7. 检索学习全部课程的学生姓名:
```sql
SELECT Sname
FROM S
WHERE NOT EXISTS (
SELECT *
FROM C
WHERE NOT EXISTS (
SELECT *
FROM SC
WHERE S.Sno = SC.Sno AND C.Cno = SC.Cno
)
);
```
这个查询很复杂,它查找在S表中的学生,对于C表中的每一门课程,这个学生都有对应的SC表记录,表示他们学了所有课程。
8. 查询所学课程包含学生S3所学课程的学生学号:
这个查询未提供完整,但可以理解为找出至少和学生S3学过相同一门课程的所有学生。具体实现需要知道S3学过的所有课程,然后将这些课程号用于子查询。
这些查询展示了SQL在处理多表关联查询时的灵活性和强大性,包括子查询、连接和逻辑运算符的运用。对于数据库管理和数据分析来说,熟练掌握SQL查询语句是非常重要的。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-10-03 上传
2022-05-18 上传
2021-10-10 上传
2024-07-15 上传
2021-10-02 上传
DB实践
- 粉丝: 6621
- 资源: 436