(3)创建一个名为v_sc的视图,查询所有学生选修课程的视图,包括学生的学号、姓名、课号、课名、成绩等信息。
时间: 2023-07-10 18:31:54 浏览: 154
好的,以下是创建v_sc视图的SQL语句:
```sql
CREATE VIEW v_sc AS
SELECT s.sno, s.sname, c.cno, c.cname, sc.grade
FROM student s
JOIN score sc ON s.sno = sc.sno
JOIN course c ON c.cno = sc.cno;
```
这个视图将会返回所有学生选修课程的信息,包括学生的学号、姓名、课程编号、课程名称、选修成绩等。你可以使用如下语句查询该视图:
```sql
SELECT * FROM v_sc;
```
希望这个回答能够帮到你!
相关问题
2.根据上一次实验所建立的数据库student和基本表s(学生表)、c(课程表)、sc(选课表),完成下列操作: (1)按课程号在C表上创建唯一性索引; (2)为sc表的学号和课程号字段创建一个复合唯一索引。 3.根据上一次实验所建立的数据库student和基本表s(学生表)、c(课程表)、sc(选课表),完成下列操作: (1)建立名为V_SC的视图,能够查看每个学生的姓名、选修课程名和成绩; (2)利用V_SC视图,查看每个学生的平均成绩在70分以上的学生姓名; (3)建立名为V_C的视图,该视图显示每门课的课程名和选修该课程的学生人数; (4)修改视图V_C,在视图中增加一列,显示选修该课程所有学生的平均成绩; (5)建立名为V_IS_Sdept的视图,可以用来查看“信息系”的学生的学号、姓名、年龄和系名,并保证对该视图的修改满足系名为信息系的条件; (6)建立名为V_S的视图,可以用来查看每个学生选修的课程门数和平均成绩; (7)利用V_S视图,查询平均成绩在80分以上的学生学号; (8)删除视图V_S、V_C、V_SC、V_IS_Sdept。
对于问题2和问题3,我可以给出一些相关的 SQL 语句:
问题2:
(1) 创建唯一性索引:
```
CREATE UNIQUE INDEX idx_c ON c(cno);
```
(2) 创建复合唯一索引:
```
CREATE UNIQUE INDEX idx_sc ON sc(sno, cno);
```
问题3:
(1) 创建视图V_SC:
```
CREATE VIEW V_SC AS
SELECT s.sname, c.cname, sc.grade
FROM s, c, sc
WHERE s.sno = sc.sno AND c.cno = sc.cno;
```
(2) 查看平均成绩在70分以上的学生姓名:
```
SELECT s.sname
FROM s, V_SC
WHERE s.sno = V_SC.sno
GROUP BY s.sname
HAVING AVG(V_SC.grade) > 70;
```
(3) 创建视图V_C:
```
CREATE VIEW V_C AS
SELECT c.cname, COUNT(DISTINCT sc.sno) AS count
FROM c, sc
WHERE c.cno = sc.cno
GROUP BY c.cname;
```
(4) 修改视图V_C,在视图中增加一列,显示选修该课程所有学生的平均成绩:
```
CREATE OR REPLACE VIEW V_C AS
SELECT c.cname, COUNT(DISTINCT sc.sno) AS count, AVG(sc.grade) AS avg_grade
FROM c, sc
WHERE c.cno = sc.cno
GROUP BY c.cname;
```
(5) 创建视图V_IS_Sdept:
```
CREATE VIEW V_IS_Sdept AS
SELECT s.sno, s.sname, s.age, d.dname
FROM s, d
WHERE s.sdept = d.dname AND d.dname = '信息系';
```
(6) 创建视图V_S:
```
CREATE VIEW V_S AS
SELECT sc.sno, COUNT(DISTINCT sc.cno) AS count, AVG(sc.grade) AS avg_grade
FROM sc
GROUP BY sc.sno;
```
(7) 查看平均成绩在80分以上的学生学号:
```
SELECT V_S.sno
FROM V_S
WHERE V_S.avg_grade > 80;
```
(8) 删除视图:
```
DROP VIEW V_SC;
DROP VIEW V_C;
DROP VIEW V_IS_Sdept;
DROP VIEW V_S;
```
创建一个名为sc_view3的视图,由数据库gradem的student、course、sc表创建一个显示学号为“20050301”的学生选修课程(包括学生姓名、课程名称、成绩等信息)的视图。
可以按照以下 SQL 语句来创建名为 `sc_view3` 的视图:
```
CREATE VIEW sc_view3 AS
SELECT s.name AS student_name, c.name AS course_name, sc.score
FROM student s, course c, sc
WHERE s.sno = sc.sno AND c.cno = sc.cno AND s.sno = '20050301';
```
这个视图将会显示学号为 `20050301` 的学生选修的课程信息,包括学生姓名、课程名称和成绩。你可以根据需要进行调整和修改。注意,这个视图是基于数据库 `gradem` 中的 `student`、`course` 和 `sc` 表创建的。
阅读全文