在学生选课数据库中新建一个名为stu_view2的视图,该视图可以用来查看每个学生选修课程的门数和平均成绩;
时间: 2023-12-14 20:39:48 浏览: 218
可以使用以下 SQL 语句创建名为stu_view2的视图:
```
CREATE VIEW stu_view2 AS
SELECT s.id AS stu_id, COUNT(e.course_id) AS course_num, AVG(e.grade) AS avg_grade
FROM students s
LEFT JOIN enrollments e ON s.id = e.student_id
GROUP BY s.id;
```
上述 SQL 语句中,首先使用 LEFT JOIN 将学生表(students)和选课表(enrollments)连接起来,以便查询每个学生选修的课程信息。然后使用 COUNT 函数统计每个学生选修的课程门数,使用 AVG 函数计算每个学生的平均成绩。最后使用 GROUP BY 将结果按照学生 id 分组。
通过创建这个视图,可以方便地查看每个学生选修课程的门数和平均成绩,避免了重复的查询操作。例如,可以使用以下 SQL 语句查询学生 id 为1的选课信息:
```
SELECT *
FROM stu_view2
WHERE stu_id = 1;
```
查询结果将显示学生 id 为1的选修课程门数和平均成绩。
相关问题
在学生选课数据库中新建一个名为stu_view1的视图,该视图可以让我们看到每个学生的姓名、选修的课程名和成绩。 程序代码:
创建视图的 SQL 语句如下:
```
CREATE VIEW stu_view1 AS
SELECT s.name, c.course_name, sc.score
FROM student s
INNER JOIN score sc ON s.id = sc.student_id
INNER JOIN course c ON sc.course_id = c.id;
```
该视图使用了三个表:student、score 和 course。通过 INNER JOIN 连接这三个表,可以获取到每个学生选修的课程名和成绩。
使用该视图的 SQL 查询语句如下:
```
SELECT *
FROM stu_view1;
```
执行该查询语句后,可以看到每个学生的姓名、选修的课程名和成绩。
1)创建名为view_stu_cour的视图,通过该视图可以查看每个学生的选课情况((包括没有选课的学生),包括学生的学号姓名课程名。 (2)创建名为view_count的视图,以查询每个学生的选课门数,显示每个学生的姓名和选课门数,注意视图的数据中需包含没有选课的学生。
要创建这两个视图,首先假设我们有三个基本表,分别是students (学生表),courses (课程表) 和 enrollments (选课表)。它们之间的关系可能是这样的:
- students (学号(student_id), 姓名(name))
- courses (课程编号(course_id), 课程名(course_name))
- enrollments (学生ID(studnet_id), 课程ID(course_id))
1) 创建视图view_stu_cour,展示每个学生的选课情况和未选课的情况:
```sql
CREATE VIEW view_stu_cour AS
SELECT s.student_id, s.name, c.course_name
FROM students s
LEFT JOIN enrollments e ON s.student_id = e.student_id
LEFT JOIN courses c ON e.course_id = c.course_id;
```
此视图使用了LEFT JOIN,这样即使学生没有选课,也能在视图中看到他们的记录,课程名会显示为NULL。
2) 创建视图view_count,用于查询每个学生的选课门数:
```sql
CREATE VIEW view_count AS
SELECT s.name, COUNT(e.course_id) as course_count
FROM students s
LEFT JOIN enrollments e ON s.student_id = e.student_id
GROUP BY s.student_id, s.name;
```
同样,这里也使用了LEFT JOIN保证了所有学生的信息都被包含,即使他们没有选课,course_count列的值将是0。
阅读全文