视图是⼀个虚拟的表,它是基于⼀个或多个基本表或其他视图的查询结果集。视图本⾝不存储数据,⽽是通过执⾏查询来动态⽣成数据。⽤户可以像操作普通表⼀样使⽤视图进⾏查询、更新和管理。视图本⾝并不占⽤物理存储空间,它仅仅是⼀个查询的逻辑表⽰,物理上它依赖于基础表中的数据。
# 语法
CREATE VIEW view_name [(column_list)] AS select_statement查询⽤户的所有信息和考试成绩:
不指定列名定义视图:

定义视图时出现了重复的列的报错,我们需要给每一个列起别名。

这时查看表就能看到视图了


指定列名定义视图:
create view v_student_score_v (id,name,class_id,class_name,course_id,course_name,score_id,score)as (
select
student.student_id,
student.name as student_name,
class.class_id,
class.`name` as class_name,
course.course_id,
course.`name` as course_name,
score.score_id,
score.score
from student,course,class,score
where student.student_id = score.score_id AND
student.class_id = class.class_id AND
course.course_id = score.course_id
order by student_id asc
);**指定列名定义视图时,可以不使用as对相同的列名起别名也可以正常创建。
注:此代码与上一个代码略有不同,此代码使用student_id升序排列,后面有用。**
通过真实表修改数据,会影响视图:



通过视图修改数据会影响基表:

如果视图在定义时使用了order by ,就没法更新。 • 修改真实表会影响视图,修改视图同样也会影响真实表 • 以下视图不可更新: ◦ 创建视图时使⽤聚合函数的视图 ◦ 创建视图时使⽤ DISTINCT ◦ 创建视图时使⽤ GROUP BY 以及 HAVING ⼦句 ◦ 创建视图时使⽤ UNION 或 UNION ALL ◦ 查询列表中使⽤⼦查询 ◦ 在FROM⼦句中引⽤不可更新视图
正常更新的情况下,可以实现数据修改:

语法:
# 语法
drop view view_name;