鱼C论坛

 找回密码
 立即注册
查看: 883|回复: 7

sql

[复制链接]
发表于 2024-5-10 15:45:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
基于student表、course表和grade表建立一个名为v_stu_g的视图,视图包括所有学生的学号、姓名、课程名称、分数。使用视图v_stu_g查询学号为001的学生的课程平均分。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-5-10 15:45:19 | 显示全部楼层
在创建视图之前,我们需要先了解一下具体的表结构和数据。假设student表有以下列:学号(id)、姓名(name);course表有以下列:课程编号(course_id)、课程名称(course_name);grade表有以下列:学号(id)、课程编号(course_id)、分数(score)。

首先,在创建视图之前,我们需要先建立这三个表以及插入一些示例数据,才能进行后续的操作。请参考下面的代码:

  1. -- 建立student表
  2. CREATE TABLE student (
  3.   id VARCHAR(10) PRIMARY KEY,
  4.   name VARCHAR(20)
  5. );

  6. -- 建立course表
  7. CREATE TABLE course (
  8.   course_id INT PRIMARY KEY,
  9.   course_name VARCHAR(50)
  10. );

  11. -- 建立grade表
  12. CREATE TABLE grade (
  13.   id VARCHAR(10),
  14.   course_id INT,
  15.   score FLOAT,
  16.   FOREIGN KEY (id) REFERENCES student(id),
  17.   FOREIGN KEY (course_id) REFERENCES course(course_id)
  18. );

  19. -- 插入示例数据
  20. INSERT INTO student VALUES ('001', '小明');
  21. INSERT INTO student VALUES ('002', '小红');

  22. INSERT INTO course VALUES (1, '语文');
  23. INSERT INTO course VALUES (2, '数学');
  24. INSERT INTO course VALUES (3, '英语');

  25. INSERT INTO grade VALUES ('001', 1, 90);
  26. INSERT INTO grade VALUES ('002', 1, 85);
  27. INSERT INTO grade VALUES ('001', 2, 80);
  28. INSERT INTO grade VALUES ('002', 2, 90);
  29. INSERT INTO grade VALUES ('001', 3, 95);
  30. INSERT INTO grade VALUES ('002', 3, 88);
复制代码


接下来,我们可以创建一个名为v_stu_g的视图,并查询学号为"001"的学生的课程平均分。请参考下面的代码:

  1. -- 创建视图v_stu_g
  2. CREATE VIEW v_stu_g AS
  3. SELECT s.id, s.name, c.course_name, g.score
  4. FROM student s
  5. JOIN grade g ON s.id = g.id
  6. JOIN course c ON c.course_id = g.course_id;

  7. -- 查询学号为"001"的学生的课程平均分
  8. SELECT AVG(score) AS 平均分
  9. FROM v_stu_g
  10. WHERE id = '001';
复制代码


上面的代码中,首先创建了一个名为v_stu_g的视图,该视图包括所有学生的学号、姓名、课程名称和分数信息。然后使用这个视图查询学号为"001"的学生的课程平均分。

希望对你有帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-10 15:46:38 | 显示全部楼层
FishC 发表于 2024-5-10 15:45
在创建视图之前,我们需要先了解一下具体的表结构和数据。假设student表有以下列:学号(id)、姓名(name ...

请用sql语句
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-10 15:46:52 | 显示全部楼层


好的!以下是使用SQL语句来创建名为v_stu_g的视图,并查询学号为"001"的学生的课程平均分:

  1. -- 创建视图v_stu_g
  2. CREATE VIEW v_stu_g AS
  3. SELECT student.id, student.name, course.course_name, grade.score
  4. FROM student
  5. JOIN grade ON student.id = grade.id
  6. JOIN course ON course.course_id = grade.course_id;

  7. -- 查询学号为"001"的学生的课程平均分
  8. SELECT AVG(score) AS 平均分
  9. FROM v_stu_g
  10. WHERE id = '001';
复制代码


以上代码中,首先创建了一个名为v_stu_g的视图,该视图包括所有学生的学号、姓名、课程名称和分数信息。然后使用这个视图查询学号为"001"的学生的课程平均分。

希望对你有帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-10 15:57:57 | 显示全部楼层
FishC 发表于 2024-5-10 15:46
好的!以下是使用SQL语句来创建名为v_stu_g的视图,并查询学号为"001"的学生的课程平均分:

使用SQL语句修改视图v_stu_g,显示学生的学号、姓名、性别。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-10 15:58:11 | 显示全部楼层
彩笔凡 发表于 2024-05-10 15:57
使用SQL语句修改视图v_stu_g,显示学生的学号、姓名、 ...


要修改视图v_stu_g,添加显示学生的性别信息,可以使用以下SQL语句进行修改:

-- 修改视图v_stu_g,添加显示学生的性别
CREATE OR REPLACE VIEW v_stu_g AS
SELECT student.id, student.name, student.gender, course.course_name, grade.score
FROM student
JOIN grade ON student.id = grade.id
JOIN course ON course.course_id = grade.course_id;

现在,视图v_stu_g将包括学生的学号、姓名、性别、课程名称和分数信息。

希望对您有帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-10 16:07:00 | 显示全部楼层
FishC 发表于 2024-5-10 15:58
要修改视图v_stu_g,添加显示学生的性别信息,可以使用以下SQL语句进行修改:

-- 修改视图v_stu_g, ...

利用视图v_stu_g为student表添加一行数据:学号为010、姓名为陈婷婷、性别为女。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-10 16:07:14 | 显示全部楼层
彩笔凡 发表于 2024-05-10 16:07
利用视图v_stu_g为student表添加一行数据:学号为010 ...


由于视图是基于数据表的查询结果而创建的,所以无法直接通过视图来向数据表添加行数据。您可以直接在student表中插入数据行来达到目的。请参考以下SQL语句:

INSERT INTO student (id, name, gender) VALUES ('010', '陈婷婷', '女');

这段代码将在student表中插入一行数据,学号为010,姓名为陈婷婷,性别为女。

希望对您有帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-8 11:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表