鱼C论坛

 找回密码
 立即注册
查看: 170|回复: 1

数据库

[复制链接]
发表于 2024-11-1 10:31:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1、使用并运算查询数据库成绩小于70分或数学成绩大于80分的学生的学号。

2、使用交运算查询至少有一门课程成绩在80以上的女生的学号。

3、使用差运算查询没有选修003号课程的学生学号。

4、查询所有学生的成绩信息,列出学号、姓名、课程名和成绩,要求结果包括没有选修任何课程的学生信息。

5、查询每门课程的平均成绩和选课人数,列出课程号、平均成绩和选课人数,对于没有学生选修的课程,平均成绩为NULL,选课人数为0。

6、查询各门课程及格以上的学生人数,列出课程号和及格以上学生人数,对于没有学生选修或选课学生都不及格的课程,学生人数设置为 0。

7、用命令方式创建计算机系学生的视图V_CS_Student,列出学号、姓名、性别、年龄、院系;并要求进行修改和插入操作时仍需保证该视图只有计算机系的学生。

8、通过图形界面创建所有的成绩不及格的学生的信息视图V_Student_Score_Info,列出学号、姓名、年龄、院系、课程名、成绩,并按成绩降序排列。

9、用命令方式创建所有课程的平均成绩V_Scores,列出课程号、课程名、平均成绩。

10、利用视图V_CS_Student,查询计算机系学生的数据库原理课程的成绩,列出学号和成绩。

11、利用视图V_CS _Student,添加一个计算机系的学生,其他信息任意。

12、利用视图V_CS _Student,添加一个信息工程系的学生,观察是否能够成功。

13、利用视图V_CS _Student,把计算机系的学生年龄增加1岁。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-11-1 10:32:11 | 显示全部楼层
为了回答这些问题,我们需要假设一个数据库结构。假设我们有以下几张表:

- `Students` 表:包含学生的基本信息(学号、姓名、性别、年龄、院系)。
- `Scores` 表:包含学生的成绩信息(学号、课程号、成绩)。
- `Courses` 表:包含课程的信息(课程号、课程名)。

以下是每个问题的解决方案:

1. **并运算查询**:使用 `UNION` 查询成绩小于70分或数学成绩大于80分的学生的学号。
SELECT student_id FROM Scores WHERE score < 70
   UNION
   SELECT student_id FROM Scores WHERE course_id = 'math' AND score > 80;

2. **交运算查询**:使用 `INTERSECT` 查询至少有一门课程成绩在80以上的女生的学号。
SELECT student_id FROM Students WHERE gender = 'female'
   INTERSECT
   SELECT student_id FROM Scores WHERE score > 80;

3. **差运算查询**:使用 `EXCEPT` 查询没有选修003号课程的学生学号。
SELECT student_id FROM Students
   EXCEPT
   SELECT student_id FROM Scores WHERE course_id = '003';

4. **查询所有学生的成绩信息**:使用 `LEFT JOIN` 包括没有选修任何课程的学生信息。
SELECT s.student_id, s.name, c.course_name, sc.score
   FROM Students s
   LEFT JOIN Scores sc ON s.student_id = sc.student_id
   LEFT JOIN Courses c ON sc.course_id = c.course_id;

5. **查询每门课程的平均成绩和选课人数**:
SELECT c.course_id, AVG(sc.score) AS average_score, COUNT(sc.student_id) AS student_count
   FROM Courses c
   LEFT JOIN Scores sc ON c.course_id = sc.course_id
   GROUP BY c.course_id;

6. **查询各门课程及格以上的学生人数**:
SELECT c.course_id, COUNT(sc.student_id) AS passing_students
   FROM Courses c
   LEFT JOIN Scores sc ON c.course_id = sc.course_id AND sc.score >= 60
   GROUP BY c.course_id;

7. **创建计算机系学生的视图**:
CREATE VIEW V_CS_Student AS
   SELECT student_id, name, gender, age, department
   FROM Students
   WHERE department = '计算机系'
   WITH CHECK OPTION;

8. **创建不及格学生的信息视图**:通过图形界面创建,无法用SQL展示。

9. **创建所有课程的平均成绩视图**:
CREATE VIEW V_Scores AS
   SELECT c.course_id, c.course_name, AVG(sc.score) AS average_score
   FROM Courses c
   LEFT JOIN Scores sc ON c.course_id = sc.course_id
   GROUP BY c.course_id;

10. **查询计算机系学生的数据库原理课程的成绩**:
  
SELECT v.student_id, sc.score
    FROM V_CS_Student v
    JOIN Scores sc ON v.student_id = sc.student_id
    WHERE sc.course_id = '数据库原理';

11. **添加一个计算机系的学生**:
  
INSERT INTO V_CS_Student (student_id, name, gender, age, department)
    VALUES ('new_id', '新学生', 'M', 20, '计算机系');

12. **尝试添加信息工程系的学生**:由于 `WITH CHECK OPTION`,此操作将失败。

13. **把计算机系的学生年龄增加1岁**:
  
UPDATE V_CS_Student
    SET age = age + 1;

这些SQL语句假设了一个简单的数据库结构,具体实现可能需要根据实际的数据库设计进行调整。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 09:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表