这些题目涉及了数据库管理和SQL语言的基本操作,包括数据查询、聚合函数、连接操作以及条件过滤。下面是针对每个考试题目的详细解析: 1. 查询平均成绩大于60分的学生的学号和平均成绩: 使用`AVG()`函数计算平均成绩,并通过`GROUP BY`语句按学生编号分组。条件过滤使用`HAVING`子句,因为`WHERE`子句不能与聚合函数一起用于筛选分组后的结果。 ```sql SELECT s_id, AVG(s_s_score) AS avg_score FROM Score GROUP BY s_id HAVING AVG(s_s_score) > 60; ``` 2. 查询所有学生的学号、姓名、总成绩: 需要将`Student`表和`Score`表联接,然后使用`SUM()`函数计算总成绩。 ```sql SELECT s.s_id, s.s_name, SUM(s_s_score) AS total_score FROM Student s JOIN Score sc ON s.s_id = sc.s_id GROUP BY s.s_id, s.s_name; ``` 3. 查询学生学号是1001的学生姓名、平均成绩: 这是一个简单的查询,只需从`Student`表中选取对应信息,并与`Score`表联接计算平均成绩。 ```sql SELECT s.s_name, AVG(s_s_score) AS avg_score FROM Student s JOIN Score sc ON s.s_id = sc.s_id WHERE s.s_id = '1001'; ``` 4. 查询课程编号是2001的最高分、最低分和平均分: 对`Score`表进行操作,筛选出课程编号为2001的记录,然后使用`MAX()`, `MIN()`和`AVG()`函数。 ```sql SELECT MAX(s_s_score) AS max_score, MIN(s_s_score) AS min_score, AVG(s_s_score) AS avg_score FROM Score WHERE c_id = '2001'; ``` 5. 查询老师编号是3001的老师教的科目中成绩最高分和最低分以及平均分: 需要连接`Course`, `Teacher`和`Score`表,然后筛选出对应的记录。 ```sql SELECT MAX(s_s_score) AS max_score, MIN(s_s_score) AS min_score, AVG(s_s_score) AS avg_score FROM Score sc JOIN Course c ON sc.c_id = c.c_id JOIN Teacher t ON c.t_id = t.t_id WHERE t.t_id = '3001'; ``` 6. 统计学校总共有多少个老师: 直接从`Teacher`表中选择不重复的教师编号(或姓名)的数量。 ```sql SELECT COUNT(DISTINCT t_id) AS teacher_count FROM Teacher; ``` 7. 查询所有姓张的老师的信息: 使用`LIKE`操作符匹配教师姓名。 ```sql SELECT * FROM Teacher WHERE t_name LIKE '张%'; ``` 8. 查询学过“张三”老师所教的课的同学的学号、姓名: 联接`Course`, `Teacher`, `Student`和`Score`表,筛选出符合条件的记录。 ```sql SELECT DISTINCT s.s_id, s.s_name FROM Student s JOIN Score sc ON s.s_id = sc.s_id JOIN Course c ON sc.c_id = c.c_id JOIN Teacher t ON c.t_id = t.t_id WHERE t.t_name = '张三'; ``` 9. 查询课程编号是2002中成绩低于平均成绩的学生信息: 先计算课程2002的平均成绩,然后筛选出低于此平均成绩的记录。 ```sql WITH avg_score AS ( SELECT AVG(s_s_score) AS avg FROM Score WHERE c_id = '2002' ) SELECT s.s_id, s.s_name FROM Student s JOIN Score sc ON s.s_id = sc.s_id JOIN avg_score ON 1 = 1 WHERE sc.c_id = '2002' AND sc.s_s_score < avg_score.avg; ``` 10. 查询在成绩表中没有成绩的课程信息: 使用左连接,找出没有与`Score`表匹配的`Course`记录。 ```sql SELECT c.* FROM Course c LEFT JOIN Score sc ON c.c_id = sc.c_id WHERE sc.c_id IS NULL; ``` 以上是针对每个考试题目的SQL查询语句,它们展示了对数据库进行基本操作的能力,包括数据检索、聚合计算、连接查询和条件过滤。掌握这些技能对于理解和处理数据库信息至关重要。
- 粉丝: 1w+
- 资源: 1535
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助