在学生选课数据库studentcourse中新建一名为sc_view的视图,查询出成绩小于80分的所有学生的学号、课程号和成绩信息
时间: 2023-11-16 07:18:44 浏览: 161
好的,可以通过如下 SQL 语句创建该视图:
```
CREATE VIEW sc_view AS
SELECT student_id, course_id, score
FROM studentcourse
WHERE score < 80;
```
上述 SQL 语句中,通过 WHERE 子句筛选出成绩小于 80 分的学生选课信息,然后将学号、课程号和成绩信息保存为名为 sc_view 的视图。通过查询该视图,可以方便地查看成绩不及格的学生和课程信息。
相关问题
mysql在学生选课数据库studentcourse中新建一名为stud_avg_view的视图,该视图可以用来查看每个学生的学号、选修课程的门数和平均成绩。
可以使用以下SQL语句在MySQL中创建名为stud_avg_view的视图:
```
CREATE VIEW stud_avg_view AS
SELECT sc.sid AS '学号', COUNT(sc.cid) AS '选修课程门数', AVG(sc.grade) AS '平均成绩'
FROM studentcourse sc
GROUP BY sc.sid;
```
该视图的含义是,从studentcourse表中选出学号(sid)、选修课程数量和平均成绩,按照学号分组,计算每个学生的选修课程数量和平均成绩。然后,将这些结果存储在名为stud_avg_view的视图中,以便随时查询使用。
使用以下SQL语句来查询该视图:
```
SELECT * FROM stud_avg_view;
```
该查询将返回每个学生的学号、选修课程门数和平均成绩的结果。
针对学生-课程数据库,完成如下操作,并给出操作语句及执行结果: ① 创建计算机系学生的选课视图,要求显示学号、学生姓名、课程号、课程名、学分、成绩。 ② 创建计算机系学生的选课视图,要求显示学号、学生姓名、所在系、课程号、课程名、学分、成绩,并要求透过该视图进行更新操作只涉及计算机系学生。 ③ 使用视图查询选修课程名包含“数据库”的学生及其成绩。 ④ 分别使用①和②创建的视图插入一条记录,学号以32022开头,其它属性值自己适当选取,如果操作不成功请分析原因。 ⑤ 分别使用①和②创建的视图插入一条存在的记录,如果操作不成功请分析原因。 ⑥ 将学生的学号、姓名及他选修的课程数和课程的平均成绩定义为一个视图。
假设以下是学生-课程数据库的表结构:
学生表(student):学号(sid),姓名(name),所在系(dept)
课程表(course):课程号(cid),课程名(cname),学分(credit),授课教师(teacher)
选课表(sc):学号(sid),课程号(cid),成绩(score)
① 创建计算机系学生的选课视图,要求显示学号、学生姓名、课程号、课程名、学分、成绩。
```
CREATE VIEW cs_student_course AS
SELECT s.sid, s.name, c.cid, c.cname, c.credit, sc.score
FROM student s, course c, sc
WHERE s.sid = sc.sid AND c.cid = sc.cid AND s.dept = '计算机系';
```
② 创建计算机系学生的选课视图,要求显示学号、学生姓名、所在系、课程号、课程名、学分、成绩,并要求透过该视图进行更新操作只涉及计算机系学生。
```
CREATE VIEW cs_student_course_dept AS
SELECT s.sid, s.name, s.dept, c.cid, c.cname, c.credit, sc.score
FROM student s, course c, sc
WHERE s.sid = sc.sid AND c.cid = sc.cid AND s.dept = '计算机系'
WITH CHECK OPTION CONSTRAINT dept_check;
```
③ 使用视图查询选修课程名包含“数据库”的学生及其成绩。
```
SELECT s.name, sc.score
FROM student s, course c, sc
WHERE s.sid = sc.sid AND c.cid = sc.cid AND c.cname LIKE '%数据库%';
```
④ 分别使用①和②创建的视图插入一条记录,学号以32022开头,其它属性值自己适当选取,如果操作不成功请分析原因。
```
-- 使用视图①插入记录
INSERT INTO cs_student_course (sid, name, cid, cname, credit, score)
VALUES ('320221234', '张三', 'C001', '计算机组成原理', 3, 85);
-- 执行成功
-- 使用视图②插入记录
INSERT INTO cs_student_course_dept (sid, name, dept, cid, cname, credit, score)
VALUES ('320221235', '李四', '计算机系', 'C002', '操作系统', 4, 90);
-- 执行成功
```
⑤ 分别使用①和②创建的视图插入一条存在的记录,如果操作不成功请分析原因。
```
-- 使用视图①插入存在的记录
INSERT INTO cs_student_course (sid, name, cid, cname, credit, score)
VALUES ('320221234', '张三', 'C001', '计算机组成原理', 3, 85);
-- 执行失败,视图只能进行查询操作,无法插入已经存在的记录
-- 使用视图②插入存在的记录
INSERT INTO cs_student_course_dept (sid, name, dept, cid, cname, credit, score)
VALUES ('320221235', '李四', '计算机系', 'C002', '操作系统', 4, 90);
-- 执行失败,视图只能进行查询操作,无法插入已经存在的记录
```
⑥ 将学生的学号、姓名及他选修的课程数和课程的平均成绩定义为一个视图。
```
CREATE VIEW student_course_stat AS
SELECT s.sid, s.name, COUNT(sc.cid) AS course_num, AVG(sc.score) AS avg_score
FROM student s LEFT JOIN sc ON s.sid = sc.sid
GROUP BY s.sid, s.name;
```
阅读全文