【MySQL数据库】视图
1,视图的基本介绍
视图是一个虚拟表,其内容由查询定义。与真实表一样的是,视图包含带有名称的列和行数据;与真实表不一样的是,视图本身并不在数据库中存储数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。
视图返回的数据是从一个或多个基础表(或其它视图)实时提取的。每当查询一个视图时,都会执行视图的定义语句来生成结果集。
2,视图的创建
视图的创建语法:
create view [视图名] as select [语句]
说明:上面的 [语句] 是select后面的语句过程
例如:
有两个表 employee 和 department。employee 表存储员工信息,包括员工ID(id)、姓名(name)、职位(position)、部门ID(d_id)。department 表存储部门信息,包括部门ID(id)和部门名称(name)。
现在,我们想创建一个视图,这个视图将展示员工的姓名 (name)、职位 (position) 以及他们所属的部门名称 (name)。
创建满足条件的视图:create view employee_view as select e.name, e.position, d.name d_name from employee e,department d where e.d_id=d.id;
显示其数据:select * from employee_view;
注意:MySQL 在创建视图时,要求视图中的每个列都有唯一的名称(因为同名的列存在歧义)。如果有两个或多个列可能具有相同的名称(例如,来自不同表但同名的列),则需要为这些列指定别名。
2,视图的修改
视图与基本表相关联,若修改了视图,那么基本表的数据会随之更改;若修改了基本表,那么视图的数据也会随之更改。
修改视图
修改基本表
3,视图的删除
删除视图:drop view [视图名];
通过上面视图的运用,这里对视图来进行全方面的了解。
- 视图的数据来源:视图的数据来源于一个或多个基本表,或者其它视图。视图是用来对这些基本表中的数据进行筛选、汇总。当修改视图时,相当于修改基本表。
- 视图的动态性:视图的内容是动态的,每当查询视图时,都会执行创建视图时定义的 select 语句来获取最新的数据。这也就是为什么基础表的数据发生了变化,视图也会变化。
- 视图简化复杂查询:视图可以用来简化复杂的查询逻辑。例如上面查询两个表的相关数据。
- 视图安全性强:通过视图,可以限制用户只能访问特定的数据列和行,从而保护敏感信息不被未授权的用户访问。
视图既然不在数据库中存储,那么视图存储在哪里呢?视图本身并不存储实际的数据,而是存储了定义视图的SQL查询(即视图的定义)。这个定义保存在数据库的系统目录中。因此,当你创建一个视图时,实际上是在数据库的元数据中添加了一个新的条目,该条目包含了如何从基本表中构建视图的信息。
每当查询视图时,数据库会根据视图的定义去查询基本表,并返回结果集。也就是说,视图数据的查询其实是动态生成的,每次查询时访问的都是基本表,尽管它看起来像是一张表,但实际上它并不存储实际的数据,只存储了如何从基本表中提取数据的描述。
视图的存在主要是为了简化查询、增强安全性等功能,因此,视图不能添加索引。它的动态特性确保了无论何时查询视图,都能获得最新、最准确的数据。