mysql如何创建一个名为 view3 的视图,以便只显示'数据库'课程的成绩?这个视图应该包括哪些字段,如学号、姓名、系名、成绩和授课教师的信息?
时间: 2024-11-13 11:19:18 浏览: 3
在MySQL中,你可以通过以下SQL命令来创建一个名为view3的视图,它只显示'数据库'课程的成绩及相关信息:
```sql
CREATE VIEW view3 AS
SELECT students.id AS 学号,
students.name AS 姓名,
departments.department_name AS 系名,
courses.course_name AS 课程名称,
scores.score AS 成绩,
teachers.teacher_name AS 授课教师
FROM students
JOIN enrollments ON students.id = enrollments.student_id
JOIN courses ON enrollments.course_id = courses.course_id
JOIN departments ON courses.department_id = departments.department_id
JOIN scores ON enrollments.id = scores.enrollment_id
WHERE courses.course_name = '数据库';
```
这个视图包含了学生的学号、姓名、所属系的系名、课程名称以及他们在该课程的成绩。同时,还关联了teachers表以获取授课教师的信息。
相关问题
(1)创建数据库“studentDB”,默认字符集为utf8mb4。 (2)完成student表创建代码编写,student表结构如下。 字段名 数据类型和约束 备注 sno 整型,无符号,主键,自增 学号 sname 字符串(3),不为空,默认空字符串 姓名 sex 字符串(1),不为空,默认值‘男’ 性别 birthday 日期类型 出生日期 Class 字符串(5),不为空,默认空字符串 班级 remark 字符串(50) 备注 (3)向student表中插入如下数据。 学号 姓名 性别 出生日期 班级 备注 1 张雷 男 1995-01-20 网络11 null 2 李四 男 1993-12-12 网络11 null 3 李维 女 1994-11-12 软件11 null (4)修改student表中学号为“3”的数据记录,把其班级更改为“网络13”、性别改为“男”。 (5)查询student表中的所有信息,并以中文名显示标题列。 (6)查询student表中姓‘张’的学生信息 (7)查询student表中1994年出生的学生信息 (8)查询所有男生的学号、姓名、班级、课程编号、课程名称、成绩。 (9)查询成绩在90分以上的学生姓名 (10)查询“MySQL数据库”课程的最高分。 (11)创建视图v_view:以课程编号分组统计选修的人数和平均分。(12)创建存储过程p_coure查询所有课程的信息
(1)创建数据库:
```
CREATE DATABASE studentDB DEFAULT CHARACTER SET utf8mb4;
```
(2)创建student表:
```
CREATE TABLE student (
sno INT UNSIGNED NOT NULL AUTO_INCREMENT,
sname VARCHAR(3) NOT NULL DEFAULT '',
sex VARCHAR(1) NOT NULL DEFAULT '男',
birthday DATE,
class VARCHAR(5) NOT NULL DEFAULT '',
remark VARCHAR(50),
PRIMARY KEY(sno)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
(3)向student表中插入数据:
```
INSERT INTO student (sno, sname, sex, birthday, class, remark) VALUES
(1, '张雷', '男', '1995-01-20', '网络11', null),
(2, '李四', '男', '1993-12-12', '网络11', null),
(3, '李维', '女', '1994-11-12', '软件11', null);
```
(4)修改student表中学号为“3”的数据记录:
```
UPDATE student SET class='网络13', sex='男' WHERE sno=3;
```
(5)查询student表中所有信息,并以中文名显示标题列:
```
SELECT
'学号' AS 'sno',
'姓名' AS 'sname',
'性别' AS 'sex',
'出生日期' AS 'birthday',
'班级' AS 'class',
'备注' AS 'remark'
UNION ALL
SELECT sno, sname, sex, birthday, class, remark FROM student;
```
(6)查询student表中姓‘张’的学生信息:
```
SELECT * FROM student WHERE sname LIKE '张%';
```
(7)查询student表中1994年出生的学生信息:
```
SELECT * FROM student WHERE YEAR(birthday) = 1994;
```
(8)查询所有男生的学号、姓名、班级、课程编号、课程名称、成绩:
```
SELECT
student.sno,
student.sname,
student.class,
score.cno,
course.cname,
score.grade
FROM
(student JOIN score ON student.sno = score.sno)
JOIN course ON score.cno = course.cno
WHERE
student.sex = '男';
```
(9)查询成绩在90分以上的学生姓名:
```
SELECT student.sname FROM student JOIN score ON student.sno = score.sno WHERE score.grade > 90;
```
(10)查询“MySQL数据库”课程的最高分:
```
SELECT MAX(grade) FROM score WHERE cno = '001';
```
(11)创建视图v_view:
```
CREATE VIEW v_view AS
SELECT
score.cno,
COUNT(DISTINCT score.sno) AS '选修人数',
AVG(score.grade) AS '平均分'
FROM
score
GROUP BY
score.cno;
```
(12)创建存储过程p_course查询所有课程的信息:
```
CREATE PROCEDURE p_course()
BEGIN
SELECT * FROM course;
END;
```
mysql根据学生表、班级表、成绩表的数据创建视图:V_课程成绩,查询各课程成绩,试图中的字段有:课程号、课程名、平均成绩、总成绩。通过试图查询班级名称,按平均成绩排名降序排序
下面是创建视图和查询的 SQL 语句:
创建视图:
```
CREATE VIEW V_课程成绩 AS
SELECT
c.课程号,
c.课程名,
AVG(s.成绩) AS 平均成绩,
SUM(s.成绩) AS 总成绩
FROM
学生表 s
JOIN 成绩表 g ON s.学号 = g.学号
JOIN 课程表 c ON g.课程号 = c.课程号
GROUP BY
c.课程号,
c.课程名;
```
查询班级名称,按平均成绩排名降序排序:
```
SELECT
b.班级名称,
v.课程名,
v.平均成绩,
v.总成绩
FROM
班级表 b
JOIN 学生表 s ON b.班级编号 = s.班级编号
JOIN 成绩表 g ON s.学号 = g.学号
JOIN V_课程成绩 v ON g.课程号 = v.课程号
ORDER BY
v.平均成绩 DESC;
```
注意,以上 SQL 语句仅供参考,具体实现需要根据实际数据表结构和数据进行调整。
阅读全文