视图技术可以使无权使用数据的用户不能接触他感兴趣的数据,请设计一个只能查看'计算机'专业每位学生选课情况的视图cstudent_courese(sno,sname,cname);
时间: 2024-02-26 12:57:49 浏览: 9
好,根据您的需求,可以使用以下 SQL 语句来创建视图 cstudent_courese:
```sql
CREATE VIEW cstudent_courese AS
SELECT s.sno, s.sname, c.cname
FROM student AS s
INNER JOIN sc AS sc ON s.sno = sc.sno
INNER JOIN course AS c ON sc.cno = c.cno
WHERE s.sdept = '计算机';
```
此视图将展示所有选了计算机专业的学生的选课情况。只有具有查看该视图权限的用户才能查看此视图的内容。
相关问题
创建一个名为stuview4的视图,能检索出每位选课学生的学号、姓名及总成绩。
好的,以下是创建名为stuview4的视图的 SQL 语句:
```
CREATE VIEW stuview4 AS
SELECT s.id AS 学号, s.name AS 姓名, SUM(c.score) AS 总成绩
FROM student s
JOIN course_selection cs ON s.id = cs.student_id
JOIN course c ON cs.course_id = c.id
GROUP BY s.id, s.name;
```
这个视图将会显示每个选课学生的学号、姓名和总成绩。你可以直接查询这个视图来获取这些信息,而不需要每次都写复杂的 JOIN 语句。注意,这个视图需要依赖 student、course_selection 和 course 这三个表,所以在使用之前需要确保这些表已经存在并且包含了正确的数据。
在学生选课数据库中新建一个名为stu_view2的视图,该视图可以用来查看每个学生选修课程的门数和平均成绩;
可以使用以下 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的选修课程门数和平均成绩。