为了回答这些问题,我们需要假设一个数据库结构。假设我们有以下几张表:
- `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 小助理,如未能正确解答您的问题,请继续追问。 |