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