| 
 | 
 
 
发表于 2024-5-10 15:45:19
|
显示全部楼层
 
 
 
在创建视图之前,我们需要先了解一下具体的表结构和数据。假设student表有以下列:学号(id)、姓名(name);course表有以下列:课程编号(course_id)、课程名称(course_name);grade表有以下列:学号(id)、课程编号(course_id)、分数(score)。 
 
首先,在创建视图之前,我们需要先建立这三个表以及插入一些示例数据,才能进行后续的操作。请参考下面的代码: 
 
- -- 建立student表
 
 - CREATE TABLE student (
 
 -   id VARCHAR(10) PRIMARY KEY,
 
 -   name VARCHAR(20)
 
 - );
 
  
- -- 建立course表
 
 - CREATE TABLE course (
 
 -   course_id INT PRIMARY KEY,
 
 -   course_name VARCHAR(50)
 
 - );
 
  
- -- 建立grade表
 
 - CREATE TABLE grade (
 
 -   id VARCHAR(10),
 
 -   course_id INT,
 
 -   score FLOAT,
 
 -   FOREIGN KEY (id) REFERENCES student(id),
 
 -   FOREIGN KEY (course_id) REFERENCES course(course_id)
 
 - );
 
  
- -- 插入示例数据
 
 - INSERT INTO student VALUES ('001', '小明');
 
 - INSERT INTO student VALUES ('002', '小红');
 
  
- INSERT INTO course VALUES (1, '语文');
 
 - INSERT INTO course VALUES (2, '数学');
 
 - INSERT INTO course VALUES (3, '英语');
 
  
- INSERT INTO grade VALUES ('001', 1, 90);
 
 - INSERT INTO grade VALUES ('002', 1, 85);
 
 - INSERT INTO grade VALUES ('001', 2, 80);
 
 - INSERT INTO grade VALUES ('002', 2, 90);
 
 - INSERT INTO grade VALUES ('001', 3, 95);
 
 - INSERT INTO grade VALUES ('002', 3, 88);
 
  复制代码 
 
接下来,我们可以创建一个名为v_stu_g的视图,并查询学号为"001"的学生的课程平均分。请参考下面的代码: 
 
- -- 创建视图v_stu_g
 
 - CREATE VIEW v_stu_g AS
 
 - SELECT s.id, s.name, c.course_name, g.score
 
 - FROM student s
 
 - JOIN grade g ON s.id = g.id
 
 - JOIN course c ON c.course_id = g.course_id;
 
  
- -- 查询学号为"001"的学生的课程平均分
 
 - SELECT AVG(score) AS 平均分
 
 - FROM v_stu_g
 
 - WHERE id = '001';
 
  复制代码 
 
上面的代码中,首先创建了一个名为v_stu_g的视图,该视图包括所有学生的学号、姓名、课程名称和分数信息。然后使用这个视图查询学号为"001"的学生的课程平均分。 
 
希望对你有帮助!如果还有其他问题,请随时提问。 
 
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |   
 
 
 
 |